Capitolul 4: Rezolvarea temelorOcolirea 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()
if(!canMove()) { turnLeft() move() turnRight() } move() move() move()Rezolvarea finală
Aceasta este cea mai bună rezolvare a acestei probleme.