SE ALLORA
In questo post vedremo come è possibile far prendere “decisioni” a Scratch in maniera tale da alterare il flusso sequenziale delle istruzioni di un programma.
Attraverso l’uso del blocco SE-ALLORA è possibile attivare o disattivare l’esecuzione di un intero blocco di istruzioni:
Di seguito mostriamo lo schema generale del funzionamento del blocco SE-ALLORA:
In breve, quando l’esecuzione del programma raggiunge un blocco SE-ALLORA, il confronto indicato col blocco verde viene eseguito, se il confronto restituisce VERO come risposta (la condizione è vera) allora vengono eseguiti i blocchi chiamati Commando1, Commando2, fino ad arrivare a CommandoN e poi viene eseguito il blocco chiamato CommandM. Se, invece, il confronto restituisce FALSO come risposta (la condizione è falsa) allora mBlock esegue direttamente il blocco CommandoM senza eseguire Commando1, Commando2, ----, CommandoN. Vediamo il seguente programma:
Per prima cosa si crea tre variabili con nome A-B-C.
Il programma chiede in input tre dati e li deposita nelle variabili A, B e C. Le prime due rappresentano gli operandi di un’operazione, mentre la terza è il simbolo corrispondente all’operazione aritmetica da eseguire.
Il blocco SE-ALLORA verifica che la variabile C contenga il simbolo + (ovvero che l’utente abbia richiesto di eseguire un’addizione). Se così è, Scratch lo verifica eseguendo il confronto ( C = + ).
In questo caso, Scratch calcola il risultato dell’addizione sommando il contenuto di A con il contenuto di B e visualizza tale risultato, aspetta 5 secondi e poi esegue ( dire Fine programma )
Se, invece, il contenuto di C è diverso da + (ovvero il risultato del confronto è falso) allora si esegue direttamente il blocco ( dire Fine programma ).
SE ALLORA ALTRIMENTI
Il blocco SE ALLORA ALTRIMENTI fornisce una possibilità in più, ovvero decidere cosa fare quando la condizione del SE risulta falso.
Di seguito mostriamo lo schema generale del funzionamento del blocco SE-ALLORA-ALTRIMENTI.
In breve, quando l’esecuzione del programma raggiunge il blocco SE-ALLORA-ALTRIMENTI viene valutata la condizione espressa nel blocco verde. Se il confronto risulta vero allora vengono eseguiti i blocchi commando1, commando2,..., commandoN (del GRUPPO SE) e poi commandoM. Se il confronto risulta falso allora vengono eseguiti i blocchi commando1,commando2, ...,commandoN (del GRUPPO Altrimenti) e poi commandoM.
Vediamo un esempio:
L'esempio precedente sa “capire” se un numero inserito in input è minore o maggiore di 50. La parte più importante del programma è il confronto effettuato nell’ambito del blocco SE-ALLORA-ALTRIMENTI:
SENSORI
Consentono di ottenere informazioni dallo stato degli oggetti che fanno parte dell'applicazione.
Nella sezione dei sensori si trovano principalmente due tipi di blocchi: blocchi logici - blocchi di stato.
I blocchi logici hanno forma esagonale e quindi possono essere inseriti all'interno dei blocchi di controllo: se allora altrimenti - per sempre - attendi fino quando - ripeti fino a quando - attendi fino a quando.
Quando un blocco logico viene eseguito estrae l'informazione a cui si riferisce e produce, in base all'informazione un risultato logico che può assumere solo due valori : vero oppure falso.
In base al risultato calcolato il blocco contenitore può effettuare due azioni diverse; ad esempio nel caso del se allora altrimenti, se il blocco logico calcola un risultato vero viene eseguito solo il primo blocco del se, mentre se calcola un risultato falso viene eseguito solo il secondo blocco.
I blocchi di stato hanno forma ovale e quindi possono essere inseriti all'interno di qualsiasi blocco che richieda per la sua esecuzione un "valore". In effetti un blocco di stato quando viene eseguito restituisce sempre un "valore" che è contenuto in una variabile detta "variabile di stato". Un blocco di stato può entrare in un blocco logico come elemento di un confronto per valutare se è "vera" o "falsa" una certa condizione che viene inserita in un blocco di controllo.