Un Algoritmo è costituito da una sequenza ordinata di passi che, partendo da alcuni dati in ingresso, mi fornisce una soluzione ad un problema in un tempo finito.

Il più semplice esempio di algoritmo è rappresentato dalle ricette da cucina.

UOVA FRITTE

  1. Predispongo tutti gli ingredienti
  2. Predispongo la padella
  3. Accendo il gas e sistemo la padella sul fornello
  4. Verso l’olio
  5. Controllo la temperatura dell’olio
  6. Se l’olio è sufficientemente caldo aggiungo le uova; altrimenti aspetto una manciata di secondi e ritorno al passo 5
  7. Aspetto due minuti
  8. Controllo la cottura dell’uovo
  9. Se l’uovo si è adeguatamente rassodato, spengo il fornello; altrimenti aspetto una manciata di secondi e ritorno al passo 8
  10. Impiatto

 

L’algoritmo viene adottato nel momento in cui insorge la necessità di risolvere un problema. Dopo aver effettuato l’analisi del problema, ne produciamo un modello, cioè una rappresentazione semplificata ed efficace che ne identifichi gli aspetti caratterizzanti, trasformati in oggetti trattabili.

È a questo punto che entra in gioco l’algoritmo, perché esso rappresenta le regole e le operazioni da compiere sui dati acquisiti (dati di ingresso o INPUT) per produrre dei risultati (dati di uscita o OUTPUT).

L’algoritmo dunque esplicita l’elaborazione da eseguire sui dati disponibili per ottenere il risultato desiderato.

 

Affinché l’algoritmo sia interpretato ed eseguito correttamente da un’altra persona o da una macchina, è necessario rappresentare i comandi (o istruzioni) che lo compongono in modo preciso e non ambiguo.

Tutti gli algoritmi si compongono di due categorie di istruzioni:

  • Le istruzioni dichiarative introducono gli oggetti (dati) che verranno usati dall’algoritmo
  • Le istruzioni esecutive elencano le operazioni che l’esecutore deve compiere.

In merito ai dati, occorre precisare che all’interno dell’algoritmo essi compaiono con nomi e non coi loro valori. Ciò è dovuto al fatto che gli algoritmi devono essere usati più volte e con valori diversi.

Similarmente a quanto accade nell’uso delle formule matematiche, i nomi delle variabili fungono da segnaposto per i valori effettivi che saranno usati nell’esecuzione.

NOTA: quando il valore assunto da un oggetto può cambiare da un’elaborazione all’altra, oppure nel corso della stessa elaborazione, si dice che l’oggetto è una variabile.

Quando invece il valore assunto da un oggetto non cambia mai da un’elaborazione all’altra, oppure nel corso della stessa elaborazione, si dice che l’oggetto è una costante.

 

Ricordiamoci che, nel caso del computer, l’insieme delle istruzioni definite in maniera precisa e non ambigua, verrà ulteriormente tradotto nel linguaggio speciale comprensibile al computer (linguaggio di programmazione) che esprime le istruzioni in una forma facilmente riconducibile al linguaggio naturale del computer che è il linguaggio macchina. La traduzione dell’algoritmo per il computer si chiama programma.

 

A fronte di quanto detto, sappiamo che l’algoritmo da servire in pasto al computer, subirà un successivo passaggio (codifica) che lo convertirà da Algoritmo a Programma. Per tale motivo, in fase di progettazione del procedimento risolutivo, è importante utilizzare un linguaggio appropriato, che rappresenti in modo efficace l’algoritmo e ne faciliti la successiva traduzione.

Per soddisfare questo requisito, abbiamo due opzioni per descrivere un algoritmo:

  • Pseudolinguaggio di Programmazione (o linguaggio di pseudocodifica)
  • Diagramma di Flusso

 

LINGUAGGIO DI PSEUDOCODIFICA

La rappresentazione di un algoritmo in questa modalità prevede la suddivisione in tre sezioni separate:

  • Intestazione (nome dell’algoritmo)
  • Sezione dichiarativa in cui vengono introdotti gli oggetti (dati) che verranno usati dall’algoritmo
  • Sezione esecutiva che elenca le operazioni che l’esecutore deve compiere. Rimane compresa tra le parole inizio e fine

Vediamo come potremmo esprimere l’algoritmo per il calcolo del perimetro e dell’area di un triangolo rettangolo di cui conosciamo i cateti.

Il dato Ipotenusa non è né un dato di input né un dato di output, ma viene ricavato perché utile per il calcolo: possiamo quindi definirlo come variabile di lavoro o variabile di calcolo.

Il simbolo = non deve definisce un’uguaglianza tra due espressioni, ma va interpretato come assegnazione dell’espressione calcolata a destra, alla variabile indicata a sinistra

 

DIAGRAMMA DI FLUSSO

Lo schema grafico per descrivere l’algoritmo è rappresentato dal diagramma di flusso (o flow-chart).

Il diagramma di flusso utilizza dei simboli standard (o blocchi) per rappresentare le azioni costitutive del procedimento risolutivo.

I simboli sono uniti tra di loro da frecce che indicano il percorso del procedimento.

All’interno dei simboli vengono scritti i dati sui quali si svolgono le operazioni (input, output, assegnazione), mentre all’interno del rombo viene inserita la condizione da controllare per decidere la strada da percorrere.

Esempio di diagramma di flusso per l’algoritmo citato prima:

LE STRUTTURE DI CONTROLLO

Il teorema di Jacopini-Bohm afferma che qualsiasi algoritmo può essere scritto utilizzando soltanto tre strutture di base: sequenza, selezione, iterazione.

Vediamo gli schemi organizzativi di ciascuna:

SEQUENZA

Organizza le istruzioni che devono essere eseguite in successione, secondo l’ordine di scrittura

SELEZIONE

Organizza le istruzioni raggruppandole in alternativa con altre, eseguite sulla base del controllo di una condizione

 

ITERAZIONE

Organizza le istruzioni che devono essere eseguite iterativamente, cioè in ripetizione

 

ESEMPI DI DIAGRAMMI DI FLUSSO
Per imparare ad applicare le strutture di controllo, esercitati con gli esempi guidati che abbiamo raccolto per te. Vai alla Pagina

 

scopri di più sugli algoritmi con:

la dispensa dell’ITIS Volta di Napoli Vai alla Pagina

la dispensa dell’Università degli Studi di Brescia Vai alla Pagina

 

Torna alla Home