ZAJ CIA 6. Instrukcje iteracyjne (p tle)

Transkrypt

ZAJ CIA 6. Instrukcje iteracyjne (p tle)
Metodyki i techniki programowania 1
2008/2009
ZAJ CIA 6. Instrukcje iteracyjne (p tle)
Instrukcje iteracyjne (ptle) w programach stosuje si bardzo czsto. S
one niezbdne, gdy pozwalaj wykonywa jaki zbiór instrukcji dopóki
wyraenie relacyjne jest spełnione (jest logicznie prawdziwe).
1. INSTRUKCJA (PTLA) while
Jej ogólna posta wyglda nastpujco:
while ( wyraenie relacyjne )
instrukcja;
Jeli w p
tli ma by wykonywany zbiór instrukcji (kilka instrukcji) to
umieszczamy je pomi
dzy { }.
while ( wyra enie relacyjne )
{
instrukcja_1;
instrukcja_2;
// zbiór instrukcji
...
instrukcja_N;
}
DZIAŁANIE:
Jeli wyraenie relacyjne jest prawdziwe (niezerowe) to zbiór instrukcji jest
wykonywany. Cykl jest powtarzany do momentu, kiedy wyraenie relacyjne
przestaje by prawdziwe.
WANE: Wród zbioru instrukcji musi si pojawi tzw. licznik ptli.
Algorytm pokazujcy działanie ptli while
P – zbiór instrukcji wykonywanych w ptli
mgr in . Adam Id kowski
1
Metodyki i techniki programowania 1
2008/2009
PRZYKŁAD 1. Podaj wartoci funkcji y=2x+1 dla x∈<0;10> z krokiem
równym 1.
int x = 0 ;
int x10 = 10;
int y;
while(x <= x10)
{
y=2*x+1;
printf(“ dla x = %d y wynosi %d \n”, x, y );
x=x+1; //licznik p tli
}
PRZYKŁAD 2. Program rysuje tabelk z wartociami funkcji sinus z
krokiem 10 stopni
#include < stdio.h>
#include < math.h>
int main(void)
{
int angle_degree; /*kt w stopniach*/
double angle_radian, pi, value; /* kt w radianach, pi, wynik */
printf ("\nProgram rysuje tabelke z wartosciami funkcji sinus co angle_degree
stopni\n\n");
pi = 4.0*atan(1.0); /* lub jak kto woli 3.1417…, mona te uy stałej M_PI */
printf ( " Value of PI = %f \n\n", pi );
printf ( " angle
Sine \n" );
angle_degree=0;
while ( angle_degree <= 360 ) /* ptla dopóki kt nie osignie wartoci > 360 */
{
angle_radian = pi * angle_degree/180.0 ;
value = sin(angle_radian);
printf ( " %3d
%f \n ", angle_degree, value );
angle_degree = angle_degree + 10; /* licznik ptli (co 10 stopni) */
}
}
mgr in . Adam Id kowski
2
Metodyki i techniki programowania 1
2008/2009
2. INSTRUKCJA (PTLA) for
Ta instrukcja w porównaniu do poprzedniej ma bardziej zwart form. W
jednej linii po słowie kluczowym for nastpuje: inicjalizacja licznika,
wyraenie relacyjne i zwikszanie licznika przy kadym powtórzeniu ptli.
Obie ptle s równowane.
PRZYKŁAD 3. To samo zadanie za pomoc ptli for.
int x;
int x10 = 10;
int y;
for (x=0; x<= x10; x=x+1)
{
y=2*x+1;
printf(“dla x=%d y wynosi %d \n”, x, y );
}
3. INSTRUKCJA (PTLA) do-while
Ogólna posta ptli do while wyglda nastpujco:
do
instrukcja;
while ( wyra
enie relacyjne );
Jeli w ptli ma by wykonywany zbiór instrukcji to umieszczamy je
pomidzy { }.
do
{
instrukcja_1;
instrukcja_2;
...
instrukcja_N;
// zbiór instrukcji
}
while ( wyraenie relacyjne);
mgr in . Adam Id kowski
3
Metodyki i techniki programowania 1
2008/2009
Algorytm pokazujcy działanie ptli do - while
Q – zbiór instrukcji wykonywanych w ptli(w tym licznik ptli)
DZIAŁANIE:
Zwrómy uwag, e gdy decydujemy si na korzystanie z ptli do-while
zbiór instrukcji do wykonania w ptli umieszczamy po słowie kluczowym
do, natomiast wyraenie relacyjne sprawdzane jest na samym kocu.
Jeli ono jest logicznie prawdziwe zbiór instrukcji jest wykonywany
ponownie. Cykl ten trwa tak długo, a wyraenie relacyjne przestanie by
prawdziwe. Ptla do-while wykonuje si zawsze przynajmniej jeden raz.
Na kocu linii ze słowem while stawiamy rednik!!!
PRZYKŁAD 4. Ptla do-while
char litera;
do
{
fflush (stdin); // czyszczenie bufora
printf (“Napisz jakas litere \n”);
scanf (”%c”, &litera);
printf (”\nNapisales: %c \n”, litera);
}
while (litera != ‘k’ );
printf (”Napisales k to konczymy! \n”);
mgr in . Adam Id kowski
4
Metodyki i techniki programowania 1
2008/2009
ZADANIA:
1. Przyrost naturalny jest wskanikiem statystycznym okrelajcym tendencj
rozwoju populacji danego obszaru. Oblicza si go odejmujc liczb zgonów w
danym okresie od liczby urodze. Jeli wynik jest dodatni, oznacza przyrost
liczby ludnoci, jeli ujemny - spadek. W pewnej wsi liczcej 1250 osób, co roku
umiera 15 osób, rodzi si 27. Napisz program obliczajcy liczb ludnoci tej wsi
po n latach (zakładamy ze co roku rodzi si i umiera tyle samo osób).
2. Tomek wygrał 1000000 dolarów, które ulokował na rachunku bankowym o
oprocentowaniu 5% rocznie. Ostatniego dnia kadego roku Tomek wypłaca
100000 dolarów. Napisz program, który oblicza, ile lat upłynie, zanim Tomek
całkowicie opróni swoje konto.
3. Napisa program, który znajduje najmniejsz potg dwójki dla zadanej liczby
naturalnej n, wiksz od n.
4. Napisz program, który policzy ilo małych liter, duych liter, cyfr i innych
znaków podawanych po kolei z klawiatury. Program ma wywietla podsumowanie po naciniciu klawisza space (wskazówka: zastosowa ptl
do-while i zajrze do tabeli kodów ASCII).
mgr in . Adam Id kowski
5