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