četvrtak, 21. veljače 2008.

apsolutni početak u visual c++ -u

Kako je i navedeno u naslovu krenuti ćemo od početka i pisati jednostavne programe u CLR projektu da bismo prikazali i objasnili sve od samih početaka C++/CLI programiranja koje se razlikuje od nativnog programiranja ,koristi CLR i naravno spada u "managed code" prije spomenuto u video tutorijalu !Zbog toga je i pisanje koda malo drugačije ,naravno ići ću korak po korak jer tako sam i sam učio,a kome to smeta što počinjem tako iz početka ,neka se strpi i sačeka jedno vrijeme,jer Windows forme i DLL-ovi će tek na kraju biti.Pisati ću što jednostavnije i bez komplikacija kao i dosad u prošlom tutorijalu jer smatram da ne treba mutiti vodu tamo gdje ne treba jer onda ni sami ne znamo gdje smo.Vi ćete ionako poslije tutorijala sami zaključiti i prijeći na puno kompliciranije programe.Napominjem da i ovi programi pisani na ovim stranicama također nisu za profesionalnu uporabu nego isljučivo za učenje!Naravno sve to možete naći na netu ako se potrudite, i na službenim stranicama Microsoft-a zaduženim za programske jezike !CLI znači Cmmon Language Infrastructure -standard što je Microsoft-implementacija(prikaz) CLR-a,zanči isto ISO/ANSI standard ali proširen i objavljen 2003.god!To je samo ukratko o tome i smatram ako vas zanima više o tome idite na službene stranice,adresa je u prijašnjem postu! Ovo je bio mali predgovor.


A sad možemo prijeći na učenje.
Malo bih se osvrnuo na tipove podataka u C++/CLI koji su također isti ili slični i u Native programiranju ali ima proširenja koja su vrlo bitna za CLR programiranje i koja obuhvaćaju isti navod tip int kao i u "običnom" c++-u gdje je to varijabla a u CLR programiranju tip int može značiti i objekt . Zatim,C++/CLI ima svoj vlastiti ispis koji ga razlikuje od uobičajeno cout i endl u C++-u! Sve to ćemo polako ali sigurno objašnjavati dok napredujemo. Tkođer osim tipova koji su prisutni u c++-u CLR posjeduje i dvije "nove" definicije int tipa :

long long (8 bita) raspon 0d 9,223 372 036 854 775 808 do 9, 223 372 036 854 775 807

unsigned long long(8 bita) raspon od 0 do 18 446 744 073 709 551 615

a u samom programu se mogu deklarirat kao :
long long veliki = 456789LL----ovo LL nam govori o čemu se radi!

a unsigned long long ima na kraju ULL umjesto LL .

Prije sam napomenuo da varijable u C++/CLI programiranju osim što mogu djelovati kao i varijable one mogu raditi i kao objekti jer pripadaju System namespace kao klas tip koji je u tom namespace definiran !Pnovite iz tuta za početnike o pojmu namespace i kako označavamo pripadnost pojedinom namespace-u! To nam omogućava da s varijablama radimo kao i s objektima, što je već jedna velika prenost u C++/CLI programiranju! Sad slijedi tabela koja nam pokazuje tipove onako kako se pišu u programu, koliko memorije zauzimaju i novo, kojem System namespace-u pripadaju !!
U pisanju koda služit ću se običnim (uobičajenim deklariranjem tipova) pisanjem kao i u standardnom ISO/ANSI programiranju s time da sad znate da mogu imati i druge uloge u proširenoj verziji ISO/ANSI tj. C++/CLI programiranju!!!Nadam se da vam je sad jasnije sve oko ISO/ANSI i C++/CLI i CLR pojmova. Slijedi kratka tbl. jer samo najosnovnije tipove navodimo.














Naravno da bi vidjeli malo bolje,kursor na sliku i dvokllik. Sad vidimo kako u C++/CLI programiranju možemo koristiti tipove kao obične varijable ,ili kao objekte,ovisi o vrsti programa koji radimo! Zato i kad pišemo kod ,pišemo ga slično kao i u "običnom" c++-u











kao int broj = 20;
ili
double broj = 20.4;











..a možemo i :











System::Int32 broj = 20;











Ja ću se držati "običnog" pisanja deklaracije varijabli ili objekata.
Sad nam slijedi prvi CLR program.














