Sei sulla pagina 1di 83

Algoritmi

Algoritmi
Definizione
Caratteristiche
Pianificazione e progettazione
Rappresentazione
Operazioni fondamentali
Teorema di Jacopini-Bhm
Diagrammi di flusso

Definizione
Intuitiva
Sequenza ordinata di istruzioni per risolvere un problema.
(Es. ricetta)
Formale
Insieme ordinato di operazioni non ambigue,
effettivamente eseguibili che risolvono, in un tempo
finito, tutti i problemi di una determinata classe.

Caratteristiche degli algoritmi


Carattere deterministico (.. Insieme ordinato di
istruzioni non ambigue ..)
una istruzione e non ambigua se pu essere
direttamente eseguita dallagente di calcolo
(istruzione primitiva) e la sua interpretazione non
dipende dal contesto o dalla preparazione
dellagente.
I risultati dellalgoritmo non
dipendono dalla macchina o persona che lo
esegue.

insieme ordinato non ambigue


Shampoo
Bagna i capelli
Insapona
Risciacqua
Ripeti (cosa?,
quante volte?)
Esegui A oppure B
(come stabilire se A o
B?)

Torta
Prepara base
- setaccia farina
- aggiungi uova, acqua
prendi setaccio
versa la farina

Caratteristiche degli algoritmi


Carattere di realizzabilit pratica (..effettivamente
eseguibili ..)
tutte le istruzioni che costituiscono lalgoritmo devono
essere effettivamente eseguibili
(Es. calcolare lesatto valore decimale di . Calcola tutti i
numeri primi e stampa il primo maggiore di 100)

Caratteristiche degli algoritmi


Carattere finito (.. risolvono in un tempo finito )
il numero delle istruzioni che definiscono un algoritmo e
finito e queste vengono eseguite un numero finito di volte.
(Es. calcolare tutti i numeri primi)

Carattere finito
Shampoo
1) Bagna i capelli
2) Contatore = 0
3) Ripeti passi da 4 a 6 finch contatore =2
4) Insapona i capelli
5) Risciacqua
6) Contatore = Contatore + 1
7) stop

Algoritmo per sommare due


numeri
c=a+b con a e b numeri formati da m cifre
cm cm-1cm-2.. c0 = am-1 am-2 ..a0 + bm-1 bm-2 ..b0
1. riporto = 0
2. i = 0
3. ripeti passi 4 6 finch i diventa > m -1
4. somma ai e bi al riporto per ottenere ci

Algoritmo per sommare due


numeri
5. se ci 10 ci = ci -10 e riporto = 1, altrimenti riporto = 0
6. i = i + 1
7. cm = riporto
8. stampa risultato
9. stop

10

Pianificazione e progettazione
Analizzare il problema

comprendere a fondo il problema e darne

una

definizione precisa
quali sono gli input?
quali sono i dati? I formati?
quali devono essere gli output?
come elaborare i dati?

11

Pianificazione e progettazione
Progettare una soluzione

Definire i passi da applicare per risolvere il


problema
Passi dettagliati, non ambigui e finiti
Verifica della soluzione
Codificare il programma e documentarlo
Testare il programma

Singole parti del codice (moduli)

12

Pianificazione e progettazione
Validare il programma

Serie estesa di prove


Input non validi
Valutazioni sullinterfaccia utente (sono
sufficienti le indicazioni fornite?)

13

Esempio
Determinare in un gruppo di persone la percentuale di
presenze divisa nei seguenti gruppi di et:
0-5
6-12
13-19
20-64
> 65

14

Analizzare il problema
Input et di ogni persona presente
Output

percentuale di presenze in ogni gruppo di et

Elaborazione
aggiungere 1 al gruppo di et per ogni
persona che rientra in quel gruppo

15

Progettare una soluzione


1) Richiedere let della persona
2) Aggiungerla al gruppo corrispondente
3) Ripeti per tutte le persone i passi 1-2
4) Calcola la percentuale per ogni gruppo

4.1) Determina il numero totale di persone


4.2) Dividi i totali parziali per il totale globale
5) Output risultato

16

