Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
5.3Instrukcjawyboru
51
Najpierwobliczanajestwartośćwyrażeniajeślijestonoprawdziwe(wartość
niezerowa),wykonywanajestinstrukcja1,jeślizaśfałszywe(wartośćzerowa),in-
strukcja2.Częśćzelseniejestobowiązkowa.
Brakobowiązkuumieszczaniaelsewkażdejinstrukcjiifmożeprowadzićdo
nieporozumień(zkompilatorem)wprzypadkuzagnieżdżeńinstrukcjiwarunkowej.
Regułamówitutaj,żeinstrukcjaelseprzynależydonajbliższejpoprzedzającej
instrukcjiif,któraniemaprzyprządkowanejczęścielse.Itakwprzypadkukodu:
if(i>0)
if(x>y)
z1x;
else
z1y;
instrukcjaelsejestpołączonazwewnętrznąinstrukcjąwarunkowąif,cozostało
uwypukloneprzezodpowiedniozapisanewcięcia.Jeślinatomiastwartośćzmiennej
iniejestwiększaodzera,żadneprzypisanieniejestrobione.Wartootympamiętać
iużywaćnawiasówklamrowychwceluzagwarantowaniapożądanegoefektu.
Inną,częstospotykanąkonstrukcją,jestzagnieżdżenietypuelse-if,jakwpo-
niższymprzykładzie:
if(wyrażenie1)
instrukcja1
elseif(wyrażenie2)
instrukcja2
elseif(wyrażenie3)
instrukcja3
...
else
instrukcja0
Wprzypadkutakimwyrażeniaobliczanewpodanejkolejnościjeśliktóre-
kolwiekjestprawdziwe,wykonywanajestodpowiadającamuinstrukcja,cokończy
przetwarzaniecałegobloku1.Jeśliżadnezwyrażeńniejestprawdziwe,przetwarza-
niedochodzidoostatniegoelseiwykonywanajestinstrukcja0.
Konstrukcjapokazanawyżejmaszerszezastosowanieniżomawianawnastęp-
nympodrozdzialeinstrukcjawyboru,któramożesprawdzaćwyłącznieprzynależ-
nośćzmiennychstałopozycyjnychdostałegozbioruwartości.
5.3
Instrukcjawyboru
Instrukcjawielokrotnegowyboruswitchpozwalanasprawdzanie,czywartośćwy-
rażeniajestrównajednejzestałychwartościtypustałopozycyjnego(integer).
1Postępowanietakiewynikajedyniezregułprzetwarzaniainstrukcjiifielse,aniezfaktu,
żezapiselseifstanowioddzielnąinstrukcję.