REQUISITI DI UN ALGORITMO

 

Un algoritmo è una successione di operazioni applicate a dati (ai quali è attribuito un significato), finito nel tempo, non ambiguo, dettagliato, eseguibile.

 

D a t i  e  O p e r a z i o n i

Nella definizione di un algoritmo bisogna:

·    definire i dati su cui operare;

·    definire le operazioni che devono essere eseguite sui dati.

Dati

Un dato è un “oggetto” al quale si possono attribuire dei valori e sul quale possono essere eseguite operazioni, in relazione al “tipo” del dato.

·     numeri interi o reali;

·     stringhe di caratteri;

·     valori nell’ambito di un insieme qualunque, quali “mesi dell’anno”, “giorni della settimana”, insieme logico contenente i valori “Vero” e “Falso”, etc.

à     Un dato è costante se è vincolato ad assumere un solo valore (per esempio Pigreco = 3,14, Giorno festivo = Domenica).

à     Un dato non costante è variabile, cioé può assumere qualunque valore dell’insieme di definizione.

Istruzioni

·    operative (di calcolo e trasformazione dati);

·    di controllo (che controllano la sequenza di operazioni);

·    di acquisizione dati (input) e di comunicazioni risultati (output).


Teorema fondamentale dell’Informatica (Boëhm e Jacopini, 1966)

"Con tre sole strutture di controllo si può definire qualunque algoritmo (non concorrente)."

 

·    La sequenza di due (blocchi di) istruzioni S1 e S2

·    La selezione o alternativa: if p then S1 else S2

·    L’iterazione o ciclo o loop: while p do S



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


D a t i   S t r u t t u r a t i

·     array = dati tutti dello stesso tipo (vettori, matrici, tabelle). Esempio: VET[3]

·     record = dati di tipo generalmente diverso. Esempio: ANAGRAFICO.COGNOME

 

S t r u t t u r e   D a t i

Una struttura di dati è una collezione dinamica di dati dello stesso tipo, per i quali non è definita la numerosità.

SEQUENZE:

·     file

·     coda (First In First Out);

·     pila (Last In First Out);

·     lista

·     insieme


GRAFO

Insieme di elementi detti “nodi”, collegati da “archi” (non orientati) o “frecce” (orientate)

ALBERO

Insieme finito di elementi detti nodi, aventi ciascuno zero, uno o più nodi discendenti ed al massimo un ascendente. I nodi terminali vengono denominati foglie. Esiste un nodo speciale detto radice che non ha ascendenti. I nodi si raggruppano per uguale livello di discendenza, a partire dalla radice che si trova al livello zero. Se in ciascun livello si considera significativo l’ordine con cui compaiono i nodi, l’albero è detto ordinato.

Un albero è binario se ogni nodo ha al max 2 discendenti; può essere effettuata la visita:

·     anticipata (radice, sinistra, destra);

·     simmetrica (sinistra, radice, destra);

·     posticipata o differita (sinistra, destra, radice).

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Þ - / - a b c * + d e - f g (visita anticipata)

Þ a - b / c - d + e * f - g (visita simmetrica)

Þ a b - c / d e + f g - * - (visita posticipata)

 

 

Visita posticipata ==> NOTAZIONE POLACCA POSTFISSA

 


EVOLUZIONE DEI LINGUAGGI DI PROGRAMMAZIONE

 

 

 

I generazione   (Assembler)

Istruzioni mnemoniche, in corrispondenza 1:1 con quelle macchina.

 

II generazione   (Macro Assembler)

Evoluzione dell’assembler, con “macroistruzioni” (esplose in più istruzioni assembler).

 

III generazione  (Linguaggi Procedurali)

Ad alto livello, indipendenti dal set di istruzioni macchina, di tipo procedurale (imperativo).

 

IV generazione (Linguaggi Dichiarativi)

Tendono a definire il risultato desiderato mediante “dichiarazioni” (cosa) e non sequenze di operazioni (come).

 

V generazione  (Funzionali/Logici)

Tendono a definire un programma come una relazione funzionale di input/output o un sistema di assiomi (equazioni).