7. Instrukcje sterujące

Wszystkie szerzej znane instrukcje wyboru stosowane w innych językach są zaimplementowane także w języku C++, tak więc mamy możliwość korzystania z if w wersji prostej i rozszerzonej, switch (który działa trochę inaczej niż ma to miejsce w innych językach), oraz trzech rodzajów pętli (tu już mamy bardzo wysoki stopień elastyczności, mocno różniący się od innych języków). W każdej z instrukcji sterujących będziemy mieli do czynienia z koniecznością oceny logicznej wyrażenia w celu podjęcia decyzji. Już o tym wspominaliśmy, lecz nie zaszkodzi powtórzyć:

W C++ wartość 0 (wszystkie bity zmiennej ustawione na 0) jest traktowana jako fałsz. Dowolna inna wartość jest traktowana jako prawda.

Tak więc wyrażeniem, które służy do podjęcia decyzji, nie musi być wyrażenie którego wynikiem jest typ logiczny. Jeśli spojrzymy na poniższy program:


int main() {
  int x;
  cin << x;
  if (x = 0)
    cout << "mamy zero";
}

Po jego wykonaniu, niezależnie od tego, co zostanie wprowadzone jako x, nigdy nie zostanie wyświetlony napis „mamy zero”. Jest to efektem błędu popełnionego przy pisaniu programu – zamiast porównania w if mamy przypisanie. Lecz że jest to poprawne składniowo wyrażenie, zwracające wartość przypisywaną, czyli zero, wyrażenie zawsze będzie potraktowane jako fałsz – i napis się nigdy nie wyświetli, mimo że program da się skompilować i uruchomić. Jest to konsekwencją traktowania przez C++ prawie wszystkiego jako wyrażenie.

Mając to na uwadze, przejdźmy do opisu pojęcia instrukcji w języku C++.