Benvenuto in Megistone   Click to listen highlighted text! Benvenuto in Megistone Powered By GSpeech
Benvenuto in Megistone   Click to listen highlighted text! Benvenuto in Megistone Powered By GSpeech
Stampa

Nella descrizione di un algoritmo si può verificare che le operazioni da eseguire siano diverse a seconda dei dati inseriti.

Ad esempio, se dobbiamo andare in vacanza, dobbiamo verificare di non avere "debiti scolastici" a settembre, e quindi si prospettano due soluzioni alternative:

Nel diagramma a blocchi questa situazione è illustrata ricorrendo a un elemento grafico specifico, detto blocco di test o di confronto.

Blocco di confronto: al suo interno vengono effettuate operazioni di confronto e il risultato può essere soltanto  O NO (oppure VERO O FALSO).

Di seguito riportiamo alcuni esempi di istruzioni di confronto che possiamo scrivere nei blocchi condizionali.

A queste domande si può solo rispondere oppure NO, esistono cioè soltanto due alternative: si tratta dunque di "istruzioni di confronto" che prendono il nome di condizioni logiche dalle quali, a seconda del valore della risposta, è sempre necessario intraprendere percorsi alternativi, cioè in base alla risposta è necessario eseguire operazioni diverse.

Li rappresentiamo graficamente nei diagrammi a blocchi con uno schema come il seguente:

 

 

 

Possiamo osservare che, a seconda della risposta data alla domanda (cioè al test), le strade "si dividono", vengono eseguite operazioni diverse nei due "rami" ma, successivamente, si ricongiungono.

La presenza di istruzioni in entrambi i rami del diagramma fa sì che in questo caso si parli di selezione doppia. Scriviamo il diagramma a blocchi per l'algoritmo "semplificato" che descrive la procedura per l'acquisto di una moto.

 

Vediamo come si traduce l'istruzione di selezione doppia con Arduino.

Con un pulsante e due LED, progetta un sistema in cui:

 

Soluzione

Si colleghi il pulsante al pin7 (con pull-up interno) e i LED rosso al pin 12 e verde al pin 13.

Il codice dello sketck

bool puls;
const int pinPuls=7;
const int pinRosso=12;
const int pinVerde=13;

void setup()
{
pinMode(pinPuls, INPUT_PULLUP);
pinMode(pinRosso, OUTPUT);
pinMode(pinVerde, OUTPUT);
}
void loop()
{
puls=digitalRead(pinPuls);

if (puls==1)
 {
digitalWrite(pinRosso, HIGH);
digitalWrite(pinVerde, LOW);
 }
else
 {
digitalWrite(pinRosso, LOW);
digitalWrite(pinVerde, HIGH);
 }
}

 

Nello sketch puoi notare che:

La sintassi dell'istruzione IF...ELSE è:

 

if (espressione) {

// blocco di istruzioni A

else {

// blocco di istruzioni B

}

Se espressione è VERA si esegue il blocco di istruzioni A, altrimenti viene eseguito il blocco B.

L'else è facoltativo e va eliminato se non esiste alternativa ad A:

if (espressione) {

// blocco di istruzioni A

}

 

 

Click to listen highlighted text! Powered By GSpeech