Esercizi
Modificare lalgoritmo della somma in modo che non stampi
gli zero non significativi
Eseguire la moltiplicazione mediante laddizione ripetuta
Eseguire la divisione mediante la sottrazione ripetuta

17

Caratteristiche di un
calcolatore elettronico

velocissimo
Non intelligente
Non in grado di compiere deduzioni o
ragionamenti in modo autonomo.
Non in grado di capire un problema.
Non in grado di capire se il risultato
raggiunto la soluzione del problema.

Capacit del calcolatore

Sa leggere le informazioni dallesterno (input).


Sa memorizzare le informazioni.
Sa eseguire alcune operazioni elementari: addizione,
sottrazione, prodotto e rapporto fra numeri,
concatenazione di parole.
Sa eseguire il confronto fra informazioni dello stesso
tipo: (es.: a>b, a=b, ab e luguaglianza fra due parole).
Sa memorizzare sequenze di istruzioni elementari
(programma) e le sa eseguire secondo un ordine
stabilito dal programma stesso.
Sa scrivere le informazioni allesterno (output).

Compiti del programmatore

Analizzare il problema riducendolo in


termini astratti e formulare un modello del
problema.
Individuare una strategia risolutiva
Codificare lalgoritmo - renderlo
comprensibile al calcolatore.
Analizzare il risultato dellelaborazione
evidenziando eventuali errori nella
formulazione del problema, nella strategia
risolutiva, nella codifica dellalgoritmo.

Analisi e programmazione

Algoritmo elenco finito di istruzioni, che


specificano le operazioni eseguendo le quali
si risolve una classe di problemi
Un particolare problema della classe viene
risolto utilizzando lapposito algoritmo sui
dati che lo caratterizzano
Un algoritmo non pu essere eseguito
direttamente dallelaboratore

Analisi e programmazione

Programma ricetta che traduce


lalgoritmo ed direttamente comprensibile,
pertanto eseguibile, da parte di un
elaboratore
Linguaggio di programmazione
linguaggio rigoroso che permette la
formalizzazione di un algoritmo in un
programma

es. : Effettuare un accredito su un c/c


bancario

Analisi e programmazione
es.: Effettuare un accredito
su un c/c bancario
Soluzione: Utilizzare un
programma che serva per
predisporre il calcolatore
allaccredito di una qualunque
cifra su un qualunque c/c;
cifra da accreditare e numero
di c/c sono i dati caratteristici
del problema

Le fasi del procedimento di


analisi e programmazione

Algoritmo
Algoritmo deriva dal nome del matematico
arabo Al Khuwarizmi, vissuto nel IX secolo d.C.
Un algoritmo una successione di istruzioni o
passi che definiscono le operazioni da eseguire
sui dati per ottenere i risultati; un algoritmo
fornisce la soluzione ad una classe di
problemi
Lo schema di esecuzione di un algoritmo
specifica che i passi devono essere eseguiti in
sequenza, salvo diversa indicazione
25

Algoritmo
Ogni algoritmo concepito per interagire con
lambiente esterno per acquisire dati e
comunicare messaggi o risultati;
i dati su cui opera unistruzione sono forniti
dallesterno o sono frutto di istruzioni eseguite
in precedenza

26

Algoritmo

Esempio: Ordinamento di un mazzo di carte


Sia dato un mazzo da 40 carte da ordinare in modo che
le cuori precedano le quadri, che a loro volta precedono
fiori e picche; le carte di uno stesso seme sono ordinate
dallasso al re
Algoritmo:
Si suddivida il mazzo in 4 mazzetti, ciascuno costituito
da tutte le carte dello stesso seme
Si ordinino le carte di ciascun mazzetto dallasso al re
Si prendano nellordine i mazzetti delle cuori, quadri,
fiori e picche
27

Algoritmo
Si vuole ricercare, allinterno di un mazzo di chiavi,
quella che apre un dato lucchetto
Algoritmo:
1) Si seleziona una chiave dal mazzo e la si marca con un
pennarello
2) Si tenta di aprire il lucchetto con la chiave appena
marcata; se funziona, si va al passo 4)
3) Altrimenti, si controlla la chiave successiva
3.1) Se non marcata, la si marca e si torna al passo 2)
3.2) Viceversa, si prende atto che nel mazzo non
presente la chiave che apre il lucchetto
4) Fine della ricerca
28