Prvo naravno idete na new project -->odaberete c++ kao jezik i CLR i desno --> CLR ConsoleAplication,upišete ime svog projekta i klik na ok . Zbrišite ono s pozdravnom porukom jer ćemo upisivati novi kod.










Pvo nam je linija int main koja je genrirana od strane Visual Studia i naravno govori nam koji raspon ispisa će biti na ekranu,o tome kasnije,zasad neka ostane tako i naravno svi programi kao i u "običnom" c++-u moraju imati main () funkciju!!!
Slijedeće ,deklaracija int tipova koji nam trebaju u programu.
Sad ,izraz koji naređuje ispis na ekran je:










Console::WriteLine() .....to je funkcija koja je definirana u Console class(razredu) u System namespace-u.










Tako da Console class predstavlja standardni I/O (input/output) koji komunicira s tipkovnocom i CMD-om. A WriteLine je narvano zbog onih dvotočki pripadnik Console class kao njena funkcijska članica i zbog onoga Line i oblika WriteLine prelazi automatski i u novi red!Za razliku od Write () funkcijske članice koja to sve ostavlja u jednom redu (nema prelaska u novi red)...ono slovo L na početku govori o dužini tj.da će nam string niz tj.svaki znak u nizu zauzimati dva bajta! Kao što ste i primjetili ispiše se sve unutar zagrada ,a Write funkcija poziva rješenja kad se napiše u tom obliku i u istom redu Write(ime)-->poziv na ispis !Koristim i \n kao prelazak u novi red što znači da CLR tj. C++/CLI prihvaća i sve ono kao i u "običnom" c++ ali ne i cout i endl.











Još jedan izraz je novi ,a predstavlja način na koji se funkcija WriteLine može prilagoditi i ispisati ono što želimo na ekranu:










Console::WriteLine(L"Imamo sad {0} laptopa!\n\n",laptopi_broj2);










Tim ispisom govorimo računalu da ispiše prvi unos {0} koji smo naveli u zagradama...vidite radi se o poštivanju rasporeda,tako u slijedećim linijama koda malo proučite takav ispis i vidite da se radi o poštivanju svega što navedete u zagradama i kojim redom...malo se igrajte !Probajte sami zaključiti (........a,b); izraz koji u programu i naravno možete sami mijenjati raspored {1} i {0} ili {0} i {1} ali naravno sve poštivati i to je to.Inače još jedno lijepo sovojstvo Visual Studia je tkz.IntelliSense...to je padajući izbornik s naredbama koje vam ponudi sam Studio a vi samo birate što vam treba a također vam i pomaže pri onome što treba ispisati unutar zagrada...to je sve ugrađena pomoć koja dobro dođe!













Sad naravno gore klik na build-->build solution i pojavit će se u prozoru ispod editora koda da je uspješno izvršeno prevođenje ,ali ako ste imali prije uspješna izvršenja kao ja tad vam je ovakav ispis:










...a to je isto uspješno izvršeno!
Sad na debug i strat without debugging.....i eto vam programa!!!!
Sad možemo krenuti na drugi program koji se sastoji od dva dijela ,prvo ćemo objasniti kod koji je pisan prvi...a tek onda onaj drugi koji je stavljen u obliku komentara. Zaboravio sam vam i napomenuti da ako želite dolje razumijevati objašnjenja vezana uz visual c++ ,nužno je da ponovite tutorijal na mojoj starnici jer će biti povezan s njom u svezi nekih kodova,ili već dobro znate c++ u Dev-okruženju da možete prijeći na visual c++/CLI programiranje jer ovdje ne objašnjavam kako ide do-while petlje ili for petlja jer smatram ako ste otvorili ove stranice da to već znate!
Prvo primjetite da u programima c++/CLI također komentare možete pisati s dvije kose crte!




...Kad izvršite debug (pokretanje) ....


Malo detaljnije objašnjenje slijedi.

Console::WriteLine(L"Imamo : {1,5} ..paketa tezine {0,9:F2} kilograma!"
,paket,
tezina);

Što koji znak znači: izraz {1,5} znači ispis koliko paketa imamo zbog navoda težina a to je broj jedan u vitićastim zagaradama i broj pet znači pet mjesta odmakni ili zauzmi za taj ispis , drugi izraz {0,9 : F2} znači da smo ispisali prvo varijablu paket zatim smo devet mjesta osigurali i izraz :F2 znači da se radi o floating mjestima,mjestima koje smo osigurali iza floating mjesta(zareza) a to su dvije decimale i imamo ispis s dvije nule!!!Vidite opet se radi o poštivanju rasporeda unutar zagrada naredbe WriteLine() i imamo ispis na ekranu onako kako smo željeli!Naravno da bi vidjeli i druge decimale deklaracija naše varijable mora biti float a ne int paket ili težina, ali ovdje je samo pokazano kako mi možemo rješavati ispise i izgled ispisa.

