Strona 1
[lekcja] Instrukcja warunkowa if ... else | Kurs C++ » Poziom 1
2011-11-12 15:36:51
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Instrukcja-warunkowa-if-else/16
Darmowe kursy Online
»
Kurs C++
»
Poziom 1
Autor: Piotr Szawdyński
Instrukcja warunkowa if ... else
[lekcja]
Rozdział 13. Sterowanie przebiegiem programu za pomocą instrukcji warunkowej
if ... else
.
Nareszcie za nami podstawy podstaw. Teraz można zabrać się za tłumaczenie poważniejszych zagadnień związanych już bezpośrednio z
programowaniem. Pragę w tym miejscu po raz kolejny podkreślić, że cała wiedza, która do tej pory została omówiona jest niezbędna
do kontynuowania nauki programowania. Wróć do poprzednich rozdziałów jeśli czegoś nie rozumiałeś, bo zarówno ten jak i każdy
kolejny rozdział będzie zakładał, że rozumiesz w stu procentach to co było.
No to zaczynamy
Skoro dotarłeś do tego miejsca i czytasz ten tekst dalej to znaczy, że wszystko zrozumiałeś co do tej pory było... i bardzo dobrze. Dzięki
temu będzie Ci dużo łatwiej zrozumieć nowe rzeczy, a ja nie będę musiał tłumaczyć kilku zagadnień jednocześnie. W tym rozdziale
zajmiemy się instrukcją warunkową. Zanim jednak przejdziemy do właściwej części rozdziału zastanówmy się przez chwilę jak wygląda
podejmowanie decyzji przez nas samych.
Intuicja i podejmowaniedecyzji
Jeśli zaczniemy zastanawiać się nad naszym życiem dojdziemy do wniosku, że w życiu stale podejmujemy jakieś decyzje. Jedne są
lepsze, inne gorsze jednak zawsze wybieramy jakąś drogę. Zdecydowaną większość decyzji podejmujemy jednak intuicyjnie, czyli w
zależności od humoru jaki mamy w danej chwili czy też pogody jaka na chwilę obecną jest. Takie spontaniczne podejście do życia w
przypadku człowieka jest naturalne i wpisane w jego naturę. Pomimo, iż komputer również stale podejmuje jakieś decyzje to wygląda to
nieco inaczej, niż w przypadku człowieka. Komputer postępuje zgodnie z tym, co mu napiszemy. Nie ma własnej woli, nie ma intuicji - to
tylko maszyna. Wszystko więc musi być precyzyjnie sformułowane. Jeśli by tak nie było, komputer stałby się nieprzewidywalny , a co za
tym idzie bezużyteczny jako narzędzie. Sztuką programowania jest umiejętność zapisywania swoich rozbieganych myśli w sposób
formalny i poprawny z punktu widzenia logiki za pomocą języka programowania. Niniejszy rozdział pokaże nam jak zapisuje się formalnie
decyzje, jakie ma podejmować komputer w naszym programie.
Składnia warunku if
Zapis instrukcji warunkowej wygląda następująco:
if
(...)...
Umieszczamywyrażenielogiczne
Wartość, którą umieszczamy w nawiasach zaokrąglonych to wyrażenie logiczne. Wyrażenia logiczne zapisywaliśmy do tej pory do
zmiennych i wyglądało to tak:
C/C++
int
wiek
=
30
;
bool
wyrazenieLogiczne
=
wiek
>
100
||
wiek
<
2
;
Powyższe wyrażenie możemy wstawić do instrukcji warunkowej na dwa sposoby. Pierwszym z nich jest użycie zmiennej, tj:
C/C++
if
(
wyrazenieLogiczne
==
true
)...
//powy
ż
szy zapis jest równowa
ż
ny poni
ż
szemu:
if
(
wyrazenieLogiczne
)...
Drugą możliwością, jaką mamy to wstawienie wyrażenia logicznego bezpośrednio w instrukcję warunkową, czyli:
C/C++
if
(
wiek
>
100
||
wiek
<
2
)...
Z praktycznego punktu widzenia znacznie częściej korzysta się z drugiego zapisu, ponieważ nie trzeba tworzyć dodatkowej tymczasowej
zmiennej, która prawdopodobnie i tak nie była by nam potrzebna nigdzie więcej .
Kiedy instrukcja warunkowazwraca prawdę
Instrukcja warunkowa zwraca prawdę wtedy gdy wartość wyrażenia logicznego, umieszczonego w nawiasach zaokrąglonych jest
prawdziwa. Wartość wyrażenia logicznego jest prawdziwa wtedy, gdy jest ona różna od zera.
Instrukcjalub blok instrukcji
Strona 2
[lekcja] Instrukcja warunkowa if ... else | Kurs C++ » Poziom 1
2011-11-12 15:36:51
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Instrukcja-warunkowa-if-else/16
Jeśli piszemy już jakiś warunek to zazwyczaj chcemy, aby w zależności od niego coś się wykonało. Pierwsza instrukcja, która wystąpi po
nawiasie zamykającym wyrażenie logiczne będzie tą, która wykona się jeśli warunek będzie spełniony. Jeśli warunek nie będzie spełniony
instrukcja ta zostanie przeskoczona. Przykład:
C/C++
#include <iostream>
int
main
()
{
int
wiek
;
std
::
cin
>>
wiek
;
if
(
wiek
>=
18
)
std
::
cout
<<
"Twierdzisz, ze jestes pelnoletni :)"
<<
std
::
endl
;
std
::
cout
<<
"Koniec"
<<
std
::
endl
;
return
0
;
}
Pisząc własne programy będziesz jednak natrafiał na sytuacje, w których będziesz chciał napisać więcej niż jedną instrukcję po spełnieniu
warunku. W tym przypadku będziesz musiał użyć bloku instrukcji, który tworzymy za pomocą klamer { }. Przykład demonstrujący użycie
bloku instrukcji:
C/C++
#include <iostream>
int
main
()
{
int
wiek
;
std
::
cin
>>
wiek
;
if
(
wiek
>=
18
)
{
std
::
cout
<<
"Twierdzisz, ze jestes pelnoletni..."
<<
std
::
endl
;
std
::
cout
<<
"ale czy to kogos interesuje? :)"
<<
std
::
endl
;
}
std
::
cout
<<
"Koniec"
<<
std
::
endl
;
return
0
;
}
Ilość instrukcji jaką możemy umieścić w bloku nie jest ograniczona w żaden sposób.
Zagnieżdżaniewarunków
Ucząc się programowania dobrze wiedzieć od samego początku, że warunki możemy zagnieżdżać. Zasady używania i działania warunków
pozostają te same. Przykład:
C/C++
#include <iostream>
int
main
()
{
int
liczba
;
std
::
cin
>>
liczba
;
if
(
liczba
>=
10
)
{
std
::
cout
<<
"Liczba jest >= 10"
<<
std
::
endl
;
if
(
liczba
>=
50
)
{
std
::
cout
<<
"Liczba jest >= 50"
<<
std
::
endl
;
if
(
liczba
<=
100
)
std
::
cout
<<
"Liczba jest <= 100"
<<
std
::
endl
;
}
}
std
::
cout
<<
"Koniec"
<<
std
::
endl
;
return
0
;
}
Słowo kluczowe else
Do tej pory poznaliśmy instrukcję warunkową if w jej podstawowej wersji. Jej funkcjonalność możemy rozszerzyć za pomocą słowa
kluczowego else. Słowo kluczowe else oznacza "w przeciwnym wypadku", czyli jeśli warunek nie zostanie spełniony, wykonaj inny kod.
Ogólny zapis instrukcji warunkowej, wykorzystujący słowo kluczowe else będzie więc wyglądał tak:
if
(...)...
else
...
Jedyną niewiadomą w tym zapisie są ostatnie trzy kropki. Oznaczają one instrukcję/blok instrukcji, który ma się
wykonać jeśli warunek nie zostanie spełniony. Poniżej zamieszczam prosty przykład demonstrujący działanie instrukcji warunkowej if ...
else:
C/C++
#include <iostream>
int
main
()
Strona 3
[lekcja] Instrukcja warunkowa if ... else | Kurs C++ » Poziom 1
2011-11-12 15:36:51
http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Instrukcja-warunkowa-if-else/16
Architektserwisu: Piotr Szawdyński
© Wszelkieprawa zastrzeżone2005-2011
{
int
wiek
;
std
::
cin
>>
wiek
;
if
(
wiek
>=
18
)
std
::
cout
<<
"Jestes pelnoletni."
<<
std
::
endl
;
else
std
::
cout
<<
"Nie jestes pelnoletni."
<<
std
::
endl
;
std
::
cout
<<
"Koniec"
<<
std
::
endl
;
return
0
;
}
Zasady odnośnie jednej instrukcji lub wielu w bloku else są takie same jak za pierwszym razem. Jedną instrukcję możemy zastąpić
blokiem { }.
Praca domowa
1. Przeanalizuj działanie poniższego programu i odpowiedz sobie jaki będzie jego wynik działania:
C/C++
#include <iostream>
int
main
()
{
int
wiek
;
std
::
cin
>>
wiek
;
if
(
wiek
>=
18
)
if
(
wiek
<=
100
)
{
std
::
cout
<<
"Twierdzisz, ze jestes pelnoletni..."
<<
std
::
endl
;
std
::
cout
<<
"ale czy to kogos interesuje? :)"
<<
std
::
endl
;
}
std
::
cout
<<
"Koniec"
<<
std
::
endl
;
return
0
;
}
2. Napisz powyższy program tak, aby występowała w nim instrukcja warunkowa tylko raz. Program ma działać tak samo jak jego
pierwotna wersja.
3. Usuń błędy z poniższego programu:
C/C++
#include <iostream>
int
main
()
{
int
wiek
;
std
::
cin
>>
wiek
;
if
(
wiek
<
18
)
;
std
::
cout
<<
"Nie jestes pelnoletni"
<<
std
::
endl
else
;
std
::
cout
<<
"Jestes pelnoletni"
<<
std
::
endl
std
::
cout
<<
"Koniec"
<<
std
::
endl
;
return
0
;
}
Wszystkieteksty są chronioneprawami autorskimi. Kopiowanielub rozpowszechnianietreści poza niniejszymserwisem jest
zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechnianiawłasnego tekstu wedle własnego uznania.