Algoritmo
Somma di un insieme di numeri
Dati da elaborare: un insieme di numeri (che sar noto
solo nel momento in cui lalgoritmo verr eseguito).
Risultato desiderato: la loro somma.
Un possibile algoritmo: scorrere la sequenza dei numeri,
dal primo allultimo, e addizionare ogni numero alla
somma di quelli precedenti
(che inizialmente sar pari a zero).

29

Algoritmo
Esempio: calcolare la somma dei numeri 5, 7, 4, 9, 2. Somma iniziale: 0
primo passo: 5, 7, 4, 9, 2 nuova somma parziale: 0 + 5 = 5
secondo passo: 5, 7, 4, 9, 2 nuova somma parziale: 5 + (7) = 2
terzo passo: 5, 7, 4, 9, 2 nuova somma parziale: 2 + 4 = 2
quarto passo: 5, 7, 4, 9, 2 nuova somma parziale: 2 + 9 = 11
quinto passo: 5, 7, 4, 9, 2 nuova somma parziale: 11 + (2) = 9

Risultato: 9.
30

Problemi e istanze
Unistanza di un problema corrisponde a un
particolare valore dei suoi dati dingresso.
Nellesempio precedente, i numeri 5, 7, 4, 9, 2
costituiscono una delle possibili istanze del problema
del calcolo della somma di un insieme di numeri.
Un algoritmo viene formulato per risolvere un
insieme di istanze di un dato problema, non per
una sola istanza.
In teoria un problema (come quello precedente) pu
avere infinite istanze.
31

Algoritmo
Problema: Calcolo delle radici reali di ax2+bx+c=0
Algoritmo:
1) Input coefficienti a,b,c
2) Calcolare = b24ac
3) Se <0 non esistono radici reali, eseguire listruzione 7)
4) Se =0, x1=x2=b/2a, poi eseguire listruzione 6)
5) x1=(b+)/2a, x2=(b)/2a
6) Output dei valori x1, x2
7) Fine

32

Algoritmo
es. Calcolare il M.C.D. di due interi a,b, con a>b
Algoritmo: Formalizzato da Euclide nel 300 a.C., si basa sul
fatto che:
ogni divisore comune ad a e b anche divisore del resto r
della divisione intera di a per b, quando a>b e r0;
se r=0, b il M.C.D.
MCD(a,b) = MCD(b,r), se r0
MCD(a,b)=b, se r=0

33

Algoritmo
es. Calcolare il M.C.D. di due interi a,b, con a>b
1) Acquisire i valori di a e b
2) Se b>a, scambiare i valori di a e b
3) Calcolare il resto r della divisione intera di a per b
4) Se r=0, MCD(a,b)=b; comunicare il risultato
allesterno; eseguire listruzione 6)
5) Se r0, sostituire il valore di a con il valore di b ed
il valore di b con il valore di r; tornare al passo 3)
6) Fine
34

Algoritmo: costanti e variabili


I dati su cui opera un algoritmo sono costanti e
variabili
Un dato costante quando il suo valore non pu
essere aggiornato durante lesecuzione
dellalgoritmo o per esecuzioni successive
Una variabile una coppia <nome, valore>: pu
essere immaginata come una scatola sulla
quale scritto un nome e che pu contenere un
valore

35

Algoritmo: costanti e variabili


Il valore di una variabile deve appartenere
allinsieme di definizione, su cui si opera
mediante regole opportune, specifiche
dellinsieme
Data una variabile <x,v>, x il nome della variabile
e v il suo valore attuale; le variabili sono
indeterminate in fase di definizione dellalgoritmo,
ma corrispondono a valori specifici durante ogni
esecuzione
Esempio: Nellalgoritmo di risoluzione delle
equazioni di 2 grado, a, b, c non corrispondono a
nessun valore finch non si esegue lalgoritmo
36