Console::Write(L"Imamo : ");
Console::Write(paket);
Console::WriteLine(L"...paketa");

Ovaj dio samo govori da se sve ispisuje u istoj liniji zbog Write() naredbe(funkcije)…nema preskakanja u novi red!!!!
Znači Write () funkcija nam sve u isti red stavlja a zatim imamo WriteLine(L“...paketa“); i preskakanje u novi red jer nam treba radi preglednosti slijedeće naredbe koju smo u programu napisali a mogli smo isto napisati i s Write naredbom ali ne bi bilo lijepo..eto to su osnovne razlike. Sad ćemo ukloniti komentare s drugog dijela koda i pokrenuti i naravno objasniti.





Sad naravno objasnjavamo slijedeci blok naredbi










String^ line = Console::ReadLine();//definiramo varijablu line i funkciju pomocu
//koje možemo pisati na ekranu
Console::WriteLine();
Console::Write(line);//ovdje taj ispis pisemo na ekranu
Console::WriteLine();//preskacemo u novi red
Console::WriteLine();










^ taj zna je naziva “hat” i u c++ - djeluje pod nazivom “handle” i povezano je s memorijom ali o tome puno više kasnije , zasad pišite kako vidite a taj znak se dobije pritiskom AltGr i broja 3 ili brojke ili slova gdje vam se taj znak nalazi , zatim razmaknica ili bilo koje slovo početno od varijable koju želite napisati! Zatim smo imenovali line varijablu koja pripada tom zankovnom nizu i u nju ćemo spremati naš ispis konzoli zbog funkcije ReadLine() koja naravno pripada Console::ReadLine() što naravno znači ispis na ekran i prelazak u slijedeći red! Ja sam dodao još i Console::WriteLine(); odmah ispod radi ljepšeg izgleda. Zatim pomoću Console::Write(line); ponovo ispisujenm što sam napisao i spremio u string objekt line, i opet preskok u novi red!
Zatim ,











Console::ReadKey();//nova funkcija koja cita sto smo stisnuli
char h = Console::Read();//ispisuje na konsoli sto stisnemo zbog Read()-citaj
Console::WriteLine();










..pomoću char tipa i Console::Read(); funkcije sad direktno vršimo isto ispis na ekran i opet preskačemo u novi red radi ljepšeg izgleda! U biti mi smo pomoću ova dva ispisa i funkcijskih članica Console radili komunikaciju s CMD-om i to je u biti svrha ovih naredbi ili funkcija!
Sad :











ConsoleKeyInfo keyPress= Console::ReadKey(true);//ovdje zbog true nam ispisuje ono ispod
// jer smo pozvali naredbu ConsoleKeyInfo
Console::WriteLine(L"Stisnuta tipka odgovara znaku : {0}\n",keyPress.KeyChar);
//sve ima svoje zasto i kako ,postivamo red u zagradama










Ako bi smo htjeli doznati informaciju koju smo tipku stisnuli to radimo tako kako je ispisano u kodu ….probajte malo logički povezivati deklaracije koje su napravljene i s onim prije što ste naučili i polako počinjete razumijevati C++/CLI programski kod! ConsoleKeyInfo je klas tip definiran u System namespace-u i u njegovu varijablu(objekt) se sprema informacija da li je , i je koja tipka stisnuta, keyPress.KeyChar : o tom izrazu ćemo malo kasnije. Nadam se da polako vidite razlike i sličnosti između C++/CLI pisanja i C++ native pisanja koda bez CLR-a.

safe_cast naredba










Sad prije nego krenemo s daljnim pisanjem koda mali osvrt na static_cast pretvorbu iz jednog tipa u drugi ,ponovite to iz tutorijala na stranicama iz osnova osnove c++-a! U C++/CLI mi također koristimo tu naredbu ali zbog drugačijeg pristupa u C++/CLI pisanju koda i rada s objektima koristiti ćemo safe_cast naredbu jer je primjerenija u C++/CLI programiranju, objektno orijentirana.Naredba se isto primjenjuje kao i static_cast na isti način se i piše !

