Introducere în Programare

Capitolul 4: Rezolvarea temelor
Ocolirea gardului (if)

Ca instructor, am văzut câteva moduri de a rezolva problema de la if. Cea mai comună, între cei care au fost atenți la curs, cred că este următoarea rezolvare:

if(canMove()) {
    move()
    move()
    move()
} else {
    turnLeft()
    move()
    turnRight()
    move()
    move()
    move()
}

Văzând asta, le spun mereu cursanților să rezolve fără să folosească else. Ceea ce pare că uită mulți este că după ce s-au executat fie instrucțiunile de la if, fie cele de la else, se merge în continuare. Nu are niciun rost să repetăm aceleași 3 instrucțiuni în cele două blocuri, le putem pune după.

Ți se poate părea ciudat acel if cu bloc gol, și ai dreptate. Tehnic va funcționa, dar arată prea urât.

Am mai învățat și despre operatorul !, care inversează valoarea de adevăr a expresiei care vine imediat după. L-am putea folosi pentru a avea un singur if, fără else

if(canMove()) {} 
else {
    turnLeft()
    move()
    turnRight()
}
move()
move()
move()
Conținutul continuă după reclamă
if(!canMove()) {
    turnLeft()
    move()
    turnRight()
}
move()
move()
move()
Rezolvarea finală

Aceasta este cea mai bună rezolvare a acestei probleme.

Designed by