Pulsante: con esso si realizza un comando monostabile.

sw pulsante

Serve per comandare temporaneamente una lampadina con la pressione di un solo tasto: se il tasto è a riposo (rilasciato), la lampadina è accesa altrimenti, se i tasto è premuto, e lo si mantiene premuto, la lampadina è spenta.

Si chiama comando monostabile perchè ha una sola posizione di riposo contro l'altra che si chiama posizione eccitata. Senza alcuna azione il tasto torna sempre alla stessa posizione di riposo (o rilascio) o diseccitata.

Il tasto "spazio" costituisce l'evento che deve essere verificato dallo script. La condizione "<tasto spazio premuto>" impone l'esecuzione di una fra due sequenze di istruzioni distinte ed in alternativa grazie al controllo "se <condizione> allora istruzioni1 altrimenti istruzioni2"

 

L'unica lampadina ha due costumi "accesa", "spenta" che costituiscono i suoi unici due stati.

L'unico sprite utilizza il ciclo di controllo giallo "per sempre" che significa che le istruzioni comprese fra i suoi due bracci vengono eseguite in successione per un tempo indefinito; quando il puntatore dell'istruzione da eseguire è arrivato al fondo, lo stesso puntatore ritorna all'inzio ma sempre dentro il ciclo.

Per noi il puntatore è un indicatore immaginario che mostra l'istruzione che è in esecuzione. Scratch esegue le istruzioni in sequenza se queste vengono impilate, cioè disposte una dopo l'altra a partire dall'alto; il puntatore infatti scorre continuamente dall'alto in basso fino a quando non trova più nulla. Alcune istruzioni di controllo fanno fare dei salti al puntatore (in questo caso il controllo "se ... altrimenti" di fatto salta una delle istruzioni viola mentre il controllo "per sempre" lo fa tornare all'inzio appena ha eseguito l'ultima istruzione in fondo). 

Per inciso va detto che Scratch consete l'esecuzione di più script in parallelo per cui ci possono essere più puntatori contemporaneamente. L'esecuzione contemporanea di più istruzioni è solo apparente, è la velocità di elaborazione del programma sottostante Scratch che ci dà l'illusione della contemporaneità ... sono i nostri sensi che sono lenti rispetto al PC.

Il ciclo "per sempre" è anche chiamato loop infinito.

Ricorda: in Scratch, una volta che il puntatore è dentro il ciclo "per sempre", le istruzioni eseguite sono solo quelle comprese fra i due bracci ed il resto non verrà mai più eseguito, infatti il puntatore non uscirà più dal ciclo. Corollario: non possono esistere altri cicli "per sempre" nello stesso sprite, il primo che si impossessa del puntatore non lo passerà mai all'altro.

In questo caso l'unica istruzione da eseguire è la funzione di controllo gialla "se ... altrimenti" che consente la scissione dello script in due parti distinte da eseguire separatamente ed in alternativa a seconda del verificarsi o meno della condizione (la parte in blu con angoli appuntiti)

In questo modo lo script è in grado di controllare in continuazione, grazie al ciclo per sempre, lo stato del pulsante "spazio" e di conseguenza attivare il costume LampOffDx, se lo spazio è premuto, spegnendo la lampadina od attivare LampOnDx, se il tasto spazio non è premuto, accendendo la lampadina.

Ovviamente si può invertire la funzione del tasto: se premuto allora è acceso, se rilasciato è spento (che mi sembra più normale).

Ecco l'esempio da scaricare.

Sviluppi

- prevedere l'accensione con due pulsanti da premere contemporaneamente (è il caso di alcuni sistemi di sicurezza: per impedire che la mano rimanga sotto la pressa è necessario premere due pulsanti distanti)

- prevedere l'accensione della lampadina con la pressione del pulsante e lo spegnimento ritardato di 2 sec (è il caso di disattivazione temporizzata come per l'azionamento temporaneo del tergicristallo)

- prevedere l'accensione della lampadina ritardata di 2 sec