7. Instrukcje sterujące

7.1. Instrukcje proste i złożone

Dla każdej instrukcji sterującej dostępnej w języku C++ obowiązuje zasada warunkowego wykonania jednej i tylko jednej instrukcji. Może to być instrukcja prosta – najprostszy przypadek. Lecz często chcielibyśmy wykonać ciąg poleceń, co w tym wypadku? W tym celu wprowadzono pojęcie instrukcji złożonej.

Blok instrukcji zamknięty w nawiasy klamrowe { .. } tworzy instrukcję złożoną

Taka instrukcja jest nową przestrzenią nazw dla zmiennych, osadzoną w hierarchiczny sposób w nadrzędnych instrukcjach złożonych, aż do przestrzeni nazw wykonywanej funkcji. Dzięki temu wewnątrz bloku możemy definiować nowe zmienne, nawet o takiej samej nazwie jak już zdefiniowane wcześniej w innych, nadrzędnych blokach zmienne

Ogólna zasada jest taka, że wszędzie tam, gdzie może się znaleźć instrukcja prosta, można też umieścić instrukcję złożoną, przy czym po zamykającym nawiasie klamrowym może – ale nie musi – znaleźć się średnik.

Ściśle rzecz ujmując – po zamykającym nawiasie klamrowym nie może znaleźć się średnik. Natomiast sami możecie sprawdzić, że postawienie średnika nie będzie błędem składniowym … dlaczego?

Oprócz instrukcji złożonej w C++ występuje pojęcie instrukcji pustej – którą kończy po prostu średnik. Ciąg znaków { … };;; zostanie zinterpretowany jako jedna instrukcja złożona i seria trzech instrukcji pustych. Cecha zarówno miła, jak i niekoniecznie miła … popatrzcie poniżej:


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

Po uruchomieniu tego kodu niezależnie od tego co wprowadzimy, zawsze wyświetli się napis „mamy zero” … bo po if jest instrukcja pusta.