Capitolul 3.3. ELSE-IF

Vezi subiectul anterior Vezi subiectul urmator In jos

Capitolul 3.3. ELSE-IF

Mesaj  zooky la data de Mier Mar 18, 2009 12:10 pm

Constructia

if (expresie)
instructiune
else if (expresie)
instructiune
else if (expresie)
instructiune
else
instructiune

apare atit de des incit este demn de purtat o discutie scurta si separata asupra ei. Aceasta secventa de if-uri este calea cea mai generala de a scrie decizii multiple. Expresiile sint evaluate in ordine; daca o expresie este adevarata, instructiunea asociata cu ea este executata, si aceasta termina intregul lant. Codul pentru fiecare "instructiune" este fie o instructiune, fie un grup intre acolade.
Ultima parte de "else" manipuleaza cazul "niciuna din cele mai de sus" sau implicit, in care nici una din conditii nu este indeplinita. Citeodata nu exista nici o actiune explicita pentru cazul implicit; in acest caz,

else
instructiune

poate fi omisa, sau poate fi utila pentru verificarea de erori, pentru a prinde o conditie "imposibila".
Pentru a ilustra o decizie trivalenta, dam o functie binara de cautare, care decide daca o valoare particulara x apare intr-un tablou sortat v. Elementele lui v trebuie sa fie in ordine crescatoare. Functia returneaza pozitia (un numar intre 0 si n-1) daca x apare in v, si -1 daca nu.

binary (x, v, n) /* gaseste pe x in v[0], v[1], ..., v[n-1] */
int x, v[], n;
{
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high) {
mid = (low + high) / 2;
if (x < v[mid])
high = mid - 1;
else if (x > v[mid])
low = mid + 1;
else /* gasit potrivirea */
return(mid);
}
return(-1);
}

Decizia fundamentala este aceea daca x este mai mic decit, mai mare decit sau egal cu elementul din mijloc v[mid] la fiecare pas; aceasta este natural pentru un if-else.
avatar
zooky
Moderator
Moderator

Numarul mesajelor : 147
Data de inscriere : 15/03/2009
Varsta : 24
Localizare : Cernatesti City

Vezi profilul utilizatorului http://e-learning.forumhit.ro

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus


 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum