Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2010-11 prof. Viviana Bono Blocco 6 – Invariante.

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

INFORMATICA Algoritmi fondamentali
INFORMATICA Strutture condizionali
Iterazione while – do while - for.
Iterazione A. Ferrari.
3TC – 5/11/2010 Cicli while e do.. While Contatori e Totalizzatori.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F3 Iterazione.
Universita di Camerino
Algoritmi e Programmazione
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Informatica Generale Marzia Buscemi
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Un nuovo tipo di dati Gli array.
Sommatorie Proprietà Serie aritmetica Serie geometrica Serie armonica
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
INFORMATICA Strutture iterative
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Istruzioni iterative For, while.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Caratteri e stringhe di caratteri
Iterazione enumerativa (for)
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione 1, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Istruzioni di ripetizione in Java
Selezione (=scelta) con “if-else”
Unità Didattica 1 Algoritmi
Istruzioni Iterative Nicola Fanizzi
Elementi di Informatica
CODIFICA Da flow-chart a C++.
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Programmazione di Calcolatori
Problema: come dividere due numeri
Capitolo 4 (Deitel) Le strutture di controllo in C
Programmazione Strutturata
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
L’iterazione while La sintassi è la seguente: while (condizione) {
Ripetizione La vera potenza dei programmi per computer risiede nella capacità di ripetere lo stesso calcolo o sequenza di istruzioni più volte, ogni volta.
TURBOPASCAL L’iterazione - prof. V. Riboldi -.
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Istruzioni iterative For, while.
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Sottoprogrammi e funzioni
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
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
Diagrammi a blocchi.
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
ALGORITMI Dal problema al programma Definizione di algoritmo
Strutture di controllo
Rudimenti di Complessità Corso di Programmazione II Prof. Dario Catalano.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 22 Marzo 2016.
Transcript della presentazione:

Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 6 – Invariante di ciclo

Programmazione I B - a.a Definire correttamente un ciclo: invarianti di ciclo Richiamo della terminologia Istruzione while: tutto il costrutto while( BoolExpr ) Corpo è UNA istruzione (composta): più precisamente, è una istruzione while, la cui esecuzione consiste nella ripetizione (controllata da BoolExpr nel modo ben noto) delle istruzioni costituenti il Corpo. Ciò che viene ripetuto è pertanto il Corpo del while, non l'istruzione while! Analoga terminologia si usa per le altre istruzioni iterative: for e do-while.

Programmazione I B - a.a Ideare un ciclo: si parte dallo "stato al passo generico" Problema. Definire un metodo statico che legga da consolle una sequenza di interi avente almeno un elemento e terminata a un "non-intero", e ne scriva sullo schermo il massimo. Risoluzione: Devo costruire un ciclo all'uscita del quale nella cella max sia contenuto il massimo. Per far ciò, al generico passo la cella max deve contenere il massimo dei valori immessi fino a quel momento. Assumendo che ciò sia vero per effetto dei passi precedenti e assumendo che la condizione hasNextInt() sia vera e che quindi io debba eseguire il corpo del ciclo, che cosa devo fare nel corpo del ciclo? 1. leggere un nuovo intero: int x = tastiera.nextInt(); 2. se è maggiore di max sostituirlo a max, altrimenti non far nulla: if(x > max) max = x;

Programmazione I B - a.a Ideare un ciclo a partire dall'invariante (continua) Inizializzazione. Inizialmente, cioè prima di entrare nell'istruzione while, bisogna aver letto un intero, e tale intero è ovviamente il massimo: int max = tastiera.nextInt(); In conclusione, il ciclo che risolve il problema è: int max = tastiera.nextInt(); while(tastiera.hasNextInput()) { int x = tastiera.nextInt(); if(x > max) max = x; } (naturalmente, bisognerà anche aver inizializzato tastiera, ecc.)

Programmazione I B - a.a Che cosa è un invariante di un ciclo? Invariante di ciclo = proposizione (riguardante i contenuti delle variabili di una procedura o programma) la quale: è vera immediatamente prima di eseguire l'istruzione iterativa; è vera dopo ogni ripetizione del corpo del ciclo; quindi, in particolare, è vera all’uscita dall'istruzione iterativa, cioè all'uscita "definitiva" dal ciclo. È cioè una proposizione che descrive la situazione (della memoria) all'inizio di ogni ripetizione del corpo del ciclo. Nell'esempio precedente l'invariante è: La variabile max contiene il massimo dei valori immessi finora.

Programmazione I B - a.a Come non ideare un ciclo Se, nell'ideare un ciclo, si pensa subito al "primo passo" invece che al passo generico, ciò può indurre a scrivere programmi più complicati e spesso errati. Ad esempio, nel problema del massimo, partendo dal primo passo qualcuno potrebbe ragionare così: poiché voglio ci sia almeno un elemento, faccio una lettura: int x = tastiera.nextInt(); int max = Integer.MIN_VALUE; ora entro nel ciclo e faccio il primo passo: poiché ho già fatto la lettura fuori dal ciclo, faccio prima il confronto e poi una nuova lettura: while(...) { if(x > max) max = x; x = tastiera.nextInt();...

Programmazione I B - a.a Come non ideare un ciclo (continua) In questo modo, ad ogni passo si confronta con max il valore x letto nel passo precedente: questo è piuttosto innaturale, e condurrà nella migliore delle ipotesi ad un programma inutilmente complicato e difficile da capire (perché si deve ragionare su due passi alla volta), o più probabilmente ad un programma errato come il seguente: ATTENZIONE: PROGRAMMA ERRATO ! int x = tastiera.nextInt(); int max = Integer.MIN_VALUE; while(tastiera.hasNextInput()) { if(x > max) max = x; x = tastiera.nextInt(); }

Programmazione I B - a.a Nel seguito del corso vedremo esempi di problemi per i quali è quasi impossibile scrivere correttamente la soluzione iterativa senza partire col pensare alla "situazione al passo generico", cioè all'invariante di ciclo (ad es. ricerca binaria)