Algoritmi Algoritmo: sequenza di passi che portano alla soluzione di

Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Algoritmi
Algoritmi
Algoritmo: sequenza di passi che portano alla soluzione di un
problema.
L'algoritmo deve essere comprensibile al suo esecutore.
I calcolatori elettronici sono degli esecutori di algoritmi.
Esecutore: chi esegue le azioni dell'algoritmo. Può essere un
calcolatore elettronico o un essere umano.
Programmi: descrivono gli algoritmi in termini di sequenze di istruzioni
scritte
in
un
opportuno
linguaggio
di
programmazione, comprensibile al calcolatore.
Gli algoritmi possono essere espressi in diverse forme
- linguaggio naturale
- in forma grafica
- utilizzando i costrutti di un linguaggio di programmazione.
Compito del programmatore:
Un algoritmo deve rispettare alcune proprietà:
1. individuare la sequenza di passi che portano alla soluzione del
problema e produrre il relativo algoritmo;
- non ambiguità: le indicazioni (istruzioni) devono essere interpretabili
in modo univoco dall'esecutore
- eseguibilità: l'esecutore deve poter eseguire ogni istruzione con le
risorse a sua disposizione
- finitezza: l'esecuzione dell'algoritmo deve terminare in un tempo finito
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Affinché un calcolatore possa eseguire l'algoritmo, questo deve essere
espresso in una forma comprensibile al calcolatore.
1
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
2. codificare l'algoritmo in un programma.
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
2
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Algoritmi
Algoritmi
Il calcolatore è privo di "buon senso" ed esegue i programmi passo
passo per come questi sono scritti
Se l'algoritmo di partenza è sbagliato, il calcolatore produce un
risultato errato
Un algoritmo deve avere due caratteristiche fondamentali:
•
•
correttezza:compiere tutte le azioni necessarie nel modo giusto
efficienza: pervenire alla soluzione del problema nel modo più veloce
possibile
Se esistono più algoritmi per la risoluzione di un problema, il
programmatore dovrà scegliere quello più efficiente.
Esempio: dati due numeri, trovare il maggiore
Algoritmo in linguaggio naturale:
-leggi il primo numero e memorizzalo in A
-leggi il secondo numero e memorizzalo in B
-se A≥B poni MAX=A, altrimenti poni MAX=B
In questo algoritmo
- ogni passo è interpretabile in modo univoco
- siamo in grado di eseguire le azioni descritte (conosciamo i numeri)
- l'esecuzione richiede un tempo finito
Possiamo rendere l'algoritmo più efficiente in questo modo:
-leggi il primo numero e memorizzalo in MAX
-leggi il secondo numero e memorizzalo in B
-se MAX<B allora poni MAX=B
Se il primo numero è maggiore del secondo risparmiamo
un'assegnazione rispetto all'algoritmo precedente → maggiore
efficienza
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
3
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
4
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Algoritmi
Rappresentazione degli Algoritmi
Non è un algoritmo la seguente descrizione:
Diagrammi di flusso (o diagrammi a blocchi, o flow-chart): forma
grafica di rappresentazione di algoritmi.
- apri l'elenco telefonico in un punto approssimativamente vicino a
quello in cui dovrebbe trovarsi il cognome della persona cercata;
- a seconda che il cognome cercato sia prima o dopo tale punto,
procedi indietro o avanti per gruppi di pagine fin quando non giungi
alla pagina giusta
- inizia una ricerca sequenziale fino a trovare il cognome o a verificare
che manca.
Un diagramma di flusso descrive
dell'algoritmo e l'ordine di esecuzione.
graficamente
le
istruzioni
Alcuni simboli
elaborazione
In un algoritmo, ogni azione deve produrre lo stesso effetto ogni volta
che viene eseguita a partire dalle stesse condizioni iniziali.
ingresso/uscita
Le indicazioni "approssimativamente vicino" e "gruppi di pagine"
determinano ambiguità.
scelta logica
Inoltre, non si tiene conto della possibile esistenza di più abbonati con lo
stesso cognome e nome
inizio/fine
linea di flusso
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
5
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
6
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Diagrammi di flusso
Dati due numeri, trovare il maggiore
Perché i diagrammi di flusso?
START
- Sono un mezzo efficace di comunicazione tra il programmatore e chi
deve capire il funzionamento dell'algoritmo.
leggi A
- Non richiedono la conoscenza di un linguaggio di programmazione,
ma solo del problema affrontato.
MAX :=A
Uno stesso diagramma di flusso può essere codificato in diversi
linguaggi di programmazione (es. C, PASCAL, FORTRAN, etc.) dando
origine a più programmi.
leggi B
SI
MAX< B
MAX :=B
NO
Stampa MAX
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
STOP
7
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
8
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
Diagrammi di flusso
Programmazione strutturata
I diagrammi di flusso possono presentarsi
- ad un livello generale
- ad un livello particolare,
a seconda del livello di dettaglio con cui specificano le operazioni da
compiere.
Per costruire un programma sono necessari tre tipi di meccanismi di
strutturazione:
•
E' opportuno procedere per fasi successive:
1. un diagramma a grandi linee per focalizzare le operazioni essenziali
da compiere;
2. un diagramma di flusso più particolareggiato, che tenga conto di
operazioni più semplici e più elementari.
struttura di sequenza, che permette di comporre istruzioni ed
eseguirle una di seguito all'altra; ha un solo ingresso ed una sola
uscita.
I
I= INPUT
(INGRESSO)
O=OUTPUT
(USCITA)
Esempio
O
•
struttura condizionale, che permette di eseguire una sola tra due o
più istruzioni in base al valore di un'espressione booleana;
I
IF
THEN
ELSE
O
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
9
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
•
struttura di iterazione, che permette di eseguire ripetutamente
un'istruzione sotto il controllo di un'espressione booleana.
I
I
O
O
WHILE DO (Pascal)
Ciclo
a
condizione iniziale
REPEAT UNTIL (Pascal)
Ciclo
a
condizione finale
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
11
Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di
Catania, A.A.1999-2000.
10