SISTEMI -R 1° parte

Transcript

SISTEMI -R 1° parte
– la programmazione: algoritmi
classe 3
bus
I/O
CPU
memoria
elementi di Sistemi Informatici
–
–
–
–
–
il segnale digitale: conversione analogico-numerica
esempi di supporti di memorizzazione dell’informazione
computer: definizione e struttura (modello Von Neumann)
la programmazione: algoritmi
linguaggi di programmazione: linguaggio Visual Basic
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
1
classe 3
INTERAZIONE UOMO-MACCHINA
– la programmazione: algoritmi
concetto
formalizzazione
algoritmo
codifica
programma
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
2
classe 3
– la programmazione: algoritmi
ALGORITMO
• un algoritmo è una sequenza logica di istruzioni elementari e
univocamente interpretabili che, eseguite in un ordine stabilito, permettono
la soluzione di un problema in un numero finito di passi
• il concetto di algoritmo ha una grande rilevanza in matematica e in
informatica, in cui esso viene generalmente descritto come "procedimento
di risoluzione di un problema“
• un problema risolvibile mediante un algoritmo si dice computabile
• la codifica dell’algoritmo in un “linguaggio formale” si chiama programma
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
3
classe 3
– la programmazione: algoritmi
CARATTERISTICHE DI UN ALGORITMO
•
un esecutore umano è in grado di risolvere spesso ambiguità e imprevisti ma un
computer non possiede tali capacità, pertanto nella formulazione di algoritmi per
computer è necessario imporre il rispetto di alcune condizioni
•
le azioni devono essere eseguibili e non ambigue
– termini del tipo “ un po’” e “ a piacere” non sono ad esempio ammessi in quanto
ambigui e non adatti ad una macchina
•
deve essere deterministico
– fatto un passo, il successivo è uno ed uno solo, ben determinato
– alternative sono possibili, ma la scelta deve essere univoca
•
il numero di passi deve essere finito
•
deve essere terminabile
– l’esecuzione prima o poi deve finire e produrre il risultato in un tempo finito
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
4
classe 3
– la programmazione: algoritmi
analisi di una sequenza logica
•
problema : costruzione di un kit di montaggio
•
sequenza logica di operazioni da eseguire
1.
2.
3.
4.
procurarsi il kit e gli strumenti
aprire la scatola
leggere le istruzioni
mettere insieme i pezzi
•
una simile sequenza logica è di sicuro eseguibile da un essere intelligente, ma,
così come è formulato è di sicuro incomprensibile per una macchina quale il
computer
•
ogni passo ammette qui una “interpretazione” personale, caratteristica che di
sicuro nessun computer possiede!
•
la sequenza data pertanto non è un algoritmo
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
5
classe 3
– la programmazione: algoritmi
formalismo grafico di descrizione di un algoritmo: FLOW CHART
•
un formalismo grafico intuitivo per descrivere algoritmi è quello dei diagrammi a
blocchi (flow-chart), introdotto negli anni ’60
•
le istruzioni e la loro successione è indicata attraverso blocchi di forma diversa
collegati da segmenti orientati
•
i blocchi fondamentali sono sostanzialmente
–
–
–
–
blocco decisionale a forma di rombo
blocco di input/output o di I/O a forma di parallelogramma
blocco funzionale (descrive una o più istruzioni elementari) a forma di rettangolo
blocco di limite del processo (inizio/fine processo) a forma di elissoide
START
STOP
blocchi di limite del
processo
read/print
esegui
blocco funzionale
blocco di I/O
SI
?
NO
blocco decisionale
simboli per flow chart
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
6
classe 3
algoritmo 1
– la programmazione: algoritmi
•
esempio: prelievo caffè da macchina automatica
1. la macchina funziona?
2. si: può dare resto
3. si: inserire le monete
4. la macchina non funziona? Non effettuare alcuna operazione
5. la macchina non dà il resto? Non effettuare alcuna operazione
6. la macchina non da il resto ? Continuare comunque
7. inserire le monete
8. scegliere il tipo di caffè
9. attendere
10. prelevare il caffè
11. prelevare il resto eventuale
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
7
classe 3
flow chart algoritmo 1
– la programmazione: algoritmi
START
SI
NO
NO
può dare il resto?
continuare ?
SI
la macchina
funziona?
SI
NO
STOP
inserire le monete
STOP
selezionare il tipo di
caffè
attendere la
preparazione
prelevare caffè
STOP
prelevare il resto
SI
c’è del resto?
NO
STOP
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
8
classe 3
– la programmazione: algoritmi
algoritmo 2
•
esempio: eseguire una chiamata telefonica
1. sollevare il ricevitore
2. attendere il segnale
3. comporre il numero
4. il numero è libero?
5. no: deporre il ricevitore
6. si: attendere risposta
7. parlare
8. deporre il ricevitore
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
9
classe 3
flow chart algoritmo 2
– la programmazione: algoritmi
START
sollevare il ricevitore
attendere il segnale
comporre il numero
SI
è libero?
NO
attendere la risposta
parlare
deporre il ricevitore
deporre il ricevitore
STOP
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
10
classe 3
– la programmazione: algoritmi
algoritmo 3
•
esempio: calcolo di una potenza
1. leggere un numero x
2. leggere un numero (intero) n
3. calcolare e visualizzare xn
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
11
classe 3
flow chart algoritmo 3: calcolo di
x
n
– la programmazione: algoritmi
START
input (n)
input (x)
power
i
1
1
i≤n?
NO
output “power”
SI
costrutto iterativo
power
power * x
END
i i+1
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
12
classe 3
– la programmazione: algoritmi
algoritmo 4
•
esercizio: realizzare un algoritmo che esegua la media aritmetica fra 10 numeri e
rappresentarlo tramite la relativa flow chart
•
i passi principali da eseguire sono:
–
1. leggere i 10 numeri da tastiera
–
2. eseguire la media aritmetica fra i 10 numeri
–
3. visualizzare il risultato
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
13
classe 3
flow chart algoritmo 4
– la programmazione: algoritmi
START
input “n”
input K
media
i
n
1
i<K?
NO
media
media/K
SI
input “n”
media
media +n
output “media =”
END
i i+1
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
14
classe 3
– la programmazione: algoritmi
algoritmo 5 (algoritmo di calcolo numerico)
•
esempio: calcolo del minimo e del massimo di K numeri interi (descrizione sintetica)
–
1. leggere il numero K
–
2. leggere da tastiera K numeri interi
–
3. determinare il numero maggiore
–
4. determinare il numero minore
–
5. visualizzare il numero maggiore
–
6. visualizzare il numero minore
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
15
classe 3
flow chart algoritmo 5
– la programmazione: algoritmi
START
input “n”
input K
max n
min n
i
1
i<K?
NO
output “min”
output “max”
SI
END
input “n”
costrutto iterativo
n < min ?
SI
min
n
max
n
NO
n > max ?
SI
NO
i i+1
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
16
classe 3
algoritmo 6
– la programmazione: algoritmi
•
eseguire la somma algebrica di due numeri relativi utilizzando le operazioni di
somma e differenza tra numeri senza segno
1. acquisizione dei due numeri a,b
2. se a, b sono concordi |s| = |a| +| b|
3. se a,b sono discordi si scambiano i valori di a con b e si esegue l’operazione |s| = |a| - |b|
4. attribuzione al segno della somma s il segno del numero a
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
17
classe 3
flow chart algoritmo 6
input a
input b
– la programmazione: algoritmi
START
SI
aeb
concordi?
NO
NO
|a|<|b| ?
SI
|s| |a|+|b|
scambia “a con b”
|s| |a|-|b|
segno di (s) =segno (a)
END
print segno( di s)
print |s|
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
18
classe 3
algoritmo 7 (algoritmo di ricerca)
– la programmazione: algoritmi
•
ad una centrale della Polizia perviene l’ordine di verificare se nel database di malviventi in loro possesso
esiste un soggetto corrispondente al seguente identikit:
- uomo sui 40 anni alto circa 1,80 peso sui 90 Kg con la barba
•
realizzare un algoritmo in grado di analizzare il database per verificare o meno l’esistenza di un simile
soggetto e rappresentarlo tramite flow chart
criteri di sviluppo dell’algoritmo
•
supponendo K il numero dei soggetti che costituiscono il database, si tratta in pratica di verificare per ogni soggetto i dati
relativi ai seguenti parametri:
•
età
•
altezza
•
peso
•
caratteristica del viso
–
individuare l’esistenza o meno del soggetto ricercato
–
fornire in uscita, se esiste, l’identità di tale soggetto
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
19
classe 3
flow chart algoritmo 7
– la programmazione: algoritmi
START
input K
input N
i
1
N è uomo?
NO
input N
NO
SI
i>K?
N ha barba?
NO
SI
N alto 180 cm?
SI
i
i+1
display
“nessun soggetto”
NO
END
SI
N ha 40 anni?
NO
SI
END
display
“identità soggetto”
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
20
– la programmazione: algoritmi
classe 3
elementi di Sistemi Informatici
la programmazione: algoritmi
– argomenti particolari
• sezione aurea
• successione di Fibonacci
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
21
classe 3
la “Sezione Aurea”
– la programmazione: algoritmi
•
•
•
.la sezione aurea Φ è il rapporto fra due lunghezze disuguali, delle quali la maggiore è media
proporzionale tra la minore e la somma delle due
la sezione aurea è chiamata anche “rapporto aureo” o ”numero aureo” o ”costante di
Fidia” o ”proporzione divina”
dato un segmento di lunghezza a+b, le lunghezze a e b sono fra di loro in rapporto aureo Φ se
a
•
b
a+b a
Φ=
=
a
b
tale rapporto vale approssimativamente 1,6180 ed è espresso dalla relazione
1+ 5
Φ=
2
•
•
il valore così definito, che esprime la sezione aurea, è un numero irrazionale (cioè non
rappresentabile come frazione di numeri interi) e algebrico (ovvero soluzione di un'equazione
polinomiale a coefficienti interi).
esso può essere approssimato, con crescente precisione, dai rapporti fra due termini
successivi della ”successione di Fibonacci”, a cui è strettamente collegato
[*] Gli ”Elementi” (in greco Στοιχεῖα) di Euclide sono la più importante opera matematica giuntaci dalla cultura greca antica.
Composti tra il IV e il III secolo a.C., rappresentano un quadro completo e definito dei principi della geometria noti al tempo.
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
22
classe 3
la “successione di Fibonacci”
– la programmazione: algoritmi
•
.la successione di Fibonacci è una successione di numeri interi naturali derivante dalla
soluzione del problema di trovare una legge che descrivesse la crescita di una popolazione di
conigli. Dal XII capitolo del “Liber Abaci ” si legge
“se una coppia di conigli rimane isolata, quante coppie di conigli possono essere prodotte
dalla coppia iniziale in un anno supponendo che ogni mese ogni coppia produca una nuova
coppia in grado di riprodursi a sua volta dal secondo mese?”
•
la soluzione del problema è una successione in cui un numero, a partire dal terzo, è il risultato
della somma dei due precedenti. In particolare la sequenza procede come segue:
1,1,1,1,2,2,3,3,5,5,8,8,13,
13,21,
21,34,
34,55,
55,89,
89,144,
144,233,
233,….
….
•
procedendo lungo la successione, si vede che il rapporto fra un termine e il suo precedente,
oscilla attorno ad un numero che si avvicina sempre con maggiore precisione al rapporto
aureo all’aumentare del valore numerico dei termini
55
89
= 1,617647 ,
= 1,618182 , ....
34
55
233
= 1,618056 , ...
144
[*] Leonardo Pisano detto Leonardo Fibonacci, perché filius del Bonacci (Pisa, settembre 1170 – Pisa, 1240 ca.) fu
un matematico italiano.
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
23
classe 3
– la programmazione: algoritmi
la “Sezione Aurea” nel corpo umano
B
C
x
y
D
A
Sulla base delle indicazioni riportate nel “De
Architectura” dell’architetto romano Vitruvio (I sec. a
.C.), nel rinascimento Leonardo (1452-1519) disegna il
famoso "uomo vitruviano", e ne studia le proporzioni,
mettendolo a confronto con un quadrato e con un
cerchio (con centro sull'ombelico).
Nel quadrato, l'altezza dell'uomo (AB) è pari alla
distanza (BC) tra le estremità delle mani con le braccia
distese. La retta x-y passante per l'ombelico divide i
lati AB e CD esattamente in rapporto aureo tra loro. Lo
stesso ombelico è anche il centro del cerchio che
inscrive la persona umana con le braccia e gambe
aperte. La posizione corrispondente all'ombelico è
infatti ritenuta il baricentro del corpo umano.
a
b
a+b a
Φ=
=
a
b
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
24
classe 3
– la programmazione: algoritmi
la “Sezione Aurea” nell’arte
Salvator Dalì - “Il Sacramento dell’Ultima Cena” : rettangolo aureo+ dodecaedro aureo (12 pentagoni regolari)
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
25
classe 3
– la programmazione: algoritmi
la sezione aurea/Fibonacci in natura
conchiglia del nautilus
Sulla testa di un tipico girasole, per esempio, il
numero delle spirali rientra molto spesso in uno
schema con attinenze con il rapporto aureo
manifestato nella successione di Fibonacci. Ad
esempio nella foto ci sono: 89 spirali che si
irradiano ripide in senso orario; 55 che si
muovono in senso antiorario e 34 che si
muovono in senso orario ma meno ripido.
Questi sono tre numeri adiacenti delle
sequenza di Fibonacci. Il più grande girasole
che si sia mai conosciuto aveva 144, 89 e 55
spirali.
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
spirale aurea
a+b a
Φ=
=
a
b
rettangoli in progressione
secondo i numeri della
serie di Fibonacci
1, 1, 2, 3, 5, 8, 13, ….
a
b
a.s. 2015/2016
26
classe 3
algoritmo per il calcolo della “successione di Fibonacci”
– la programmazione: algoritmi
•
.sviluppare un algoritmo in grado di risolvere il seguente problema
“se una coppia di conigli rimane isolata, quante coppie di conigli possono essere prodotte
dalla coppia iniziale in un anno supponendo che ogni mese ogni coppia produca una nuova
coppia in grado di riprodursi a sua volta dal secondo mese?”
coppie mature Cm
1° mese
1
coppie giovani Cg
0
la legge è la seguente:
il numero di coppie mature Cm in un certo mese è dato
dalla somma delle coppie mature del mese precedente più
quelle giovani Cg sempre del mese precedente
2° mese
1
1
3° mese
1+1
1
4° mese
2+1
2
Il numero di coppie giovani Cg in un certo mese è uguale a
quelle delle coppie mature del mese precedente
5° mese
3+2
3
6° mese
5+3
5
indicando con Cm0 e Cg0 il numero di coppie
rispettivamente mature e giovani del mese precedente a
quello corrente, si può scrivere
7° mese
8+5
8
………
Cm=Cm0+Cg0
Cg=Cm0
sistemi
a.s. 2015/2016
L. Agarossi - ITIS “P. Hensemberger - Monza
27
classe 3
algoritmo “rabbit” (successione Fibonacci)
– la programmazione: algoritmi
START
Cm0 1; Cm 0
Cg 0; K 0;
i 0
input mesi” K”
i < K-1?
SI
END
NO
Cm Cm0+Cg
Cg Cm0
Cm0 Cm
print” Cm”
i i+1
legenda
Cm = coppie mature
Cm0 = coppie mature precedenti Cm
Cg = coppie giovani
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
28
classe 3
algoritmo per il calcolo dei termini della successione di Fibonacci
– la programmazione: algoritmi
START
f2 0; f1
f0 1; K
i 0
0
0;
input numeri” K”
i < K-1?
SI
END
NO
f2 f1
f1 f0
f0 f1+f2
legenda
print” f0”
i i+1
f2 = termine precedente f1
f1 = termine precedente f0
f0 = termine corrente
sistemi
L. Agarossi - ITIS “P. Hensemberger - Monza
a.s. 2015/2016
29