Instrukcje i wyrażenia 45
Dla bardziej skomplikowanych wyrażeń będziesz musiał zagnieżdżać nawiasy jedne w drugich. Np. musisz policzyć całkowitą liczbę sekund i całkowitą liczbę ludzi, aby policzyć, ile sekund zostało w sumie przepracowanych (Osobosekundy):
LiczbaOsoboSekund = ( ( (LiczbaMinutNaZastanowienie + “♦LiczbaMinutNaWpisanie) * 60) * (LiczbaLudziWBiurze + “♦LiczbaLudziNaWakacjach) ) ;
To skomplikowane wyrażenie należy czytać „od wewnątrz” Najpierw LiczbaMinut-NaZastanowienie jest dodawana do LiczbaMinutNaWpisanie, ponieważ są one w najgłębszych nawiasach. Potem ich suma jest mnożona przez 60. Następnie LiczbaLudziWBiurze jest dodawana do LiczbaLudziNaWakacjach. Na końcu
całkowita liczba ludzi jest mnożna przez całkowitą liczbę sekund.
Takie wyrażanie nie stanowi problemu dla komputera. Jednak dla człowieka jest mało czytelne i trudne do modyfikacji. Oto to samo wyrażenie obliczone z wykorzystaniem dodatkowych zmiennych pomocniczych:
LiczbaMinut = LiczbaMinutNaZastanowienie + LiczbaMinutNaWpisanie; LiczbaSekund = LiczbaMinut * 60;
LiczbaLudzi = LiczbaLudziWBiurze + LiczbaLudziNaWakacjach; LiczbaOsoboSekund = LiczbaLudzi * LiczbaSekund;
Ten przykład jest dłuższy niż poprzedni i wymaga wykorzystania dodatkowych zmiennych. Jego dużą zaletą jest przejrzystość. Wystarczy jeszcze dodać na początku komentarz mówiący co dany fragment liczy, zamienić 60 na stałą symboliczną a uzyskamy kod przejrzysty i łatwy do zrozumienia.
W poprzednich wersjach C++ wyrażenia prawdziwe i fałszywe były reprezentowane przez wartości całkowite. Standard ISO/ANSI niesie ze sobą nowy typ: bool. Zmienna typu bool może przyjąć jedną z dwóch wartości - prawda albo fałsz.
Każde wyrażenie może zostać zakwalifikowane jako prawdziwe albo fałszywe. Jeżeli wartość wyrażenia jest równa zero, to uznajemy je za fałszywe. W przeciwnym wypadku mamy do czynienia z wyrażeniem prawdziwym.
Wiele starszych kompilatorów oferowało programiście typ bool, reprezentowany jako czterobajtowa zmienna typu long. Kompilatory zgodne z ANSI wykorzystują typ bool wykorzystujący jeden bajt.
Dla bardziej skomplikowanych wyrażeń będziesz musiał zagnieżdżać nawiasy jedne w drugich. Np. musisz policzyć całkowitą liczbę sekund i całkowitą liczbę ludzi, aby policzyć, ile sekund zostało w sumie przepracowanych (Osobosekundy):
Łiczba030boSekund = ( ( (LiczbaHinutNaZastanowienie +
■“LiczbaMinutNaWpisanie) * 60) * (LiczbaLudziWBiurze +
••LiczbaLudziNaWakac jach) ) ;
To skomplikowane wyrażenie należy czytać „od wewnątrz” Najpierw LiczbaMinut-NaZastanowienie jest dodawana do LiczbaMinutNaWpisanie, ponieważ są one w najgłębszych nawiasach. Potem ich suma jest mnożona przez 60. Następnie LiczbaLudziWBiurze jest dodawana do LiczbaLudziNaWakacjach. Na końcu całkowita liczba ludzi jest mnożna przez całkowitą liczbę sekund.
Takie wyrażanie nie stanowi problemu dla komputera. Jednak dla człowieka jest mało czytelne i trudne do modyfikacji. Oto to samo wyrażenie obliczone z wykorzystaniem dodatkowych zmiennych pomocniczych:
LiczbaMinut = LiczbaMinutNaZastanowienie + LiczbaMinutNaWpisanie; LiczbaSekund = LiczbaMinut * 60;
LiczbaLudzi = LiczbaLudziWBiurze + LiczbaLudziNaWakacjach; LiczbaOsoboSekund = LiczbaLudzi * LiczbaSekund;
Ten przykład jest dłuższy niż poprzedni i wymaga wykorzystania dodatkowych zmiennych. Jego dużą zaletą jest przejrzystość. Wystarczy jeszcze dodać na początku komentarz mówiący co dany fragment liczy, zamienić 60 na stałą symboliczną, a uzyskamy kod przejrzysty i łatwy do zrozumienia.
W poprzednich wersjach C++ wyrażenia prawdziwe i fałszywe były reprezentowane przez wartości całkowite. Standard ISO/ANSI niesie ze sobą nowy typ: bool. Zmienna typu bool może przyjąć jedną z dwóch wartości — prawda albo fałsz.
Każde wyrażenie może zostać zakwalifikowane jako prawdziwe albo fałszywe. Jeżeli wartość wyrażenia jest równa zero, to uznajemy je za fałszywe. W przeciwnym wypadku mamy do czynienia z wyrażeniem prawdziwym.
Wiele starszych kompilatorów oferowało programiście typ bool. reprezentowany jako czterobajtowa zmienna typu long. Kompilatory zgodne z ANSI wykorzystują typ bool wykorzystujący jeden bajt.