Cos' un algoritmo

Un algoritmo è una sequenza di istruzioni ( procedura ) per risolvere un problema o raggiungere un determinato obiettivo.

Esempio di algoritmo

  1. Metti l'acqua nella pentola
  2. Metti un cucchiaio di sale nella pentola
  3. Accendi il fornello della cucina
  4. Metti la pentola sul fornello
  5. Quando bolle l'acqua metti la pasta nella pentola
  6. Dopo 10 minuti spegni il fornello

Perché si chiama algoritmo?

Il nome "algoritmo" deriva dal matematico arabo Mohammed Ibn Musa Al-Khwarizmi, autore di un testo di algebra del IX secolo d.C. sul sistema di numerazione indo-arabico.

In Europa l'opera viene tradotta in latino con il titolo "algoritmi de numero Indorum" e da questo ha origine la parola "algoritmo".

Nota. Da Al-Khwarizmi deriva anche il termine "algebra".

Come funziona un algoritmo

Le istruzioni sono poste in sequenza, l'una dopo l'altra.

Devono essere eseguite esattamente nell'ordine in cui compaiono.

un esempio di lista delle operazioni di un algoritmo

Nella sequenza dei passi di un algoritmo sono presenti anche le regole operative condizionali che, a seconda della circostanza o di una scelta, indicano all'esecutore come comportarsi.

Esempio. Il passo "quando bolle l'acqua metti la pasta nella pentola." condiziona l'operazione ( metti la pasta nella pentola ) a un evento preciso ( l'acqua bolle ). E' un chiaro esempio di regola condizionale.

Perché le istruzioni dell'algoritmo sono scritte in linguaggio naturale?

Le istruzioni dell'algoritmo sono espresse in linguaggio naturale, perché sono devono essere facilmente comprensibili per la persona che dovrà eseguirlo.

Come rappresentare un algoritmo

L'algoritmo può essere rappresentato in due modi diversi:

  1. una lista di operazioni
  2. un diagramma di flusso ( flow chart ).

La lista di operazioni

La lista è una rappresentazione valida soltanto se la sequenza dei passi è molto semplice.

E' semplicemente una sequenza ordinata di operazioni da compiere.

un esempio di algoritmo rappresentato con una lista ordinata di operazioni

Tuttavia, quando il problema da risolvere è complesso, le operazioni da compiere sono spesso condizionate da regole condizionali.

In questi casi è preferibile rappresentare l'algoritmo con un diagramma di flusso.

Il diagramma di flusso ( flow chart )

Il flusso comincia dall'alto e procede verso il basso.

Nel flow chart tutte le operazioni sono scritte dentro i blocchi.

un esempio pratico di flow chart ( diagramma di flusso ) di un algoritmo

Ogni blocco ha una forma diversa a seconda della tipologia dell'operazione.

Esempio. Il rombo indica le operazioni condizionate a una regola. I rettangoli sono le operazioni non condizionate. E così via.

La differenza tra algoritmi e programmi

Il concetto di algoritmo è molto ampio e non va confuso con i programmi informatici.

Un algoritmo è molto più astratto e generico.

Inoltre, può essere usato sia per risolvere tutti i problemi, anche quelli che non possono essere formalizzati nel linguaggio matematico.

Esempio. L'algoritmo per cuocere la pasta è un evidente caso di problema non matematico. Sono perlopiù azioni pratiche che una persona deve compiere per raggiungere l'obiettivo. Inoltre, nell'algoritmo le azioni sono scritte in italiano. Quindi gli stranieri non riuscirebbero a comprendere ed eseguire l'algoritmo.

Viceversa, un programma è un codice eseguibile da una macchina esecutrice ( computer ).

In genere, il programma è la traduzione dell'algoritmo in un linguaggio di programmazione comprensibile dal computer.

un esempio di codice sorgente

Un programma può risolvere soltanto i problemi che possono essere formalizzati matematicamente.

Quindi, soltanto alcuni algoritmo possono diventare programmi.

Cos'è un linguaggio di programmazione? E' un linguaggio con regole grammaticali e di sintassi precise. A differenza del linguaggio naturale, un linguaggio di programmazione è molto più semplice da comprendere per un computer, perché non è ambiguo e si basa esclusivamente sulla logica. Sono linguaggi di programmazione il linguaggio C, Java, Php, Python, ecc.



Per scrivere un commento

knowledge base

Algoritmi e strutture di dati