Assegnazione
Listruzione di assegnazione definisce il valore attuale di
una variabile, che resta inalterato fino allassegnazione
successiva
Lassegnazione si rappresenta con i simboli o =:
nome di variabile espressione
nome di variabile = espressione
che si legge assegna alla variabile nome di variabile il
valore di espressione; lespressione a destra di
costituita da variabili, costanti e operatori
Lassegnazione viene cos eseguita:
a) si valuta lespressione a destra di , sostituendo ai nomi
di variabile i loro valori attuali; il risultato deve
appartenere allinsieme di definizione della variabile a
sinistra di | =
37

Assegnazione
I nomi delle variabili possono essere scelti in modo
arbitrario, ma opportuno selezionare nomi
significativi del contenuto della variabile
necessario rispettare la regola dellordinamento:
Quando una variabile appare a destra di in una
assegnazione deve essere gi istanziata
cio le deve essere gi stato assegnato un valore

38

Istruzioni
Istruzioni operative, che producono risultati
Istruzioni di controllo, che controllano il verificarsi di condizioni
specificate e, in base al risultato del controllo, determinano il flusso di
istruzioni da eseguire
Istruzioni di salto, che alterano il normale flusso di esecuzione
sequenziale delle istruzioni di un algoritmo, specificando quale sia la
successiva istruzione da eseguire
nelle istruzioni di salto condizionato, leffettiva esecuzione del salto
legata al verificarsi di una condizione specificata
listruzione di salto incondizionato produce sempre un salto
Istruzioni di Input/Output, che specificano come debba essere effettuata
una trasmissione di dati o messaggi fra lalgoritmo e lambiente esterno
Istruzioni di inizio/fine esecuzione, che indicano linizio/la fine
dellalgoritmo
39

Algoritmo
Problema: Calcolo delle radici reali di ax2+bx+c=0
Algoritmo:
1) Input coefficienti a,b,c
2) Calcolare = b24ac
3) Se <0 non esistono radici reali, eseguire listruzione 7)
4) Se =0, x1=x2=b/2a, poi eseguire listruzione 6)
5) x1=(b+)/2a, x2=(b)/2a
6) Output dei valori x1, x2
7) Fine

40

Esempio: Calcolo delle radici di


equazioni di 2 grado
a) acquisire i coefficienti a, b, c unistruzione di lettura
(INPUT)
b) calcolare =b24ac unistruzione operativa
c) se =0, x1=x2=b/2a unistruzione di controllo:
listruzione di assegnazione x1=x2=b/2a viene eseguita solo
se =0
d) comunicare i valori x1, x2 unistruzione di scrittura
(OUTPUT)
e) eseguire listruzione 6) unistruzione di salto
incondizionato
f) se <0 eseguire listruzione 7) unistruzione di salto
condizionato, perch listruzione 7) la prossima istruzione
41
da eseguire solo se <0

Proposizioni e predicati
Una proposizione un costrutto linguistico del quale si pu
asserire o negare la veridicit
Esempi
1) Roma la capitale della Gran Bretagna falsa
2) 3 un numero intero vera
Una proposizione un predicato se il suo valore di verit
dipende dallistanziazione di alcune variabili
Esempi
1) la variabile et minore di 30
2) la variabile base maggiore della variabile altezza
42

Proposizioni e predicati
La valutazione di un predicato loperazione che permette di
determinare se il predicato vero o falso, sostituendo alle
variabili i loro valori attuali
I valori vero e falso sono detti valori logici o booleani
Proposizioni e predicati possono essere espressi per mezzo
degli operatori relazionali:
= (uguale)
> (maggiore)
(maggiore o uguale)

(diverso)
< (minore)
(minore o uguale)

43

Proposizioni e predicati
Dato un predicato p, il predicato not p, detto opposto o
negazione logica di p, ha i valori di verit opposti rispetto a p;
Dati due predicati p e q, la congiunzione logica p and q un
predicato vero solo quando p e q sono entrambi veri, e falso
in tutti gli altri casi
Dati due predicati p e q, la disgiunzione logica p or q un
predicato falso solo quando p e q sono entrambi falsi, e vero
in tutti gli altri casi
I predicati nei quali compare almeno un operatore logico,
not, and, or, sono detti composti
La tavola di verit di un predicato composto specifica il valore
del predicato per ognuna delle possibili combinazioni dei suoi
argomenti
44

