Język C, instrukcje sterujące (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Na podstawie http://pl.wikibooks.org/wiki/c Wstęp Instrukcja warunkowa Instrukcja if/if-else pozwala na warunkowe wykonanie instrukcji w zależności od wartości wyrazenie jest prawdziwe (różne od 0). Składnia instrukcji if-else if (wyrazenie) else Jeżeli wyrazenie jest prawdziwe, wykona się instrukcja1, w przeciwnym wypadku instrukcja2. Blok else nie jest wymagany, instrukcja może mieć postać: if (wyrazenie) jeżeli nie jest istotne co wykona się w przypadku gdy wyrazenie nie jest prawdziwe. Przykład (fragment programu): int wiek; printf("podaj wiek: "); scanf("%d", &wiek); if (wiek>=18) else printf( OK ); printf("dozwolone od 18 lat ;-)"); Instrukcja wyboru Instrukcja switch jest przeznaczona wyboru spośród wielu wariantów (może zastąpić zagnieżdżone instrukcje if-else). Składnia switch (wyrażenie) case wartość1: /* instrukcje, jeśli wyrażenie == wartość1 */ case wartość2: /* instrukcje, jeśli wyrażenie == wartość2 */ /*... */ default: /* instrukcje, jeśli żaden z wcześniejszych warunków nie został spełniony */
wartosc1, wartosc2, muszą być stałymi. Przykład (fragment programu): unsigned int dzieci = 3, podatek=1000; switch (dzieci) case 0: /* brak dzieci - czyli brak ulgi */ case 1: /* ulga 2% */ podatek = podatek - (podatek/100* 2); case 2: /* ulga 5% */ podatek = podatek - (podatek/100* 5); default: /* ulga 10% */ podatek = podatek - (podatek/100*10); printf ("Do zapłaty: %d\n", podatek); Pętle Instrukcje sterujące while, while, for, zwane są pętlami. Pozwalają wielokrotne na wykonanie ciągu instrukcji, gdy zachodzą określone warunki. Składnia instrukcji while while (wyrazenie) while (wyrazenie) //... instrukcjan Instrukcja lub grupa instrukcji wykonuje się, póki wyrazenie jest prawdziwe (różne od 0). UWAGA! Po while (wyrazenie)w 99% przypadków nie stosujemy średnika (instrukcji pustej)! while (wyrazenie);
//... instrukcjan; while (wyrazenie); Instrukcja lub grupa instrukcji wykonuje się, póki wyrazenie jest prawdziwe (różne od 0), ale wykona się zawsze co najmniej raz, gdyż warunek jest sprawdzany na końcu. for (wyrazenie1; wyrazenie2; wyrazenie3) for (wyrazenie1; wyrazenie2; wyrazenie3) instrukcjan; Instrukcja lub grupa instrukcji wykonuje się, póki wyrazenie2 jest prawdziwe (różne od 0). wyrazenie1 wykonuje się jednokrotnie, przed rozpoczęciem wykonywania ciała pętli, wyrazenie3 wykonuje się po każdym przebiegu pętli. UWAGA! Po for (wyrazenie1; wyrazenie2; wyrazenie3) w 99% przypadków nie stosujemy średnika (instrukcji pustej)! Przykład: fragment programu wypisującego liczby od 0 10. a) instrukcja while int i=0; while (i<=10) i++; b) instrukcja while int i=0; i++; while (i<=10); c) instrukcja for
int i; for (i=0; i<=10; i++) Zadania 1. Napisz program wczytujący liczbę rzeczywistą z klawiatury i obliczający jej wartość bezwzględna. Nie korzystaj z funkcji bibliotecznej fabs. 2. Napisz program, który wczytuje z klawiatury 3 liczby rzeczywiste - długości boków trójkąta i sprawdza, czy jest możliwe zbuwanie trójkąta o takich długościach boków. 3. Napisz program pełniący funkcję kalkulatora. Program powinien wczytywać 2 liczby rzeczywiste argumenty operacji, oraz operator (+, -, *, /, %), wykonywać wybrane działanie i wypisywać jego wynik. 4. Napisz program wczytujący z klawiatury liczbę całkowitą N i wypisujący na ekranie wszystkie liczby całkowite z przedziału <0, N> 5. Napisz program wczytujący z klawiatury liczby całkowite aż wystąpienia 0 i wyznaczający maksimum, minimum i średnią wczytanych liczb 6. Napisz program rysujący na ekranie figurę * ** *** **** ***** Wysokość trójkąta powinna być wczytywana z klawiatury. 7. Rozszerz program z zadania 3 o cykliczne wykonywanie. Program po wykonaniu operacji powinien wyświetlać pytanie Czy chcesz kontynuować (T/N)? Jeżeli użytkownik wprowadzi T, program wykonuje kolejny cykl, w przeciwnym wypadku kończy się. 8. Napisz program wyznaczający reprezentację liczby wczytanej z klawiatury w systemie dwójkowym. 9. Napisz program wypisujący na ekranie N liczb pierwszych z przedziału <A, B> (N, A i B wczytywane z klawiatury). 10. Napisz program wyznaczający największy wspólny dzielnik (NWD) i najmniejszą wspólną wielokrotność (NWW) liczb wczytanych z klawiatury.
11. Rozszerz program z zadania 4 tak, aby pomijał liczby podzielne przez 7. Wykorzystaj instrukcję continue. 12. Rozszerz program z zadania 4 tak, aby kończył działanie jeżeli wypisze liczbę > 100.