PPTX - WordPress.com

annuncio pubblicitario
La rappresentazione degli
algoritmi
La rappresentazione degli
algoritmi
1
Algoritmo
• Un algoritmo è ……………………………….
………………………………………….
2
Scrivere un algoritmo
• Abbiamo detto che possiamo utilizzare il
linguaggio naturale per descrivere un algoritmo
• Abbiamo anche detto che possiamo utilizzare un
linguaggio di programmazione
• Vediamo come schematizzare un algoritmo con
una rappresentazione che ci permetta di passare
dal linguaggio naturale a quello formale
3
Rappresentazione di una
algoritmo
• Un algoritmo può essere diviso in tre parti
……………………..
Nome dell’algoritmo
Sezione
………………..
Gli oggetti (dati) che vengono
usati dall’algoritmo
Sezione
…………………
Compresa tra le parole inizio e
fine: elenca le operazioni che
l’esecutore deve compiere
4
Intestazione
• Il titolo dell’algoritmo …
……………………..
• Esempi
– Se l’algoritmo calcola la somma tra due
numeri, un titolo giusto può essere
SommaNumeri;
– Se l’algoritmo calcola l’area di un triangolo,
un nome appropriato può essere
AreaTriangolo.
5
Sezione dichiarativa
• …………………………………………………………
………………………………..
• Variabili………………………………
6
Esempio sezione dichiarativa
• Le formule matematiche utilizzano
L’area A di un rettangolo si ottiene
variabili
moltiplicando b x h. Il valore effettivo
A=bxh
dell’area si ottiene sostituendo alle lettere
b e h i valori della base e dell’altezza di un
particolare rettangolo
• Quando ………………………… variabile.
• Quando
………………………………………………………………
….. ….. costante.
7
Sezione esecutiva
• Indica all’esecutore il processo
risolutivo……………………………………………
……………………………...
• Istruzioni…………………………..
8
Esempi di algoritmi
• Esempi elementari
– una ricetta di cucina;
– le istruzioni di utilizzo di
un elettrodomestico;
– le regole per eseguire la
divisione tra due numeri.
• Notare che è sempre
sottointesa la presenza
di un esecutore
9
Caratteristiche basilari di un
algoritmo
Finito
• …………………………………………………..
Esaustivo
• ………………………………………………………..
Riproducibile
• …………………………………………………………………………….
10
Caratteristiche basilari di un
algoritmo
…………………….
• …………………………………………………..
……………………..
• ………………………………………………………..
………………………………….
• …………………………………………………………………………….
11
Il linguaggio della pseudocodifica
Descrizione
Parola chiave
Esempi
Sezione
dichiarativa
Dichiarare i dati da utilizzare
specificandone il nome e il tipo
dichiara
dichiara Lato come intero
dichiara Pi come costante
dichiara Raggio come reale
Sezione
esecutiva
Delimitare l’algoritmo
inizio
fine
Istruzione di acquisizione dati:
parola chiave seguita dal nome
della variabile da leggere.
immetti
(o leggi
o acquisisci)
leggi Nome
leggi Lato
immetti Raggio
Istruzione per la comunicazione
dei dati: parola chiave seguita
dal nome della variabile da
scrivere.
scrivi
(o comunica)
scrivi Lato
scrivi Raggio
Assegnare un valore a una
variabile
assegna (o
calcola)
(spesso la
parola chiave
non viene
scritta)
assegna A=B+C (il valore
calcolato B+C viene
assegnato alla variabile A,
assegnazione a sinistra)
12
Esempio di algoritmo
Scrivere un algoritmo per il calcolo del perimetro e dell’area
di un rettangolo
• Dati di input: la base, Base, e l’altezza del rettangolo,
Altezza. Entrambi sono di tipo reale (numero con la virgola).
• Dati di output: il perimetro, Perimetro, e l’area, Area.
Entrambi sono di tipo reale.
• Risoluzione:
– formula per il calcolo del perimetro:
Perimetro = 2*(Base + Altezza)
– formula per il calcolo dell’area: Area = Base * Altezza
• Nell’algoritmo si deve prevedere:
– l’acquisizione del valore della base e dell’altezza
– Il calcolo del perimetro e dell’area
– La comunicazione dei valori calcolati del perimetro e
dell’area.

