Informatica Generale Alessandra Di Pierro email dipierrodi unipi
- Slides: 33
Informatica Generale Alessandra Di Pierro email: dipierro@di. unipi. it Ricevimento: Giovedì ore 14. 30 -17. 30 presso Dipartimento di Informatica, Via Buonarroti, 2 stanza 362 DE Tel. 050. 2212. 779 o per posta elettronica Pagina web del corso: http: //www. di. unipi. it/~dipierro/IG 03. html 1
La scorsa lezione … • Abbiamo introdotto la struttura tipica del calcolatore di von Neumann Memoria (RAM, dischi, etc) Mantiene Dati e Programmi Processore (CPU) E’ un esecutore capace di interpretare i singoli passi richiesti dai programmi (istruzioni elementari) Sottosistema di Interfaccia Permette di comunicare dati programmi alla macchina e di ottenere i risultati (tastiera, micr. , stampante, schermo, ) 2
La scorsa lezione. . . • Abbiamo introdotto algoritmi e programmi Dati di ingresso Codificati opportunamente Elaborazione Dati di uscita Trasformazione dei dati di ingresso seguendo i passi specificati da un opportuno algoritmo Ovvero la descrizione dell’algoritmo secondo un linguaggio comprensibile al calcolatore Umano (che conosce l’algoritmo) Calcolatore programma (che conosce alcune azioni elementari: es confrontare due numeri, eseguire semplici operazioni aritmetiche 3
Dal problema all’algoritmo: un esempio • La biblioteca – Libri disposti sugli scaffali – La posizione di ogni libro è fissata dalle due coordinate (S, P) dove • S è il numero dello scaffale dove si trova il libro • P è la posizione all’interno dello scaffale – La biblioteca ha uno schedario con una scheda per ogni libro. Ogni scheda contiene, nell’ordine: • cognome e nome dell’autore • titolo del libro • numero scaffale (S) e posizione nello scaffale (P) 4
Dal problema all’algoritmo: esempio (2) • La biblioteca (cont. ) – Le schede sono ordinate in ordine alfabetico del campo autore • Problema: Vogliamo specificare un algoritmo che spieghi all’utente della biblioteca come trovare un libro cercato supponendo di sapere : Autore e Titolo 5
Dal problema all’algoritmo: esempio (3) • Un primo algoritmo per il prestito: 1. Decidi il libro da richiedere 2. Cerca la scheda nello schedario 3. Trascrivi la posizione (S, P) 4. Accedi alla posizione (S, P) 5. Preleva il libro e compila la scheda di prestito • Le operazioni elementari in questo caso sono piuttosto complesse… 6
Dal problema all’algoritmo: esempio (4) • … e se non so come si effettua la ricerca nello schedario ? – Tutte le operazioni specificate devono essere ‘elementari’ per chi esegue l’algoritmo. – Se non lo sono è possibile spiegarle a parte per mezzo di un sotto-algoritmo • es : nello spiegare una ricetta spesso si fa riferimento a parti spiegate in altre ricette, tipicamente ‘… preparare la pasta frolla (ricetta p. 212) usando i primi 3 ingredienti, poi preparare il ripieno come segue …. ’ 7
Dal problema all’algoritmo: esempio (5) • Un sotto algoritmo per cercare nello schedario : 1. Apri il classificatore 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 4. Se sono uguali, allora la ricerca è terminata, altrimenti prendi la scheda successiva e vai al passo 3 5. Se le schede sono esaurite, allora il libro cercato non esiste. 8
Dal problema all’algoritmo: esempio (6) Due considerazioni : – Per ogni problemasotto-problema ci sono algoritmi più o meno veloci • es: per la ricerca nello schedario si può utilizzare l’algoritmo che utilizziamo solitamente (e spesso non consapevolmente) per cercare una parola sul dizionario – L’algoritmo presentato, per quanto semplice presenta sia operazioni elementari (confronta, prendi) che strutture di controllo (istruzioni che organizzano la sequenza in cui vengono effettuate le operazioni elementari, es. se…. altrimenti … vai a …) 9
Dal problema all’algoritmo: le strutture di controllo • La struttura di controllo condizionale 1. Apri il classificatore 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 4. Se (sono uguali), allora la ricerca è terminata, altrimenti prendi la scheda successiva e vai al passo 3 5. Se (le schede sono esaurite) allora il libro cercato non esiste. (…. ) specifica la condizione 10
Dal problema all’algoritmo: le strutture di controllo (2) • La struttura di salto (vai a o go_to) 1. Apri il classificatore 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 4. Se sono uguali, allora la ricerca è terminata, altrimenti prendi la scheda successiva e vai al passo 3 5. Se le schede sono esaurite allora il libro cercato non esiste. 11
Dal problema all’algoritmo: le strutture di controllo (3) • La struttura di iterazione (finchè…ripeti) 1. Apri il classificatore 2. Prendi la prima scheda 3. Confronta il campo autore e titolo con quelli cercati 3. Finchè (il campo autore e titolo sono diversi da quelli cercati) ripeti a. Prendi la scheda successiva b. Confronta il campo autore e titolo con quelli cercati 5. Se le schede sono esaurite allora il libro cercato non esiste. 12
Algoritmi: ancora esempi. . . • Immaginiamo degli algoritmi per i seguenti problemi : 1. Trovare il maggiore fra 2 numeri interi x e y 2. Trovare il maggiore fra 3 numeri interi x, y e z 3. Trovare il massimo fra N numeri • assumiamo le seguenti operazioni elementari – somma (+), sottrazione (-), stabilire se un numero è maggiore o minore di 0, leggere/scrivere dallo schermo • … dove ragionevole : – definiamo dei sottoalgoritmi e utilizziamo le strutture di controllo 13
Il maggiore fra 2 numeri interi x, y • Algoritmo max 1. Leggi i valori di x e y dall’esterno 2. Calcola la differenza d fra x e y (d=x-y) 3. Se d è maggiore di 0 vai al passo 5 altrimenti prosegui in sequenza 4. Stampa ‘il massimo è …’ seguito dal valore di y e vai a 6 5. Stampa ‘il massimo è …’ seguito dal valore di x 6. Termina l’esecuzione 14
Il maggiore fra 2 numeri interi x e y (2) • x, y, d sono le ‘variabili’, cioè i contenitori per i dati coinvolti nell’elaborazione. Ogni variabile ha un nome (x, y…) e un valore: il dato contenuto o memorizzato in essa • Dobbiamo specificare esplicitamente come e quando l’esecuzione termina! 15
Il maggiore fra 3 numeri interi • Possiamo sfruttare l’algoritmo max come ‘sottoalgoritmo’ • Algoritmo max_3 1. Leggi i valori di x, y, z dall’esterno 2. Valuta se x> y usando l’algoritmo max 3. In caso affermativo vai al passo 5 4. Trova il massimo fra y e z (con max) e termina 5. Trova il massimo fra x e z (con max) e termina 16
Il massimo fra N numeri interi • Possiamo ancora sfruttare l’algoritmo max come ‘sottoalgoritmo’! • Idea … trovare prima il maggiore fra i primi due numeri, poi confrontare il risultato con il terzo, poi con il quarto etc … • In pratica, possiamo usare la struttura di controllo iterativa finchè…ripeti per effettuare le operazioni di max su tutti i numeri in ingresso 17
Determinare il massimo fra N numeri interi • Algoritmo max_N 1. Leggi il valore di N dall’esterno 2. Leggi i primi due numeri 3. Trova il maggiore m fra i primi due numeri (con max) 4. Finchè (hai esaminato meno di N numeri) a. Leggi un nuovo numero x b. Trova il maggiore fra m e x usando l’algoritmo max c. Assegna il valore del maggiore a m 5. Stampa ‘il massimo è…’ ed il valore di m e termina 18
Diagrammi di Flusso • Sono grafici che permettono di esprimere un algoritmo in modo preciso ed intuitivo • Si costruiscono a partire da un certo numero di ‘blocchi base’ che rappresentano le operazioni elementari ed i costrutti di controllo 19
Diagrammi di Flusso (2) I blocchi base : Inizio Sottoprog. Operazione I/0 Fine Si Cond. No Elaborazione 20
Diagrammi di Flusso (3) • I blocchi base vengono collegati tramite ‘freccie’ che collegano un’azione alla successiva all’interno dell’algoritmo • Vediamo i diagrammi di flusso degli algoritmi per il calcolo del massimo già visti 1. Trovare il maggiore fra 2 numeri interi x e y 2. Trovare il maggiore fra 3 numeri interi x, y e z 3. Trovare il massimo fra N numeri 21
Il maggiore fra 2 numeri interi x, y • Algoritmo max 1. Leggi i valori di x e y dall’esterno 2. Calcola la differenza d fra x e y (d=x-y) 3. Se d è maggiore di 0 vai al passo 5 altrimenti prosegui in sequenza 4. Stampa ‘il massimo è …’ seguito dal valore di x e vai a 6 5. Stampa ‘il massimo è …’ seguito dal valore di y 6. Termina l’esecuzione 22
DF di max Inizio Leggi x e y d=x-y Si d>0? No Scrivi ‘max è y’ Scrivi ‘max è x’ Fine 23
DF di max Inizio Passo 1 Leggi x e y Passo 2 d=x-y Si Passo 3 No d>0? Scrivi ‘max è y’ Scrivi ‘max è x’ Passo 5 Passo 4 Fine Passo 6 24
Determinare il massimo fra N numeri interi • Algoritmo max_N 1. Leggi il valore di N dall’esterno 2. Leggi i primi due numeri 3. Trova il maggiore m fra i primi due numeri (con max) 4. Finchè (hai esaminato meno di N numeri) a. Leggi un nuovo numero x b. Trova il maggiore fra m e x usando l’algoritmo max c. Assegna il valore del maggiore a m 5. Stampa ‘il massimo è…’ ed il valore di m e termina 26
DF per il problema del massimo di N numeri Inizio Leggi i primi due numeri x 1 e x 2 e memorizzali nelle variabili a e b m = max(a, b) Si Leggi il nuovo numero in a Ancora numeri da esaminare ? No Scrivi ‘max è m’ Fine m = max(a, m) Supponiamo N fissato 27
DF e programmi (1) • I DF sono un primo passo verso la formalizzazione di un algoritmo in modo non ambiguo • Per ottenere una codifica interpretabile direttamente dalla macchina dobbiamo però specificare molti più dettagli : – trasformare tutte le ‘frasi’ in variabili e modifiche su di esse : • es : ‘ancora numeri da esaminare’ deve essere tradotto in qualcosa di calcolabile dalla macchina usando solo le operazioni elementari 28
Leggi N Inizio Leggi i primi due numeri x 1 e x 2 e memorizzali nelle variabili a e b m = max(a, b) Si I<N? I=I+1 Leggi il nuovo numero in a m = max(a, m) I=2 No Scrivi ‘max è m’ Fine DF per il problema del massimo di N numeri (seconda versione) Supponiamo N almeno 2 29
DF e programmi (2) • Per ottenere una codifica interpretabile direttamente dalla macchina dobbiamo anche : – decidere come codificare l’informazione • non banale in esempi più complessi del nostro, ad esempio se voglio codificare un’immagine o un video – scrivere il tutto con una codifica ‘leggibile’ dalla macchina • … ma la macchina lavora molto a basso livello (linguaggio macchina, codificato con zeri e uni) !!!! 30
DF e programmi (3) • … soluzione…. – usare linguaggi di ‘livello’ più alto (linguaggi di programmazione ad alto livello) – usare dei programmi appositi per far tradurre i nostri programmi in linguaggio macchina (i compilatori) • importante …. – I tipici linguaggi (C, Java, Fortran, Basic…) permettono di definire strutture del tutto analoghe ai diagrammi di flusso che abbiamo visto finora 31
DF e programmi : max in C main() /* calcola max */ { int x, y, d; scanf ("%d %d”, &x, &y) ; d = x - y ; if (d > 0) printf (”il max è %d”, &x) ; else printf (”il max è %d”, &y) ; return ; } 32
DF e programmi : max_N in C (1) main() /* calcola max_N */ { unsigned int m, i, a, b; i = 2 ; scanf ("%d %d”, &a, &b); m = max(a, b); while (i < N) { scanf ("%d ”, &a) ; m = max(a, m); } printf (”il max è %d”, &m) ; return ; } 33
DF e programmi : max_N in C (2) int max(int x, int y) /* sottoprogramma che calcola max */ { int d; d = x - y ; if (d > 0) return x; else return y; } 34
- Alessandra di pierro
- Mail unipi
- Mail unipi
- Unipi df
- Email unipi
- Formal email and informal email
- Moodle unipi scienze biologiche
- U-web missioni
- Elearning unipi med
- Regolamento missioni unipi
- Unipistat
- U-web missioni
- Aleph unipi
- Cedolino unipi
- Text analytics unipi
- Rosetta zan didattica della matematica
- Scienze motorie pisa
- L'istamina unipi
- Gerarchia di memoria
- Non sa più nulla è alto sulle ali parafrasi
- Ginkgoale
- Marche generale des operation
- Studium generale próbaérettségi
- Relatività generale liceo
- Normele psi
- Corso generale sicurezza sul lavoro
- Fonction rationnelle forme canonique
- Caractere generale ale virusurilor
- Diktámen
- Pédagogie générale
- Annexe rapport de stage
- Portale ndr
- Metodo induttivo dal particolare al generale
- Que signifie la communication fonctionnelle