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