Szukaj

1944

Reklama

Chroń swoje dziecko

w Internecie
Reklama

za darmo ...

Kalendarz

Reklama

Jak odbierasz ...

Wygląd portalu
 

"Musicie od siebie wymagać, nawet jeśli inni by od Was nie wymagali..." JP2 [100%]

Reklama
Iteracje (pętle) w programie. Do...while PDF Drukuj Email
Ocena użytkowników: / 5
SłabyŚwietny 
Instrukcje i materiały do ćwiczeń - Podstawy programowania w C++
Wpisany przez Administrator   

Z tego artykułu dowiesz się:

  1. Co to jest iteracja
  2. jakie są rodzaje iteracji
  3. Kiedy stosuje się iteracje
  4. jakiej instrukcji używamy, aby porównać zmienne tekstowe
  5. kiedy i jak używamy funkcji strcmp()
  6. Jak poprawnie używać instrukcji do...while

 


Aby przypomnieć sobie poprzednie lekcje a także wprowadzić kilka nowych rzeczy - napiszmy kilka programów:

 

Ćwiczenie 1:

Napisz program, który oblicza pole powierzchni trójkąta o boku i wysokości podanych przez użytkownika. (P= 0.5 * a * h )

 

 

 przeanalizujmy ten kod:

- zauważ, że dołączamy kilka bibliotek  (sekcja #include)

- nowe są wyrażenia cin >> oraz cout << Na dzień dzisiejszy wystarczy powiedzieć, że  działają one podobnie jak printf() oraz scanf(), jednak są troszkę wygodniejsze w użyciu

- dodanie do strumienia cout << endl na końcu działa tak samo, jak \n, czyli powoduje przejście do nowej linijki.

 

Ćwiczenie 2:

Napisz program, który sprawdza, czy podana przez użytkownika liczba jest liczbą parzystą po czym wyświetla stosowny komunikat.

Wskazówka: liczba parzysta dziali się przez dwa. Innymi słowy reszta z dzielenia liczby parzystej przez 2 wynosi 0 (zero). np 4/2 = 2.0 ale 5/2 = 2.5 więc 5 jest nieparzysta, bo podzielona przez 2 generuje resztę z dzielenia.

symbol  %  oznacza resztę z dzielenie. Czyli 5%4 = 1, 8%4=0 itd.Każda liczba, która %2 = 0 jest więc liczbą parzystą.

 

Ćwiczenie 3:

Napisz program, który sprawdza, czy podana przez użytkownika liczba jest wielokrotnością dziesiątki. 

Wskazówka: analogiczny program jak ten z ćwiczenia 2. Kod  wklejony jest na końcu artykułu.

Spróbuj sam napisać ten program. Poszukaj w Internecie jeśli czegoś nie do końca rozumiesz. Kod programu jest wstawiony na końcu artykułu - dla sprawdzenia.

Ćwiczenie 4:

Napisz program, który sprawdza, czy dana liczna jest dodatnia (=>0) jednocześnie podzielna przez 2 (parzysta).

Wskazówka: użyj argumentów logicznych &&.

Spróbuj sam napisać ten program. Poszukaj w Internecie jeśli czegoś nie do końca rozumiesz. Kod programu jest wstawiony na końcu artykułu - dla sprawdzenia.

Ćwiczenie 5:

Napisz program, który prosi użytkownika o login i hasło. W  przypadku podania poprawnych danych wyświetla informacje o tym, że użytkownik jest zalogowany. W przeciwnym przypadku wyświetla się komunikat o błędzie.  (login oraz hasło są już zapisane w programie)

pseudokod:

  1. start
  2. wczytaj login
  3. czy login istnieje? jeśli tak, to idź dalej, jeśli nie, to skocz do punktu 7 
  4. wczytaj hasło
  5. czy hasło poprawne? jeśli tak, to idź dalej jeśli nie, to skocz do punktu 7
  6. wyświetl komunikat "Witamy");
  7. koniec

 

Kod programu:

 

 

 analiza kodu:

if (strcmp(login, dobry_login) == 0) ... - strcmp() to funkcja zbudowana specjalnie do tego, żeby porównywać stringi czyli sprawdzać, czy zmienne łańcuchowe są równe, czy pierwsza jest większa lub druga jest większa. Generalnie strcmp() zwraca liczbę, która mówi jak wypadło porównanie:

 wartość zwrócona
co oznacza
 <0 łańcuch 1 jest mniejszy niż łańcuch 2
 =0 łańcuchy są takie same
 >0  łańcuch 1 jest większy niż łańcuch 2

 

Dzięki tej funkcji możemy porównać np. login podany przez użytkownika z naszym "wzorcem" zapisanym w programie.

Tak więc sprawdzamy, czy funkcja strcmp() zwraca 0 - jeśli tak, to łańcuchy są takie same. jeśli nie, to nie są takie same.

 

 Prześledź działania programu krok po kroku wciskając F8. Zobacz, jak zmieniać się będzie "ścieżka" wykonywania instrukcji kiedy podamy dobre dane oraz kiedy podamy błędne dane.

 

Teraz podbijmy poprzeczkę wyżej. 

Załóżmy, że chcemy sprawić, że użytkownik może w nieskończoność wprowadzenia danych do logowania zanim system go "odrzuci".

trzeba użyć pętli, czyli iteracji.

Pętla to taka struktura, która umożliwia wielokrotne wykonywani bloku instrukcji. Powtarzanie odbywa się dopóty, dopóki warunek przerwania nie zostanie spełniony.

Chcemy taką możliwość "oprogramować".

Zastanówmy się najpierw nad pseudokodem:

 

  1. start
  2. wczytaj login
  3. czy login istnieje? jeśli tak, to idź dalej, jeśli nie, to skocz do punktu 7 
  4. wczytaj hasło
  5. czy hasło poprawne? jeśli tak, to idź dalej jeśli nie, to skocz do punktu 7
  6. wyświetl komunikat "Witamy");
  7. czy jeszcze jedna szansa? jeśli tak, to idź do punktu 2, jeśli nie, to idź do punktu 8
  8. koniec

 Pogrubiono to, co dodane zostało w stosunku do poprzedniego kodu ćwiczenia.

Tak więc dodana została jedna linijka tekstu.

 Zobaczmy jak trzeba zmienić kod:

 

 

na zielono zaznaczono to, co trzeba dopisać do poprzedniego programu.

Jak widać pętla zaczyna się od do (rób) ,po czym w klamrach {} zamieszczono instrukcje, które trzeba wykonywać. Po klamrze zamykającej blok instrukcji użyto while (dopóki), po którym wstawiono warunek - pierwsza (zerowa) litera łańcucha czy_jeszcze powinna się równać małej lub dużej literze "t" - jeśli tak jest to instrukcje z pętli są dalej wykonywane. Czyli wystarczy, że użytkownik po pytaniu o kontynuacje wciśnie cokolwiek innego nić "t"lub "T", aby program przestał działa. Oto listing z wywołania programu:

 

 

 

Ćwiczenie 6:

Napisz program, który służy do zgadywania liczby znanej komputerowi. W przypadku zgadnięcia pojawia się napis ze stosowną pochwałą.

 Wskazówka: program analogiczny jak ten powyżej, tylko zamiast loginu i hasła tekstowego trzeba użyć operacji na liczbach.

Wywołanie programu:

 

 

powodzenia!

 

 

 

 

 

Odpowiedzi ...

kod programu z ćwiczenia 3:

kod programu z ćwiczenia 4:

 

kod programu z ćwiczenia 6:

 

 na kolor żółty zaznaczono instrukcje pętli.