o o o o o M"""" Mo M"""""M M o M M" M Mo o o" oM o ooo M MM" MM "" MM ""oo o""" MM ""o oo """"" oM MM MoM M M M Mo ooo o" MM M" MoooooMo M MoM MM" MM "Mo MM" "M Mo MMo oMM MM MM MMo M ""oo oM"ooM" M o MM o "M "ooo M""o " R "" " " """""" """"" "" E o F oo MM O MMMMMMMooooo MMM ooMoo"MM w R "MMMMM"MMMMMoo MMMMo oMMMM"" MM w M MMMMMo MMMMMM MMMMM MMMM" oMM w E MMMMM MMMMMo oMMMMo oMMMM" MMM . D MMMMM" MMMMM MMMMMM MMMMM oMM r MMMMM MMMMM MMMMMM" MMMMM "" | A MMMMM "MMMM "MMMMMMM MMMMM a S MMMM" "MMMMo oMMMMMMMo oMMMMM g M MMMMo oMMMM MMMMMMMMo "MMMMM . MMMMM MMMMo oMMMMMMMM "MMMMM p G MMMMM MMMM" MMMMMMMM MMMM" l R MMMM"oMMM" oMMM"MMMM MMMMM ooooo o oo O MMMMMMMMM" MMMM MMMMo "MMMM MMMMMMMM MMo U MMMMMMMMooo MMMM "MMMM MMM" MMMMM "MM P MMMM "MMMMo MMMM MMMM ooo "MMMMM "M "MMM MMMMMo MMMMMMMMMMM MMMM oMMMMM MM oMM""" "MMMM MMMMM "MMM"""""MMMo MMMMo MMMMo Mo oM"" MMMM "MMMMo oMM" MMMM MMMMo MMMMM MM MM" MMMM" "MMM """ "MMM "MMMo MMMM" MM MM ""M" MMMMo oMo MMMM MMMo MMMMo MM MM ooooooo MMMMMM oMMMM" ooMMM "MMMo "MMMM oM MM oMMMMMM" """" "" " "MM"" "MMMMooMMM MM MM " MMMM" oM MM """ MM MM PROUDLY PRESENTS ... "M MM MM MM AUTHOR: [ScrVn................................] oM MM E-MAIL: [scrvn@wp.pl..........................] MM MM TOPIC: [Petle.w.C++..........................] oM MM LANGUAGE: [C++..................................] MM MM DATA: [23.12.2002...........................] oM MM WWW: [www.r-ag.prv.pl......................] "M MM MM MMMMMMoMMMoMMMoMMMoMMMoMMoMMoMMoMMoMMoMMMMoMMMoMMMoMMMoMMMoMMMoMMMoMMMoMMMMM Na wstepie Merry Christmas ! i smacznego jajka (Oj!!! - to chyba nie ta impreza 8-) Pewnie sie tak troche dziwicie , ze widzicie moj txt w tym dziale , ale jednak to nie jest pomylka . Postanowilem , ze wezme sie za ten dzial , bo cos z nim kiepsko na dzien dzisiejszy - ale to sie zmieni , gwarantuje to wam 8-) . W sumie wszystko to co tutaj napisze , bede popieral przykladami z Pascala , gdyz ten jezyk znam najlepiej ( a kto go dzisiaj nie zna ? 8-) . W C++ w sumie to siedze od niedawna , wiec chcac nie chcac wszystko bedzie wytulmaczone bardzo prosto, jak krowie na rowie , i jeszcze prosciej 8-) . To moze tyle tytulem wstepu ... Petelki - instrukcje iteracyjne , ale to madrze brzmi , hehehe . 1) Petla while Wiec petla "while" wyglada nastepujaca : while (warunek) { instrukcja } Czy to czegos wam nie przypomina ? Oczywiscie - jest blizniaczo podobna do pascalowskiej "while... do..." W miejsce "warunek" wstawiamy warunek wykonania petli ,czyli to co bedziemy sprawdzac. Teraz popre to moze stosownym przykladem : Chcemy napisac programik , wypisujacy 10 liczb: C++: #include<iostream.h> #include<conio.h> main(void) { int i=0; while(i<10) { i++; cout<<i<<endl; } getch(); } Pascal: program liczby; var i:shortint begin i:=0 while i<10 do begin inc(i); writeln(i); end; end. Czyli jescze raz : 1. sprawdzamy czy liczba jest mniejsza od 10 2. robimy petelke 3. sprawdzamy czy liczba jest mniejsza od 10 4. ... 5. ... W sumie patrzac na jedno src i drugie src to w C++ wyglada to troche krocej , ale w pascalu jest czytelniej (kwestia sporna). A tak na marginesie : funkcja getch() powoduje to , ze okno programu zniknie po nacisniecu klawisza , bo bez tej funcjki w windowsie raczej nie zobaczymy wynikow programu , bo zaraz znika jego okno . Zeby korzystac z tej funcji trzeba dolaczyc plik conio.h 2) Petla do ... while ... To teraz na patelnie idzie "do ... while..." . Jej postac wyglada nastepujaco do { instrukcja } while (warunek) Czy nie przypomina wam ona czasem pascalowskiego "repeat ... until"? Tak ! mi przypomina i to bardzo. Ta petla zawsze wykonuje sie przynajmniej 1 raz , gdzyz warunek sprawdzany jest dopiero po wykonaniu 1 obiegu petli . No to moze teraz maly przykladzik : Chcemy napisac taki sam program jak w poprzednim przykladzie : C++: #include<iostream.h> #include<conio.h> main(void) { int i=0; do { i++; cout<<i<<endl; } while (i<10); getch(); } Pascal: program liczba; var i:shortint; begin i:=0; repeat inc(i); witeln(i); until i=10; end. Widzicie teraz - najpierw wykonujemy petle , a dopiero potem sprawdzamy czy warunek jest prawda czy nie . 3) Petla for Co nam jeszcze zostalo ? Ach ! juz wiem , petelka "for" 8-) Jej postac : for (wyrazenie1;wyrazenie2;wyrazenie3) { instrukcja } I tutaj jest mala roznica , z pascalowskim "for". W miejsca wyrazenie1,2,3 wstawiamy parametry wykonania petli ( ale to madrze zabrzmialo 8-) jednak to bardzo proste . Chodzi o to ze musimy podac licznik petli (moze byc ich kilka) , warunek wykonywania petli (czyli kiedy petla bedzie przerwana) , no i czy licznik petli zwiekszamy czy zmniejszamy - to jest tak samo jak w pascalu: mamy np. for i:=1 to 10 do ... {licznik zwiekszamy} {oraz} for i:=10 downto 1 do ...{licznik zmniejszamy} No to se walniemy moze jakis przykladzik ? Napiszemy sobie to co w poprzednim przykladzie , ale z inna petelka , z petelka FOR 8-) Teraz napiszemy z licznikiem rosnacym ... C++: #include<iostream.h> #include<conio.h> main(void) { for(int i=0;i<10;i++) { cout<<i<<endl; } getch(); } Pascal: program liczba; var i:shortint; begin for i:=0 to 10 do begin writeln(i); end; end. A teraz napiszemy z licznikiem malejacym... C++: #include<iostream.h>> #include<conio.h>> main(void) { for(int i=10;i>0;i--) { cout<<i<<endl; } getch(); } Pascal: program liczba; var i:shortint; begin for i:=10 downto 1 do begin writeln(i); end; end. Chcialem jeszcze dodac : w petli "for" mozna w warunku1 , czyli tam gdzie deklarujemy licznik petli od razu go zadeklarowac , tzn. ze nie musimy o nim wspominac we wczesniejszej czesci programu . No i jeszcze chcialem nadmienic , ze tych licznikow moze byc kilka , a odzielamy je od sienie przecinkiem. To moze maly przykladzik z kilkoma licznikami: C++ #include<iostream.h> #include<conio.h> main(void) { for(int a=1,b=5;a<10;a++,b++) { cout<< a <<" "<< b<<endl; } getch(); } Pascal: Jak sie zapewne domyslacie w pascalu nie jest dostepna taka konstrukcja petli "for" , czyli z dwoma licznikami 8-( 4) Instrukcje: continue i break No ale jesli juz mowimy o petelkach w C++ to grzechem jest nie wspamnac o instrukcjach break oraz continue. Instrukcja break, powoduje przerwanie petli(jesli spelniony jest warunek przerwania petli) i przejscie do nastepnej instrukcji po petli. Ponizszy program czyta 1000 liczb , jednak kiedy podana liczba to 0 przerywa swoje wykonanie i wysietla odpowiedni komunikat: #include<iostream.h> #include<conio.h> main(void) { int d; for(int a=1;a<1000;a++) { cin >>d; if (d==0) break; } cout <<"To byl blad - nie powinienes wpisywac 0 !!!"; getch(); } Instrukcja continue powoduje zakonczenie wykonywania danego obiegu petli , jednak nie przerywa petli !!!. Ponizszy programik czyta liczby i pisze komunikat , jednak gdy ta liczba to 0 ignoruje ja i nie wypisuje niczego: #include<iostream.h> #include<conio.h> main(void) { int d; for(int a=1;a<<1000;a++) { cin >>d; if (d==0) continue; cout <<"Ta liczba moze byc ..."<<endl; } getch(); } Czyli w sumie to tyle jesli chodzi o petle w C++. A tak przy okazji: naprawde dobra szkol...
eulal