double broj = 3.5;
double broj2 = 3.5;
int broj_cijeli = safe_cast(broj) + safe_cast(broj2);

Naravno izvršili smo pretvorbu double u int ,i rezultat je bez decimala zaokružen na cijeli broj a sve to da bismo rezultat double brojeva pohranili u cjelobrojnu varijablu!!!

Prije slijedećeg programa nešto malo i o enumeraciji brojeva u C++/CLI programiranju koje se razlikuje od običnog ISO/ANSI C++ programa.

enum class Kolekcija{ime,prezime,godine,spol};











To je definicija enumeracijskog tipa,Kolekcija,i varijable tipa kolekcija (koje su u biti objekti) i zbog toga kad im pristupamo moramo to na ovakav način :

Kolekcija kolekcija = Kolekcija::ime;

Znači pristupili smo objektu ime i pridružili varijabli kolekcija koju sad možemo dalje upotrijebiti jer ona sad nama znači isto što je i ime .Zbog definiranja class u C++/CLI programiranju mi smo enumeraciji dali novu dimenziju,dimenziju objekta . No,sve u enumeriranju(nabrajanju) unutar vitičastih zagrada je tipa int jer prvi član je nula,drugi je jedan i dr. po defaultu i stoga prije pristupanja moramo sve naše varijable (objekte) „castati“ i pohraniti u novu varijablu tipa int i na taj način iskorisiti čitanje našeg nabrajanja!I na kraju ovog teksta a prije programa koji još dodatno objasnim ,zato što je enumeracija class(razred)tipa ne može se definirati lokalno unutar main() funkcije nego izvan nje—globalno!!
Sad primjer i shvatite sve što sam prije napisao!

Naravno ovaj iznad editor koda koji je u dvije slike napišete cijeli kod u editor koda!

Još malo objašnjenja slijedi.
Također mi možemo u enumeraciji koristiti i tipove kao što su bool ili char a kako ih deklariramo pokazat ćemo u programima i naravno enumeracija je nabrajanje unutar vitićastih zagrada.Oblik kako definiramo tip je :



enum class Kolekcija : char {ime,prezime,godine,spol};





…znači sve je isto osim što smo stavili dvotočku poslije imena enumeracije i klase ,naravno pristup članovima Kolekcije također se vrši “castanjem” i pristup je isti kao u prošlom programu .Po defaultu ime=0; ali mi to možemo mijenjati tako da nam ime =1 može biti ,primjenite to i vidjet ćete da je sad spol 4. Možemo i ime staviti 10,prezime =2,a spol će opet biti 4! Vidite kako možemo sve to mijenjati , igrajte se malo, griješite namjerno ponegdje i pogledajte što se dešava,tako se uči također.

enum class Kolekcija : bool{ime=true,prezime=true,godine=true,spol=false};

Sad možete gornji kod izmjeniti ovako kao gore i pogledajte što se ispisuje.Vidite ,u biti pokazujemo osnove u Visual c++,naravno sve to nam reba kasnije kada budemo dublje ušli u programiranje za Windows .Tipovi koje možete koristiti u enumeraciji su svi oni koji su navedeni u onoj tablici na početku posta i naravno ne zaboravite “safe_cast” u pristupu pri enumeraciji.Evo kako sam ja izmjenio program a vi možete kako želite!!!Ovdje je primjenjen tip bool!



Eto malo sve to proučavajte i vježbajte i nastavljamo.

