--- title: Diagramma di flusso programma parcheggio tags: sistemi --- <!-- stile --> {%hackmd 3jQFhMRBRZqPo2NDNFJkLA %} <style> #sem_r { fill: rgba(255, 0, 0, 0.5); } #ini_sem, #sem_v { fill: rgba(0, 255, 0, 0.5); } </style> ## Diagramma di flusso programma parcheggio Codice sorgente dal quale si è ricavato il diagramma di flusso. (Il codice è quello originale, preso dalla soluzione al quesito dell’Esame di Stato proposta dalla Zanichelli. Sì, sono presenti molti errori.) ### Codice di partenza ``` void setup () { int cont=0; // inizializzo contatore digitalWrite(2,LOW); //rosso spento digitalWrite(3,HIGH); //verde acceso } void loop () { statoIn=digitalRead(2); //leggo sensore ingresso if (statoIn==1) { //se fascio interrotto cont=cont+1; //il conteggio si incrementa } if (cont==90) { //se il conteggio raggiunge 90 digitalWrite(2,HIGH); //rosso acceso digitalWrite(3,LOW); //verde spento } else { // altrimenti digitalWrite(2,LOW); //rosso spento digitalWrite(3,HIGH); //verde acceso } statoOut=digitalRead(3); //leggo sensore uscita if (statoOut==1) { //se fascio interrotto cont=cont-1; //il conteggio si decrementa } } ``` ### Diagramma di flusso ```flow inizio=>start: Inizio ini_c=>operation: Il conteggio delle auto parte da zero ini_sem=>inputoutput: Semaforo: Accendi il verde ?sens_i=>condition: Sta entrando un’auto? add_c=>operation: Aggungi una unità al conteggio ?c_nov=>condition: Le auto sono novanta? sem_r=>inputoutput: Semaforo: Accendi il rosso ?sens_u=>condition: Sta andando via un’auto? sem_v=>inputoutput: Semaforo: Accendi il verde sott_c=>operation: Sottrai una unità al conteggio inizio->ini_c->ini_sem->?sens_i ?sens_i(no)->?sens_u ?sens_i(yes)->add_c->?c_nov ?c_nov(yes, right)->sem_r(right)->?sens_u ?c_nov(no)->?sens_i ?sens_u(yes)->sott_c->sem_v(right)->?sens_i ?sens_u(no)->?sens_i ```