Język C, instrukcje sterujące (laboratorium)
Transkrypt
Język C, instrukcje sterujące (laboratorium)
Język C, instrukcje sterujące (laboratorium) Opracował: Tomasz Mączka ([email protected]) 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) instrukcja1; else instrukcja2; Jeżeli wyrazenie jest prawdziwe, wykona się instrukcja1, w przeciwnym wypadku instrukcja2. Blok else nie jest wymagany, instrukcja może mieć postać: if (wyrazenie) instrukcja1; 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) printf(”OK”); else printf("Dozwolone od 18 lat ;-)"); Instrukcja wyboru Instrukcja switch jest przeznaczona do 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 */ break; case wartość2: /* instrukcje, jeśli wyrażenie == wartość2 */ break; /* ... */ default: /* instrukcje, jeśli żaden z wcześniejszych warunków nie został spełniony */ break; } wartosc1, wartosc2, … muszą być stałymi. Przykład (fragment programu): unsigned int dzieci = 3, podatek=1000; switch (dzieci) { case 0: break; /* brak dzieci - czyli brak ulgi */ case 1: /* ulga 2% */ podatek = podatek - (podatek/100* 2); break; case 2: /* ulga 5% */ podatek = podatek - (podatek/100* 5); break; default: /* ulga 10% */ podatek = podatek - (podatek/100*10); break; } printf ("Do zapłaty: %d\n", podatek); Pętle Instrukcje sterujące while, do while, for, zwane są pętlami. Pozwalają wielokrotne na wykonanie ciągu instrukcji, gdy zachodzą określone warunki. Składnia instrukcji while while (wyrazenie) instrukcja1; while (wyrazenie) { instrukcja1; instrukcja2; //... instrukcjaN } Instrukcja lub grupa instrukcji wykonuje się, dopóki wyrazenie jest prawdziwe (różne od 0). UWAGA! Po while (wyrazenie)w 99% przypadków nie stosujemy średnika (instrukcji pustej)! do instrukcja1; while (wyrazenie); do { instrukcja1; instrukcja2; //... instrukcjaN; } while (wyrazenie); Instrukcja lub grupa instrukcji wykonuje się, dopó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) instrukcja1; for (wyrazenie1; wyrazenie2; wyrazenie3) { instrukcja1; instrukcja2; instrukcjaN; } Instrukcja lub grupa instrukcji wykonuje się, dopó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 do 10. a) instrukcja while int i=0; while (i<=10) { printf(”%d”, i); i++; } b) instrukcja do while int i=0; do { printf(”%d”, i); i++; } while (i<=10); c) instrukcja for int i; for (i=0; i<=10; i++) printf(”%d”, 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 zbudowanie 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ż do 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.