Algoritmi e diagrammi di flusso - Istituto Paritario Michelangelo

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
Per algoritmo si intende una successione finita
di passi contenenti le istruzioni che specificano
le operazioni da compiere per risolvere
una classe di problemi.
Definizione formale:
una sequenza logica di istruzioni elementari
(univocamente interpretabili) che, eseguite in
un ordine stabilito, permettono la soluzione di
un problema in un numero finito di passaggi
3
Esempi di algoritmi che applichiamo per la
soluzione di problemi di vita quotidiana sono:



le istruzioni per l’uso di un elettrodomestico
la realizzazione di una ricetta di cucina
ecc.
Esempio di algoritmo: somma di 2 numeri (al computer)
1)
2)
3)
4)
Inserisci da tastiera il primo numero e premi invio
Inserisci il secondo numero e premi invio
Calcola la somma dei 2 numeri inseriti da tastiera
Mostra a video il risultato della somma ottenuta.
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.
DATI DI
INPUT
ALGORITMO +
ESECUTORE
DATI DI
OUTPUT
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).
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: 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: linguaggio formale di
tipo grafico per rappresentare l’ordine di
esecuzione delle istruzioni negli algoritmi.
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
8
Problema: Trovare il massimo di 3 numeri interi
Analisi del problema:
Dati di INPUT: 3 numeri inseriti da tastiera.
Dati di OUTPUT: il valore massimo mostrato su monitor.
Pseudocodifica:
1)
2)
3)
4)
5)
6)
INIZIO
LEGGI (n1, n2, n3);
SE n1>n2 ALLORA max n1 ALTRIMENTI max n2;
SE n3>max ALLORA max n3;
SCRIVI (MAX);
FINE
9
Un algoritmo può essere rappresentato anche
attraverso un diagramma di flusso (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.
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
F
condizione
V
è il simbolo di decisione ed è usato per stabilire se
una proposizione è vera (V) o falsa (F)
11
Un diagramma di flusso 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 di flusso
per un semplice problema di geometria …
12
Pseudocodifica:
Diagramma a blocchi:
INIZIO
1) Inizio
2) Leggi rispettivamente il
valore della base e quello
dell’altezza
3) Calcola l’area del rettangolo :
eseguendo il prodotto della
base per l’altezza
4) Scrivi (a video) il valore
dell’area
5) Fine
Leggi(base, altezza)
area=base*altezza
Scrivi(area)
FINE
13
Cosa calcola questo
algoritmo?
INIZIO
raggio
INIZIO
raggio
I
area = raggio * raggio * π
area
F
raggio = 0
area = raggio * raggio * π
I
V
area = 0
O
area
O
FINE
FINE
14
PROBLEMA
1
ALGORITMO
2
PROGRAMMA
3
4
1. Analisi del problema e identificazione di una
soluzione;
2. Stesura dell’algoritmo risolutivo;
3. Programmazione, cioè scrittura dell’algoritmo in
un linguaggio adatto al computer;
4. Esecuzione del programma sul computer e
verifica del suo funzionamento
Attenzione:
l’algoritmo
è
linguaggio di programmazione!
indipendente
dal
15
I computer usano il sistema binario costituito 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
Linguaggio naturale
(algoritmo)
Linguaggio di
programmazione
CODICE SORGENTE
COMPILATORE
Linguaggio macchina
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 codice
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
Algoritmo: diagramma di flusso
start
Problema :
Dato un numero x, se
questo è positivo
sommare ad esso 1
altrimenti sottrarre ad
esso 1. Infine
stampare il risultato.
Leggi x
F
X > 0?
x= x+1
V
x= x-1
Scrivi x
end
18
Algoritmo: diagramma
di flusso
Codice Vb:
Dim x As Integer
x = InputBox("Inserisci il valore di x", "Inserimento dati", 0)
If (x > 0) Then
x=x-1
Else
x=x+1
End If
MsgBox ("Il risultato è " & x)
19