Stefan Sokołowski, Podstawy programowania
LABORATORIUM 5


Zadanie 0:

Proszę uważać (i w razie potrzeby przerywać pytaniami) w trakcie prezentacji na temat walki z pluskwami. Prezentowane slajdy dostępne są tutaj; a w postaci do przeglądania lub drukowania — tutaj. Tutaj znajduje się demonstrowany program z błędami.

Proszę dokończyć proces ,,odpluskwiania'' tego programu. Oczywiście konieczne będzie przetestowanie go w różnych warunkach -- dla parzystej lub nieparzystej liczby danych, dla danych zerowych, ujemnych, itp. Zapewne okaże się, że jeszcze kilka rzeczy wymaga poprawienia; proszę wprowadzić konieczne poprawki.


Zadanie 1:

W programie z zad.0 wystąpiły dwa rodzaje pętli:
     
W prawej pętli (czyli pętli do) komenda S (czyli ciało pętli) wykona się co najmniej jeden raz niezależnie od warunku S. W lewej pętli (czyli pętli while) komenda S może ani razu się nie wykonać, jeśli od razu przy pierwszym sprawdzeniu warunek W jest fałszywy.

Proszę wyrazić pętlę do przy pomocy pętli while. To znaczy, tak skonstruować fragment programu zawierający warunek logiczny W oraz komendę S, żeby dawał ten sam efekt co pętla do, ale nie zawierał pętli do a tylko pętlę while:

do { S } while ( W )     ≡     podać równoważne komendy


Zadanie 2:

W języku C występuje jeszcze jeden rodzaj pętli -- pętla for. Najczęściej używane są takie dwa jej rodzaje: przy czym a i b to są wyrażenia o wartościach całkowitych (najczęściej, ale nie koniecznie, liczby całkowite albo zmienne całkowite); a i jest zmienną całkowitą -- t.zw. indeksem pętli. Komenda S może zależeć od tego indeksu, ale nie powinna go zmieniać (to nie jest zabronione regułami języka C, ale złamanie tej zasady prowadzi do bardzo złych programów). Najczęściej stosuje się te pętle do wykonywania tej samej czynności kolejno dla wszystkich wartości całkowitych i, takich że   a ≤ i < b .

Proszę uruchomić program, który bez użycia pętli while, a za to z pętlą for


Zadanie 3:

Uruchomić program, który bez użycia pętli while, a za to z pętlą for (por. zad.4 z lab.3).


Zadanie 4:

Napisać program, który przy użyciu pętli for (i bez pętli innych rodzajów) narysuje gwiazdkami trójkąt równoramienny o podanej przez użytkownika nieparzystej podstawie p; i o wysokości (p+1)/2. Jeśli użytkownik poda parzystą lub niedodatnią podstawę, to program powinien zgłosić błąd.

Na przykład:

         podstawa = 3 :          podstawa = 11 :
        
 *
***
        
     *
    ***
   *****
  *******
 *********
***********


Oczywiście można zagnieżdżać pętlę for w innej pętli for.


Zadanie 5 domowe:

Proszę napisać program, który Na przykład dla k=3 i w=8 strona wydruku powinna wyglądać mniej więcej tak:


Oczywiście program powinien poprawnie działać dla dowolnych k i w, nie tylko dla 3 i 8. I tego przykładowego ,,Pawła Nowaczyka'' proszę zastąpić danymi własnymi; mogą być nieprawdziwe (zmyślone).


Do mojej głównej witrynki

Ostatnia modyfikacja: 23 października 2024