Do sada smo naučili šta su promenljive i upoznali osnovne tipove podataka u C++ jeziku:

  • int
  • float
  • double
  • char
  • bool
  • string

Sada dolazimo do jedne veoma važne osnove koja pravi razliku između početničkog i pravilnog programiranja:

deklaracija i inicijalizacija promenljivih

Početnici često koriste promenljive bez jasnog razumevanja:

  • kada promenljiva nastaje,
  • kada dobija vrednost,
  • šta znači deklarisati promenljivu,
  • i zašto neinicijalizovane promenljive mogu napraviti ozbiljne probleme.

Ovo je izuzetno važna tema jer loše upravljanje promenljivama vodi do:

  • nepredvidivih rezultata,
  • grešaka tokom izvršavanja,
  • teškog debugovanja,
  • i loše prakse u pisanju koda.

U ovoj lekciji naučićemo:

  • šta je deklaracija,
  • šta je inicijalizacija,
  • razliku između ta dva pojma,
  • različite načine inicijalizacije,
  • kako računar vidi promenljive,
  • i najčešće greške koje studenti prave.

Šta je deklaracija promenljive?

Deklaracija znači:

pravljenje promenljive

Odnosno:

govorimo programu da određena promenljiva postoji.

Primer:

int broj;

Ovde:

  • int = tip podatka
  • broj = ime promenljive

Program sada zna:

napravljena je promenljiva koja može da čuva ceo broj.

Ali:

ona još nema definisanu korisnu vrednost.

Deklaracija ne znači dodelu vrednosti

Ovo je veoma važna razlika.

Primer:

int godine;

Da li promenljiva ima vrednost?

Ne sigurnu.

Promenljiva postoji.

Memorija je rezervisana.

Ali sadržaj može biti nepredvidiv.

To je jedna od klasičnih početničkih grešaka.

Šta je inicijalizacija?

Inicijalizacija znači:

dodela početne vrednosti promenljivoj

Primer:

int godine = 21;

Ovde:

  • promenljiva je kreirana
  • odmah dobija vrednost

To je deklaracija + inicijalizacija.

Sada program tačno zna:

godine = 21

Deklaracija i inicijalizacija odvojeno

Možemo ih raditi odvojeno.

Primer:

Deklaracija:

int broj;

Kasnije:

broj = 15;

Ovde:

prvo smo napravili promenljivu

zatim joj dodelili vrednost.

To je potpuno ispravno.

Vizuelno objašnjenje

Bez inicijalizacije:

int x;

Zamisli:

kutija postoji

ali ne znaš šta je unutra.

Sa inicijalizacijom:

int x = 10;

Kutija postoji

i jasno znamo sadržaj.

Problem neinicijalizovanih promenljivih

Primer:

#include <iostream>
using namespace std;

int main() {
    int broj;

    cout << broj;

    return 0;
}

Početnici često očekuju:

0

Ali to nije garantovano.

Možemo dobiti:

18472
-3921
0
652144

ili neku drugu vrednost.

Zašto?

Jer memorija sadrži prethodne podatke.

Program samo koristi ono što se tamo nalazi.

Ovo se zove:

neinicijalizovana promenljiva

Veoma važna tema.

Zašto se ovo dešava?

Kada napišemo:

int broj;

program rezerviše memoriju.

Ali ne čisti automatski sadržaj te memorije.

To znači da unutra može ostati prethodna vrednost.

Zato nikada ne treba koristiti promenljivu pre inicijalizacije.

Ispravan pristup

Umesto:

int broj;

bolje:

int broj = 0;

Ili:

cin >> broj;

pre korišćenja.

Inicijalizacija različitih tipova

int

int broj = 10;

double

double cena = 99.99;

float

float temperatura = 36.6f;

char

char slovo = 'A';

bool

bool aktivan = true;

string

string ime = "Marko";

Svaki tip može biti inicijalizovan.

Višestruka deklaracija

Možemo deklarisati više promenljivih odjednom.

Primer:

int a, b, c;

Ili:

int x = 5, y = 10, z = 15;

Radi.

Ali kod početnika je često preglednije:

int x = 5;
int y = 10;
int z = 15;

Lakše za čitanje.

