VERIFICA LE TUE CONOSCENZE

Algoritmi

 

Un algoritmo è una sequenza di passi che devono essere eseguiti secondo un ordine prefissato per raggiungere il risultato voluto.

 

Per descrivere in modo corretto un algoritmo è importante avere chiaro qual è l’obiettivo da raggiungere, cioè quali sono i risultati da ottenere.

Solo quando è chiaro l’obiettivo da raggiungere (dati di output) e quando sono a disposizione tutte le informazioni di partenza (dati di input) è possibile definire un algoritmo.

La strategia risolutiva cambia in funzione dei dati che abbiamo a disposizione. Per esempio le istruzioni per determinare l’area di un quadrato cambiano se abbiamo a disposizione il lato o il perimetro.

 

Un algoritmo per essere definito tale deve avere le seguenti caratteristiche:

  1. finito

deve essere composto da un numero finito di passi ripetuti un numero finito di volte

  1. deterministico

a fronte degli stessi dati di input deve dare gli stessi risultati

  1. non ambiguo

ogni istruzione deve essere interpretata univocamente dall’esecutore

  1. generale

deve fornire soluzioni a tutti i problemi appartenenti alla stessa classe.

Possiamo ora dare una definizione più formale di algoritmo:

 

Un algoritmo è un insieme finito e ordinato di passi elementari che permettono di risolvere tutti i problemi di una determinata classe.

 

Componenti di un algoritmo

 

Le componenti di un algoritmo sono i dati, cioè gli oggetti su cui operare, e le istruzioni, cioè i passi elementari da eseguire.

 

Dati

Ad ogni dato è associato un nome che lo identifica in modo univoco; è sempre buona norma dare ai dati nomi significativi.

 

In base alla modalità di interazione con l’elaboratore possiamo classificare i dati di:

 

input dati necessari all’elaborazione forniti dall’esterno

output risultati dell’elaborazione forniti all’esterno

interni (o di lavoro o intermedi) dati ottenuti durante l’elaborazione ma non interessanti per l’utente.

 

In base agli oggetti che rappresentano possiamo classificare i dati in:

 

numerici dati con cui è possibile effettuare calcoli (possiamo distinguere tra numerici interi e numerici con cifre decimali)

alfanumerici detti anche stringhe, sono dati che possono contenere qualunque tipo di carattere

 

logici o booleani possono valere solo Vero o Falso (true e false) e quindi sono utilizzati quando si vuole indicare la possibilità di scelta tra due opzioni.

 

In base alla possibilità di cambiare o meno il valore del dato durante l’elaborazione possiamo classificare i dati in:

 

costanti il valore rimane immutato nel tempo

variabili il valore può cambiare nel tempo.

 

Il concetto di variabile è molto importante nella definizione degli algoritmi. Per comprendere meglio il suo significato si può pensare a una variabile come a un contenitore in cui si possono introdurre dei valori. Ogni variabile è caratterizzata dal nome e dal tipo di dato che dovrà contenere. Fisicamente le variabili risiedono in memoria centrale.

 

Istruzioni

 

I passi elementari che compongono l’algoritmo sono le istruzioni che permettono di dare comandi all’esecutore (cioè il computer).

Le istruzioni si classificano come:

istruzione di lettura permette di assegnare ad una variabile un dato di input

istruzione di scrittura permette di visualizzare il valore di una variabile risultato dell’elaborazione

istruzione di assegnazione permette di assegnare un valore ad una variabile in vari modi (possiamo assegnare un valore costante, il valore di un’altra variabile o il risultato di un’espressione).

Le variabili che si trovano a destra di un’operazione di assegnazione devono essere state inizializzate con un’operazione di lettura o con un’altra operazione di assegnazione altrimenti potrebbero non avere un valore definito.

 

E’ importante osservare che l’operazione di assegnazione non altera il valore delle variabili a destra del simbolo =, mentre viene perso il valore contenuto nella variabile a sinistra del simbolo =.

 

 

VERIFICA LE TUE CONOSCENZE

Cosa significa programmare?

Che differenza c’è tra linguaggi naturali e linguaggi artificiali?

Cos’è il linguaggio macchina?

A cosa servono compilatori e interpreti?

Cosa significa dire che un computer è programmabile?

Cos’è un algoritmo?

Quali sono le caratteristiche di un algoritmo?

Quali sono le componenti di un algoritmo?

Cos’è un dato di input? E di output?

Quando un dato è definito numerico? E alfanumerico?

Che differenza c’è tra variabile e costante?

Cos’è un dato booleano?

Quali tipi di istruzioni compaiono negli algoritmi?

A cosa servono le istruzioni di lettura e di scrittura?

A cosa serve l’istruzione di assegnazione?