Lliçó 12 (while)
Treure fora les deixalles.
La instrucció "fes" li permet a Guido fer una acció mes d'una vegada, però té una limitació: ha de saber prèviament quantes vegades ha d'executar-se l'acció . Si està en una intersecció i necessita recollir diversos brunzidors però no sap quants hi ha, no pot utilitzar una estructura "fes". L'estructura "mentre" (while) pot funcionar en aquesta situació. El format general de la instrucció "mentre" és:
| mentre prova:
instrucció |
On "prova" és un condicional que s'avalua a veritat o mentida, i la "instrucció" és una sola comanda com "mou" o una seqüència de comandes en bloc. Sempre que la condició "prova" siga avaluada com veritat l'instrucció sera executada. En conseqüència "mentre" es semblant a "fes" excepte en que "fes" especifica el nombre de vegades que s'executarà l'instrucció , i "mentre" especifica una condició de prova. Sempre que la condició de prova siga veritat , les instruccions seran executades una vegada rere vegada.
Per exemple, per a recollir una pila de brunzidors pots escriure:
|
mentre junt_a_un_brunzidor: recullbrunzidor |
Escriure un cicle mentre és feixuc; hi ha molts detalls perquè estiga bé. Els passos generals són:
1. Identificar la condició que ha de ser veritat, quan Guido acabe amb el cicle.
2. Construir el teu cicle "mentre" amb la condició de prova oposada amb la qual hauria d'acabar-se el cicle:
|
mentre condició_oposada_certa:
instruccions del cicle |
3. Assegura't que qualsevol codi anterior estiga complet abans de començar el cicle, perquè comences en una condició coneguda. Si les condicions s'especifiquen, se'ls crida precondicions.
4. Assegura't que cada iteració del cicle progressa cap a l'acabament del mateix.
5. Assegura't que la prova per al cicle eventualment siga falsa perquè pugues eixir.
6. Escriu codi per a qualsevol treball de neteja que necessite fer-se després d'executar el cicle. Quan s'eix del cicle s'especifiquen les poscondicions, es compliran si les precondicions eren vàlides quan es va entrar al cicle.
Vés amb compte amb els cicles infinits, és a dir, cicles que mai acaben.
És dilluns al matí altra vegada. Abans d'anar al col·legi. Guido ha de traure les escombraries. No està segur de quantes boses de deixalles hi ha (representades per brunzidors), però ell sap que estan en el racó de l'habitació representada en aquesta vista del món:
Ell necessita recollir totes les deixalles i posar-les al contenidor en un viatge només. Utilitza una o més estructures "mentre" per conduir a Guido a traure les deixalles. Després de dipositar les deixalles, Guido ha de retrocedir un pas per a veure que les deixalles estan ben col·locades al contenidor de reciclatge.
Al final és veurà quelcom semblant a això:
Ací tens un vídeo amb la resolució d'aquesta lliçò 12.
Si el teu navegador o java et donen problemes per veure aquest vídeo en format ogg/theora , baixat el vídeo video-lesson-12.ogv i llavors tens dues opcions:
- Baixat-te el navegador Firefox 3.5 o superior que dona suport a aquest format de vídeo lliure i permet obrir i reproduir aquests tipus de vídeos.
- Baixar-te el reproductor VLC (Videolan) per reproduir aquest vídeo.
Llicenciat sota la GNU Free Documentation License