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.

Podobne dokumenty