Capítol 9

Combinant condicions

Comprovem més d'una cosa alhora

De vegades necessitem que en Karel comprovi dues coses alhora, abans de fer una cosa.

Tenim aquestes possibilitats, per combinar:

  • and: es compleix només si totes dues condicions es compleixen alhora.
  • or: es compleix si almenys una de les condicions és certa.
  • not: serveix per comprovar el contrari.

Exemple 1

Volem que en Karel avanci només sobre una catifa de perles. S'ha d'aturar quan les perles s'acabin.
Si fem servir while pearl_here(): move(), en Karel avançarà molt bé, però... i si la catifa arriba JUSTAMENT on hi ha una roca? En Karel xocarà!

Per evitar-ho, li demanem de comprovi dues coses alhora: "Mentre tinguis una perla sota teu i també el teu davant estigui lliure, llavors ja pots avançar". D'aquesta manera, en Karel no xocarà mai.

Exemple 2

En aquest altre exemple, en Karel està caminant per un passadís.
Li direm: "En cas que trepitgis una perla o bé si tens davant un obstacle, has de fer una tombarella, o sigui, que has de girar sobre tu mateix."

Exercici

En Karel ha d'avançar pel passadís per buscar una perla amagada. Volem que camini mentre no hi hagi una perla sota seu i davant seu hi hagi camí lliure.

Un cop la iteració acabi (ja sigui perquè ha trobat la perla sota seu, o perquè té una roca davant), fes servir un if per agafar la perla (només si n'hi ha una, és clar!).

Pista: A la iteració while apareixen les instruccions pearl_here(), front_is_clear(). Però hauràs de pensar també si et convé fer servir and, or, not