Prije ovog dijela nužno je ponoviti if-else uvjete i do-while naredbe iz tuta za početnike. Adresa je naravno http://metrobroadband.metronet.hr/helena-drpic Tamo to ponovite ili ako već znate to nije potrebno.U slijedećem programu umjesto char naredbe imamo wchar_t naredba koja odgovara char naredbi ali ima i neka proširenja u C++/CLI programiranju. Zatim imamo i deklaraciju:
slovo= Console::ReadLine() ;
funkciju koja vrši spajanje unosa preko tipkovnice (najsličnije naredbi cin) ...i naravno ostale naredbe su nam poznate..
NET.Framework pruža i posebne(svoje) funkcije za usporedbu slova unutar char klase!To su
Char::ToUpper(); i Char::ToLower();
Slijedi kratki program usporedbe a nakon njega i objašnjenje ovih funkcija u drugom programu gdje ćemo konkretno upotrijebiti te funkcije. Naravno u tom tek drugom programu upotrbljavamo i else naredbu ali prije toga morat ću se osvrnuti na objašnjenje uvjetnih operatora tkz. „trinari uvjet“ .Opći oblik je x ? y : z ; Što znači ako je vrijednost x istina rezultat je y,ako nije tada je to z.Znači računa ili y ili z!Piše se u tom obliku i to ćemo upotrijebiti u programu.
if (slovo>= 'A')
if(slovo<='Z') { Console::WriteLine(L"Upravo ste unijeli veliko slovo!"); Console::WriteLine(); return 0; }
Primjetite da u ovom dijelu koda ako je unutar if bloka samo jedan red ne moramo pisati viticaste zagrade a ako ima više izjava ili naredbi tad mora biti {} blok i normalno return 0; nam je povratna informacija da je kod izvršen!
Console::WriteLine(L"Niste unijeli slovo!");
Console::WriteLine();
return 0;
}
Na samom kraju programa je ta izjava i primjetite da nema else naredbe jer nije potrebna u ovakvoj postavci logike programa.Probajte staviti,program se izvrši ali zadnja konstatacija da nismo unijeli slovo se ne izvršava.U drugom programu ćemo upotrijebiti else naredbu.



Malo proučavajte program i usporedite ga s programom usporedbe slova u tutu na stranici za početnike. Sad slijedi drugi ptogram gdje ćemo konkretno prikazati korištenje Char::ToUpper() funkcije i else naredbe.


Dobro proučite ovaj program i if uvijet koji proučava da li je slovo veliko ili malo , a to ispitivanje smo stavili u onaj oblik x?y:z ako je slovo prvi uvjet tad je veliko ako nije tad je malo!
Ispitivanje slijeva nadesno . Nema vitičastih zagrada jer sve je u jednom redu a to se zove sažimanje koda ! Opet primjetite poštivanje poretka u zagradama pri navođenju uvjeta nije teško shvatiti logiku ovog ispitivanja.

U varijablu veliko smo spremili naše slovo nad kojim se izvršava funkcija iz klase Char.

wchar_t veliko = Char::ToUpper(slovo);

...na taj način smo upotrijebili varijablu veliko, za if ispitivanja i skratili program na nekoliko redova za razliku od prošlog programa koji je napravljen s više if uvjeta..a ovdje upotrebljavajući funkcije klase Char skratimo program. Tako malo proučavajte C++/CLI ispitivanja jer to je CLR programiranje ,naravno osnove!!

U slijedećem programu malo ćemo pobliže objasniti Console::KeyInfo class i Console::ReadKey() funkciju ispitivanje koja je tipka ili kombinacija tipki stisnuta.



Sad ćemo malo objasniti funkciju Console::ReadKey();
funkciju u petlji a ona pripada klasi ConsoleKeyInfo .
U progarmu smo napravili da pritiskom kombinacije tipki dobijemo prikaz koje tipke smo pritisnuli i koji znak se prikazuje,a pritiskom na escape tipku završava program.Znači upotrijebili smo do – while petlju !
tipkaStis = Console::ReadKey(true);
Upotrijebili smo funkciju ReadKey() kad stisnemo tipku ona se sprema u varijablu tipkaStis, true je samo potvrda da smo je stisnuli. Na početku programa smo delklarirali da je tipkaStis tipa ConsoleKeyInfo .Ta klasa ima tri svojstava koja se pridružuju tipkiStis,ta svojstva su Key(koja tipka je stisnuta) KeyChar---UNICODE vrijednost tipke i na kraju Modifiers svojstvo koje nam pruža uvid u tipke Shift,Alt ili Ctrl .ConsoleModifiers svojstvo je dio System biblioteke definirano kao enumeracija te tri tipke! Da bismo pristupili svojstvima za našu varijablu moramo pisati ovakav izraz:tipkaStis.Modifiers . Znači da bismo pročitali svojstvo Modifiers za tipkuStis tada je važno odvojiti ih točkom i ona ima značenje pristupa tom svojstvu,također tako pristupamo i ostalim dvama svojstvima koje smo objasnili dosad.tipkaStis.Key,tipkaStis.KeyChar…evo tako i ova dva svojstava primjenjujemo na stisnutu tipku.

if(safe_cast(tipkaStis.Modifiers)>0);

