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
Wyrażenia warunkowe PDF Drukuj Email
Ocena użytkowników: / 0
SłabyŚwietny 
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.

W poniższym artykule dowiesz się:

  1. Co to jest instrukcja warunkowa
  2. Co to jest zmienna logiczna
  3. Kiedy i jak stosuje się instrukcje warunkowe
  4. Co to są operatory warunkowe i jak się je stosuje.

 

 



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:

  ==  
 a==b 
 Równość. Przyjmuje wartość TRUE, jeżeli wyrażenia po obu stronach operatora
mają tą samą wartość.
   < 
 a<b Mniejszość. Przyjmuje wartość TRUE, jeżeli wyrażenie po lewej stronie operatora
ma wartość mniejszą niż wyrażenie po jego prawej stronie.
   <= 
 a<=b Mniejszość lub równość. Przyjmuje wartość TRUE, jeżeli wyrażenie po lewej stronie
operatora ma wartość równą lub mniejszą niż wyrażenie po jego prawej stronie.
   => 
 a=>b Większość lub równość. Przyjmuje wartość TRUE, jeżeli wyrażenie po lewej stronie
operatora ma wartość równą lub większą niż wyrażenie po jego prawej stronie.
   > a>b Większość. Przyjmuje wartość TRUE, jeżeli wyrażenie po lewej stronie operatora
ma wartość większą niż wyrażenie po jego prawej stronie.
   != a!=b Nierówność. Przyjmuje wartość TRUE, jeżeli wyrażenia po obu stronach operatora
mają różne wartości.


Ćwiczenie 1: Napisz program, który przyjmuje dwie liczby całkowite (typu integer) i informuje użytkownika jaka jest różnica między nimi. Wskazówka: w analogiczny jak powyżej sposób trzeba odnaleźć liczbę większą a następnie odjąć od tej większej pozostałą liczbę.



Ćwiczenie 2: Napisz program, który prosi użytkownika o podanie trzech liczb i wyświetla komunikat z informacją o tym, która z nich jest większa, natomiast w przypadku, gdy podane liczby są równe, program wyświetla stosowny komunikat i kończy działanie.

 

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ę.

 

 Zmienne logiczne.

 

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:

 

 || 
 Suma logiczna (OR)
 Wynik przybiera wartość TRUE, jeżeli choć jeden z dwóch argumentów opcji ma wartość TRUE
 && Iloczyn logiczny (AND)
 Wynik przybiera wartość TRUE,tylko i wyłącznie wtedy, gdy oba argumenty operacji jednocześnie przyjmują wartość TRUE.
  !
 Negacja (NOT)
 Wynik przybiera wartość przeciwną do jedynego dopuszczalnego argumentu stojącego zaraz za wykrzyknikiem.

 

 Ćwiczenia:

  1. Napisz program, który sprawdza, czy użytkownik jest pełnoletni oraz czy jest młodszy niż wiek emerytalny 65 lat (analogicznie jak w ostatnim programie) jednak uzyj operatora &&..
  2. Napisz program, który sprawdza, czy użytkownik ma wystarczające zarobki, żeby wziąć kredyt. Załóżmy, że potrzeba 1500 zł. na 1 członka rodziny.
    (wskazówka:program prosi o zarobki i ilość członków rodziny, z czego wylicza, czy kredyt się "należy" suma zarobków podzielona przez ilość członków rodziny ma być większa lub równa 1500)
  3. Napisz program, który sprawdza, czy użytkownik jest w przedziale wiekowym 5-10, 11-16 lub 17 - 100 i zadaje zagadkę, której poziom trudności jest adekwatny do wieku. Dla ambitnych: program również sprawdza, czy odpowiedź podana przez użytkownika jest poprawna i wyświetla stosowny komunikat.

Zagadka:

5-10 policz: 2+2*2

11-17 policz: (0,5 + 115) / (12- (2*6)) -7

17 - 100 policz: 6!