Prikaz jedne poruke
Stara 16.8.2006, 1:30   #188
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Sada sledi jedna napomena u vezi pomenutog korišćenja „if...else if....else ... end if“ i „switch“ komande za kontrolu toka programa.

Treba zapamtiti da „switch“ (o kome će biti više reči u jednom malom tutorijalu koji spremam za sutra pa se zato spremite za malu interesantnu avanturu ) ne može u nekim slučajevima da zameni „if“ a razlog je taj da „switch“ može da ispituje samo jedan uslov na svom početku nakon čega izvršava deo koda koji ispunjava dati slučaj. Zbog toga je „switch“ recimo korisno iskoristiti u slučajevima kada je potrebno na osnovu nekog povratnog rezultata funkcije izvršiti određeni deo koda. Recimo, imate neku funkciju „ispisi_warp_brzinu“ (mali uvod u sutrašnji program ) koja vraća celobrojni broj funkciji koja ga je pozvala (pričali smo o tome kada smo spominjali „return“ na kraju funkcije. Ta povratna vrednost se vraća funkciji koja je pozvala „ispisi_warp_brzinu“, u konkretnom slučaju recimo sama „main“ funkcija, pa bi recimo „switch“ mogao da se iskoristi da bi se odredilo kako da glavni program reaguje na osnovu različitih povratnih rezultata funkcije. U tom slučaju bi „switch“ bio idealan.

Međutim, ponekad „switch“ nije dovoljan jer je potrebno usput proveriti još neki uslov. Tada se koristi „if... else if ...else...end if“ kontrola toka.

Znam da sve ovo što sam naveo možda trenutno deluje konfuzno ali nije mi ni bio krajnji cilj da zalazim dublje u temu već čisto informativno da se razgraniči da „switch“ nije svemoćan. O svemu ovome se priča prilikom obrade poglavlja „Kontrola toka“ u bilo kojoj C++-knjizi.

Još jedna stvarčica koju bih želeo da napomenem je vezana za tzv. „entry point“ koji je pomenut. Naime, treba shvatiti šta „entry point“ u stvari znači. Dakle, svaki kompajler će prilikom kompajliranja koda prvo potražiti funkciju koja se zove „main“ (zbog toga jedna jedina funkcija kojoj morati dati ime koje zahteva kompajler je „main“ i ona mora postojati u vašem kodu). Znači, bez obzira da li se ispred (bliže vrhu) nalazilo još dvadeset funkcija, izvršavanje krajnjeg programa uvek počinje od funkcije „main“. Evo primera:

Kod:
#include <iostream>

void ispisi_warp_brzinu(){
...

}

boolean brod_u_warpu(){
...
return true;
}

int main(){
.....
}
Napomena: nemojte da probate da kompajlirate ovaj kod jer neće da radi sigurno

U ovom konkretnom slučaju izvršavanje će početi od funkcije main bez obzira što se „ispred“ nje nalazi par funkcija. Pomenute funkcije se pozivaju iz same „main“ (ili uopšte neke druge) funkcije. No, kako su funkcije takođe malo naprednija tema neću o njima sada.

Mislim da je za večeras bilo dosta a nadam se da ću sutra stići da pripremim nešto malo interesantnije
holodoc je offline   Odgovor sa citatom ove poruke