Informatica Generale Susanna Pelagatti

Slides:



Advertisements
Presentazioni simili
Informatica Generale Marzia Buscemi
Advertisements

INFORMATICA Algoritmi fondamentali
Informatica Generale Susanna Pelagatti
Informatica Generale Marzia Buscemi IMT Lucca
Sottoprogrammi: funzioni e procedure
Process synchronization
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Informatica Generale Marzia Buscemi IMT Lucca Ricevimento: Giovedì ore presso Dipartimento di Informatica, Largo.
Informatica Generale Alessandra Di Pierro
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Algebra di Boole ed elementi di logica
Process synchronization
Introduzione allinformatica. Cosè linformatica ? Scienza della rappresentazione e dellelaborazione dellinformazione ovvero Studio degli algoritmi che.
Algoritmo di Ford-Fulkerson
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Raffaella Rizzi DISCO Dipartimento di Informatica Sistemistica e Comunicazione Edificio U14 - primo piano - stanza.
Fondamenti di Informatica
Introduzione alla programmazione lll
Introduzione alla programmazione l
ALGORITMI E PROGRAMMAZIONE STRUTTURATA
Algoritmi.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Informatica Generale Susanna Pelagatti
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Fondamenti di Informatica Algoritmi
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Gli algoritmi.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Elementi di Informatica
Elementi di Informatica
Biologia Computazionale - Algoritmi
Dall’algoritmo al programma.
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
INFORMATICA MATTEO CRISTANI.
PROGRAMMAZIONE: linguaggi
14 marzo 2002 Avvisi:.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 13 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
Dal problema all’ algoritmo
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali (corso TIE) CORSO LAUREA MAGISTRALE IN SCIENZE E TECNOLOGIE DELLE PRODUZIONI ANIMALI.
1 Sistemi Operativi … e altro. Susanna Pelagatti Dipartimento di Informatica, Via Buonarroti, 2 stanza 346 DE Tel
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Sommario lez 1 Concetti principali, domande ed esercizi Concetti principali –algoritmo, programma –struttura di controllo: condizionale (if …), iterativa.
Algoritmi.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Programmazione dei Calcolatori Elettronici
Transcript della presentazione:

Informatica Generale Susanna Pelagatti email: susanna@di.unipi.it Ricevimento: Mercoledì ore 14.30-17.30 presso Dipartimento di Informatica, Via Buonarroti, 2 stanza 346 DE Tel. 050.2212.772 o per posta elettronica Pagina web del corso: http://www.di.unipi.it/~susanna/IG02/

La scorsa lezione … Abbiamo introdotto la struttura tipica del calcolatore di von Neumann Processore (CPU) Sottosistema di Interfaccia Memoria (RAM,dischi, etc) Mantiene Dati e Programmi E’ un esecutore capace di interpretare i singoli passi richiesti dai programmi (istruzioni elementari) Permette di comunicare dati programmi alla macchina e di ottenere i risultati (tastiera, micr., stampante, schermo, )

La scorsa lezione ... Abbiamo introdotto algoritmi e programmi Elaborazione Dati di ingresso Dati di uscita Trasformazione dei dati di ingresso seguendo i passi specificati da un opportuno algoritmo Codificati opportunamente Ovvero la descrizione dell’algoritmo secondo un linguaggio comprensibile al calcolatore Calcolatore (che conosce alcune azioni elementari: es confrontare due numeri, eseguire semplici operazioni aritmetiche Umano (che conosce l’algoritmo) programma

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)

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

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…

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 ….’

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.

Dal problema all’algoritmo: esempio (6) Due considerazioni : Per ogni problema\sotto-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 …)

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

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.

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.

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

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

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!

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

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

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

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

Diagrammi di Flusso (2) I blocchi base : Inizio Sottoprog. Operazione I/0 Fine Si Cond. No Elaborazione

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

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

DF di max Inizio Leggi x e y d = x - y d > 0 ? Scrivi ‘max è y’ Si d > 0 ? No Scrivi ‘max è y’ Scrivi ‘max è x’ Fine

DF di max Inizio Passo 1 Leggi x e y Passo 2 d = x - y Passo 3 Si d > 0 ? No Scrivi ‘max è y’ Scrivi ‘max è x’ Passo 5 Passo 4 Fine Passo 6

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

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

DF per il problema del massimo di N numeri Inizio Leggi i primi due numeri x1 e x2 e memorizzali nelle variabili a e b m = max(a,b) Ancora numeri da esaminare ? Si No Scrivi ‘max è m’ Leggi il nuovo numero in a Fine Supponiamo N fissato m = max(a,m)

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

DF per il problema del massimo di N numeri (seconda versione) Leggi N Inizio I = 2 Leggi i primi due numeri x1 e x2 e memorizzali nelle variabili a e b m = max(a,b) Si I < N ? No I = I + 1 Scrivi ‘max è m’ DF per il problema del massimo di N numeri (seconda versione) Leggi il nuovo numero in a Fine m = max(a,m) Supponiamo N almeno 2

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) !!!!

DF e programmi (3) … soluzione…. importante …. 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

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 ; }

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 ; }

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; }