Bardzo często zdarza się tak, że jakaś część programu ma zostać wykonana tylko wówczas, gdy spełniony jest pewien dodatkowy warunek. W języku programowania C istnieje oczywiście możliwość definiowania tego typu operacji. W tym celu należy wykorzystać jedną z instrukcji warunkowych:
Plik ifelse.c zawiera przykłady niezbędne do analizy podczas tej lekcji. Znajduje się tam pętla for, w ciele której pojawiają się nowe instrukcje if oraz if-else. Instrukcje warunkowe są więc zagnieżdżone w pętli, a każde zdanie if zostanie powtórzone dziesięć razy. Sama konstrukcja pętli nie jest niespodzianką. Na jej końcu zostaną wykonane dwie operacje: inkrementacja zmiennej x oraz polecenie pause systemu MS-DOS. Proszę jedynie zwrócić uwagę na brak średnika po funkcji system.
Skupmy się teraz na pierwszej instrukcji if. Rozpoczyna się ona od słowa kluczowego if, któremu towarzyszy wyrażenie w nawiasach okrągłych. Od wartości logicznej tego wyrażenia zależy, czy instrukcja (lub grupa instrukcji) umieszczona dalej zostanie wykonana. W naszym przypadku testujemy wartość zadeklarowanej wcześniej zmiennej x. Wyrażenie if (x == 2) oznacza zapytanie: czy x jest równe dwa? Występuje tu operator relacji ==, który służy do porównania dwóch wartości; tutaj porównujemy bieżącą wartość zmiennej x z liczbą dwa. Następna instrukcja (wywołanie funkcji printf) wykona się tylko podczas tego obiegu pętli, w którym wartość zmiennej x będzie wynosić dwa.
Na temat operatorów relacji złożone zostaną wyjaśnienia w następnych częściach, tutaj jedynie warto podkreślić, że zapis x = 2 (podstawienie, przypisanie, assing) i x == 2 (porównanie, comparing) to dwa diametralnie różne pojęcia. Proszę jeszcze spojrzeć na tabelę ilustrującą różnice w tym zakresie pomiędzy językiem programowania C i Pascalem, gdyż jest to pole wielu częstych błędów:
podstawienie | porównanie | |
C | = | == |
Pascal | := | = |
Druga instrukcja if jest bardzo podobna do pierwszej, z wyjątkiem dodania nowego słowa zastrzeżonego else po instrukcji printf. Jeżeli testowane wyrażenie jest prawdziwe wykonywana jest instrukcja (lub grupa instrukcji) przed słowem else, w przeciwnym razie po tym słowie. Konstrukcja if-else zakłada, że zawsze zostanie wykonana jedna z instrukcji w zależności od wyniku wyrażenia warunkowego. Słowo else jest opcjonalne - brakowało go w pierwszym przykładzie, gdzie w przypadku fałszu testowanego wyrażenia instrukcja za nim była pomijana, a nic w zamian nie było wykonywane i program przechodził do następnych linii kodu.