Un cop explicada l'estructura seqüencial en aquests apartats explicarem les estructures fonamentals de la programació anomenades Iteratives o Repetitives. Repetir és una de les accions que els ordinadors fan millor. Són incansables! A més, és completament necessari poder repetir per poder fer programes. Sense l'habilitat de fer repeticions hi hauria problemes que els ordinadors no podrien resoldre. Les trobareu categoritzades a Control.
Començarem per la repetició més senzilla:
Les estructures de control a Scratch tenen aquesta forma de contenidor obert. En aquest cas, la repetició per sempre, el nom és prou informatiu. Els programes que posarem dins del per sempre es repetiran sense fi.
No cal, però, repetir per sempre. Podem dir a l'Scratch que volem repetir només un nombre determinat de vegades.
Si mireu totes les categories, veureu que existeixen els Operadors i els Sensors.
Dins d'elles hi trobareu uns blocs d'un format diferent als blocs que heu vist fins ara. Compareu les instruccions vistes anteriorment com moure o les estructures de control com el per sempre i les noves expressions.
Les Expressions Lògiques es caracteritzen per retornar valors. D'una expressió s'espera que calculi o mesuri alguna cosa i retorni el resultat. No són instruccions, sinó que s'han d'utilitzar en llocs molt determinats, que n'imposen la utilització. Fixeu-vos que hi ha:
Les expressions-bloc amb contorns rodons són expressions numèriques, és a dir, han de retornar un valor numèric.
I les expressions-bloc amb contorns angulars són expressions lògiques amb dos possibles valors: cert o fals.
A la imatge veiem l'expressió de sumar dos nombres, amb un lloc a cada costat del + per posar-hi els nombres, i l'expressió distància a menú, que ens diu la distància de l'objecte al que pertany el programa del que l'expressió forma part, a un altre objecte triat del petit menú desplegable que hi veiem.
En canvi la comparació entre dos nombres < o la pregunta ratolí premut>? es respondran amb valors cert o fals.
Aquestes expressions van a llocs especialment preparats per col·locar-hi aquests blocs. Els blocs de contorns rodons poden anar a forats amb contorns rodons. Per exemple, els paràmetres de la instrucció moure estan preparats per posar-hi una expressió numèrica, però els mateixos paràmetres de les operacions aritmètiques (com el + que ja hem vist) també estan preparats per posar-hi altres expressions numèriques. Així podem composar les operacions, i per tant també podem composar expressions. Per exemple:
I per exemple, es poden construir instruccions més sofisticades com les de la imatge que permeten moure un objecte un nombre de passos entre 21 i 25, triat a l'atzar.
Igualment, els forats amb contorns angulars estan preparats per encabir-hi expressions lògiques, és a dir, expressions que tenen com a possible resposta només dos valors: cert o fals. I també podem composar operacions de la mateixa manera que ho hem fet amb les expressions numèriques. Fins i tot podem composar els dos tipus d'expressions, si el bloc ens ho permet. Veiem-ne alguns exemples:
Aquesta, és una expressió lògica que ens dirà si el doble de l'arrel quadrada de 10 és més petit que 7 sumat a un nombre a l'atzar entre 1 i 10 (i el resultat, cert o fals, dependrà del nombre a l'atzar que surti).
Un altre exemple seria aquesta expressió ens dirà si teniu el ratolí premut i la tecla espai premuda:
Fixem-nos en l'operació lògica i (conjunció). De la mateixa manera disposem a Scratch de les operacions o (disjunció) i no (negació).
Així doncs, resumint, els forats de contorns arrodonits esperen que hi posem expressions numèriques (que poden ser tan senzilles com un sol número, o tan sofisticades com vulguem) i els forats de contorns angulars esperen que hi posem una expressió lògica (de valor cert o fals). Tenim diversos blocs-expressió per construir expressions. Estan essencialment a les categories Operadors i Sensors.
Però pot ser que vulguem repetir només si passa alguna cosa relacionada amb el nostre programa. És a dir, pot ser que la condició per deixar de repetir depengui del que està passant mentre s'executa el programa, i per tant no puguem saber, abans d'executar el programa quantes vegades s'ha de repetir.
Veiem un exemple. El Repetir Fins [Condició], on Condició és el lloc on hi posareu una expressió lògica.
Dèiem que hi ha estructures iteratives que repetiran les instruccions que hi ha dintre seu en funció del que passi mentre s'executa el programa. Ara ja podem intuir que això passarà en funció del resultat d'una expressió lògica. Aquesta és la raó que s'anomenin repeticions condicionals
Veiem un exemple. Suposem que volem un programa que faci el mateix que el programa que estem fent servir en aquesta pràctica, és a dir,que mogui el gatet 10 passos, el giri 15 graus, mioli i alterni vestits, però volem que ho faci fins que l'usuari premi la tecla espai. El programa que tindrem és:
Fixem-nos que hem introduir una mica d'aleatorietat al programa. Ara, a cada repetició, es mourà un nombre de passos a l'atzar entre 1 i 10 i girarà un angle entre -30 i 30 graus, també a l'atzar.
Si us fixeu quan el gatet arriba a les vores queda ocult. Ho podem resoldre demanant a cada repetició que reboti si toca una vora. Hi ha una instrucció que fa precisament això:
L'estructura condicional és una estructura de control que serveix per decidir si un cert conjunt d'instruccions s'executa, o no, en funció d'una condició (és a dir, d'una expressió lògica). Aquestes són les estructures Si i Si … Si No. Les trobareu categoritzades a Control.
Si heu entès les instruccions Iteratives les Condicionals són més senzilles. La idea és que si l'expressió lògica (fixeu-vos en els forats de contorns angulars) és cert, executarem les instruccions dins del Si, si aquesta expressió és fals, no executarem res en el cas del Si, i les instruccions dins del Si No en el cas del Si … Si No.