neznalica u C++:
To je uredu to sam vec napisao, zbog toga mislim da je break ; suvishan.
Naprotiv switch je konstrukcija koja testira da li jedan od izraza odgovara nekoj od vrednosti, i u zavisnosti od toga se razgranjava.Prochachkaj malo po knjigama siguran sam da ces naci.Da dodam jos nesto, Svaki slucaj je oznacen sa jednom ili vise celobrojnih konst. ili konst. izrazima, ako slucaj odgovara vrednosti izraza , onda otpocinje izvrsenje tog slucaja.Izrazi svih slucajeva moraju da budu razliciti. default ; blok se izvrsava ako nijedan od ostalih slucajeva nije zadovoljen, default ; je opcioni ako njega nema i ako nijedan slucaj ne odgovara, nece biti izvrsena nikakva operacija.
Program u turbo C se pretvorio u switch tutor, pa dobro nije lose bas smo ga detaljno demonstrirali.
Zavisi kako gledas na stvari. (nema potrebe da me upucujes na knjige, napisao sam stotine programa koji koriste "switch", mozes mi verovati)
1. "Switch" najpre "lokalno definise STA trazis
2. U zavisnosti sta si u testiranje u "switch" naveo, programska kontrola "skace" na onaj blok koji ima "case to_sto_si_trazio"
3. Ako nema bloka koji obraduje "to_sto_si_trazio" direktno skace na blok "default" jer nema sta da izvrsi.
Dakle, "switch" ne radi poput if-elseif-.." gde se testira jedna po jedna varijanta, vec "direktno" gadja "case" koji sadrzi to sto si odredio kao uslov. Malo je drugacija logika kod "switch", razlika je dosta "sofisticirana" ali postoji. Da ti sad ne objasnjavam kompajlerske logike u vezi "switch" naredbe.
Uprosceno receno, kod "switch" kompajler pripermi uslov sta trazim, u istom momentu u kompajlerskoj logici se sprema blok koji sadrzi sve navedene "case" Kad krenes u "switch" konstrukciju, kompajler vec "zna" gde bi trebao da postoji blok za izvrsenje i ide "pravo tamo", ako nema proverava ima li "default" blok i ide tamo. Ako ni "default" bloka nema, nista ne uradi.
Kod na primer if-elseif-elseif-... kompajler "ne zna sta ga ceka" Uzima prvi uslov, ako nje ok, ide na sledeci, pa na sledeci, dok ne nadje - znaci "trazi" dok ne nadje, ako nadje. Dakle nema u memoriji unapred odredjene blokove i uslove za njih, vec "klizi" kroz kod"
To je glavna razlika od "switch". No to za progamera i nije toliko bitno, jer se najcesce (za neiskusnije programere) svodi na isto. Recimo, teoretski govoreci ako imas 1000 blokova u "switch", kompajler tako uradi da gadja "direktno" tacno odredjen blok koji zadovoljava uslov, jer ga "unapred" zna da postoji (ako postoji)
Kod "if" struktura za tih istih 1000 uslova bi morao da "prolazi i testira" svaki if else posebno. Razlike u brzini su uglavnom za "obicne programe" samo na laboratorijskom nivou, ali negde je svaka milisekunda jako vazna, za neke specificne programe.
I konacno, bez namere da te vredjam, imam osecaj da diskutujes precesto koristeci copy/paste (kao u gornjem odgovoru), nije lose, znaci da citas literaturu, ali moras se navici i da "iz glave" izdiskutujes neku materiju. Svi smo mi to vec mnogo puta procitali....