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
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