Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 17. Correttezza. Maggio Correttezza
|
|
- Domenica Donato
- 6 anni fa
- Visualizzazioni
Transcript
1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 17 Maggio
2 Contenuti Introduzione alla correttezza dei metodi specifica di un metodo correttezza di un metodo correttezza e responsabilità Verifica di correttezza test a scatola nera test a scatola trasparente metodi di test Test di un insieme di metodi 2
3 La correttezza è una delle qualità fondamentali dei prodotti software detto in modo molto preliminare e generico (come lo direbbe un uomo della strada) un prodotto software è corretto se consente le operazioni per cui è stato pensato Questa dispensa presenta la nozione di correttezza dei programmi, con particolare riferimento alla programmazione orientata agli oggetti, studiando gli aspetti e gli strumenti che permettono di descrivere e verificare la correttezza del software 3
4 Esecuzione di un programma Dati in ingresso pre P post Dati in uscita Un programma P riceve un insieme di dati in ingresso che devono soddisfare alcune condizioni, cioè hanno delle proprietà, che indichiamo con pre-condizioni Un programma P esegue le operazioni previste, in modo non ambiguo e in un tempo finito, cioè termina Un programma P fornisce un insieme di dati in uscita che devono soddisfare alcune condizioni, cioè hanno delle proprietà, che indichiamo con post-condizioni 4
5 Specifica di un programma L espressione <pre, P, post> rappresenta la specifica del programma P La specifica di un programma P si dice soddisfatta se vale la seguente proprietà: Per ogni insieme di dati che soddisfano la precondizione pre, se il programma P termina quando viene eseguito su tali dati, allora i dati di uscita prodotti dal programma soddisfano la post-condizione post DEFINIZIONE - Un programma P è parzialmente corretto rispetto alla pre-condizione pre e alla post-condizione post, se la specifica <pre, P, post> è soddisfatta. 5
6 Esempio Supponiamo di utilizzare un programma P calcolare il massimo comun divisore m di due numeri x e y interi II programma P può essere utilizzato sse i due numeri x e y sono interi e non entrambi nulli e conseguentemente la pre-condizione per P è (x e y sono interi non negativi) and ( (x > 0) or (y > 0) ) II risultato calcolato da P, m = MCD(x, y), deve soddisfare la seguente post-condizione (m divide x) and (m divide y) and (ogni numero intero che divide sia x che y divide anche m) 6
7 Definizione Un programma P è corretto rispetto alla precondizione pre e alla post-condizione post se è parzialmente corretto e se esso termina ogni volta che viene eseguito su dati di ingresso che soddisfano la pre-condizione pre... OPPURE... Un programma P è corretto rispetto alla specifica <pre, P, post> se per ogni insieme di dati di ingresso che soddisfa la pre-condizione pre il programma P termina e fornisce come risultato un valore che soddisfa la postcondizione post 7
8 Dimostrazione della correttezza... In base alla definizione precedente la dimostrazione della correttezza di un programma consiste dei seguenti passi: 1. si determina la pre-condizione pre e la postcondizione post; 2. si verifica se la specifica è soddisfatta; 3. si stabilisce se il programma termina per ogni possibile insieme di dati di ingresso che soddisfa la pre-condizione. 8
9 ... Dimostrazione della correttezza Pur essendo possibile la dimostrazione formale e rigorosa della correttezza di un programma, bisogna considerare che tali prove risultano molto complesse e lunghe Per questa ragione si segue un approccio pragmatico che viene chiamato metodo sperimentale di verifica della correttezza di un programma o test di correttezza 9
10 Test di un programma... II test di un programma consiste dei seguenti passi: 1. si determina un insieme di dati di input I; 2. si esegue il programma con i dati I; 3. si verificano i risultati ottenuti: 3.1 se I'esecuzione del programma non termina in un lasso di tempo ragionevole o se i risultati ottenuti dalla esecuzione non sono quelli attesi, allora il programma non è corretto 3.2 se non sono stati rilevati errori, bisogna stabilire se è necessario effettuare altre prove; in questo caso si ritorna al passo 1, altrimenti il test termina 10
11 ... Test di un programma... Generalmente il test di un programma non permette di stabilirne la correttezza, a meno che non vengano provate tutte Ie possibili scelte di dati di ingresso che potrebbero anche essere infinite Se eseguiamo il programma con un sottoinsieme dei possibili input non possiamo escludere che esista un insieme di dati, che non è stato provato, e che evidenzia un errore 11
12 ... Test di un programma... Chiaramente, la prova di un programma con tutti i possibili dati di ingresso è impossibile nella maggioranza dei casi anche se sono in numero finito Ad esempio, l'insieme dei dati di ingresso di un programma che calcola il prodotto di due interi compresi tra e è composto da circa 40 milioni di miliardi di elementi. Se ciascuna prova richiede un microsecondo ( secondi) allora sono necessari 40 miliardi di secondi, circa giorni cioè circa 110 anni 12
13 ... Test di un programma Possiamo pertanto concludere che, anche se generalmente il test di un programma non permette di dimostrarne la correttezza, esso è lo strumento più usato nella pratica della programmazione Se effettuiamo molte prove e non rileviamo errori, possiamo ragionevolmente supporre che la probabilità che il programma contenga errori sia molto piccola 13
14 nella programmazione orientata ad oggetti In generale, è possibile ricondurre la verifica della correttezza di una classe o di una applicazione alla verifica del comportamento di un oggetto cioè dei suoi metodi facciamo delle ipotesi semplificative oggetti classe senza stato comportamento senza effetti collaterali solo calcolo di funzioni La correttezza di un metodo è legata alla specifica del metodo che è un particolare programma 14
15 Alcuni termini rilevanti Malfunzionamento (o comportamento errato) di un oggetto una discrepanza tra l effettivo comportamento esterno dell oggetto e quello corretto Oggetto non corretto (o errato) durante il suo uso possono verificarsi malfunzionamenti un oggetto è corretto se durante il suo uso non possono mai verificarsi malfunzionamenti Errore (o difetto) è la causa di un malfunzionamento un malfunzionamento è una manifestazione di un errore 15
16 Verifica di correttezza Le tecniche di verifica di correttezza prevedono solitamente l uso dell oggetto da verificare, cercando di provocare eventuali malfunzionamenti e comportamenti non corretti il verificarsi di un malfunzionamento ci garantisce la presenza di errori nell oggetto l assenza di malfunzionamenti certifica la correttezza dell oggetto solo se l oggetto è stato utilizzato in tutti i possibili modi in pratica, però, la verifica di correttezza di un oggetto viene in genere basata su un numero limitato di prove La verifica di correttezza di un oggetto può semplicemente confermare la presenza di errori, e mai la loro assenza 16
17 Individuazione e correzioni degli errori Individuazione degli errori attività di ricerca degli errori la verifica di correttezza non dice quanti e quali sono tipologie di errori errori di uso del linguaggio di programmazione errori di codifica errori nella realizzazione dell algoritmo errori nella scelta dell algoritmo è problematico solo trovare gli errori non riconosciuti dal compilatore la correzione di un errore è tanto più costosa quanto più tardi l errore viene rilevato e corretto rispetto al momento in cui è stato introdotto 17
18 Specifica di un metodo La nozione di specifica di un metodo formalizza l idea di comportamento per cui il metodo è stato pensato La specifica di un metodo corrisponde alla specifica del problema che il metodo deve risolvere La specifica di un metodo è parte della sua documentazione 18
19 Esempi... Un metodo per calcolare il massimo comun divisore di due numeri interi positivi N e M pre-condizione - N>0 && M>0 post-condizione - il valore restituito dal metodo è il massimo comun divisore di N e M /* Calcola il massimo comun divisore di n e m. } * Il masssimo comun divisore di n e m è un numero * intero d che è divisore sia di n che di m * e tale che ogni altro divisore intero comune * a n e m è minore di d. */ public static int mcd(int n, int m) { // pre: n>0 && m>
20 ... Esempi Un metodo per calcolare il numero di occorrenze di un carattere in una stringa non nulla /* Calcola il numero di occorrenze del * carattere car nella stringa s, * ovvero il numero di caratteri di s * che sono uguali a car. */ public static int occorrenze(string s, char car) { } // pre: s!=null... 20
21 Non correttezza di un metodo Un metodo è non corretto se esiste almeno un insieme di dati di ingresso che soddisfa la pre-condizione pre per cui l esecuzione del metodo non termina oppure se esiste almeno un insieme di dati di ingresso che soddisfa la pre-condizione pre per cui l esecuzione del metodo termina in modo anormale (con una eccezione) oppure se esiste almeno un insieme di dati di ingresso che soddisfa la pre-condizione pre per cui l esecuzione del metodo termina ma il valore restituito non soddisfa la post-condizione post La verifica di correttezza di un metodo consiste proprio nel cercare contro-esempi relativi alla sua correttezza 21
22 e responsabilità Le responsabilità circa la correttezza di un metodo vengono così ripartite chi usa un metodo deve invocarlo fornendogli in ingresso dei dati che soddisfano la pre-condizione chi realizza un metodo deve far sì che il metodo termini e produca un risultato corretto ogni volta che la pre-condizione è verificata chi realizza un metodo può assumere che la pre-condizione sia verificata (solitamente) non deve verificare se i dati di ingresso soddisfano la pre-condizione non ha responsabilità se il metodo produce un errore su dati che non soddisfano la pre-condizione 22
23 e responsabilità... /* Calcola mediante somme ripetute il prodotto n*m * dei numeri interi n e m. */ public static int prodottointeri(int n, int m) { // pre: true (nessuna condizione su n e m) int p; // il prodotto di n e m int i; // per iterare tra 1 e n p = 0; for (i=1; i<=n; i++) p = p+m; return p; }... nperm = prodottointeri(-2, 3); // 0 anziché è da considerarsi errato il metodo prodottointeri - la responsabilità è di chi ha realizzato il metodo 23
24 ... e responsabilità /* Calcola mediante somme ripetute il prodotto n*m * dei numeri naturali n e m. */ public static int prodottonaturali(int n, int m) { // pre: n>=0 && m>=0 int p; // il prodotto di n e m int i; // per iterare tra 1 e n p = 0; for (i=1; i<=n; i++) p = p+m; return p; }... nperm = prodottonaturali(-2, 3); // 0 anziché è da considerarsi errato il metodo che invoca prodottonaturali - la responsabilità è di chi usa il metodo 24
25 Scelta dei dati di ingresso per un test Con quali dati effettuare il test di un metodo? ci sono varie tecniche di verifica, che si differenziano sulla scelta dell insieme dei dati di test su cui basare la verifica Due approcci principali test a scatola nera l insieme dei dati di ingresso viene scelto solo in riferimento alla specifica del metodo, senza far riferimento ai dettagli realizzativi del metodo test a scatola trasparente l insieme dei dati di ingresso viene scelto anche in riferimento ai dettagli realizzativi del metodo 25
26 Evitare scelte casuali dei dati di test È importante premettere che il test di un programma non consiste semplicemente nell'eseguire il programma una o più volte con dati scelti in modo casuale, ma è un'attività che deve essere condotta e pianificata durante tutta la fase di progettazione L'esempio seguente mostra come una scelta casuale dei dati di prova non risulta adeguata 26
27 Test a scatola nera Il test a scatola nera di un metodo è basato sulla specifica del metodo l insieme dei possibili dati di ingresso per il metodo viene partizionato in sottoinsiemi (insiemi di equivalenza) il metodo viene eseguito utilizzando una sola combinazione dei valori per ciascun insieme di equivalenza L approccio di test a scatola nera è basato sulla seguente ipotesi se il metodo si comporta correttamente per una combinazione dei dati di ingresso X scelta nell insieme di equivalenza C X, allora il metodo si comporta correttamente anche su ogni altra combinazione dei dati di ingresso scelta nell insieme C X è solo una ipotesi e potrebbe quindi essere sbagliata 27
28 Scelta degli insiemi di equivalenza... Idea alcuni insiemi di equivalenza rappresentano dati normali per il metodo altri insiemi di equivalenza rappresentano dati particolari per il metodo casi o valori al limite 28
29 ... Scelta degli insiemi di equivalenza Leggi dalla tastiera una sequenza di numeri interi e calcolane la somma scelta degli insiemi di equivalenza la sequenza è vuota caso particolare la sequenza contiene un solo elemento caso particolare la sequenza contiene più elementi caso normale Il test viene poi svolto effettuando una prova per ciascun insieme di equivalenza scegliendo un insieme di dati rappresentativo per ciascun insieme di equivalenza 29
30 Scelta dei dati Leggi dalla tastiera una sequenza di numeri e calcolane la somma scelta dei dati per ciascun insieme di equivalenza la sequenza è vuota la sequenza contiene un solo elemento 8 la sequenza contiene più elementi che cosa può accadere se la sequenza vale il risultato è 15 OK il risultato è 14 o 10 errore di uno il risultato è 0 gli elementi non sono stati sommati correttamente il programma rimane in attesa di ulteriori dati in ingresso sequenze meno significative la sequenza vale la sequenza vale
31 Test a scatola trasparente I test a scatola trasparente di un metodo sono basati anche sulla struttura del metodo l idea alla base di questo approccio è che un test può considerarsi concluso solo quando ciascuna istruzione del metodo sia stata eseguita almeno una volta questo richiede, ad esempio, di scegliere i dati di ingresso in modo tale che ciascuna istruzione sia eseguita almeno una volta, ed inoltre che ciascuna condizione sia verificata almeno una volta e non verificata almeno una volta 31
32 Metodi di test Un modo comune per effettuare, in pratica, il test di un metodo è definire un metodo di test per il metodo sono stati scelti gli insiemi di equivalenza per il test e i relativi dati rappresentativi un metodo di test per il metodo contiene una invocazione del metodo per ciascuno dei dati scelti i parametri attuali dell invocazione del metodo sono letterali che rappresentano i dati scelti il valore restituito dal metodo viene confrontato con quello atteso e/o visualizzato sullo schermo un commento motiva la scelta dell insieme di equivalenza e dei dati di prova 32
33 Metodo di test per il massimo comun divisore /* Metodo di test per int mcd(int n, int m). * Questo metodo deve essere invocato * da una applicazione di test */ public static void testmcd() { /* n=1, m>1 */ System.out.println("mcd(1,3): [1]: " + Mcd.mcd(1,3)); /* n>1, m multiplo di n */ System.out.println("mcd(4,12): [4]: " + Mcd.mcd(4,12)); } /* n>1, m>1, n e m hanno un multiplo comune */ System.out.println("mcd(8,12): [4]: " + Mcd.mcd(8,12));... 33
34 Documentazione e ripetibilità dei test Se si procede come descritto il metodo di test costituisce una documentazione della verifica di correttezza effettuata il test è riproducibile e ripetibile se il metodo non passa il test, per la nuova versione del metodo (in cui dovrebbero essere stati individuati e corretti alcuni errori) può essere usato lo stesso metodo di test il test può essere ripetuto quando si definisce una nuova versione del metodo (ad esempio, più efficiente) In generale, non è una buona idea eseguire un test sulla base di dati letti dalla tastiera il test non è documentato e non è ripetibile ma è l unica scelta possibile nella verifica di applicazioni interattive 34
35 Test di un insieme di metodi... Il test di un singolo metodo è solo una componente della verifica e correzione di un oggetto o di un intero programma in genere bisogna verificare un gruppo composto da molti metodi, che interagiscono in modo anche complesso Ad esempio - dato un numero naturale n, conta quanti sono i numeri primi minori o uguali a n il metodo (di supporto) boolean primo(int n) verifica se n è un numero primo il metodo (principale) int contaprimi(int n) risolve l intero problema La strategia più redditizia porta ad implementare e verificare un metodo alla volta ma in che ordine? 35
36 ... Test di un insieme di metodi metodo m invoca invoca invoca metodo m 1 metodo m 2 metodo m 11 36
37 Strategie per il test di un insieme di metodi Sono possibili due strategie implementare e verificare prima il metodo primo e poi il metodo contaprimi implementare e verificare prima il metodo contaprimi e poi il metodo primo Le due strategie si differenziano come segue nella prima strategia (bottom up) vengono prima realizzati e verificati i metodi invocati, e poi quelli che invocano metodi già verificati nella seconda strategia (top down) vengono prima realizzati e verificati i metodi che invocano altri metodi, e poi quelli invocati di solito viene usata la strategia bottom up 37
38 In pratica Passi per la risoluzione dei problemi 1. Comprendere il problema posto 2. Scrivere la specifica input/precondizioni output/postcondizioni 3. Scrivere i dati di test Generare diversi insiemi di dati di input che coprano le possibili combinazioni di input e scrivere in corrispondenza il valore atteso 4. Scrivere un algoritmo risolutivo per il problema 5. Scrivere la relativa codifica 38
39 Esempio Problema Scrivere un applicazione Java Uguali in cui sono definiti un metodo di classe boolean maiuscoliminuscoli(string s) che, ricevendo come parametro una stringa (non nulla e non vuota) s, restituisce true se il numero di caratteri maiuscoli è uguale al numero di caratteri minuscoli, false altrimenti e un metodo di classe void testuguali() per la verifica di correttezza. 39
40 esempio Specifica del problema Input: stringa s Precondizioni: s non nulla e non vuota Output: b booleano Postcondizioni: b e vero se il numero dei caratteri maiuscoli e uguale al numero dei caratteri minuscoli 40
41 esempio Test di correttezza public static void testuguali(){ /*Stringa composta da uguale numero di caratteri maiuscoli e minuscoli*/ System.out.println(maiuscoliMinuscoli("a0b1C2H") +" = true "); /* Stringa composta da zero caratteri maiuscoli e zero caratteri minuscoli */ System.out.println(maiuscoliMinuscoli("11") +" = true "); /* Stringa composta da un solo carattere */ System.out.println(maiuscoliMinuscoli("a") +" = false "); /* Stringa composta da caratteri minuscoli e cifre */ System.out.println(maiuscoliMinuscoli("abc001") +" = false "); /*Stringa composta da numeri di caratteri maiuscoli e minuscoli diversi*/ System.out.println(maiuscoliMinuscoli("abcM") +" = false "); } 41
42 Esempio Esecuzione true = true true = true false = false false = false false = false Press any key to continue... 42
43 Riferimenti al libro di testo Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al capitolo 16 43
Correttezza (prima parte)
Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di
DettagliCorrettezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e
DettagliDall analisi alla codifica (1)
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 09 Dall analisi alla codifica (1) Aprile 2010 Dall'analisi alla codifica (1) 1 Contenuti... Problemi e algoritmi comprensione del problema
DettagliIterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E07 Iterazione C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Iterazione 1 Contenuti Si vogliono formalizzare
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Esercizi sui metodi Carla Limongelli Maggio 2010 Esercizi 1 Passaggio di parametri di tipo primitivo Indicare che cosa viene visualizzato sullo
DettagliCorso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione
Corso di Laurea Ingegneria Elementi di Informatica C. Limongelli 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica esistenziale Verifica
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliCorso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1
Corso di Laurea Ingegneria Civile Elementi di Informatica Esercizi Carla Limongelli Esercizi 1 Quanti giorni in un mese? Scrivere un metodo che ricevuto in input un mese e un anno, restituisca il numero
DettagliIterazione (introduzione)
Fondamenti di informatica Oggetti e Java (introduzione) Capitolo 17 (estratto) ottobre 2015 1 Contenuti Accesso a sequenze Accumulazione Conteggio Altre aggregazioni Verifica esistenziale Verifica universale
DettagliArray di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione
DettagliCollaudo del software
Collaudo del software Il software deve essere testato con il preciso scopo di trovare degli errori prima di essere consegnato al cliente Il collaudo è un insieme di attività pianificate per testare il
DettagliL ELABORATORE ELETTRONICO
L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti
DettagliL ELABORATORE ELETTRONICO!
L ELABORATORE ELETTRONICO! Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliCORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1
CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1 Lezione 1 (Introduzione e Definizioni) Docenti Docente: Prof. Michele Colajanni Lezioni (Aula IV): martedì 10:00-12:45 Esercitazioni (Laboratorio): mercoledì
DettagliProblemi, algoritmi e oggetti
Fondamenti di informatica Oggetti e Java Luca Cabibbo Capitolo 5 Marzo 2007 1 Fondamenti di informatica: Oggetti e Jav Contenuti... Problemi e algoritmi comprensione del problema identificazione di un
Dettagli1 Esercizi in pseudocodice
Questa dispensa propone esercizi sulla scrittura di algoritmi in un linguaggio semiformale, utile all acquisizione delle abilità essenziali per implementare algoritmi in qualsiasi linguaggio di programmazione.
DettagliStrutture di controllo iterative
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero
DettagliNote per la Lezione 6 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli
DettagliSistemi di Elaborazione delle Informazioni
SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli
DettagliIstruzioni Condizionali
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali
DettagliIl Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)
Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande
DettagliElaboratore Elettronico
L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati)) per produrre rre altri oggetti
DettagliPer gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
DettagliCorso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota
Corso di Problemi ed algoritmi Ing Pasquale Rota Argomenti Problemi ed algoritmi Proprietà degli algoritmi Pseucodice Diagrammi di flusso Problemi ed algoritmi - Ing. Pasquale Rota 2 Proprietà degli algoritmi
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliIntroduzione agli Algoritmi
Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi
DettagliLe funzioni in JavaScript. Modularizzazione
Modularizzazione Quando abbiamo a che fare con un problema complesso spesso lo suddividiamo in problemi più semplici che risolviamo separatamente, per poi combinare insieme le soluzioni dei sottoproblemi
DettagliAlgoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
DettagliFasi della programmazione. Gabriella Trucco
Fasi della programmazione Gabriella Trucco Algoritmi Uso di algoritmi nella vita quotidiana Algoritmo: sequenza di passi che, se intrapresa da un esecutore, permette di ottenere i risultati attesi a partire
DettagliPROBLEMI ALGORITMI E PROGRAMMAZIONE
PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL
DettagliProblemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,
DettagliALGORITMI: PROPRIETÀ FONDAMENTALI
ALGORITMI: PROPRIETÀ FONDAMENTALI Non si può risolvere un problema senza prima fissare un insieme di azioni, i di mosse elementari possibili per l'esecutore. Bisogna conoscerne le caratteristiche, le mosse
DettagliRichiami di Fondamenti di Informatica - 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Richiami di Fondamenti di Informatica - 1 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Richiami di FdI-1
DettagliEquazioni di secondo grado
Equazioni di secondo grado Un equazione di secondo grado può sempre essere ridotta nella forma: a + bx + c 0 forma normale con a 0. Le lettere a, b, c sono rappresentano i coefficienti. Solo b e c possono
DettagliLaboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso
Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso
DettagliProblema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
DettagliRapida Nota sulla Rappresentazione dei Caratteri
TECNOLOGIA DIGITALE TECNOLOGIA DIGITALE (segue) CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale Dati ed operazioni vengono codificati tramite sequenze di bit 8 bit
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento
DettagliSviluppo dei Programmi
Programmazione I a.a 2009-2010 docente: Carmine Gravino Sviluppo dei Programmi Presentazione realizzata dal Prof. Andrea De Lucia 1 Analisi e Specifica Sviluppo dei programmi Progettazione Codifica Verifica
DettagliProblemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliUnità aritmetica e logica
Aritmetica del calcolatore Capitolo 9 Unità aritmetica e logica n Esegue le operazioni aritmetiche e logiche n Ogni altra componente nel calcolatore serve questa unità n Gestisce gli interi n Può gestire
DettagliCORSO DI PROGRAMMAZIONE
ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE INTRODUZIONE ALLE ISTRUZIONI ITERATIVE DISPENSA 03.01 03-01_Iterazioni_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative
DettagliLaboratorio di Informatica
Laboratorio di Informatica Facoltà di Ingegneria Clinica BCLR Dispense di Paolo Caressa e Raffaele Nicolussi. Lezione 5. Versione per Python 3. Docenti: Alberto Marchetti Spaccamela Raffaele Nicolussi
DettagliInformatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande/ VERSIONE 1 1) In Python, se scrivo v = [ ] in un programma, vuol dire che a) v è un quadrato b) v è un insieme vuoto
DettagliLaboratorio di Python
Istruzione di condizione, Input da tastiera, Università di Bologna 6 e 8 marzo 2013 Sommario 1 Tipi di errore e Debugging 2 3 4 Outline Tipi di errore e Debugging 1 Tipi di errore e Debugging 2 3 4 Esercizio
DettagliEsempi di Problemi Iterativi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E07 C. Limongelli Dicembre 2011 1 Contenuti q Esercizi: Palindroma Anagramma Fibonacci 2 Palindroma q Scrivere un programma che
DettagliMODULO 07. La soluzione dei problemi mediante gli algoritmi
MODULO 07 La soluzione dei problemi mediante gli algoritmi MODULO 07 Unità didattica 02 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando
Dettaglipublic static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
DettagliEsempi di Problemi Iterativi
Corso di Laurea Ingegneria Civile Elementi di Informatica Esempi di Problemi Iterativi C. Limongelli Esempi di Problemi Iterativi 1 Contenuti Esercizi: Palindroma Anagramma Fibonacci Esempi di Problemi
DettagliCalcolare x n = x x x (n volte)
Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
DettagliCorso di Informatica di Base
Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere
DettagliIntroduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzioni di controllo Iterative Condizionali Algoritmi e Diagrammi di flusso Esercizi 28/03/2011 2 Istruzioni iterative while do
DettagliCorso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010
Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1
DettagliClassi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array
Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a
DettagliDiagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliRappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle
DettagliCorso di Fondamenti di Informatica. La ricorsione
Corso di Fondamenti di Informatica La ricorsione La ricorsione Si dice che un oggetto (una struttura dati, una funzione matematica, un concetto ) è ricorsivo se è possibile darne una definizione in termini
DettagliInformatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario
Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario Daniele Pighin pighin@fbk.eu FBK Via Sommarive, 18 I-38050 Trento, Italy February 27, 2008 Outline 1 Algebra di Boole
DettagliArray. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Prova Intermedia Marzo 2011 http://www.dia.uniroma3.it/~java/fondinf/ Prova Intermedia 1 Modalità della Prova Intermedia La Prova Intermedia
DettagliLaboratorio di Python
, Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono
DettagliCorso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione
Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array
DettagliCosa è l Informatica?
Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliRappresentazione con i diagrammi di flusso (Flow - chart)
Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo
DettagliLABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi
LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna Partiamo da un
DettagliJava: Definire Classi e Creare Oggetti
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito
DettagliMetodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliCostrutti di iterazione
Costrutti di iterazione Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2017 2018 Iterazione Data un espressione logica e un blocco di attività
DettagliIl concetto di calcolatore e di algoritmo
Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica
DettagliCorso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
DettagliProgrammi e Oggetti Software
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 06 Programmi e Oggetti Software Marzo 2010 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il
DettagliAppunti su Indipendenza Lineare di Vettori
Appunti su Indipendenza Lineare di Vettori Claudia Fassino a.a. Queste dispense, relative a una parte del corso di Matematica Computazionale (Laurea in Informatica), rappresentano solo un aiuto per lo
DettagliProgrammazione dinamica
Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione
DettagliProblemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)
Problemi e algoritmi Il che cosa e il come Il che cosa ed il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come
DettagliLezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
DettagliIntroduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 8 gennaio 8 Il problema è simile all esercizio 5.6 del libro di testo di algoritmi (Introduzione agli algoritmi e strutture dati, T.
DettagliProblemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come
Problemi e algoritmi Il che cosa e il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come effettuare un calcolo
DettagliSommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash
Funzioni Hash Sommario Tabelle ad indirizzamento diretto e hash Funzioni Hash Requisiti Metodo della divisione Metodo della moltiplicazione Funzione Hash Universale La ricerca Talvolta si richiede che
DettagliLuigi Piroddi
Automazione industriale dispense del corso (a.a. 2008/2009) 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliLa principale modalità di calcolo è l applicazione di funzioni
1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un
DettagliInformatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
DettagliCos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
Dettagli