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

Podobne dokumenty