Proponiamo in questo articolo il semplice gioco indovina numero con Algobuild, proveremo cioè a creare il diagramma a blocchi di questo gioco.
Per realizzare questo algoritmo ci servirà la funzione random() che in Algobuild restituisce un numero casuale tra 0.0 e 0.99999999999999.
E ci servirà anche la funzione floor() che arrotonda un intero per difetto.
Il semplice gioco funziona in questo modo: la macchina produce un numero a caso e un utente deve provare ad indovinarlo.
Diagramma a blocchi per il gioco indovina numero con Algobuild
Quindi serviranno queste forme:
Ellisseper l’inizio e per la fine;
Rettangolo per effettuare le operazioni e per l’assegnamento;
Parallelogramma per inserire l’input, ovvero in questo caso per prendere il numero e per visualizzare in output il risultato;
Romboper effettuare un test che può essere vero o falso.
Procedimento
Dapprima memorizziamo in una variabile n il numero random generato dalla macchina. Questo numero sarà compreso tra 1 e 10 quindi imposto la funzione in questo modo:
n=floor(random()*10+1)
con la funzione floor arrotondo i numeri.
Poi chiediamo all’utente di inserire un numero e lo confrontiamo con il numero generato.
Se è uguale allora ha vinto, altrimenti ha perso. Alla fine diciamo in ogni caso il numero che il computer ha generato.
Ecco il diagramma a blocchi completo:
Ma possiamo fare di meglio, chiedendo ad esempio all’utente per tre volte di inserire il numero e precisare inoltre se il numero generato dal computer è più alto o più basso.
Come fare? Mi serviranno le strutture cicliche.
Ecco allora un’altra implementazione del gioco indovina numero con Algobuild.
Quindi realizziamo un ciclo che utilizza un contatore che parte da 0 e arriva a 3 e ogni volta chiede di inserire un numero. Dopo, per ciascun numero, farà il test per vedere se il numero è più grande o più piccolo.
Il ciclo si fermerà quando l’utente ha esaurito tutti i tentativi oppure ha indovinato il numero. Ho inserito una variabile flag che quando trova il numero diventa 1. Ho chiamato questa variabile indovinato.
Allego tutto il diagramma a blocchi completo:
Questa è solo una possibile soluzione del gioco indovina numero con algobuild.
In questo articolo realizzeremo degli esercizi con Algobuild.
Esercizio 1 con Algobuild
Conoscendo il prezzo di un oggetto (prezzo) e i soldi a disposizione nel proprio portafoglio, determinare se è possibile acquistare o no l’oggetto. Inoltre, se è possibile, verificare se e quanti soldi rimangono nel portafoglio dopo l’acquisto.
Questo semplice algoritmo si risolve quindi con le strutture di selezione.
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso per prendere il prezzo e i soldi a disposizione e per visualizzare in output il risultato;
Rettangolo per compiere le operazioni;
Romboper effettuare un test che può essere vero o falso. In questo caso si effettua un solo test.
Procedimento
Innanzitutto chiediamo in input il prezzo del prodotto e i soldi a disposizione. Quindi le due variabili che prenderemo in input sono prezzo e soldi.
Dopo controlliamo se il prezzo è maggiore dei soldi, cioè: prezzo>soldi.
Se è vero non è possibile acquistare il prodotto e visualizziamo il messaggio in output. Altrimenti se è falso vuol dire che il prezzo è minore o uguale ai soldi, dunque è possibile comprare l’oggetto.
In quest’ultimo caso calcoliamo quanto resterà nel portafoglio semplicemente facendo la differenza tra i soldi che abbiamo e il prezzo del prodotto: d=soldi-prezzo.
N.B. Ricordiamo che l’opposto di > è <=, non <.
Risoluzione con Algobuild
Presentiamo adesso la soluzione all’algoritmo proposto con Algobuild.
Questo è uno dei semplici esercizi con Algobuild che volevo proporvi oggi.
Esercizio 2 con Algobuild
Un’agenzia noleggia auto ai propri clienti a 30€ al giorno. Se i giorni di noleggio sono maggiori di 6 si applica uno sconto del 10% sul totale. Calcolare il prezzo da pagare.
Anche questo semplice algoritmo si risolve con le strutture di selezione:
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso i giorni e per visualizzare in output il totale da pagare;
Rettangolo per compiere le operazioni, ed assegnare un valore alla costante prezzo;
Romboper effettuare un test che può essere vero o falso. In questo caso si effettua un solo test.
Procedimento
Chiediamo in input i giorni e assegniamo a prezzo il valore di 30. Notate che prezzo non è un input ma un valore costante, quindi si deve utilizzare il rettangolo.
Dopo facciamo un test sui giorni e se sono minori o uguali a 6 calcoliamo il prezzo senza sconto, altrimenti effettuiamo uno sconto del 10% sul totale.
Allego quindi l’esercizio completo creato con Algobuild.
Questi sono solo alcuni semplici esercizi con algobuild, più avanti ne presenterò degli altri.
In quest’articolo studieremo un algoritmo che controlla se un anno è bisestile oppure no.
Regola per calcolare se un anno è bisestile
Nel mese di febbraio ogni 4 anni viene aggiunto un giorno per evitare lo slittamento delle stagioni. Quindi ogni 4 anni avremo 366 giorni anziché 365.
Per vedere se un anno è bisestile dobbiamo dividerlo per 400; se è divisibile allora è sicuramente un anno bisestile; altrimenti saranno bisestili solo quegli anni che si possono dividere per 4 ma non per 100.
Esempi di anni bisestili sono:
1600, 1604, 1608 fino al 1696. Il 1700 non è bisestile. E ancora il 1704, 1708 fino a 1796. Il 1800 non è bisestile. Allo stesso modo neanche il 1900 è bisestile e così via.
In definitiva per apportare un’ulteriore approssimazione si è stabilito di non rendere bisestili gli anni secolari, eccetto quelli divisibili per 400.
Potete seguire tutta la spiegazione su focus scienza se volete approfondire.
Algoritmo anno bisestile con i diagrammi di flusso
Realizziamo questo semplice algoritmo con i diagrammi di flusso.
Per realizzare l’algoritmo servono dunque le seguenti forme:
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso per prendere l’anno e per visualizzare in output il risultato;
Romboper effettuare un test che può essere vero o falso. In questo caso si effettuano due test.
Quindi chiediamo in input l’anno e poi verifichiamo se è divisibile per 400. Se è vero diciamo che l’anno è bisestile, altrimenti verifichiamo se l’anno è divisibile per 4 ma non per 100 come detto sopra.
Utilizzeremo l’operatore % , che è l’operatore modulo, che serve a trovare il resto della divisione.
Lo spiego con un esempio:
2400%400 indica il resto della divisione che in questo caso è 0; in quanto 2400 diviso 400 fa 6 con resto zero;
invece 2400/400 indica un quoziente e in questo caso è 6.
Per fare il test usiamo l’operatore di confronto che ricordo si esprime con il doppio uguale.
Allego l’algoritmo completo che verifica se un anno è bisestile.
Potremmo anche adottare questo procedimento:
In questo modo si controlla se un anno è bisestile con un solo test, ovvero un solo se.
Realizziamo un algoritmo per stabilire se due figure sonoequivalenti con i diagrammi di flusso.
Innanzitutto diamo la definizione di due figure equivalenti:
In geometria piana, due figure si dicono equivalenti quando hanno la stessa area, cioè occupano la stessa estensione.
Ipotizziamo dunque questo problema:
Dati in input l’ipotenusa e il cateto di un triangolo rettangolo e il lato di un quadrato verificare se le due figure sono equivalenti.
Algoritmo con i diagrammi di flusso per vedere se due figure sono equivalenti
Per realizzare l’algoritmo servono dunque le seguenti forme:
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso per prendere l’ipotenusa, il cateto e il lato e per visualizzare in output il risultato;
Rettangolo per compiere le operazioni;
Romboper effettuare un test che può essere vero o falso. In questo caso si chiede: AreaQ è uguale AreaT?
Quindi prendiamo in input il cateto c1, l’ipotenusa i del triangolo rettangolo e il lato l del quadrato e calcoliamo le due aree.
Per calcolare l’area del triangolo rettangolo abbiamo bisogno di ricavare il cateto, usando questa formula:
c2=sqrt(i*i-c1*c1); dove sqrt è la funzione per la radice quadrata.
Dopo calcoliamo AreaT=c1*c2/2 e l’AreaQ=l*l
Usiamo la funzione round() per arrotondare all’intero più vicino.
Poi facciamo il confronto. Se le due aree sono uguali allora le figure sono equivalenti e le visualizziamo in output con un messaggio.
Al fine di semplificare il problema, per il momento trascuriamo i controlli che verificano se i dati presi in input possono essere quelli di un triangolo rettangolo e quelli di un quadrato.
In figura potete vedere il diagramma a blocchi realizzato con Algobuild, ma potete usare anche un foglio, sebbene Algobuild sia molto utile in quanto fa vedere i possibili errori.
Chiaramente questa è una possibile soluzione dell’algoritmo per il confronto di due figure equivalenti, proponete pure la vostra nei commenti sotto.
Realizziamo alcuni algoritmi di selezione per confrontare due numeri.
Esempio 1 di algoritmo di selezione per confrontare due numeri
Dati due numeri naturali X e Y, aggiungere al più piccolo la somma dei due numeri, se uguali visualizzare semplicemente che i numeri sono uguali.
Per realizzare l’algoritmo servono le seguenti forme:
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso i due numeri X e Y e per visualizzare in output il risultato;
Rettangoloper compiere le operazioni;
Romboper effettuare un test che può essere vero o falso. In questo caso si chiede: X è minore di Y? E nuovamente si usa per chiedere X è maggiore di Y?
Quindi prendo in input X e Y e dopo faccio la somma dei due numeri.
Poi chiedo se X è minore di Y, se vero aggiungo a X la somma; se falso controllo se Y è minore e se è vero aggiungo a Y la somma; altrimenti vuol dire che i numeri sono uguali.
Ecco il programma realizzato con i diagrammi a blocchi tramite il software Algobuild.
Esempio 2 di algoritmo di selezione per confrontare due numeri
Dati 2 numeri naturali X e Y, aggiungere al più piccolo la quantità necessaria per essere uguale al più grande, se uguali visualizzare semplicemente che i numeri sono uguali.
Per realizzare l’algoritmo servono dunque le seguenti forme:
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso i due numeri X e Y e per visualizzare in output il risultato;
Romboper effettuare un test che può essere vero o falso. In questo caso si chiede: X è minore di Y? E nuovamente si usa per chiedere X è maggiore di Y?
Anche qui prendo in input X e Y e dopo chiedo se X è minore di Y, se vero aggiungo a X la differenza tra Y e X; se falso controllo se Y è minore e se è vero aggiungo a Y la la differenza tra X e Y, altrimenti vuol dire che i numeri sono uguali.
Ecco il flow chart realizzato con Algobuild.
Esempio 3 di algoritmi di selezione per confrontare due numeri
Dati 2 numeri naturali X e Y, aggiungere 100 al più grande, se uguali visualizzare semplicemente che i numeri sono uguali.
Per realizzare l’algoritmo servono quindi le seguenti forme:
Ellisseper l’inizio e per la fine;
Parallelogramma per inserire l’input, ovvero in questo caso i due numeri X e Y e per visualizzare in output il risultato;
Romboper effettuare un test che può essere vero o falso. In questo caso si chiede: X è minore di Y? E nuovamente si usa per chiedere X è maggiore di Y?
Anche qui prendo in input X e Y e dopo chiedo se X è minore di Y, se vero aggiungo a Y il valore 100; se falso controllo se Y è minore e se è vero aggiungo a X il valore 100; altrimenti i numeri sono uguali.
Ecco il diagramma di flusso realizzato con Algobuild.
Questi sono solo alcuni esempi di algoritmi di selezione con il confronto tra due numeri, presto ne metterò degli altri.