Moderni načini inicijalizacije

Klasično:

int broj = 10;

Alternativno:

int broj(10);

Moderni C++:

int broj{10};

Sve su ispravne forme.

Za početnike je najjasnije:

=

forma.

Kasnije ćemo detaljnije o modernom C++.

Dodela nakon inicijalizacije

Primer:

int broj = 10;

Kasnije:

broj = 25;

Ovo više nije inicijalizacija.

To je:

dodela nove vrednosti

Važna razlika:

Prvi put = inicijalizacija

Kasnije = dodela

Primer

int poeni = 50;
poeni = 80;

Prva linija:

inicijalizacija

Druga:

promena vrednosti

Deklaracija bez inicijalizacije + unos

Čest obrazac:

int godine;
cin >> godine;

Ovde promenljiva prvo postoji

zatim korisnik unosi vrednost.

To je potpuno validno.

Konstantna inicijalizacija

Kasnije ćemo učiti konstante.

Primer:

const double PI = 3.14159;

Ovde vrednost mora odmah postojati.

Realni primer

Primer prodavnice:

int komada = 5;
double cena = 149.99;
double ukupno = komada * cena;

Primer studenta:

string ime = "Nikola";
int indeks = 12345;
bool aktivan = true;

Primer igre:

int zivoti = 3;
int poeni = 0;
bool igraTraje = true;

Najčešće greške početnika

1. Korišćenje promenljive bez vrednosti

Pogrešno:

int broj;
cout << broj;

2. Mešanje deklaracije i dodele

Ne razumevanje razlike:

int x;
x = 5;

vs

int x = 5;

3. Pogrešan tip pri inicijalizaciji

Pogrešno:

int cena = 99.99;

Rezultat:

gubitak decimala

4. Očekivanje da sve bude 0

Početnici misle:

“ako nema vrednost, biće nula”

Ne mora.

5. Nepregledna višestruka deklaracija

Teže za čitanje:

int a=1,b=2,c=3,d=4,e=5;

Primer programa

#include <iostream>
#include <string>
using namespace std;

int main() {
    string ime = "Marko";
    int godine = 21;
    double prosek = 9.35;
    bool aktivan = true;
    char grupa = 'A';

    cout << ime << endl;
    cout << godine << endl;
    cout << prosek << endl;
    cout << aktivan << endl;
    cout << grupa << endl;

    return 0;
}

Zašto je ova tema važna?

Promenljive su osnova svega.

Ako njima loše upravljamo:

  • program daje pogrešne rezultate
  • debugging postaje težak
  • kod postaje nepouzdan

Dobra praksa:

inicijalizuj promenljivu čim možeš.

Rezime

U ovoj lekciji naučili smo:

Deklaracija

pravljenje promenljive

Primer:

int broj;

Inicijalizacija

dodela početne vrednosti

Primer:

int broj = 10;

Važna pravila:

  • ne koristiti neinicijalizovane promenljive
  • birati pravi tip podataka
  • kod držati preglednim

Ovo je jedna od osnovnih tema ozbiljnog programiranja.

Mini test

  1. Šta je deklaracija?
    a) Dodela vrednosti
    b) Pravljenje promenljive
  2. Šta je inicijalizacija?
    a) Brisanje promenljive
    b) Dodela početne vrednosti
  3. Šta je problem ovde?
int x;
cout << x;

a) Sve je ispravno
b) Neinicijalizovana promenljiva

  1. Šta je inicijalizacija?
int broj = 10;

a) Da
b) Ne

  1. Šta je:
broj = 20;

ako je broj već postojao?

a) Nova inicijalizacija
b) Dodela nove vrednosti

Zadaci za vežbu

  1. Deklariši 5 promenljivih različitih tipova.
  2. Inicijalizuj svaku vrednošću.
  3. Napravi primer sa unosom korisnika.
  4. Namerno koristi neinicijalizovanu promenljivu i posmatraj rezultat.
  5. Prepravi program da bude ispravan.

Domaći zadatak

Napravi mini profil studenta sa:

  • imenom
  • prezimenom
  • godinama
  • prosekom
  • aktivnim statusom
  • grupom

Sve promenljive pravilno deklarisati i inicijalizovati.

Pristupačnost