Do sada smo se vodili time da, kada jednom definišemo promenljivu, možemo da je koristimo bilo gde do kraja programa. Postoji specifična situacija u kojoj ovo nije tačno. Prvo ćemo definisati jedan važan pojam koji će nam pomoći da razumemo gde možemo da koristimo neku promenjivu - sve naredbe unutar jednog para vitičastih zagradi { } u našem kodu nazivamo blokom. Možemo da se vratimo na primer iz prethodne lekcije i uočimo da u njemu ima 5 blokova (5 parova vitičastih zagradi).
#include <iostream> int main() { int broj_a, broj_b; std::cin >> broj_a >> broj_b; if (broj_b != 0) { // ovo se izvrsava samo ako broj_b nije nula if (broj_a % broj_b == 0) { std::cout << "DELJIV"; } else { std::cout << "NEDELJIV"; } } else { std::cout << "Drugi broj je 0 pa nema smisla traziti " << "ostatak pri deljenju!"; } }
Jedna komanda se može nalaziti unutar više blokova koji su jedan unutar drugog. Tako se, na primer, komanda std::cout << "DELJIV"; u prethodnom kodu nalazi unutar sledeća tri bloka:
Najmanji od ovih blokova je blok 3.
Pravilo koje važi je da svaka promenljiva koju definišemo ostaje aktivna do kraja najmanjeg bloka u kome je definisana.
Najmanji blok unutar koga su definisane promenljive broj_a i broj_b u prethodnom primeru je blok unutar koga se nalazi i ceo naš program, tako da ove promenljive ostaju aktivne do kraja programa.
Sa druge strane ako definišemo novu promenljivu unutar jednog od if blokova ona će biti aktivna samo do kraja tog bloka. Tako, na primer, ako definišemo promenljivu broj_c u sledećem kodu, ona će biti aktivna samo u bloku u kojem se nalazi njena deklaracija. Ukoliko probamo da je iskoristimo kasnije, nakon što je završen taj blok, dobićemo poruku o grešci.
#include <iostream> int main() { int broj_a, broj_b; std::cin >> broj_a >> broj_b; if (broj_b != 0) { int broj_c = 0; // ovo se izvrsava samo ako broj_b nije nula if (broj_a % broj_b == 0) { std::cout << "DELJIV"; } else { std::cout << "NEDELJIV"; } } else { broj_c += 1; // GRESKA! std::cout << "Drugi broj je 0 pa nema smisla traziti " << "ostatak pri deljenju! "; } }
Možemo da zaključimo da je važno da kod promenljivih koje definišemo unutar nekog manjeg bloka pazimo da ne pokušamo da ih koristimo nakon što smo izašli iz tog bloka.