13
Esempio di algoritmo (continua)
riga di intestazione
Algoritmo AreaRettangolo
sezione dichiarativa
variabili
dichiara Base, Altezza, Perimetro, Area come reali
sezione esecutiva
inizio
leggi Base
leggi Altezza
assegna Perimetro = 2*(Base + Altezza)
scrivi Perimetro
assegna Area = Base * Altezza
scrivi Area
fine.
14
Riepilogo
• Questa modalità di scrittura prende il
nome di linguaggio di pseudocodifica
(o linguaggio di progetto), perché
serve a descrivere …………………………….
• La traduzione dell’algoritmo in un
linguaggio comprensibile alla macchina
si chiama
……………………………………………….
15
Convenzioni
• Notare nella scrittura
dell’algoritmo
l’indentazione, cioè il
modo di scrivere alcune
righe più a destra di altre
in modo da evidenziarne
l’appartenenza a una
sezione o a un gruppo di
istruzioni.
• Scegliamo di indicare le variabili e il nome
dell’algoritmo con lettera iniziale maiuscola.
• Nel caso di nomi composti da più parole, le parole
sono scritte una di seguito all’altra con iniziali
maiuscole.
16
Operazioni frequenti
• Notare le seguenti istruzioni frequenti
– incremento di 1 della variabile A
……………………
– decremento di 1 della variabile A
…………………………..
• Il simbolo "=" non deve essere considerato
come l’operatore di uguaglianza tra due
espressioni, ma come assegnazione alla
variabile indicata a sinistra dell’espressione
calcolata a destra
17
Operatori
Operatori aritmetici
+ per l’addizione
Operatori di relazione
(per confrontare)
− per la sottrazione
= uguale
* Per la moltiplicazione
< minore
/ per la divisione
<= minore o uguale
^ per l’elevamento a potenza
> maggiore
Operatori logici
AND per il prodotto logico
>= maggiore o uguale
<> diverso
OR per la somma logica
NOT per la negazione
18
Il diagramma di flusso
• Un algoritmo può essere
descritto usando uno schema
grafico chiamato diagramma
di flusso (o flow-chart).
• La schematizzazione grafica è
più efficace nella
presentazione e rende più
facile la lettura e la
comprensione dell’algoritmo
19
Simboli standard
Simboli ovali per ………………….e la
……………….. del diagramma.
Il parallelogramma per indicare
……………….o la ………………dei dati
in ……. .e …….
Il
rettangolo
per
indicare
un’operazione di ……….. o un
…………...
sì
no
Il rombo per indicare la ……….
20
Esempio
Inizio
Leggi Base
Leggi Altezza
Perimetro = 2*(Base + Altezza)
Scrivi Perimetro
Area = Base * Altezza
Scrivi Area
Fine
21
Le strutture di controllo
All’interno di un algoritmo, le istruzioni sono
organizzate secondo schemi nel seguente modo
Sequenza
• …………………………………………………………….
Selezione
• …………………………………………………………….
Iterazione
• …………………………………………………………….
22
Le strutture di controllo
All’interno di un algoritmo, le istruzioni sono
organizzate secondo schemi nel seguente modo
…………………….
• …………………………………………………….
…………………
• ………………………………………….
……………………………………………
• …………………………………………………………………
23
Teorema di Böhm-Jacopini
• …………………………………………………………
…………………………………………………………
…………………………………………..
• Queste tre strutture sono chiamate
strutture di controllo.
24
La sequenza
• La sequenza indica l’ordine in cui devono
essere eseguite le istruzioni.
• Nel linguaggio di pseudo codifica appare così
inizio
istruzione1
istruzione2
……
……
……
istruzionen
fine
25
La selezione binaria
• La selezione binaria (o alternativa)
consente …………………………
………………………………………….
se condizione
allora
istruzione1
altrimenti
istruzione2
fine se
Falso
istruzione2
condizione
Vero
istruzione1
26
La selezione binaria (continua)
• Le istruzione nei due rami vero/falso
possono essere più di una.
se condizione
allora
istruzione a1
istruzione a2
Falso
……
istruzione an
altrimenti
istruzione b1
istruzione b2
……
istruzione bn
fine se
condizione
Vero
istruzione b1
istruzione a1
istruzione bn
istruzione an
27
Esempio di selezione
• Il seguente frammento di pseudocodice
calcola il quadrato di un numero se è
positivo, altrimenti ne calcola il doppio
se A>0
allora
assegna B = A^2
scrivi B
altrimenti
assegna C = 2*A
scrivi C
fine se
28
Assenza di alternativa
• Se dobbiamo calcolare qualcosa solo in
una determinata condizione,
l’istruzione è la seguente
se condizione
allora
istruzione
fine se
condizione
Vero
istruzione1
Falso
29
La selezione multipla
• La struttura selezione multipla permette di
selezionare tra più di due alternative in base al
valore di una variabile di controllo della selettore
seleziona il valore del selettore
nel caso valore1
istruzione1
nel caso valore2
istruzione2
:::
nel caso valoren
istruzionen
fine se
30
La selezione multipla (continua)
• È possibile raggruppare più valori in un unico
caso separandoli con una virgola oppure indicare
un intervallo con valore iniziale e finale
seleziona il valore del selettore
nel caso valore1, valore2, valore3
istruzione
:::
fine se
oppure
seleziona il valore del selettore
nel caso da valore1 a valore2
istruzione
:::
fine se
31
L’iterazione
• La terza struttura di controllo
fondamentale per la costruzione di
algoritmi è l’iterazione (o ripetizione o
ciclo).
• Distinguiamo tre tipi di iterazione
– iterazione per falso
– iterazione per vero
– iterazione enumerativa (o con contatore)
32
Iterazione per falso
L’iterazione per falso ………………………
………………………………………..….
esegui
istruzione1
Istruzione2
:::
istruzionen
ripeti finché condizione
istruzione1
Istruzione2
::::
istruzionen
condizione
Falso
Vero
Non si sa quante volte viene eseguito il ciclo.
Le istruzioni sono eseguite almeno una volta.
33
Esempio iterazione per falso
Controllare che il numero del mese inserito sia compreso tra 1 e 12
Dati in input: numero del mese M
Dati in output: numero inserito dopo il controllo
Risoluzione: dopo avere inserito il valore si controlla e si ripete la
richiesta fino a quando M è maggiore di 0 e minore di 13
Algoritmo Mesi riga di intestazione
sezione dichiarativa
variabili
dichiara M come intero
sezione esecutiva
inizio
esegui
leggi M
ripeti finché M>0 and M<13
scrivi M
fine
Inizio
leggi M
Falso
M>0 and
M<13
Vero
scrivi M
Fine
34
Iterazione per vero
L’iterazione per vero …………………………….
…………………………………………………
esegui mentre condizione
istruzione1
Istruzione2
:::
istruzionen
ripeti
condizione
Falso
Vero
Non si sa quante volte viene eseguito il ciclo. Le
istruzioni potrebbero non essere eseguite nemmeno
una volta.
35
Esempio iterazione per vero
Sottrarre ripetutamente 5€ da un importo se è superiore o uguale.
Dati in input: importo
Dati in output: /
Risoluzione: dopo avere inserito l’importo, se è superiore o uguale a
5, si sottrae 5 e si ripete mentre la condizione rimane vera
Algoritmo Sottrai riga di intestazione
variabili
sezione dichiarativa
dichiara Importo come reale
dichiara Quota = 5 come costante
sezione esecutiva
inizio
leggi Importo
esegui mentre Importo >= Quota
Importo = Importo − Quota
ripeti
fine
Inizio
leggi Importo
Importo >=
Quota
Falso
Vero
Importo = Importo − Quota
Fine
36
Iterazione enumerativa
L’iterazione enumerativa rappresenta in forma
compatta la ripetizione di un gruppo di istruzioni
nel caso di un numero prefissato di volte
per variabile = valore iniziale
fino a valore finale
istruzione1
Istruzione2
Simboli grafico per
:::
rappresentare
istruzionen l’iterazione
enumerativa
ripeti
istruzione1
Istruzione2
::::
istruzionen
Le istruzioni sono eseguite un numero
preciso di volte conosciuto in anticipo
37
Esempio iterazione enumerativa
Dati gli importi relativi agli incassi per ciascun mese
dell’anno, calcolare l’incasso totale e la media
mensile.
Dati in input: incasso di ciascun mese dell’anno
Dati in output: incasso totale dell’anno e incasso
medio mensile
Risoluzione: all’inizio viene azzerato il totale dell’anno;
con una ripetizione si acquisiscono i valori degli incassi
di ciascun mese e si sommano al totale. Alla fine della
ripetizione si calcola l’incasso medio (totale/12). I
risultati dell’alaborazione sono il totale dell’anno e
l’importo medio.