Predicati composti
not (base > altezza)
vero solo quando il valore di base minore o uguale
del valore di altezza
et > 30 and et < 50
vero solo quando il valore di et compreso tra 30 e
50 (esclusi)
base > altezza or base > 100
vero quando il valore di base maggiore del valore di
altezza, o quando il valore di base maggiore di 100, o
quando entrambe le condizioni sono verificate
45

Rappresentazione degli algoritmi


Gli algoritmi devono essere descritti in modo chiaro,
preciso e non ambiguo.
1

Linguaggio naturale. Testi non strutturati difficili da


seguire (saggi), linterpretazione dipende inoltre dal
contesto e dalla esperienza del lettore (poesie).

46

Rappresentazione degli algoritmi


2. Linguaggio di programmazione formale
quando si progetta un algoritmo si parte da livello elevato
di astrazione, senza doversi concentrare sulla
punteggiatura, sulla grammatica e sintassi.

47

Rappresentazione degli algoritmi


3. Pseudocodice
linguaggio di programmazione senza regole
grammaticali,
facilmente leggibile.

48

Rappresentazione degli algoritmi


4. Diagrammi di flusso (flow chart)
Rappresentazione in forma schematica della
logica e della struttura dellalgoritmo.
Ad ogni istruzione corrisponde un simbolo grafico
la cui forma dipende dal tipo di istruzione
considerata.
Efficace mezzo di comunicazione tra i
programmatori e chi e coinvolto nelluso del
programma

49

Operazioni fondamentali
Operazioni sequenziali descrivono un singolo compito ben
definito
Input
inserimento dei dati da elaborare
Output
visualizzare i risultati
Elaborazione
x=0
aggiungere due uova

50

Operazioni fondamentali
Operazioni condizionali consentono di alterare il normale
flusso sequenziale.
Si pone una domanda e in base alla risposta si determina la
successiva operazione da eseguire
Se condizione (vera/falsa) vera allora
esegui queste operazioni
altrimenti
esegui queste operazioni

51

Operazioni fondamentali
Algoritmo per sommare due numeri
5. se ci 10 ci = ci -10 e riporto = 1, altrimenti riporto = 0
5. se ci 10
ci = ci -10 e riporto = 1
altrimenti
riporto = 0

52

Operazioni fondamentali
Operazioni iterative (ciclo) ripetizione di un blocco di
istruzioni
Ripeti dal passo i al passo j fino a che condizione (vera/falsa)
diventa vera
Algoritmo per sommare due numeri
3. ripeti passi 4 6 finch i diventa > m -1

53

Iterazioni per falso


Ciclo repeat
Il corpo del ciclo viene eseguito almeno una volta (iterazione
a condizione finale)
Ripeti dal passo i al passo j fino a che condizione (vera/falsa)
diventa vera

54

Iterazioni per vero


Ciclo while
Il corpo del ciclo viene eseguito 0,1 o pi volte (iterazione a
condizione iniziale)
Mentre condizione (vera/falsa) rimane vera esegui
corpo del ciclo
fine del ciclo

55

Teorema di Jacopini-Bhm
Qualunque algoritmo puo essere descritto utilizzando
soltanto le tre strutture fondamentali:

Sequenza
Diramazione
Iterazione

56

Esercizi
Scrivere un algoritmo che riceva in ingresso un dato
X e calcoli X2 e 1/X fino a che X = 0.
Scrivere un algoritmo che riceva in ingresso N
numeri interi e determini se tra questi e presente il
numero X e la sua posizione.
Scrivere un algoritmo che riceva in ingresso N
numeri interi e determini il pi grande.
Scrivere un algoritmo per il calcolo del fattoriale di
N.

57

Algoritmo trova il maggiore


1. Input N (numero elementi)
2. Input Ai .. AN
3. Poni max = A1
4. Poni i = 2
5. Ripeti fino a che i > N
5.1 se Ai > max allora poni max = Ai
5.2 poni i = i + 1
5.3 fine ciclo

Stampa max
58

