2. Problema: dati i voti di tutti gli studenti di una classe
determinare il voto medio della classe.
1)Comprendere il problema
2)Stabilire quali sono le azioni da eseguire per risolverlo
3)Stabilire la sequenza di queste azioni (per ricavare la
media devo prima sommare gli n voti)
una sequenza finita di azioni che conduce alla soluzione di
un problema si definisce ALGORITMO
2
3. 3
Definizione: Procedimento di calcolo che permette di risolvere
un problema, partendo da dei dati iniziali ed eseguendo un
numero finito di operazioni o istruzioni
•Il termine algoritmo si fa derivare dal nome del
matematico persiano Al-Khwarizmi, vissuto nel
IX secolo, ed è quindi un concetto che è sempre
stato utilizzato nella matematica e nella logica
come sinonimo di metodo per la risoluzione di
un problema generale.
Esempi di algoritmi per la soluzione di problemi
di vita quotidiana sono:
•le istruzioni per l’uso di un elettrodomestico
•la realizzazione di una ricetta di cucina
4. 4
1) dati iniziali e finali: sono gli elementi che vengono elaborati
dall’algoritmo (dati iniziali o di input) e i risultati prodotti dall’algoritmo
(dati finali o di output). Es. nell’algoritmo dell’addizione, i dati iniziali
sono gli addendi, il dato finale è la somma.
2) sequenza di azioni (istruzioni o passi elementari): un’azione è
un’istruzione (operazione elementare) che deve essere eseguita sui dati
in ingresso per ottenere i dati in uscita.
3) esecutore: è il soggetto che compie le azioni, cioè legge le istruzioni, le
interpreta e le esegue.
Le istruzioni quindi devono essere scritte in modo che l’esecutore possa
comprenderle ed eseguirle correttamente.
ALGORITMO +
ESECUTORE
DATI DI
INPUT
DATI DI
OUTPUT
5. 5
FINITO: un algoritmo deve essere composto da un numero finito di
passi e deve presentare un punto di inizio e uno di fine, raggiunto il
quale si interrompe l’esecuzione delle operazioni.
DETERMINISTICO: l’algoritmo a fronte degli stessi dati di input
deve produrre gli stessi risultati (es. l’istruzione “moltiplica 2x5”
produce sempre il medesimo risultato, mentre l’istruzione “tira una
freccia contro il bersaglio” può avere risultati diversi anche se è
rivolta al medesimo arciere munito del suo solito arco).
NON AMBIGUO: i passi che compongono l’algoritmo devono
essere interpretati in modo chiaro dall’esecutore, senza lasciar dubbi
(es. “se il numero è abbastanza grande allora dividilo per 3
istruzione ambigua!)
6. L'algoritmo può essere rappresentato in:
◦ PSEUDOCODIFICA:PSEUDOCODIFICA: descrizione di un algoritmo
utilizzando termini del linguaggio comune. Non si tratta di un
vero e proprio linguaggio di programmazione (non è
direttamente interpretabile dal computer), ma di un
linguaggio sintetico che descrive la soluzione logica del
problema.
◦ DIAGRAMMI A BLOCCHI:DIAGRAMMI A BLOCCHI: linguaggio formale di tipo
grafico per rappresentare l’ordine di esecuzione delle
istruzioni negli algoritmi.
6
7. Utilizzando la pseudocodifica, il programmatore
esprime le proprie idee attraverso frasi elementari della
lingua italiana (o inglese).
Le regole generali della pseudocodifica sono:
Le parole chiave che aprono e chiudono il testo di un algoritmo
sono: INIZIO e FINE (BEGIN e END)
Le istruzioni LEGGI e SCRIVI (READ e WRITE) vengono
utilizzate per descrivere le operazioni input ed output dei dati.
Ogni istruzione è indicata con una frase del linguaggio corrente e
può essere un‘operazione oppure può indicare una decisione da
prendere
7
8. 8
Problema:Problema: Calcola la media di 3 numeri interi
Analisi del problema:Analisi del problema:
Dati di INPUT: 3 numeri inseriti da tastiera.
Dati di OUTPUT: La media mostrata su monitor.
Pseudocodifica:Pseudocodifica:
INIZIO
LEGGI (n1, n2, n3);
somma (n1+n2+n3);
media (somma/3) ;
SCRIVI (media);
FINE
9. Un algoritmo può essere rappresentato anche
attraverso un diagramma a blocchi (o flow
chart) :
Un particolare simbolo grafico detto blocco
elementare è associato a ciascun tipo di
istruzione dell’algoritmo.
I blocchi sono collegati fra loro tramite frecce che
indicano il susseguirsi delle istruzioni.
9
10. 10
INIZIO
FINE
questi simboli indicano il punto di partenza e
di terminazione dell’algoritmo
è il simbolo dell’elaborazione e contiene l’istruzione da eseguire
è il simbolo per le operazioni di Input / Output
condizione
VF
è il simbolo di decisione ed è usato per stabilire se
una proposizione è vera (V) o falsa (F)
11. 11
INIZIO
LEGGI (n1, n2, n3);
somma (n1+n2+n3);
media (somma/3) ;
SCRIVI (media);
FINE
Pseudocodifica:Pseudocodifica:
INIZIOINIZIO
FINEFINE
Leggi(n1, n2, n3)Leggi(n1, n2, n3)
Scrivi(media)Scrivi(media)
somma=(n1+n2+n3)somma=(n1+n2+n3)
media=(somma/3)media=(somma/3)
Problema:Problema: Calcola la media di 3 numeri interi
Analisi del problema:Analisi del problema:
Dati di INPUT: 3 numeri inseriti da tastiera.
Dati di OUTPUT: La media mostrata su monitor.
Diagramma a blocchiDiagramma a blocchi
12. Un diagramma a blocchi descrive un algoritmo se:
ha un blocco iniziale e uno finale;
è costituito da un numero finito di blocchi azione
e/o blocchi lettura/scrittura e/o blocchi di controllo;
Vediamo un esempio di diagramma a blocchi per
un semplice problema di geometria…
12
14. 14
INIZIO
FINE
area = raggio * raggio * π
raggio
I
area
O
INIZIO
FINE
area = raggio * raggio * π
raggio
I
area
O
raggio = 0
VF
area = 0
Cosa calcola questo
algoritmo?
15. PROBLEMAPROBLEMA ALGORITMO PROGRAMMAALGORITMO PROGRAMMA
1.1. Analisi del problema e identificazione di una
soluzione;
2.2. Stesura dell’algoritmo risolutivo;
3.3. Programmazione, cioè scrittura dell’algoritmo
in un linguaggio adatto al computer;
4.4. Esecuzione del programma sul computer e
verifica del suo funzionamento
Attenzione: l’algoritmo è indipendente dal
linguaggio di programmazione!
15
11 22 33 44
16. I computer usano il sistema binario costitutito dai
simboli (0,1) e di conseguenza non possono
interpretare e comprendere il nostro linguaggio. Il
linguaggio del computer, basato sui simboli binari (bit)
si chiama LINGUAGGIO MACCHINA (codice macchina o
linguaggio di basso livello) ed è costituito da una serie
di istruzioni direttamente eseguibili per il computer.
Per permettere la comunicazione tra “uomo” e
“macchina” sono stati creati i LINGUAGGI DI
PROGRAMMAZIONE (linguaggi ad alto livello o
procedurali).
16
17. I LINGUAGGI DI
PROGRAMMAZIONE permettono di
scrivere i programmi, cioè di “tradurre”
un algoritmo in un linguaggio più
comprensibile al computer, ma non
direttamente eseguibile.
Il programma scritto in linguaggio di
programmazione si chiama
programma sorgente e per essere
eseguito da una macchina deve essere
compilato, cioè trasformato in
LINGUAGGIO MACCHINA.
Questa trasformazione viene fatta da
un programma che si chiama
COMPILATORE.
17
Linguaggio naturale
Linguaggio macchina
Linguaggio di
programmazione
COMPILATORE
PROGRAMMA SORGENTE
21. Esecizio1:
Consideriamo una classe di 20 alunni, scrivere un
algoritmo che conti quanti alunni sono stati
promossi e quanti bocciati ad un esame
universitario (promosso se voto >=18)
22. 22
Alunno= 1
Prom= 0
Resp= 0
leggi (Voto)
Alunno=Alunno+1
ALUNNO<=20
F
V
Scrivi(Prom)
Scrivi(Resp)
FINE
INIZIO
Voto>=18
Prom=Prom+ 1 Resp=Resp+1
Dati input: voti dei 20 alunni (usiamo la variabile
Alunno per contare l’inserimento dei diversi voti
e la variabile Voto per inserire il voto)
Dati output: totale dei promossi e dei bocciati
(usiamo le variabili Prom e Resp per contare i
promossi e i bocciati)
FV