Repeteix
Escriure la mateixa ordre deu vegades és poc recomanable, perquè és tediós i propens a errors. En aquest capítol descobrirem for i in range(N):, que és una instrucció que diu a en Karel: «fes això N vegades», i només escrivim una línia de codi.
Repetir pot ser molt avorrit
Fins ara hem escrit una ordre per línia. Tot bé, però ara imagina que en Karel ha d'avançar dotze caselles: hauries d'escriure move() dotze vegades.
Les màquines no s'avorreixen, tampoc quan repeteixen. Existeix una sintaxi per expressar la repetició de forma clara i concisa.
Repetir N vegades: for i in range(N):
for i in range(N): li diu a en Karel que executi les ordres del bloc de sota exactament N vegades. Les ordres del bloc han d'anar indentades. «Indentar» vol dir desplaçar espais cap a la dreta. Normalment, deixaràs dos espais, o bé quatre espais.
Compara les dues maneres de fer el mateix:
# Sense fer servir for # Amb la instrucció for
move() for i in range(5):
move() move()
move()
move()
move()
El resultat és exactament el mateix. A més a més, si ara volem augmentar el nombre de passos a 8, només cal canviar un nombre: for i in range(8):.
La indentació
La indentació (els espais del davant) no és decoració: és la manera com el programa sap quines ordres formen part de la iteració i quines no. Tot el que va indentat sota el for es repeteix. El que torna a l'esquerra ja queda fora.
for i in range(3):
move() # ← es repeteix 3 vegades
turn_left() # ← també es repeteix 3 vegades
move() # ← s'executa UNA SOLA VEGADA, després de la iteració
Si la indentació no és consistent, el programa no funcionarà com esperes.
Observa aquest exemple.
Hi ha dues repeticions for, on hem afegit al mig la instrucció turn_left(). En Karel fa tres passos cap a l'Est, gira a l'esquerra i fa tres passos cap al Nord.
La instrucció turn_left() queda fora de qualsevol de les dues repeticions, perquè no està indentada.
La sintaxi
Abans que facis l'exercici, recorda les convencions de sintaxi
- Recorda escriure parèntesis quan toca, per exemple:
turn_left(). - Quan facis servir la instrucció
for, has d'acabar la línia amb:. - Tot allò que realment vols que es repeteixi ha d'anar indentat, fent servir espais.
Exercici
for i turn_left().