Diagrammi di flusso
Ad ogni istruzione corrisponde un simbolo grafico la cui forma
dipende dal tipo di istruzione considerata.
Tali simboli sono collegati tra loro, dallalto verso il basso, da
segmenti orientati, rappresentanti lordine di esecuzione delle
istruzioni corrispondenti

59

Diagrammi di flusso
START
Input/Output

istruzione
STOP

60

Diagrammi di flusso

vero

falso
proposizione

vero
proposizione
1

1
falso

61

Diagrammi di flusso
Falso

Vero
proposizione

sequenza

diramazione
IF THEN ELSE
62

Diagrammi di flusso
falso
proposizione

vero
proposizione
falso
vero

while

repeat until
63

Diagrammi di flusso
Un diagramma a blocchi un insieme di blocchi elementari
composto da:
un blocco iniziale
un blocco finale
un numero finito n (n1) di blocchi di azione e/o di blocchi di
lettura/scrittura
un numero finito m (m0) di blocchi di controllo

64

Diagrammi di flusso
Linsieme dei blocchi elementari che descrivono un algoritmo deve
soddisfare le seguenti condizioni:
ciascun blocco di azione o di lettura/scrittura ha una sola freccia
entrante ed una sola freccia uscente
ciascun blocco di controllo ha una sola freccia entrante e due
frecce uscenti
ciascuna freccia entra in un blocco oppure si innesta in unaltra
freccia
ciascun blocco raggiungibile dal blocco iniziale
il blocco finale raggiungibile da qualsiasi altro blocco
Un blocco B raggiungibile a partire da un blocco A se esiste una
sequenza di blocchi X1,X2,...,Xn, tali che A=X1, B=Xn, e Xi,
i=1,...,n1, Xi connesso con una freccia a Xi+1
65

analisi strutturata
I programmatori inesperti tendono ad aggrovigliare il
programma introducendo numerosi salti privi di regole (spaghetti
programming)
Lanalisi strutturata favorisce la descrizione di algoritmi
facilmente documentabili e comprensibili
I blocchi di un diagramma a blocchi strutturato sono collegati
secondo i seguenti schemi:
Schema di sequenza pi schemi di flusso sono eseguiti in
sequenza
Schema di selezione un blocco di controllo subordina
lesecuzione di due possibili schemi di flusso al verificarsi di una
condizione
Schema di iterazione si itera lesecuzione di un dato schema di
66
flusso

analisi strutturata
un diagramma a blocchi strutturato un diagramma a blocchi
nel quale gli schemi di flusso sono strutturati
Uno schema di flusso strutturato quando soddisfa una delle
seguenti propriet:
1) uno schema elementare o di sequenza

67

analisi strutturata
2) uno schema di selezione

Nel primo caso, lo schema S viene eseguito solo se la condizione


C vera; se C falsa, non viene eseguita alcuna azione
Nel secondo caso, viene eseguito solo uno dei due schemi Sv o
Sf, in dipendenza del valore di verit della condizione
68

analisi strutturata
3) uno schema di iterazione

Nel primo caso, S pu non venire mai eseguito, se la condizione


C subito falsa; nel secondo caso, S viene eseguito almeno una
volta
Quando lo schema S viene eseguito finch la condizione C si
mantiene vera si parla di iterazione per vero; si ha uniterazione
69
per falso quando S viene eseguito finch C falsa

analisi strutturata
Luso dellanalisi strutturata garantisce:
facilit di comprensione e modifica dei diagrammi a blocchi
maggiore uniformit nella descrizione degli algoritmi

Ogni diagramma a blocchi non strutturato trasformabile in un


diagramma a blocchi strutturato equivalente
Due diagrammi a blocchi sono equivalenti se, operando sugli
stessi dati, producono gli stessi risultati
70

analisi strutturata
teorema fondamentale della programmazione di Bohm
Jacopini, 1966:
ogni programma pu essere codificato riferendosi
esclusivamente ad un algoritmo strutturato e quindi
attenendosi alle tre strutture fondamentali:
Sequenziale
Iterativa
Condizionale

71

