Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Agenda
|
|
- Mariana Stella
- 7 anni fa
- Visualizzazioni
Transcript
1 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 Frazione 2. Calcolo del codice fiscale 2
2 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 3 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. 4
3 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
4 Realizzazione del componente 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 Realizzazione del componente 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
5 Realizzazione del componente 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 Realizzazione del componente 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
6 Realizzazione del componente 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! 11 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 12
7 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
8 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); 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
9 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 MyMain public class 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
10 MyMain if (frazione1.equals(frazione2)) // true System.out.println("Le frazioni " + frazione1 + " e " + frazione2 + " sono equivalenti"); else System.out.println("Le frazioni " + frazione1 + " e " + frazione2 + " non sono equivalenti" + "\n"); if (frazione1.equals(frazione3)) // false System.out.println("Le frazioni " + frazione1 + " e " + frazione3 + " sono equivalenti"); else System.out.println("Le frazioni " + frazione1 + " e " + frazione3 + " non sono equivalenti" + "\n"); 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
11 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 21 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: Quale di quelle dell insieme? Per realizzare entrambi i metodi si sfruttino i metodi somma e prodotto È sensato che siano metodi statici! prendono in ingresso un array di frazioni Restituiscono una nuova frazione risultato dell operazione 22
12 Codice: somma e prodotto public class Frazione private int num, den;... public Frazione sum(frazione f) int n = this.num * f.den + this.den * f.num; int d = this.den * f.den; return new Frazione(n, d); public Frazione mul(frazione f) int n = this.num * f.num; int d = this.den * f.den; return new Frazione(n, d); 23 Codice: somma e prodotto su array di frazioni public static Frazione sum(frazione[] fs) Frazione tmp = new Frazione(0, 1); // Elemento neutro for (Frazione f : fs) tmp = tmp.sum(f); return tmp; public static Frazione mul(frazione[] fs) Frazione tmp = new Frazione(1, 1); // Elemento neutro for (Frazione f : fs) tmp = tmp.mul(f); return tmp; 24
13 Trattamento degli errori L attuale contratto di utilizzo prevede che colui che crea la Frazione è responsabile del risultato 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 25 Calcolo del Codice Fiscale L algoritmo è semplice Basta conoscere bene gli strumenti Oggi verrà progettata la soluzione In laboratorio la implementerete 26
14 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 27 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) 69T65 28
15 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 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 30
16 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? 31 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 32
17 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 ; 33 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. 34
18 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 35 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 36
19 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
Agenda. Premessa (2/2) Premessa (1/2) Fondamenti di Informatica T2 Modulo 2. Ing. Elena Nardini Università di Bologna A.A.
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
DettagliFondamenti di Informatica T2 Modulo 2 Lab 1. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Esercizio 1
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Lab Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Esercizio Ancora frazioni Creare il
DettagliEsercizio 1. Esercizio 1 - Soluzione. Esercizio 1. Esercizio 1 - Soluzione. Esercizio 1 - Soluzione. Fondamenti di Informatica T2 Modulo 2 Lab 1
Università egli Stui i Bologna Facoltà i Ingegneria Fonamenti i Informatica T Moulo Lab Corso i Laurea in Ingegneria Informatica Anno accaemico 008/009 Esercizio Ancora frazioni Creare il componente Frazione
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
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
DettagliTecniche iterative. Walter Didimo
Tecniche iterative Walter Didimo Tecniche iterative In questa lezione svolgeremo alcuni esercizi di definizione di classi con metodi che usano istruzioni condizionali istruzioni iterative Gli esercizi
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
DettagliPassaggio di parametri
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E06 Passaggio di parametri C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Passaggio di parametri 1 Contenuti
DettagliLaboratorio di informatica Ingegneria meccanica
Laboratorio di informatica Ingegneria meccanica Esercitazione 8 21 Novembre 2007 Funzioni in C Un programma C si compone di funzioni E' disponibile una collezione predefinita di funzioni che possono essere
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
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
DettagliInsiemi numerici. Alcune definizioni. La retta dei numeri
Insiemi numerici Q Z N 0 1 1 1 4 4 N = 0,1,,,4, = insieme dei numeri naturali Z = insieme dei numeri interi (formato dall unione dei numeri naturali e dei numeri interi negativi) Q = insieme dei numeri
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
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[]
DettagliIL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma
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
DettagliProgrammazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi
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
DettagliCominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi
Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la
DettagliCorso di Laurea Ingegneria Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Esercizi di ripasso Carla Limongelli Gennaio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Prova Intermedia 1 Modalità della Prova Intermedia
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 04 Introduzione ai Tipi astratti di dato A. Miola Febbraio 2007 http://www.dia.uniroma3.it/~java/fondinf2/ Introduzione ADT 1
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
DettagliA. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica
informatica Java basi del linguaggio Alberto Ferrari Informatica struttura di un programma Java /** * Classe EsempioProgramma * Un esempio di programmazione in Java * @author 4A Informatica */ public class
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
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
DettagliLe Frazioni. Esempio: il giorno è la settima parte della settimana 1 della settimana l ora è 1 del giorno il minuto è 1 dell ora il secondo è 1 60
Le Frazioni si dice UNITA FRAZIONARIA il simbolo che rappresenta una delle parti uguali in cui è stata divisa una grandezza che si considera come unità o intero. 1\4 1\4 1\4 1\4 1 4 Esempio: il giorno
DettagliEsercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe/array Uguaglianza tra oggetti Utilizzo di classi come componenti
DettagliEsercizi su array di array
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E10 C. Limongelli Gennaio 2010 1 Contenuti Fusione di due array ordinati, con eliminazione di duplicati Verifica array bidimensionale
DettagliUn tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo
TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti
DettagliIL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma
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
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
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
DettagliProgrammazione in Java (I modulo) Lezione 11: Metodi della classe Math
Programmazione in Java (I modulo) Lezione 11: Metodi della classe Math Dalla lezione scorsa... Ricordiamo cosa sono e come si definiscono i metodi statici Metodi static o metodi di classe Sono metodi che
DettagliCorso di Laurea Ingegneria Informatica. Dispensa E11. Esercizi su array e. Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E11 Esercizi su array e array di array C. Limongelli Gennaio 2012 1 Contenuti Fusione di due array ordinati, con eliminazione di
DettagliSystem.out.print("\tATTENZIONE: hi inserito un valore non valido!\n");
Creare un applicazione console che dato l indice della borsa di Milano nel giorno precedente, calcola la variazione percentuale rispetto al valore dell indice del giorno corrente. import java.io.*; public
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
DettagliCast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double
Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di
DettagliArray. Definizione e utilizzo di vettori
Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];
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
DettagliTipi strutturati - struct
Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente
DettagliL assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Abbiamo visto È conveniente definire una macchina astratta C Lo stato della macchina ci
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
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
DettagliPreparazione allo Scritto di Programmazione
Preparazione allo Scritto di Programmazione Informatica / Comunicazione Digitale A.A. 2013/2014 1. Una riga di testo è detta numerica se e solo se contiene più cifre che caratteri di altro genere. Ad esempio,
DettagliJava Gli array. Array
Java Gli array 1 Gli array In generale un array è una sequenza di locazioni di memoria, che contengono entità dello stesso tipo, e a cui si può fare riferimento con un nome comune Le entità che compongono
DettagliJAVA GENERICS. Angelo Di Iorio Università di Bologna
JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal
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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati
Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il
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
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
DettagliEsercitazione Fondamenti di informatica 2
Esercitazione Fondamenti di informatica 2 Array ed Oggetti JAVA 13 marzo 2006 L oggetto atrice Realizzare una classe oggetto atrice. Lo stato dell oggetto Vettore, è rappresentato da un array di array
DettagliStringhe ed Array. Fondamenti di Informatica A-K
Stringhe ed Array Fondamenti di Informatica A-K Esercitazione 4 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti,
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
DettagliFondamenti di Informatica
Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Object Oriented Programming: Fondamenti Prof. Stefano Mariani Dott. Alket Cecaj Indice Introduzione all OOP Classi vs. oggetti Campi
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.
DettagliLa Ricorsione. Carla Binucci e Walter Didimo
La Ricorsione Carla Binucci e Walter Didimo Definizione induttiva di funzioni Una funzione definita in modo induttivo è una funzione definita in termini di sé stessa ad esempio la funzione f(n) = n! (fattoriale
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
Dettagli//riferimento a una sequenza di oggetti della classe Importo
Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 29 novembre 2010 Negli esercizi fate riferimento alle
Dettaglicout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni int n, ris; cout n; ris = n*2; cout
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
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
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 20 febbraio 2012
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 20 febbraio 2012 TEMPO DISPONIBILE: 1 ora Negli
DettagliVending Machine Problemi?
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Vending Machine Problemi? La riconfigurabilità
DettagliE7 Esercizi sul Capitolo 7 Realizzazione di Classi
E7 Esercizi sul Capitolo 7 Realizzazione di Classi Esercizio 1 (esercizio 7.1 del libro di testo). Nella classe Studente definita di seguito indicare le variabili d istanza, le variabili di classe e le
DettagliOOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi
OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo
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
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
Dettagli! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !
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 24 26 maggio 2015!
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
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 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
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
DettagliCapitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61
Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli
DettagliFondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso
Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso AA 2018/2019 Tutor: Lorenzo Rosa lorenzo.rosa@unibo.it 2 Esercitazione 4 Introduzione al calcolatore e Java Linguaggio Java, basi
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
DettagliTipi riferimento e stringhe
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 8 Tipi riferimento e stringhe A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Tipi riferimento e stringhe 1
DettagliCorso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple.
Domanda n. 1 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple 8-Nov-2004 Argomento: Rappresentazione dell'informazione
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 18. Iterazione. Maggio Iterazione
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 18 Maggio 2010 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica
DettagliInformatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1 1) In un diagramma di flusso, la rappresentazione di un ciclo WHILE include sicuramente almeno:
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
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
DettagliRealizzare un applicazione console che stampi la somma dei primi n numeri dispari oppure pari (a scelta dell operatore). import java.io.
Realizzare un applicazione console che stampi la somma dei primi n numeri dispari oppure pari (a scelta dell operatore). import java.io.*; public class M1_13 { public static void main(string args[]) throws
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;
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
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
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
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
Dettagli