38
Esempio (continua)
riga di intestazione
Algoritmo Incassi
sezione dichiarativa
variabili
dichiara incasso, totale, media come numeri reali
inizio
sezione esecutiva
assegna totale = 0
per mese = 1 fino a 12
leggi incasso
assegna totale = totale + incasso
ripeti
assegna media = totale / 12
scrivi totale
scrivi media
fine

39
Esempio (continua)
Inizio
totale = 0
per mese = 1 fino a 12
leggi incasso
totale = totale + incasso
media = totale /12
scrivi totale
scrivi media
Fine
40
Dall’algoritmo al programma
• Un linguaggio di programmazione
………………………………………..
• Il risultato è un programma
• La persona in grado di scrivere un
programma è detta …………………………..
• Il programma si chiama anche
……………………, per questo motivo la
traduzione dell’algoritmo in un
programma si indica con il termine
………………………..
41
Fasi di traduzione: il compilatore
Testo del programma
Analisi lessicale e sintattica
Programma compilato
Collegamento
Programma
eseguibile
Sorgente
Il testo di un programma è
detto sorgente
Compilatore
Il programma sorgente
viene tradotto in
linguaggio macchina
(tutte cifre 0 e 1) dal
compilatore
Oggetto
Linker
Alla fine si ottiene il
programma eseguibile
Il risultato della
compilazione si chiama
programma oggetto
La compilazione è seguita da una operazione di
collegamento (linking)
tra varie parti del codice
oggetto. È effettuata dal
linker
42
Tipi di errori
Errori lessicali
• Uso di termini non ……………………………………….
Errori sintattici
• Costruzione di frasi ……………………………………….
Errori logici
• Riguarda la ……………………………………….dell’algoritmo: il programma
non produce i risultati attesi
Errori di runtime
• Situazioni che si possono verificare ………………………………………. sulla
base di particolari valori ………………………………………. (esempio:
divisione per 0)
43
L’interprete
• Per alcuni linguaggi di programmazione,
invece del compilatore, si usa un
programma traduttore detto interprete,
……………………………………………..……………. .
44
Scarica