Capítol 9

Combinant condicions

Més d'una condició alhora

Fins ara sabem fer actuar en Karel segons una única condició. Tanmateix, de vegades necessitem que en Karel comprovi dues o més coses alhora, abans de moure's o actuar.

Per fer-ho, podem combinar condicions utilitzant aquests tres connectors: and, or, not.

  • and: Es compleix només si totes dues condicions són certes alhora. Actua com la conjunció «i».
  • or: Es compleix si almenys una de les condicions és certa. Actua com la conjunció «o»
  • not: Serveix per comprovar el contrari (per exemple, not front_is_clear() vol dir que tens un obstacle al davant). Actua com la negació «no»

Exemple 1: L'operador "and"

Imagina que volem que en Karel avanci només sobre una estora de perles. S'ha d'aturar en sec quan les perles s'acabin. Si fem servir while pearl_here(): move(), en Karel avançarà molt bé, però... i si la catifa arriba just on hi ha una roca? En Karel farà un últim move() que provocarà un xoc amb la roca, i això és un error de programació!

Per evitar-ho, li hem d'exigir dues coses alhora: "Mentre tinguis una perla sota teu i el teu davant estigui lliure, avança". D'aquesta manera, no xocarà mai.

Exemple 2: L'operador "or"

L'operador or serveix per reaccionar quan passa una cosa o en passa una altra. En aquest exemple, en Karel està patrullant el passadís. Li direm: "En cas que trepitgis una perla o bé si tens davant un obstacle, has d'enviar un senyal d'alerta, que serà girar sobre tu mateix."

Exercici: El Cercador Intel·ligent

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