Informatica 5 Liceo Scientifico Scienze Applicate/Distributore Bibite

Indice del libro

Distributore Automatico Panini e Bibite

modifica
 
Kirin's Nagoya dialect Beverage vending machine in Japan 2012
Il distributore di dolcetti e bibite che troviamo a scuola è il classico esempio di automa. Quando si analizza una di queste macchine si deve pensare agli ingressi, alle uscite e alle variabili di stato. Gli ingressi sono i soldi che possiamo via via inserire, un ingresso è anche il codice del prodotto desiderato, anche il pulsante per ottenere il resto è un ingresso; l'uscita è invece rappresentata dal prodotto erogato o dai soldi che vengono restituiti; le variabili di stato che servono per descrivere lo stato interno della macchina possono essere il numero di panini o bibite ancora disponibili o i soldi inseriti dal cliente oppure il totale incassato.

Vogliamo scrivere un programma che simuli il comportamento di un distributore automatico di bibite e panini per far pratica con le variabili di stato e le variabili d'ingresso e uscita.Ipotizziamo che dopo una fase in cui si caricano i panini e le lattine si possano selezionare i diversi prodotti dopo aver inserito un importo uguale o maggiore del prezzo del prodotto, il distributore non solo controlla che il credito sia sufficiente ma controlla che il prodotto sia effettivamente disponibile e inoltre restituisce il resto.


Ecco il codice


disp('distributore bibite')
nlattinecoca=input('quante lattine di coca vuoi caricare?');
prezzolattinacoca=input('prezzo vendita coca cola?');
npaninisalame=input('quanti panini al salame vuoi caricare?');
prezzopaninisalame=input('prezzo vendita panino?');
disp('distributore pronto');
importo=0;
while (npaninisalame>0 || nlattinecoca>0)
disp('premi soldin per inserire del denaro');
disp('premi panino per prendere un panino al salame');
disp('premi bibita per prendere una lattina');
disp('premi restos per ottenere il resto');
scelta=input('inserisci la tua scelta: ','s');
if(scelta=='soldin')
 moneta=input('quanti soldi inserisci? ');
 importo=importo+moneta;
endif
if(scelta=='panino')
 if(npaninisalame>0)
   if (importo>=prezzopaninosalame)
     npaninisalame=npaninisalame-1;
     disp('ecco il tuo panino al salame')
     importo=importo-prezzopaninosalame;
   else
     disp('credito insufficiente')
   endif
 else
   disp('mi dispiace i panini sono finiti')
 endif
endif
if(scelta=='bibita')
 if(nlattinecoca>0)
   if (importo>=prezzolattinacoca)
     nlattinecoca=nlattinecoca-1;
     disp('ecco la tua bibita')
     importo=importo-prezzolattinacoca
   else
     disp('credito insufficiente')
   endif
  else
   disp('mi dispiace le bibite sono finite')
 endif
endif
if (scelta=='restos')
  disp('Il tuo resto è ')
  disp(importo)
  importo=0;
endif
endwhile
disp('distributore vuoto attendere il tecnico')