INFORMATYKA 1 FOLIE NR 3 TEMAT: Programowanie wj zyku C/C++
Transkrypt
INFORMATYKA 1 FOLIE NR 3 TEMAT: Programowanie wj zyku C/C++
Przykład 1 INFORMATYKA 1 FOLIE NR 3 #include <stdio.h> TEMAT: Programowanie w j zyku C/C++: instrukcje iteracyjne for, while, do ... while int main() { int i,x; float suma = 0.0; Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) instrukcja; for (i=0; i<10; i++) { printf("Podaj liczbe nr %d: \n",i+1); scanf("%d",&x); suma = suma + x; } printf("Srednia: %.3f\n",suma/10); START oblicz wyr1 Instrukcja for twory p tl działaj c w nast puj cy sposób: 1. Wyliczane jest wyr1 (je li wyst puje). 2. Wyliczane jest wyr2. Je li jego warto ci jest zero, to instrukcja for ko czy działanie, w przeciwnym razie działanie instrukcji for jest kontynuowane (krok 3). 3. Wykonywana jest instrukcja. 4. Wyliczana jest warto wyr3. Działanie jest wznawiane od kroku 2. oblicz wyr2 return(0); } TAK program przedstawia jedno z cz stszych zastosowa instrukcji for czyli organizacj p tli iteracyjnej, wyr1 inicjalizuje licznik (i=0), wyr2 kontroluje granice licznika (i<10), wyr3 zmienia bie c warto licznika (i++). wyr2 == 0 wykonaj instrukcj NIE Jako instrukcja mo e wyst pi instrukcja złoŜona (blok). Działanie instrukcji for mo e zosta przerwane instrukcjami: break, goto lub return (zako czenie całej funkcji). oblicz wyr3 Ka de z trzech wyra e w nawiasach jest opcjonalne (mo e ich nie by ), ale nawiasy i redniki s obowi zkowe. ZagnieŜdŜanie pętli for Przykład 2 (tabliczka mno enia) rednika. Konstrukcja ze rednikiem na #include <stdio.h> Po nawiasie w instrukcji for nie stawia si ko cu: for (i=0; i<10; i++); instrukcja; jest poprawna (kompilator nie zasygnalizuje bł du), ale oznacza wielokrotne wykonanie instrukcji pustej (w podanym przykładzie - 10 razy). Natomiast instrukcja zostanie wykonana tylko raz. for (i=1; i<11; i++) { for (j=1;j<11;j++) printf("%2d ",i*j); printf("\n"); } return 0; Je li w instrukcji for nie jest podane wyr2, to przyjmuje si , e jest ono zawsze prawdziwe. Zatem w prosty sposób mo na skonstruowa p tl niesko czon : for ( ; ; ) { ... } Informatyka 1 Wynik działania programu: int main() { int i,j; Jako instrukcja w p tli for mo e wyst powa kolejna p tla for. KONIEC 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 } -1- © 2008 Jarosław Forenc Informatyka 1 -2- © 2008 Jarosław Forenc Instrukcja while słu y do tworzenia p tli w j zyku C. Jej składnia jest nast puj ca: Instrukcja break umo liwia wcze niejsze zako czenie p tli for. Powoduje ona natychmiastowe opuszczenie p tli i przej cie do instrukcji znajduj cej si bezpo rednio po p tli for. W przypadku p tli zagnie d onych przerywane jest działanie tylko najbardziej wewn trznej z nich. Instrukcja while Instrukcja break while (wyr) instrukcja; Zasada działania instrukcji jest nast puj ca: 1. Obliczana jest warto wyr. 2. Je li warto wyr jest ró na od zera (czyli wyra enie jest prawdziwe) to wykonywana jest instrukcja, a nast pnie powracamy do pkt. 1 (obliczanie warto ci wyr). Je li warto wyr jest równa zeru (nie jest ono prawdziwe), to p tla while ko czy działanie. START Instrukcja skoku: goto Instrukcja ta w postaci: goto label; wyr ≠ 0 Działanie p tli while mo na opisa tak e w nast puj cy sposób: „dopóki wyra enie w nawiasach jest prawdziwe wykonuj instrukcj ”. Przykład: NIE przekazuje sterowanie do miejsca w programie oznaczonego etykiet o nazwie label. Etykiet mo na oznacza tylko całe instrukcje. Skok mo e odbywa si tylko w ramach tej samej funkcji. oblicz wyr Jako instrukcja mo e wyst pi instrukcja złoŜona (blok) czyli kilka instrukcji ograniczonych nawiasami klamrowymi: { i }. wykonaj instrukcj Wyra enie (wyr) po słowie kluczowym while musi by koniecznie umieszczone w nawiasach zwykłych. KONIEC Wyst pienie w powy szym fragmencie programu instrukcji skoku powoduje przeniesienie sterowania do instrukcji rozpoczynaj cej si od etykiety xxx. TAK ... goto xxx; ... xxx: printf(”Tekst\n”); ... Działanie p tli while mo e zosta przerwane instrukcjami: break (opuszczenie p tli), goto (skok do etykiety) lub return (zako czenie całej funkcji). W p tli while mo na zastosowa instrukcj continue. Spowoduje ona przerwanie bie cego kroku p tli i przej cie do sprawdzenia warto ci wyr. Poprawne zako czenie p tli while wymaga, aby w jej wn trzu nast powały zmiany (np. modyfikacje warto ci zmiennych) wpływaj ce na warto wyra enia w nawiasach (wyr). Po nawiasie w instrukcji while nie stawia si na ko cu: Instrukcja kontynuacji: continue continue; Instrukcja kontynuacji u ywana jest wewn trz p tli for i ma posta : Instrukcja ta powoduje bezwarunkowe przej cie na pocz tek p tli (do nast pnej iteracji) z pomini ciem instrukcji znajduj cych si poni ej instrukcji continue. Dokładniej mówi c powoduje przej cie do wyliczania warto ci wyr3. rednika. Konstrukcja ze rednikiem while (wyr); instrukcja; jest poprawna składniowo (kompilator nie zasygnalizuje bł du), ale oznacza wykonanie instrukcji pustej. Natomiast instrukcja zostanie wykonana tylko raz. Informatyka 1 -3- © 2008 Jarosław Forenc Informatyka 1 -4- © 2008 Jarosław Forenc Instrukcja do ... while Zasada działania p tli do ... while jest taka sama jak instrukcji while, ale z t ró nic , e warunek (warto wyr) sprawdzany jest po wykonaniu instrukcji. Składnia instrukcji do ... while jest nast puj ca: Przykład 3 (program sprawdzaj cy ile kolejnych liczb całkowitych nale y doda do siebie, aby otrzyma najwi ksz warto nie przekraczaj c MAX) #include <stdio.h> #define MAX 100 do instrukcja; while (wyr); START Zasada działania instrukcji jest nast puj ca: 1. Wykonywana jest instrukcja. 2. Obliczana jest warto wyr. Je li warto wyr jest ró na od zera (czyli wyra enie jest prawdziwe) to powracamy do pkt. 1 (wykonanie instrukcji). Je li warto wyr jest równa zeru (czyli wyra enie nie jest prawdziwe), to p tla do ... while ko czy działanie. oblicz wyr %d\n",n,suma); %d\nSuma liczb: W p tli while instrukcja mo e nie by ani razu wykonana, natomiast w p tli do ... while jest wykonywana przynajmniej jeden raz. Pozostałe uwagi s takie same jak dla p tli while. Opuszczenie p tli mo na zrealizowa wykorzystuj c tzw. zmienn kontroln , np. int stop = 0; while (!stop) { ... if (...) stop = 1; ... } P tl while mo na wykorzysta do zast pienia p tli for: wyr ≠ 0 NIE while (1) { … } Wykorzystuj c instrukcj while mo na stworzy p tl niesko czon . W takim przypadku jej opuszczenie musi nast pi poprzez u ycie instrukcji break, goto lub return, np. wykonaj instrukcj int main() { int suma, n; suma = n = 0; while (suma<MAX) { n++; suma = suma + n; } suma = suma - n; n--; printf("Ilosc liczb: return 0; } TAK KONIEC jest równowa ne Informatyka 1 for (wyr1; wyr2; wyr3) instrukcja; -5- wyr1; while (wyr2) { instrukcja; wyr3; } © 2008 Jarosław Forenc Informatyka 1 -6- © 2008 Jarosław Forenc