analisi strutturata
In un diagramma strutturato non apparir mai una
istruzione di salto incondizionato
I tre schemi fondamentali possono essere concatenati,
uno di seguito allaltro, o nidificati, uno dentro laltro; non
possono in nessun caso essere intrecciati o accavallati

72

analisi strutturata
Diagramma a blocchi per
la selezione, in un mazzo
di chiavi, di quella che
apre un lucchetto
1) Si seleziona una chiave dal mazzo e la si
marca con un pennarello
2) Si tenta di aprire il lucchetto con la chiave
appena marcata; se funziona, si va al passo 4)
3) Altrimenti, si controlla la chiave

successiva
3.1) Se non marcata, la si marca e si
torna al passo 2)
3.2) Viceversa, si prende atto che nel
mazzo non presente la chiave che
apre il lucchetto
4) Fine della ricerca

73

Esercizi
Rappresentare lalgoritmo per il calcolo della distribuzione
dellet.
Rappresentare lalgoritmo per il calcolo di xy.
Rappresentare lalgoritmo per il calcolo dei primi N numeri di
Fibonacci. (1 1 2 3 5 8..)
Rappresentare lalgoritmo per ordinare in ordine crescente N
numeri (bubble sort)

74

Pseudocodifica
La pseudocodifica un linguaggio per la descrizione di
algoritmi secondo le regole della programmazione strutturata
La descrizione di un algoritmo in pseudocodifica si compone
di due parti:
la dichiarazione delle variabili usate nellalgoritmo
descrizione delle azioni dellalgoritmo

75

Pseudocodifica
Tipo delle variabili
Il tipo di una variabile indica linsieme dei valori che possono
essere assegnati a quella variabile
integer, real, boolean, string
Su costanti e variabili di un tipo possibile effettuare le
operazioni che sono proprie di quel tipo

76

Pseudocodifica: Dichiarazione
delle variabili
Elenco, preceduto dalla parola var, delle variabili sulle quali
lalgoritmo opera
Le variabili sono suddivise per tipo: quelle dello stesso tipo sono
separate luna dallaltra da una ,
Lelenco delle variabili dello stesso tipo seguito dai : e
dallindicazione del tipo;
Esempio:
var i, j, a(20): integer;
p, q: real;
nome: string;
sw: boolean;
77

Descrizione delle azioni


Gli schemi di flusso fondamentali sono descritti utilizzando
convenzioni linguistiche: ad ogni schema strutturato corrisponde
una convenzione linguistica
La descrizione di un algoritmo deve soddisfare le seguenti regole:
a) La prima azione dellalgoritmo preceduta dalla parola Start;
b) Lultima azione dellalgoritmo seguita dalla parola Stop;
c) Lazione di lettura rappresentata dalla parola Input;
d) Lazione di scrittura rappresentata dalla parola Output;
e) Lo schema di sequenza di n flussi S1, S2,..., Sn
rappresentato come
S1;
S2;
...
Sn;

78

Descrizione delle azioni


Gli schemi di selezione sono rappresentati come:

Gli schemi di iterazione sono rappresentati come:

S, Sf, Sv sono schemi di flusso strutturati

79

Esempio:

stampare i primi 10 multipli di x.

Problema semplice e chiaro: un solo dato in


input (un parametro che caratterizza listanza del
problema): la base costituita dal numero x;
La strategia risolutiva la seguente: iniziando
dal numero x letto in input, per 10 volte verr
calcolato e stampato il multiplo di x,
moltiplicando x per una variabile i il cui valore
verr incrementato di una unit ad ogni passo,
da 1 fino a 10.

Esempio:

stampare i primi 10 multipli di

x.
1. Leggi in input un numero e chiama x il
numero letto;
2. Assegna il valore 1 alla variabile i;
3. Calcola xi e assegna alla variabile y il
risultato;
4. Stampa y;
5. Calcola i+1 e assegna alla variabile i il
risultato;
6. Se i10 allora vai al passo 3 altrimenti
prosegui;
7. Fermati.
Esercizio: rappresentare il flow-chart
utilizzando literazione per vero a
controllo iniziale

No

i>10
Si

Esempio:
massimo

letti due numeri stampare il

letti in input 3 numeri stampare il massimo.