Wyrażenia warunkowe |
Instrukcje i materiały do ćwiczeń - Podstawy programowania w C++ | |||||||||||||||||||||||||||
Wpisany przez Administrator | |||||||||||||||||||||||||||
W poprzednich artykułach dowiedzieliśmy się:
Jeśli nie pamiętasz tych ćwiczeń lub nigdy ich nie "przerabiałeś" to koniecznie zapoznaj się z nimi, ponieważ bez tych informacji trudno Ci będzie w sposób uporządkowany przyswoić wiedzę z poniższego artykułu.
Instrukcja warunkowa lub wyrażenie warunkowe to instrukcje umożliwiające wybór jednej z kilku dróg wykonania programu w zależności od tego, czy podany przez programistę warunek został spełniony, czy nie. Najważniejszym elementem wyrażenia warunkowego jest wyrażenie logiczne kontrolujące, która z dróg postępowania ma być wybrana.
Najprostszy przypadek instrukcji warunkowej wygląda tak: jeżeli (wyrażenie w nawiasie jest prawdą) to wykonaj blok instrukcji po nawiasie; składnia: if (warunek) instrukcja; przedstawimy to na przykładzie programu. Program pobiera od użytkownika liczbie a oraz liczbę b, po czym informuje która z tych liczb jest większa lub ewentualnie, że są równe.
Wciskamy klawisze Ctrl + F9 aby skompilować program.
Jak widać program działa poprawnie i rozpoznaje wszystkie 3 możliwości, wyświetlając przy okazji odpowiedni komunikat.
Opisowo można wyrażenie warunkowe przedstawić w ten sposób: //pomijamy deklaracje zmiennych i wczytywanie danych, skupiamy się na instrukcjach zaczynających się na "if" jeżeli a>b to napisz "Większe jest a i wynosi ..." jeżeli a<b to napisz "Większe jest b i wynosi ..." jeżeli a=b to napisz "Liczby są równe i wynoszą ..."
Zauważ, że w programie, przy trzecim "if" jest (a==b) zamiast (a=b). Nie jest to błąd tylko operator porównania. dwa znaki = służą do porównania liczb a oraz b. Gdybyśmy napisali "a=b" to program nie sprawdził by czy te liczby są równe tylko po prostu je zrównał, czyli liczbę b zapisał równą liczbie a.
Oto inne operatory porównania:
Aby rozwiązać powyższe zadanie sporządźmy schemat działania programu w zapisie pseudokodowym: 1. czytaj pierwszą liczbę 2. czytaj drugą liczbę 3.Sprawdź, czy liczby są różne - jeżeli są różne, to: a) sprawdź, która z nich jest większa b) wyświetl komunikat o większej liczbie - w przeciwnym wypadku (kiedy liczby są równe): a) wyświetl komunikat o tym, że liczby są równe 4. zakończ działanie programu
Aby napisać stosowny program potrzeba, abyśmy wprowadzili wyrażenie else (czyli "w przeciwnym wypadku"). Else jest rozwinięciem instrukcji if:
if (warunek) instukcja1 else instrukcja2; jeżeli (warunek est spełniony) wykonaj instrukcję 1 w przeciwnym przypadku wykonaj instrukcję 2;
kompilujemy kod (Ctrl + F9) a następnie wciskamy klawisz F8, który uruchamia skompilowany program krok po kroku, abyśmy mogli zobaczyć, które linie kodu są wykonywane i w jakiej kolejności. Uwaga: konieczne będzie przełączanie się między oknem z kodem a oknem konsoli, gdzie np. wprowadzić trzeba będzie dane. Klawisz F8 wciskamy za każdym razem, kiedy trzeba przejść do następnego punktu programu (do następnej instrukcji)
Zobaczysz, że np. w przypadku, kiedy liczby są równe to program nie wykonuje instrukcji
ponieważ nie musi. Jeśli są trzy "ify" bez "else" (tak, jak w programie poprzednim) to program sprawdza każdy z nich. Natomiast użycie instrukcji else sprawia, że pewna cześć kodu może być pominięta, jeśli nie są spełnione konkretne warunki. U nas, po spełnieniu warunku z nawiasu po if (czyli różność wyrażeń) występowały dwie instrukcje, więc ujęto je, jako blok instrukcji, w klamry {}. W zależności id tego, czy użytkownik poda liczby równe, czy nie, wykonywane są tylko niektóre instrukcje programu
Ćwiczenie 3: Napisz program, który prosi użytkownika o podanie roku rodzenia. Jeśli jest on bowiem młodszy, niż 21 lat, program wyświetla stosowny komunikat i kończy działanie.
pseudokod: 1. Rozpocznij 2. Wyświetl monit o podanie wieku 3. czytaj wiek 4. czy wiek => 21 -tak: wyświetl komunikat, że użytkownik jest mile widziany -nie: wyświetl komunikat, że niestety dostęp jest wzbroniony 5. zakończ
Listing z wywołania programu:
Ćwiczenie 4: Napisz program, który prosi użytkownika o podanie trzech liczb i znajduje wśród nich liczbę najmniejszą, którą wyświetla użytkownikowi. Jeżeli użytkownik poda przynajmniej dwie liczby takie same, to program wyświetla komunikat i kończy pracę.
Poznaliśmy już zmienne typu integer, float, char oraz string. Czyli kolejno: całkowite, rzeczywiste, znakowe, oraz takie, które przechowują ciągi znaków. Dziś poznamy typ zmiennych bool, czyli zmienne logiczne.Mówiliśmy wcześniej, że zmienna to pojemnik w pamięci, który przechowuje dane określonego typu,na przykład tylko liczby całkowite. Zmienna typu bool przechowuje tylko jedną z dwóch wartości" prawda lub fałsz. True lub false. Aby zobrazować działanie zmiennych logicznych (czyli bool) zmodyfikujemy lekko program, który weryfikował pełnoletniość użytkownika. Przypomnijmy sobie algorytm programu dzięki zapisowi w pseudokodzie:
pseudokod: 1. Rozpocznij 2. Wyświetl monit o podanie wieku 3. czytaj wiek 4. czy wiek => 21 -tak: wyświetl komunikat, że użytkownik jest mile widziany -nie: wyświetl komunikat, że niestety dostęp jest wzbroniony 5. zakończ
Listing kodu programu (sam stwórz taki na podstawie listingu): (strzałka dodana jest przeze mnie w celu zaznaczenia, że zmienna wykorzystana jest w innym punkcie programu) Wciśnij F9, aby uruchomić program. Sprawdź kilka opcji wiekowych i upewnij się, że program poprawnie działa. Podskoczmy poprzeczkę wyżej: program będzie sprawdzał, czy użytkownik jest pełnoletni oraz czy jest młodszy niż wiek emerytalny 65 lat. Czyli program sprawdza aż dwa warunki i przy zaistnieniu którejkolwiek z tych dwóch sytuacji osoba jest spławiana. Dzieje się tak dzięki operatorowi || Listing programu:
Wciśnij F9, aby uruchomić program. Sprawdź kilka opcji wiekowych i upewnij się, że program poprawnie działa. Prześledźmy działanie programu w pseudokodzie:
1. Rozpocznij 2. Wyświetl monit o podanie wieku 3. czytaj wiek 4. czy wiek < 21 lub wiek >65 ? -nie: wyświetl komunikat, że użytkownik jest mile widziany -tak: wyświetl komunikat, że niestety dostęp jest wzbroniony 5. zakończ
Czyli operator || (or) działa w ten sposób: Jeśli któryś z dwóch warunków jest prawdziwy, to wyrażenie jest prawdziwe. Oto wszystkie operatory logiczne:
Ćwiczenia:
Zagadka: 5-10 policz: 2+2*2 11-17 policz: (0,5 + 115) / (12- (2*6)) -7 17 - 100 policz: 6!
|