Pitate se zašto smo castali tipkaStis, zato što svojstvo Modifiers ima int tip jer je enumeracija a one su uvijek int tipa,i unutar if petlje ispituje da li je veće od nule i ako je mi smo stisnuli ili Alt ili Ctrl ili Shift .Naravno u kombinaciji s tipkaStis nam govori što smo stisnuli ,ako nije stisnuta kombinacija if petlja se preskače i tada su na redu one druga dva svojstava i eto sva tri svojstva primjenujemo unutar do-while petlje!Nisam objašnjavao ispis jer je to prije objašnjeno.Petlja se vrti dok se ne ispuni :

while(tipkaStis.Key != ConsoleKey::Escape);

Eto to ponovite i pročitajte nekoliko puta.U slijedećem programu ćemo upotrijebiti switch() naredbu u ispitivanju jedne rečenice o samoglasnicima suglasnicima gdje ćemo samoglasnike staviti u case dijelove a ostalo suglasnici kao default i naravno nove funkcije koje to ispituju!




Sad pogledajmo izbliza ovaj program koji analizira rečenicu pomoću for petlje u C++/CLI programu.Prvo , smo deklarirali našedvije varijable u koje spremamo onošto ćemo navesti u for petlji:
int samoglasnici=0;
int suglasnici=0;

….najbolje je odmah vrijednosti posatviti na nulu jer ćemo u for petlji za svaku provjeru slova spremati rezultat u varijable i pošto se radi o cjelobrojnom rezultatu i one su int tipa! Sad deklariramo našu rečenicu koju ćemo provjeriti , naravno ona je string tipa jer se radi o rečenici,i opet se pojavljuje onaj ^ “hat” znakić koji ću objasniti malo kasnije ,zasad vi to pišite tako kako je ,a on se dobije da ponovim AltGr + 3 i onda pišite što želite. U našem slučaju varijabla (objekt) rečenica!
String^ recenica = L"Evo sad ce vam program pokazati sto radi!\n\n";

Vidite da sam i primjenio i \n manipulatore da bi mi ljepše program izgledao. Sad dolazi zanimljiv dio programa a to je for each petlja!

for each(wchar_t x in recenica)

...for each petlju upotrebljavamo kad se krećemo kroz rečenice ili nizove slova a njen izgled je kako je gore napisano,navodi se općenito što gledamo a to je slovo u rečenici(doslovno ) i petlja se vrti koliko rečenica ima slova . Sad,da bismo radili provjeru za svako naše slovo moramo uvesti naravno if petlju koje će svoje rezultate pretrage za svaku vrtnju for petlje spremati u svoju varijable,i switch() naredbu kojom određujemo samoglasnike ,vidite sve se nalazi unutar for petlje i naravno sve spremamo i brojimo našim varijablama koje su u biti brojači! Molim ponovite neke stvari na tutu za početnike! Na kraju slijedi ispis koji je sam po sebi jasan,objasnio sam to prije da sad ne ponavljam a u daljnim izlaganjima kroz stranicu ću ponoviti i to .

if(Char::IsLetter(x));
{
x = Char::ToLower(x);
switch(x)
{
case 'a' :case 'e': case 'i':case 'o':case 'u':
++samoglasnici;
break;
default:
++suglasnici;
break;
}
}
}
Console::WriteLine(recenica);
Console::WriteLine(L"Recenica ili rijeci sadrze {0} samoglasnika i {1} suglasnika\n\n"
,samoglasnici,suglasnici);


….vidite naredbe i poštivanje rasporeda u zagradama i prje toga isppis rečenice koju provjeravamo!!!!
if(Char::IsLetter(x));
…Naredba u if uvjetu je funkcija koja utvrđuje istinu da li je slovo koje se provjerava slovo!Sad otvaramo switch naredbu ali prvo slova pretvaramo u mala da izbjegnemo razlike velikih i malih…to radimo ovom naredbom(funkcijom):
x = Char::ToLower(x);
…zatim naredba switch(x) koja ima svoje uvjete u case: u kojima smo postavili samoglasnike i na taj način analiziramo cijelu rečenicu…rezultate spremamo u naše varijable(brojače) i eto analiza je gotova,ponovite petlje u petlji i ne bi vam ovo trbalo biti teško a i naredbe(funkcije) u C++/CLI programiranju se lako pamte ,i njhova svrha je jasna.Samo da ponovim da ova stranica ima svoj početak a to je uvod pa tek onda ovaj post koji sam završio jer sad ide slijedeći post.







Nema komentara: