Agenda. Premessa (2/2) Premessa (1/2) Fondamenti di Informatica T2 Modulo 2. Ing. Elena Nardini Università di Bologna A.A.
|
|
- Tito Abate
- 7 anni fa
- Visualizzazioni
Transcript
1 Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Agenda 1. Creazione e test di un componente Frazione 2. Calcolo del codice fiscale Corso di Laurea in Ingegneria Informatica Anno accademico 2008/ Componente Frazione (1/2) Realizzare un componente Frazione come tipo di dato astratto (ADT) progettato come tipo valore (una volta nata il suo valore è costante) dotato di una opportuna interfaccia che consenta di: Interfaccia di base Costruire una nuova frazione partendo da numeratore e denominatore Ottenere numeratore e denominatore della frazione Stabilire se la frazione è uguale ad una data Ottenere una rappresentazione stringa della frazione Ottenere una nuova frazione che rappresenti lo stesso valore in forma ridotta ai minimi termini Componente Frazione (2/2) Interfaccia estesa Somma la frazione con un altra e restituisce una nuova frazione che rappresenta il risultato Moltiplicare la frazione con un altra e restituisce una nuova frazione che rappresenta il risultato Somma di un insieme di frazioni e restituisce una nuova frazione che rappresenta il risultato Moltiplicazione di un insieme di frazioni e restituisce una nuova frazione che rappresenta il risultato e di cui sia opportunamente verificato il funzionamento (il testing non è mai opzionale!!!) Verificare il corretto funzionamento di ogni singolo aspetto del componente. 3 4 Premessa (1/2) Due generiche frazioni n / m e p / q sono equivalenti se vale la seguente uguaglianza: n * q = m * p. ESEMPIO: 1/2 è equivalente a 3/6 e a 9/18 È possibile determinare la forma minima equivalente di una frazione data; cioè è possibile trasformare una frazione in un altra equivalente ed irriducibile. La riduzione ai minimi termini di una frazione si effettua dividendo il numeratore e il denominatore per il loro massimo comun divisore (M.C.D.) ESEMPIO: il M.C.D del numeratore e denominatore della frazione 14/8 è 2 la frazione ridotta ai minimi termini è 7/4 5 Premessa (2/2) Il M.C.D. di due numeri è il più grande numero positivo intero che li divide senza resto È possibile calcolare in modo efficiente il M.C.D. di due numeri utilizzando l algoritmo di Euclide L algoritmo funziona nel seguente modo: 1. Supponiamo che a e b siano i valori di cui calcolare il M.C.D. 2. Se il resto della divisione fra a e b è uguale a zero, b rappresenta il M.C.D. fra a e b 3. Se invece il resto è diverso da 0, si pone a = b e b = resto e si riparte dal punto 2 IMPORTANTE: in Java, il resto della divisione fra due numeri a e b si calcola attraverso l operatore % resto = a%b 6
2 ADT si possono avere tante entità dello stesso tipo quante ne servono In C occorre definire una struct, un po di funzioni e occorre gestire l allocazione esplicita della memoria tramite malloc/free (funzioni di libreria) per creare nuove entità. In Java occorre definire una classe, un po di metodi e per creare nuove entità è sufficiente usare new (keyword di linguaggio); una volta terminato di usare il componente (nessun riferimento punta più ad esso), il garbage collector si occuperà della deallocazione. 7 Stato del componente: è caratterizzato dai valori di numeratore e denominatore Interi Per costruire ci vuole un costruttore Prende in ingresso sufficienti valori e li imposta nello stato interno per far sì che, una volta costruita, la frazione sia in uno stato consistente almeno numeratore e denominatore altre situazioni? Se la frazione è negativa? È negativo il numeratore o il denominatore? E se sono negativi entrambi? Comunque siano i parametri in ingresso al costruttore, normalizziamo il tutto in modo che il segno sia conservato dal solo numeratore; il denominatore è sempre positivo. 8 Per costruire ci vuole un costruttore Prende in ingresso sufficienti parametri per far si che una volta costruita la frazione sia in uno stato consistente almeno numeratore e denominatore altre situazioni? Una volta che tali valori sono dentro l entità, occorre poterli vedere da fuori Due accessor pubblici (getx) che consentano di ottenere numeratore e denominatore 9 Per cambiare numeratore e denominatore GIAMMAI, sarebbe un suicidio informatico! Sarebbe come dire che il numero 3 vale cinque e non più tre Piuttosto si può fare in modo che un riferimento ad una frazione punti non più alla frazione che vale 1/3 ma ad un altra che vale 1/5 Poi, come si può avere la certezza che la frazione non sia condivisa? Sarebbe un dramma 10 Rappresentazione in stringa (metodo tostring) Un metodo che non ha in ingresso alcun parametro poiché fornisce una rappresentazione dello stato interno dell entità nel caso specifico il suo valore Test di uguaglianza/equivalenza (metodo equals) Un metodo che prende in ingresso un altra frazione ed indica se la frazione presa in ingresso uguale a quella su cui è stato invocato il metodo In questo modo, il concetto di uguaglianza è definito dal programmatore Nel caso specifico uguale significa equivalente 3/12 equivale a ¼ Riduzione ai minimi termini (metodo riduzioneminimitermini) Restituisce una nuova frazione senza alterare quella su cui è stato invocato il metodo Si tratta di valori costanti! Test del componente Verificare il funzionamento di ogni parte Costruire la frazione Verificare che i metodi accesso restituiscano i valori attesi Verificare che il metodo tostring restituisca la rappresentazione attesa Verificare che il metodo riduzioneminimitermini restituisca la frazione attesa Costruire altre frazioni e verificare che il metodo equals si comporti nel modo atteso 11 12
3 Domanda La funzione relativa al calcolo dell MCD è un metodo della classe Frazione? Si consideri che: Il calcolo dell MCD non serve solo per l ADT Frazione ma anche in altri contesti Il calcolo dell MCD non ha necessità di uno stato Il calcolo dell MCD è un metodo statico e pubblico di una classe di servizio (MyMath) 13 MyMath public final class MyMath public static int mcd(int a, int b) int resto; if (b > a) int tmp = a; a = b; b = tmp; do resto = a % b; a = b; b = resto; while (resto!= 0); return a; 14 Frazione: stato e costruttori public class Frazione private int num, den; public Frazione(int num, int den) boolean negativo = num * den < 0; this.num = negativo? -Math.abs(num) : Math.abs(num); this.den = Math.abs(den); public Frazione(int num) this(num, 1); 15 Frazione: accessors e minterms public int getnum() return this.num; public int getden() return den; public Frazione minterm() int mcd = MyMath.mcd(Math.abs(getNum()), getden()); int n = getnum() / mcd; int d = getden() / mcd; return new Frazione(n, d); 16 Frazione: equals e tostring public boolean equals(frazione f) return f.getnum() * getden() == f.getden() * getnum(); public String tostring() String frazione = ""; int num = getnum(); int den = getden(); if (getden() == 1) frazione += num; else frazione += num + "/" + den; return frazione; 17 public class MyMain MyMain public static void main(string[] args) Frazione frazione1 = new Frazione(3, 12); // 3/12 System.out.println("Creata la frazione " + frazione1); Frazione frazione2 = new Frazione(1, 4); // 1/4 System.out.println("Creata la frazione " + frazione2); Frazione frazione3 = new Frazione(4, 1); // 4 System.out.println("Creata la frazione " + frazione3); Frazione frazioneridotta = frazione1.minterm(); // 1/4 System.out.println("La frazione " + frazione1 + " ridotta ai minimi termini diventa " + frazioneridotta + "\n"); 18
4 MyMain if (frazione1.equals(frazione2)) // true else frazione2 + " sono equivalenti"); frazione2 + " non sono equivalenti" + "\n"); if (frazione1.equals(frazione3)) // false else frazione3 + " sono equivalenti"); frazione3 + " non sono equivalenti" + "\n"); 19 MyMain (valori negativi) Frazione frazione4 = new Frazione(-1, 8); // -1/8 System.out.println("Creata la frazione " + frazione4); Frazione frazione5 = new Frazione(2, -3); // -2/3 System.out.println("Creata la frazione " + frazione5); Frazione frazione6 = new Frazione(-5, -7); // 5/7 System.out.println("Creata la frazione " +frazione6+"\n"); frazioneridotta = frazione5.minterm(); // -2/3 System.out.println("La frazione " + frazione5 + " ridotta ai minimi termini diventa " +frazioneridotta+ "\n"); 20 Estensione del componente Estendere la classe Frazione con le seguenti funzionalità: Somma di due frazioni Prodotto di due frazioni Somma di un insieme di frazioni Prodotto di un insieme di frazioni Estensione del componente Come sono i metodi che realizzano le estensioni? Somma/Prodotto: vengono invocati su una frazione prendono in ingresso la frazione da sommare/moltiplicare restituiscono una nuova frazione risultato dell operazione Somma/Prodotto di un insieme di frazioni Non ha senso, sebbene sia possibile, che possano essere invocati su una frazione: Per realizzare entrambi i metodi si sfruttino Quale di quelle dell insieme? i metodi somma e prodotto È sensato che siano metodi statici! prendono in ingresso un array di frazioni Restituiscono una nuova frazione risultato dell operazione Codice: somma e prodotto Codice: somma e prodotto su array di frazioni public class Frazione public static Frazione sum(frazione[] fs) private int num, den; Frazione tmp = new Frazione(0, 1); // Elemento neutro public Frazione sum(frazione f) for (Frazione f : fs) tmp = tmp.sum(f); int n = this.num * f.den + this.den * f.num; return tmp; int d = this.den * f.den; return new Frazione(n, d); public static Frazione mul(frazione[] fs) public Frazione mul(frazione f) Frazione tmp = new Frazione(1, 1); // Elemento neutro for (Frazione f : fs) int n = this.num * f.num; tmp = tmp.mul(f); int d = this.den * f.den; return tmp; return new Frazione(n, d); 23 24
5 Trattamento degli errori L attuale contratto di utilizzo prevede che colui che crea la Frazione è responsabile del risultato Calcolo del Codice Fiscale L algoritmo è semplice Creare una frazione con zero al denominatore è possibile ma prima o poi scoppia tutto Non è il massimo poiché il bug, in questo caso, è evidentemente a MONTE della costruzione mentre se ne subiscono le conseguenze a VALLE della stessa quando si usa la frazione Non avendo (ancora) un modo di interrompere brutalmente l esecuzione e di notificare al chiamante il problema, quali soluzioni si possono trovare? Ci vorrebbe qualcosa che verificasse i parametri PRIMA della costruzione Qualcosa cosa? Fatevi venire in mente Qualcosa e anche come Basta conoscere bene gli strumenti Oggi verrà progettata la soluzione In laboratorio la implementerete Codice Fiscale: Regole Riprendiamo le regole per il calcolo Cognome: le prime tre consonanti; se non bastano, le vocali; se non bastano ancora, una (o più) X ROSSI RSS SUN SNU WU WUX Nome: la prima, la terza e la quarta consonante; se non ci sono quattro consonanti, si usano le prime tre; se non bastano, si usano le vocali; se non bastano ancora, una (o più) X MARIO MRA GASTONE GTN Codice Fiscale: Regole Anno: le ultime due cifre Mese: A, B, C, D, E, H, L, M, P, R, S, T dove A è Gennaio, T è Dicembre Giorno: Uomini: il numero del giorno Donne: il numero del giorno aumentato di 40 01/02/1978 (maschio) 78B01 25/12/1969 (femmina) 69T Codice Fiscale: Regole Comune di nascita: sigla che si trova su apposite tabelle: Bologna = A944 Reggio E. = H223 Alfonsine (RA) = A191 Jesi (AN) = E388 Ecc Carattere di controllo: Le cifre da 0 a 9 vengono sostituite dalle corrispondenti lettere da A a J si ottiene un codice composto di sole lettere Alle lettere di posto pari viene assegnato un valore da 0 a 25, pari alla loro posizione nell alfabeto (A = 0) Alle lettere di posto dispari viene assegnato un valore in base alla mappa: B A K P L C Q D R E V O S F T G U H M I N J W Z Y X Si sommano tutti i valori di cui sopra e si prende il risultato modulo 26 Calcolo del Codice Fiscale: Progetto Per ognuna delle regole di cui sopra è bene predisporre un metodo diverso in modo da suddividere quindi semplificare il problema Tutti questi metodi faranno parte di una classe (è obbligatorio ) Per funzionare hanno bisogno di uno stato? NO! SONO METODI STATICI! Un metodo principale avrà il compito di coordinare il lavoro di tutti gli altri e dovrà essere visibile dall esterno (gli altri possono essere privati) Façade 29 30
6 Progetto: le mappe Nelle regole relative al mese e al carattere di controllo, viene utilizzata una mappa che consente di recuperare una lettera partendo da un numero Due possibilità: Array: char[] mappa = new char[] B, A, ; Stringa: String mappa = BAK ; In entrambi i casi la posizione di un carattere è il numero con cui si entra nella mappa Array: char c = mappa[numero]; Stringa: char c = mappa.charat(numero); Perché è meglio la stringa dell array? Progetto: le mappe Una mappa speciale deve associare il nome del comune al relativo codice Metodo più stupido: creare una serie di if else per il confronto della stringa in ingresso coi nomi dei comuni gestiti; quando si trova il match, output del codice relativo Metodo meno stupido: creare un array di oggetti che rappresentino delle coppie Comune, Codice Progetto: vocali e consonanti Come riconoscere vocali e consonanti? Ipotesi: nome e cognome sono di sole lettere (no altri caratteri) Si può creare un insieme (nel senso dato precedentemente) che contenga le sole vocali (sono di meno!) e supporre che ciò che non è vocale non può che essere consonante Ad esempio: String VOCALI = "AEIOU ; char[] vocali = new char[] A, E, I, O, U ; omocodia? Se c è un problema di omocodia occorre applicare al codice già creato la regola corrispondente sostituendo le cifre numeriche, a partire da destra, con le lettere della mappa che segue: 0 L 1 M 2 N 3 P 4 Q 5 R 6 S 7 T 8 U 9 V Sostituire una cifra alla volta al bisogno Un metodo statico pubblico che prende in ingresso un codice fiscale e ne produce un altro dopo aver sostituito UNA cifra Interfaccia del componente Un metodo statico pubblico calcolacodicefiscale Input: cognome, nome, giorno mese e anno di nascita, comune di nascita, sesso Output: il codice fiscale Un metodo statico pubblico risolviomocodia Input: un codice fiscale Output: un codice fiscale Metodi privati Metodi di utilità isconsonante: prende in ingresso un carattere e restituisce un booleano che indica se si tratta di una consonante Altro?? Metodi di trasformazione calcolacognome: prende in ingresso il cognome e restituisce tre lettere secondo la regola già espressa calcolanome: prende in ingresso il nome e restituisce tre lettere secondo la regola già espressa calcolaanno: prende in ingresso l anno e restituisce le ultime due cifre calcolamese: prende in ingresso il mese e restituisce un carattere calcolagiornosesso: prende in ingresso il giorno e il sesso e restituisce due cifre calcolacomune: prende in ingresso il comune e restituisce i relativo codice calcolacarcontrollo: prende in ingresso TUTTO il codice finora calcolato e restituisce il carattere di controllo corrispondente 35 36
7 Altri metodi L implementazione è: una regola = un metodo Alcune regole sarebbe bene spezzarle in metodi diversi per fattorizzare e semplificare ulteriormente Esempio: metodo che si occupa di aggiungere vocali o X nella codifica di nome/cognome (è uguale per entrambe le regole) 37
Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Agenda
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Agenda 1. Creazione e test di un componente
DettagliESERCIZIO: CODICE FISCALE
ESERCIZIO: CODICE FISCALE Problema: Scrivere un programma che, a partire dai dati anagrafici, calcoli il codice fiscale di una persona. Il C.F. è composto di 5 parti: tre lettere identificative del cognome
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
DettagliEsercizio 1 - Componente Matrice (1/3) Esercizio 1 - Componente Matrice (3/3) Esercizio 1 - Componente Matrice (2/3)
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T Modulo - Lab Corso di Laurea in Ingegneria Informatica Anno accademico 008/009 - Componente Matrice (1/3) Realizzare
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
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
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
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
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
DettagliPassaggio di parametri
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E05 C. Limongelli Dicembre 2011 1 Contenuti q Passaggio di tipi primitivi q Passaggio di tipi riferimento: Stringhe q Passaggio
DettagliIL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
DettagliARRAY RESTITUITI DA FUNZIONI
ARRAY RESTITUITI DA FUNZIONI Gli array Java possono essere restituiti come risultato di funzioni, come qualunque altro oggetto ESEMPIO int[] creatabellaquadrati(int n) ESEMPIO DI ARRAY RESTITUITO ESEMPIO
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[]
DettagliEsercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti
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: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4
Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario
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
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
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
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
DettagliCapitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73
Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe
DettagliGestione dei compiti
1 of 18 23/10/2006 103 Gestione dei compiti Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Domanda n. 1 Argomento: Logica booleana Domanda: Qual e' il risultato
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.
DettagliJava Le stringhe. Stringhe
Java Le stringhe 1 Le stringhe in Java In Java le stringhe non sono semplicemente array di caratteri terminati con zero come avviene in C In Java le stringhe sono oggetti appartenenti alla classe String
DettagliDEFINIZIONE. L unità frazionaria 1n (con n 0) rappresenta una sola delle n parti uguali in cui è stato diviso l intero.
L unità frazionaria DEFINIZIONE. L unità frazionaria n con n 0 rappresenta una sola delle n parti uguali in cui è stato diviso l intero. Sono unità frazionarie: ognuna di esse indica che l intero è stato
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
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
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
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
DettagliLICEO STATALE G.P. VIEUSSEUX. Classico, Scientifico e. Scientifico opzione scienze applicate
1. Utilizzando la codifica ASCII scrivi in binario le lettere a (minuscolo) e B (MAIUSCOLO) Ricordiamo che A = 65 B=66 ecco tutto l alfabeto di 26 lettere 65 66 67 68 69 70 71 72 73 74 75 76 77 A B C D
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
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
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array 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 di Laurea
Dettagli623 = , 413 = , 210 = , 203 =
Elementi di Algebra e Logica 2008. 3. Aritmetica dei numeri interi. 1. Determinare tutti i numeri primi 100 p 120. Sol. :) :) :) 2. (i) Dimostrare che se n 2 non è primo, allora esiste un primo p che divide
Dettagli3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;
Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso
Dettagli10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 10 STRUTTURE DI CONTROLLO REPEAT E WHILE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
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
Dettagli0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL
0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL Salvatore Orlando & Marta Simeoni Arch. Elab. - S. Orlando 1 0ROWLSOLFD]LRQHWUDQXPHULLQWHUL Oltre ai circuiti per realizzare somme e sottrazioni di interi, è
DettagliScaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1
Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 23 27 novembre 2013
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
DettagliLa codifica digitale
La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
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
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e overloading Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori 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
DettagliA1. Calcolo in Q. A1.1 Tabelline e potenze. A1.2 Scomposizione in fattori di numeri interi MCD e mcm
A. Calcolo in Q Questo capitolo tratta argomenti che solitamente sono già stati svolti alle scuole medie ed elementari. Tali argomenti sono necessari per affrontare il programma delle scuole superiori.
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliESERCIZIARIO DI MATEMATICA
Dipartimento di rete matematica ESERCIZIARIO DI MATEMATICA PER PREPARARSI ALLA SCUOLA SUPERIORE progetto Continuità SCUOLA SECONDARIA DI I GRADO Istituti comprensivi: Riva Riva Arco Dro Valle dei Laghi
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
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
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
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
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
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
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliInformazioni generali
Informazioni generali Esercitazioni del corso di Fondamenti di informatica Tutor: Ing. Rughetti Diego Esercitazione: Giovedì 14.30-16.00 Tutoraggio: Giovedì 16.15-17.45 Contatto: rughettidiego@tiscali.it
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
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
Dettagliosservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1
Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De
DettagliLiceo scientifico Pascal Manerbio Esercizi di matematica per le vacanze estive
Di alcuni esercizi non verranno riportati i risultati perché renderebbero inutile lo svolgimento degli stessi. Gli esercizi seguenti risulteranno utili se i calcoli saranno eseguiti mentalmente applicando
DettagliIntroduzione al C++ (continua)
Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliDefinizione di classi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti
DettagliRappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
DettagliEsonero di Informatica I. Ingegneria Medica
Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l
DettagliParte Seconda. Prova di selezione culturale
Parte Seconda Prova di selezione culturale TEORIA DEGLI INSIEMI MATEMATICA ARITMETICA Insieme = gruppo di elementi di cui si può stabilire inequivocabilmente almeno una caratteristica in comune. Esempi:
DettagliSTRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
DettagliLaboratorio di Python
Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di
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
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliAllocazione dinamica
Allocazione dinamica Quando non si sa a priori quanto un array debba essere grande allocazione dinamica di array Quando si deve restituire un array come risultato di una funzione (a meno di non barare
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
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,
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
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliLaboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero
DettagliFondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso
Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore
Dettagli5 - Istruzioni condizionali
5 - Istruzioni condizionali 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
DettagliTesting. Esempio. Esempio. Soluzione 1. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009. Come fare???
Università degli Studi di Bologna Facoltà di Ingegneria Testing Prima di rilasciare una qualsiasi applicazione/librerie è buona norma effettuare una serie di test opportuni Fondamenti di Informatica T2
DettagliFrazioni algebriche. Osserviamo che un espressione di questo tipo si ottiene talvolta quando ci si propone di ottenere il quoziente di due monomi.
Frazioni algebriche 14 14.1 Definizione di frazione algebrica Diamo la seguente definizione: Definizione 14.1. Si definisce frazione algebrica un espressione del tipo A B polinomi. dove A e B sono Osserviamo
Dettagli= < < < < < Matematica 1
NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato
DettagliLe operazioni fondamentali in R
La REGOLA DEI SEGNI: 1. ADDIZIONE Le operazioni fondamentali in R + per + dà + per dà + + per dà per + dà Esempi: (+5) + (+9) = + 5 + 9 = + 14 (+5) + ( 3) = + 5 3 = + 2 ( 5) + ( 9) = 5 9 = 14 ( 5) + (+3)
DettagliConvenzioni di chiamata a procedure
Università degli Studi di Milano Laboratorio di Architettura degli Elaboratori II Corso di Laurea in Informatica, A.A. 2016-2017 Convenzioni di chiamata a procedure Nicola Basilico Dipartimento di Informatica
DettagliMoltiplicazione e Divisione tra numeri relativi
Moltiplicazione e Divisione tra numeri relativi Salvatore Orlando & Marta Simeoni Arch. Elab.A M. Simeoni 1 Moltiplicazione tra numeri interi Oltre ai circuiti per realizzare somme e sottrazioni di interi,
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
DettagliCORSO ZERO DI MATEMATICA
UNIVERSITÀ DEGLI STUDI DI PALERMO FACOLTÀ DI ARCHITETTURA CORSO ZERO DI MATEMATICA RADICALI Dr. Erasmo Modica erasmo@galois.it LE RADICI Abbiamo visto che l insieme dei numeri reali è costituito da tutti
DettagliLa classe Object. Ce li ha anche HelloWorld!!!
La classe Object Ogni classe estende implicitamente la classe java.lang.object La classe java.lang.object contiene dei metodi che vengono implicitamente ereditati I metodi ereditati sono: clone equals
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
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
DettagliADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)
ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI
DettagliProgrammazione orientata agli oggetti Oggetti Composti. Oggetti composti
Programmazione orientata agli oggetti Oggetti Composti 1 - 1 Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi
DettagliFondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi
DettagliRappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2012-2013 Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica
DettagliCompito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI
Compito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI Esercizio 1 Si consideri la seguente classe che specifica liste di interi: public class List { private int head; private List tail; public
Dettagli