Realizziamo degli algoritmi sui triangoli con Algobuild.
Dati in input i lati di un triangolo verificare se è isoscele, equilatero o scaleno.
Per verificare se un triangolo è isoscele, equilatero o scaleno dobbiamo confrontare i lati tra di loro.
Ricordiamo che su Algobuild, come nei linguaggi di programmazione, l’operatore di confronto per l’uguaglianza è il doppio uguale: ==
Algoritmo sui triangoli con Algobuild
Come procediamo per verificare se un triangolo è isoscele, equilatero o scaleno?
Procediamo in questo modo:
Prima confrontiamo lato1==lato2 e lato2==lato3 per determinare se il triangolo è equilatero.
Dopo confrontiamo se lato1==lato2 o lato2==lato3 o lato1==lato3 per determinare se il triangolo è isoscele.
Se nessuna delle condizioni sopra si verifica allora il triangolo è scaleno.
Prima però occorre controllare che il triangolo soddisfa questa proprietà fondamentale: In un triangolo ogni lato è minore della somma degli altri due!’
Quindi impostiamo un ciclo do-while con questa condizione:
while !(lato1<lato2+lato3 && lato2<lato3+lato1 && lato3<lato1+lato2)
Se questa condizione è vera quindi richiediamo i lati per far si che rispettino la proprietà.
Come da figura sotto:
Se la proprietà dei triangoli è verificata allora continuiamo.
Ricordiamo che gli operatore logici in Algobuild, così come nei linguaggi di programmazione si indicano in questo modo:
per l’and si usa il simbolo &&
per l’or si usa il simbolo ||
per il not si usa il simbolo !
Allego lo script completo
La stessa soluzione si poteva implementare anche con gli if annidati.
Ecco lo pseudocodice:
PROG main
DO_WHILE //! (lato1<lato2+lato3 && lato2<lato3+lato1 && lato3<lato1+lato2)
IN lato1
IN lato2
IN lato3
END DO_WHILE ! (lato1<lato2+lato3 && lato2<lato3+lato1 && lato3<lato1+lato2)
IF lato1==lato2 &&lato2==lato3
OUT "il triangolo è equilatero"
ELSE //if lato1==lato2 &&lato2==lato3
IF lato2==lato3 || lato1==lato2 || lato1==lato3
OUT "il triangolo è isoscele"
ELSE //if lato2==lato3 || lato1==lato2 || lato1==lato3
OUT "il triangolo è scaleno"
END IF //lato2==lato3 || lato1==lato2 || lato1==lato3
END IF //lato1==lato2 &&lato2==lato3
END PROG //main
Alcuni link utili
Indice argomenti diagramma a blocchi
Divisori di un numero con algobuild
Algoritmi di selezione sugli angoli
Numeri amicabili con algobuild