06
Metodyka i techniki programowania
Instrukcje sterujące w C
Jacek Dańda na podstawie lab. W. Szmuca
Ćwiczenie 1. Instrukcja switch
1. Zaimplementuj kod
/* TODO: wczytanie zmiennych "lArgument", "operator", "pArgument" (%f%c%f) */
switch (expression)
{
case '+':
printf("%f+%f=%f\n", lArgument, pArgument, lArgument + pArgument);
break;
case '-':
printf("%f-%f=%f\n", lArgument, pArgument, lArgument-pArgument);
break;
case '*':
printf("%f*%f=%f\n", lArgument, pArgument, lArgument*pArgument);
break;
case '/':
printf("%f/%f=%f\n", lArgument, pArgument, lArgument/pArgument);
break;
default:
printf("Niepoprawny format.\n");
};
2. Co się stanie, gdy usunięte zostanie break?
Zadanie
Napisz program wypisujący nazwy pór roku w zależności od numeru wprowadzonego miesiąca.
W przypadku, gdy miesiąc może należeć do różnych pór roku rozstrzyganie na podstawie
pobranego numeru dnia tego miesiąca..
Ćwiczenie 2. Pętla while.
1. Zaimplementuj kod:
srand(time(NULL));
short propozycja, wylosowana=rand()%100;
do
{
printf("Wpisz liczbe: ");
scanf("%hd", &propozycja);
if (propozycja>wylosowana) printf("Zbyt duza liczba\n");
if (propozycja<wylosowana) printf("Zbyt mala liczba\n");
} while (propozycja!=wylosowana);
printf("Zgadza sie!\n");
2. Przed pętlą dodaj:
if (propozycja<0 || propozycja>99)
{
printf("Liczba poza zakresem 0-99.\n");
continue;/* przejdz do warunku petli */
};
Sprawdź działanie programu po wpisaniu niepoprawnej wartości.
3. Zamień continue na break. Sprawdź działanie programu.
4. Zmień program tak, aby stosował pętlę while zamiast do/while.
Ćwiczenie 3. Pętla for.
1. Zaimplementuj kod:
/* TODO: wczytywanie zmiennej "n" */
unsigned indeks, silnia=1;
for (indeks=2; indeks<=n; indeks++)
{
silnia*=indeks;
};
2. Zamień indeks++ na ++indeks, czy to coś zmienia?
3. Zmień program tak, aby obliczał liczbę Eulera przy pomocy wzoru:
n
wczytuj z konsoli.
Zadanie
Napisz program, który wyświetli przebieg ustalonej funkcji (np. sinus) za pomocą symboli *.
Ćwiczenie 4. Operatory binarne.
1. Zapisz poniższy kod w pliku bitowe.c:
/* TODO: wczytywanie zmiennej "nieujemna" (unsigned) */
short indeks;
printf("%u w zapisie binarnym: ", nieujemna);
for (indeks=31; indeks>=0; indeks--)
{
printf("%d", (nieujemna>>indeks)%2);
if (indeks%4==0) printf(" ");
if (indeks%8==0) printf(" ");
};
Sprawdź działanie programu oryginalnego oraz po usunięciu nawiasów zawierających
operację przesunięcia bitowego.
2. Używając powyższego programu (lub jego modyfikacji) wypisz więcej bitów niż wynosi
wielkość wypisywanego typu. Co można wywnioskować z otrzymanego wyniku?
3. Zmodyfikuj program tak, aby wyświetlał również reprezentację bitową liczb ujemnych.
4. Wykorzystując przedstawiony w punkcie 1. algorytm sprawdź działanie pozostałych
operatorów bitowych.
Zadanie
Napisz program, który rozkłada liczbę na bity z wykorzystaniem przesunięcia bitowego w lewo.