Compitino del 24 novembre 2008: soluzione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Compitino del 24 novembre 2008: soluzione"

Transcript

1 Corso di Programmazione Anno Accademico Prof. Giovanni Pighizzini Compitino del 24 novembre 2008: soluzione Esercizio 1 Completate il seguente metodo main in modo che legga un numero intero inserito dall utente. Il metodo deve poi: (a) visualizzare in lettere il numero letto come numero cardinale (b) visualizzare in lettere il numero letto come numero ordinale (c) visualizzare, sempre in lettere, la lunghezza delle stringhe visualizzate ai punti (a) e (b). I messaggi devono essere forniti secondo il formato utilizzato nell esempio di esecuzione seguente: Numero? 22 ventidue ventiduesimo La parola ventidue contiene otto lettere La parola ventiduesimo contiene dodici lettere public static void main(string[] args) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager();... Soluzione Sviluppiamo il metodo main secondo i seguenti punti: lettura del numero calcolo e visualizzazione delle stringhe corrispondenti al numero cardinale e ordinale scritto in lettere (punti (a) e (b) del testo dell esercizio) calcolo e visualizzazione della lunghezza in lettere delle stringhe ai punti (a) e (b). c 2008 Giovanni Pighizzini Il contenuto di queste pagine è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle pagine sono di proprietà dell autore. Le pagine possono essere riprodotte ed utilizzate liberamente dagli studenti, dagli istituti di ricerca, scolastici e universitari afferenti al Ministero dell Istruzione, dell Università e della Ricerca, per scopi istituzionali, non a fine di lucro. Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente a, le riproduzioni a mezzo stampa, su supporti magnetici o su reti di calcolatori) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell autore. L informazione contenuta in queste pagine è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, ecc. L informazione contenuta in queste pagine è soggetta a cambiamenti senza preavviso. L autore non si assume alcuna responsabilità per il contenuto di queste pagine (ivi incluse, ma non limitatamente a, la correttezza, completezza, applicabilità ed aggiornamento dell informazione). In ogni caso non può essere dichiarata conformità all informazione contenuta in queste pagine. In ogni caso questa nota di copyright non deve mai essere rimossa e deve essere riportata anche in utilizzi parziali.

2 Compitino del 24 novembre 2008: soluzione 2 La lettura avviene banalmente, mediante il metodo readint dell oggetto riferito da in. Il risultato viene memorizzato in un opportuna variabile di tipo int che chiamiamo n: int n = in.readint("numero? "); Per il secondo punto utilizziamo la classe Intero: le sue istanze rappresentano numeri interi. Vi sono inoltre i metodi tostring e toordinalstring che permettono di ottenere le stringhe che rappresentano il numero in lettere come cardinale e come ordinale. Costruiamo dunque un oggetto della classe Intero che rappresenta il numero contenuto nella variabile n. Otteniamo poi, mediante i due metodi, le stringhe da visualizzare. I riferimenti a tali stringhe vengono memorizzati in due variabili, di nomi rispettivamente ordinale e cardinale, utili poi per realizzare il punto successivo: Intero numero = new Intero(n); String cardinale = numero.tostring(); out.println(cardinale); String ordinale = numero.toordinalstring(); out.println(ordinale); Vediamo ora come realizzare l ultimo punto. In particolare ci concentriamo sulla visualizzazione della lunghezza, espressa in lettere, della stringa che rappresenta il numero cardinale, e su come ottenere il penultimo messaggio fornito nell esempio (per l ultimo messaggio, relativo alla stringa che rappresenta il numero cardinale, si procede allo stesso modo). I passi da compiere sono i seguenti: chiediamo alla stringa che rappresenta il numero cardinale di fornirci la propria lunghezza (invocazione del metodo length) e la memorizziamo in una variabile lung di tipo int; nel messaggio da visualizzare dovremo scrivere in lettere il valore contenuto in lung: a tal fine ricorreremo di nuovo al metodo tostring della classe Intero; costruiamo un oggetto di tipo Intero che rappresenta lung: Intero lunghezza = new Intero(lung); visualizziamo poi il messaggio, secondo il formato richiesto, ricorrendo, tra l altro, al risultato del metodo tostring dell oggetto riferito da lunghezza: out.println("la parola " + cardinale + " contiene " + lunghezza.tostring() + " lettere"); Per maggiore leggibilità, possiamo lasciare implicita l invocazione del metodo tostring. Ecco il metodo main completo, inserito in una classe, e preceduto dalla direttive di importazione (non richieste per lo svolgimento del compitino): import prog.io.consoleinputmanager; import prog.io.consoleoutputmanager; import prog.utili.intero; class InteroStringhe { public static void main(string[] a) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager();

3 Compitino del 24 novembre 2008: soluzione 3 int n = in.readint("numero? "); Intero numero = new Intero(n); String cardinale = numero.tostring(); out.println(cardinale); String ordinale = numero.toordinalstring(); out.println(ordinale); int lung = cardinale.length(); Intero lunghezza = new Intero(lung); out.println("la parola " + cardinale + " contiene " + lunghezza + " lettere"); lung = ordinale.length(); lunghezza = new Intero(lung); out.println("la parola " + ordinale + " contiene " + lunghezza + " lettere"); Note ed errori frequenti Per ottenere le stringhe che rappresentano il numero letto in lettere come cardinale e come ordinale (richieste ai punti (a) e (b)), è sufficiente costruire un oggetto di tipo intero (a partire dal numero letto) e invocarne i metodi tostring e toordinalstring. Non ha senso costruire due oggetti differenti a partire dallo stesso numero, e invocare per uno il metodo tostring e per l altro il metodo toordinalstring. Il testo dell esercizio al punto (c) richiede che le lunghezze delle stringhe siano espresse in lettere (come anche evidenziato nell esempio di esecuzione). Molti studenti invece hanno fornito tali lunghezze in cifre. Per il punto (c) occorrono due oggetti di tipo Intero diversi (corrispondenti alle due lunghezze da scrivere in lettere). Nella soluzione proposta qui i due oggetti vengono costruiti e utilizzati uno alla volta (mediante la stessa variabile riferimento lunghezza) per fornire i due messaggi richiesti. È bene evitare di ricalcolare le stesse quantità più volte. La stringa che rappresenta in lettere come cardinale il numero letto viene utilizzata sia nel messaggio al punto (a) sia in quello al punto (c). Analogamente, la stringa che rappresenta in lettere come ordinale il numero letto viene utilizzata sia nel messaggio al punto (b) sia in quello al punto (c). È inutile ricalcolarle (una volta per (a) o (b) e una volta per (c), invocando due volte i metodi tostring e toordinalstring). È meglio invocare i due metodi una volta sola, memorizzando il risultato tramite riferimenti di tipo String (cardinale e ordinale nell esempio di soluzione). Al fine di migliorare la leggibilità del codice, è opportuno calcolare i dati richiesti quando devono essere effettivamente utilizzati. Ad esempio, è meglio ricavare le lunghezze richieste per i due messaggi al punto (c) e costruire gli oggetti di tipo Intero utili per ottenere le stringhe che esprimono in lettere tali lunghezze, immediatamente prima della visualizzazione di ciascuno dei due messaggi. Non vi è alcuna ragione per anticipare tali operazioni prima della visualizzazione dei messaggi richiesti ai punti (a) e (b). Fare ciò produce come unico

4 Compitino del 24 novembre 2008: soluzione 4 effetto una notevole riduzione della leggibilità e quindi della successiva modificabilità del codice. È inutile inizializzare una variabile, se il valore iniziale non viene utilizzato a nessuno scopo. Ad esempio non ha senso scrivere: int n = 0; se il valore 0 non deve essere utilizzato e poi si assegna a n un altro valore, ad esempio con l istruzione n = in.readint("numero? "); Analogamente, non ha senso scrivere Meglio Intero numero = null; numero = new Intero(n); Intero numero; numero = new Intero(n); o meglio ancora la scrittura più compatta: Esercizio 2 Intero numero = new Intero(n); Considerate la seguente dichiarazione di variabile: Sequenza<String> seq; //si riferisce a una sequenza di oggetti String Supponete che seq si riferisca a un oggetto già costruito (quindi non contiene null). Scrivete una porzione di codice alla fine della quale una variabile ncapital (da definire opportunamente) contenga il numero totale di stringhe presenti nella sequenza che iniziano con una lettera maiuscola. Ad esempio, se la sequenza contiene le stringhe "cane", "Gatto","","Lupo","Formica" la variabile ncapital dopo l esecuzione dovrà contenere 3. Soluzione Possiamo utilizzare un ciclo for-each in cui a ogni iterazione si esamina una stringa, controllando se il primo carattere è una maiuscola, incrementando in tal caso ncapital (dichiarata e inizializzata a 0 prima del ciclo): int ncapital = 0; for (String s: seq)...se la stringa riferita da s inizia con una maiuscola allora incrementa ncapital... Possiamo estrarre il primo carattere dalla stringa con il metodo chatat, indicando come argomento la posizione 0: char c = s.chatat(0);

5 Compitino del 24 novembre 2008: soluzione 5 Controlliamo poi che esso sia una maiuscola, ricorrendo al metodo statico isuppercase della classe Character: if (Character.isUpperCase(c)) ncapital++; Tuttavia la stringa riferita da s potrebbe essere vuota: in questo caso non è possibile estrarre il primo carattere. Pertanto, il codice precedente va eseguito solo nel caso la stringa non sia vuota. Dunque, l istruzione da inserire all interno del ciclo for-each è la seguente: if (!s.equals("")) { char c = s.charat(0); if (Character.isUpperCase(c)) ncapital++; Possiamo evitare di introdurre la variabile c, scrivendo la chiamata del metodo charat direttamente come argomento di isuppercase. Possiamo inoltre sfruttare l operatore di congiunzione e la lazy evaluation, utilizzando così una sola selezione (di fatto, a ogni iterazione dobbiamo unicamente decidere se incrementare oppure no la variabile ncapital). Con queste modifiche, otteniamo infine il seguente codice: int ncapital = 0; for (String s: seq) if (!s.equals("") && Character.isUpperCase(s.charAt(0))) ncapital++; Note ed errori frequenti Uso scorretto del costrutto for-each. Le posizioni nelle stringhe sono contate a partire da 0 e non da 1. Ogni elemento della sequenza riferita da seq è un oggetto di tipo String. Tra le stringhe che possono apparire nella sequenza (come evidenziato anche nell esempio fornito) ci può essere la stringa vuota. Nel caso di stringa vuota il carattere di posizione 0 non esiste e pertanto l invocazione di s.charat(0) produrrebbe un errore in esecuzione. Prima di esaminare il primo carattere di una stringa, è dunque necessario controllare che essa non sia vuota 1. Un metodo statico è un servizio offerto da una classe e pertanto deve essere invocato indicando il nome della classe che lo fornisce (vedere anche Esercizio 3). Esercizio 3 Completate il seguente metodo main in modo che legga: (a) un importo soglia espresso in euro (di cui l utente fornisce euro e centesimi) (b) un intero n. Il metodo deve poi: (c) generare a caso n prezzi in lire, inferiori a un milione, visualizzandoli man mano vengono generati, insieme ai corrispondenti in euro (d) comunicare, infine, quanti tra i prezzi in euro ottenuti al punto (c) superano l importo soglia fornito inizialmente. 1 Si osservi invece che tra gli elementi di una Sequenza non vi possono essere riferimenti null.

6 Compitino del 24 novembre 2008: soluzione 6 Si noti che non è necessario memorizzare la sequenza dei prezzi. Esempio di esecuzione: Inserire l importo: --- euro? cent? 20 Quanti prezzi devo generare? 5 Lire in Euro: 35,08 Lire in Euro: 142,79 Lire in Euro: 144,23 Lire in Euro: 74,25 Lire in Euro: 502,82 Numero importi maggiori di 100,20: 3 public static void main(string[] args) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager();... Soluzione Come evidenziato nel testo dell esercizio, non è necessario memorizzare l intera sequenza, ma è sufficiente memorizzare, man mano si legge la sequenza, il numero di importi che superano la soglia (oltre che la soglia stessa). Il metodo main richiesto può essere strutturato nei seguenti punti: Lettura dell importo soglia. Lettura del numero di prezzi da generare. Generazione e visualizzazione dei prezzi, e conteggio di quelli superiori alla soglia. Comunicazione del risultato. Per il primo punto, occorre leggere il numero di euro e di centesimi, e costruire poi, con questi dati, un oggetto della classe Importo. Il riferimento a questo oggetto viene posto in una variabile di nome soglia: out.println("inserire l importo:"); int euro = in.readint(" --- euro? "); int cent = in.readint(" --- cent? "); Importo soglia = new Importo(euro, cent); Il secondo punto è banale. Assegnamo il numero di prezzi da leggere a una variabile int di nome quanti: int quanti = in.readint("quanti prezzi devo generare? "); Il terzo punto è più articolato: occorre generare un numero di prezzi in lire pari al valore contenuto in quanti, e contare quanti di essi, trasformati in euro, superano la soglia. Questa fase si basa su un ciclo for il cui corpo viene ripetuto quanti volte. Occorre inoltre un contatore, inizializzato a zero, per contare i prezzi che superano la soglia:

7 Compitino del 24 novembre 2008: soluzione 7 int contamaggiori = 0; //generazione ed elaborazione della sequenza... for (int i = 0; i < quanti; i++) {...genera un prezzo in lire......convertilo in euro... if (il prezzo in euro supera la soglia) contamaggiori = contamaggiori + 1; Per generare i prezzi in lire, ricorriamo alla classe Random: gli oggetti di tale classe sono generatori di numeri a caso. Dunque, prima del ciclo, creiamo un generatore di numeri a caso, invocando il costruttore senza argomenti di Random: Random generatore = new Random(); Gli oggetti di Random offrono un metodo nextint che ricevendo come argomento un intero x, genera un numero n tale che 0 n < x. Poiché il testo richiede che i prezzi generati siano inferiori a un milione, utilizzeremo x= Pertanto, per generare un prezzo, all interno del ciclo scriveremo: int prezzo = generatore.nextint( ); Per la conversione del prezzo da lire in euro, ricorriamo al metodo statico fromlire di Importo: Importo prezzoineuro = Importo.fromLire(prezzo); Infine, la condizione della selezione può essere valutata ricorrendo al metodo ismaggiore dell oggetto riferito da prezzoineuro: prezzoineuro.ismaggiore(soglia) Riepilogando, ecco il codice che abbiamo sviluppato per il terzo punto, con l aggiunta di un istruzione per la visualizzazione del prezzo generato in lire e in euro, come richiesto dal testo dell esercizio: int contamaggiori = 0; Random generatore = new Random(); for (int i = 0; i < quanti; i++) { int prezzo = generatore.nextint( ); Importo prezzoineuro = Importo.fromLire(prezzo); out.println("lire " + prezzo + " - in Euro: " + prezzoineuro); if (prezzoineuro.ismaggiore(soglia)) contamaggiori = contamaggiori + 1; Infine, il messaggio finale può essere visualizzato mediante la seguente istruzione: out.println("numero importi maggiori di " + soglia + ": " + contamaggiori); Segue il codice completo del metodo main così ottenuto, inserito in una classe, con l aggiunta delle direttive di importazione (non richieste per lo svolgimento dell esercizio) import prog.io.consoleinputmanager; import prog.io.consoleoutputmanager; import prog.utili.importo;

8 Compitino del 24 novembre 2008: soluzione 8 import java.util.random; class ImportiACaso { public static void main(string[] a) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager(); //lettura della soglia out.println("inserire l importo:"); int euro = in.readint(" --- euro? "); int cent = in.readint(" --- cent? "); Importo soglia = new Importo(euro, cent); //lettura del numero di prezzi da generare int quanti = in.readint("quanti prezzi devo generare? "); //generazione ed elaborazione dei prezzi int contamaggiori = 0; Random generatore = new Random(); for (int i = 0; i < quanti; i++) { int prezzo = generatore.nextint( ); //numero a caso >=0 e < 1milione Importo prezzoineuro = Importo.fromLire(prezzo); out.println("lire " + prezzo + " - in Euro: " + prezzoineuro); if (prezzoineuro.ismaggiore(soglia)) contamaggiori = contamaggiori + 1; //comunicazione del risultato out.println("numero importi maggiori di " + soglia + ": " + contamaggiori); Note ed errori frequenti I metodi statici sono servizi messi a disposizione dalle classi e non dai singoli oggetti. Sebbene il compilatore accetti che un metodo statico venga chiamato tramite il riferimento a un oggetto della classe, scrivendo ad esempio imp.fromlire(prezzo), dove la variabile imp è dichiarata di tipo Importo, è concettualmente sbagliato, oltre che contorto, richiedere a uno specifico oggetto un servizio fornito dalla classe. La scrittura Importo imp = new Importo(0); Importo prezzoineuro = imp.fromlire(prezzo); è pessima: perché definire il riferimento imp e costruire un oggetto che non serve a nulla? Il metodo fromlire è un servizio fornito dalla classe e la sua esecuzione va richiesta alla classe stessa senza creare riferimenti e oggetti inutili che complicano e rendono incomprensibile il codice. Come già indicato per l Esercizio 1, devono essere evitate le inizializzazioni inutili. Mentre è necessario inizializzare la variabile contamaggiori a zero, in quanto lo zero rappresenta il valore da cui si inizia a contare (inizialmente il numero di importi maggiori della soglia è zero), non ha alcun senso scrivere, ad esempio:

9 Compitino del 24 novembre 2008: soluzione 9 int prezzo = 0; prezzo = generatore.nextint( ); o scrivere: Importo prezzoineuro = new Importo(0); prezzoineuro = Importo.fromLire(prezzo); Il testo richiedeve di generare un prezzo in lire inferiore a un milione. Quindi, non deve essere tra i valori generabili. Attenzione ai confronti. Le condizioni prezzoineuro.ismaggiore(soglia) e soglia.isminore(prezzoineuro) non sono equivalenti (vedere anche l Esercizio 4). Per risolvere l esercizio non è necessario memorizzare la sequenza degli importi (come tra l altro evidenziato nel testo dell esercizio stesso). Esercizio 4 Sia x una variabile di tipo double. (a) Esprimete in linguaggio Java la condizione il valore contenuto in x è inferiore a 10 ma non a 4, senza ricorrere all operatore di negazione. (b) Esprimete in linguaggio Java la negazione della condizione precedente, senza ricorrere all operatore di negazione. Soluzione La prima parte della condizione ( il valore contenuto in x è inferiore a 10 ) si esprime come x < 10 la seconda come ( non è inferiore a 4 ) x >= 4 La condizione richiede che il valore di x soddisfi entrambi i vincoli. Pertanto la condizione è la congiunzione, cioè l AND, delle due, e cioè: x >=4 && x < 10 La negazione della condizione data può essere scritta come il valore contenuto in x non è inferiore a 10 o è inferiore a 4, che può essere espressa come: x < 4 x >= 10

10 Compitino del 24 novembre 2008: soluzione 10 Note ed errori frequenti Non si devono confondere gli operatori di congiunzione e di disgiunzione. Attenzione alla negazione degli operatori di confronto: la negazione di < non è >, ma >=. Le negazione di <= è >, ecc. Poiché la variabile x è di tipo double, i letterali utilizzati nelle condizioni possono essere esplicitati come double, scrivendo ad esempio 4d, 4., 4.0, ecc., al posto del letterale 4 di tipo int. Esercizio 5 Supponete che la variabile x sia dichiarata di tipo int e che le sia assegnato un valore iniziale. Per ciascuna delle seguenti istruzioni, rispondete alle domande indicate. (a) while (x + x == x) out.println(x); Il ciclo può essere infinito? Se avete risposto sì fornite un valore iniziale di x per cui ciò avvenga. Esiste un valore iniziale di x per cui l istruzione out.println(x) viene eseguita una sola volta? Se avete risposto sì fornite un esempio di tale valore. (b) while (x!= x / 2) x = x - 1; Se x contiene inizialmente un valore positivo, il ciclo può essere infinito? Se avete risposto sì fornite un valore iniziale di x per cui ciò avvenga. Esiste un valore iniziale di x per cui l istruzione x = x - 1 viene eseguita una sola volta? Se avete risposto sì fornite un esempio di tale valore. Soluzione Osserviamo che nel corpo del ciclo al punto (a) la variabile x non viene mai modificata. Pertanto, se la condizione inizialmente è vera, cioè se il corpo del ciclo viene eseguito almeno una volta, essa resterà sempre vera. Se x contiene 0, dunque, il ciclo è infinito. Quindi la risposta alla prima domanda è affermativa. D altra parte, se x contiene un valore diverso da 0, la condizione è falsa: il ciclo termina immediatamente senza che l istruzione venga eseguita. Di conseguenza la risposta alla seconda domanda è negativa. Nel caso al punto (b), osserviamo che l unico valore di tipo int per x tale che x!= x /2 risulta falsa è 0. Dato un valore iniziale di x positivo, la condizione risulta vera, pertanto viene eseguito il corpo del ciclo, decrementando x di 1. Se il nuovo valore è positivo, di nuovo la condizione è vera e si ripete allo stesso modo. Continuando a decrementare, prima o poi x arriverà a contenere 0. A quel punto la condizione risulta falsa e il ciclo termina. Pertanto la risposta alla prima domanda è negativa. Inoltre, in base al ragionamento precedente, possiamo osservare che se x contiene inizialmente 1, l istruzione all interno del ciclo verrà eseguita una sola volta.

11 Compitino del 24 novembre 2008: soluzione 11 Note ed errori frequenti Le variabili sono intere e la divisione è dunque tra interi. Se si risponde no alla domanda il ciclo può essere infinito?, come è possibile poi fornire un valore per cui ciò avviene? Esercizio 6 Siano x, y e z tre variabili di tipo int. Per ciascuno dei seguenti frammenti di codice e per i valori iniziali delle variabili x e y x 8, y 8 x 8, y 2 scrivete il valore che assumerà z dopo l esecuzione del frammento: (a) Intero i = new Intero(x); Intero j = new Intero(y); if (!i.equals(j)) z = x + y; else z = x - y; if (x == y) z = 2 * z + 1; (b) Intero i = new Intero(x); Intero j = new Intero(y); if (i!= j) z = x + y; else z = x - y; if (x == y) z = 2 * z + 1; Soluzione caso valori iniziali x 8, y 8 Le prime due istruzioni di ogni frammento di codice creano due oggetti distinti (in quanto viene richiamato due volte il costruttore) entrambi rappresentanti il numero 8. I riferimenti i e j si riferiscono a tali oggetti. Nel caso (a), la condizione i.equals(j) è vera, in quanto i due oggetti rappresentano lo stesso numero. Pertanto la condizione della prima selezione, che ne è la negazione, è falsa. Dunque alla variabile z viene assegnata la differenza tra x e y cioè 0. La seconda selezione confronta i valori delle variabili primitive x e y. Poiché contengono lo stesso valore, la condizione è vera. Pertanto viene eseguita l istruzione, che ha l effetto di assegnare 1 a z. Dunque, al termine dell esecuzione del frammento di codice la variabile z conterrà 1. Nel caso (b), la condizione i!= j è vera, in quanto i contenuti di i e j (cioè i riferimenti) sono diversi (cioè si riferiscono a due oggetti distinti). Pertanto a z viene assegnata la somma dei valori in x e y cioè 16. Anche in questo caso la condizione della seconda selezione è vera e dunque viene eseguito l assegnamento finale a z che, in questo modo, conterrà alla fine 33. Soluzione caso valori iniziali x 8, y 2 Le prime due istruzioni di ogni frammento di codice creano due oggetti distinti. Quello riferito da i rappresenta l intero 8, quello riferito da j l intero 2. Nel caso (a), la condizione i.equals(j) è falsa (gli oggetti riferiti da i e da j non rappresentano lo stesso numero). Pertanto la condizione della prima selezione è vera. Anche nel caso (b), la condizione della prima selezione è vera, in quanto i due riferimenti i e j sono diversi. Pertanto, in entrambi i casi a z viene assegnata la somma di x e y, cioè 10. La condizione della successiva selezione è falsa. Pertanto, il valore finale in z è 10.

12 Compitino del 24 novembre 2008: soluzione 12 Note ed errori frequenti Per programmare correttamente è indispensabile conoscere la differenza tra confronto tra riferimenti (effettuato mediante gli operatori di confronto == e!=) e confronto tra oggetti (effettuato mediante i metodi equals disponibili nelle varie classi). È sbagliato affermare che il compilatore segnala un errore sulla condizione i!= j: essa è lecita. In particolare, in questa condizione i e j sono due espressioni di tipo riferimento (più precisamente del tipo riferimento Intero). Pertanto queste espressioni confrontano i riferimenti presenti in i e j (rivedere il Paragrafo 3.3 del libro di testo).

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2013 2014 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi

Dettagli

Linguaggio C Debugging

Linguaggio C Debugging FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota

Dettagli

Linguaggio C I puntatori

Linguaggio C I puntatori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C I puntatori 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Introduzione alla programmazione strutturata

Introduzione alla programmazione strutturata FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio

Dettagli

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica FODAMETI DI IFORMATICA Prof. PIER LUCA MOTESSORO Prof. ELIO TOPPAO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio Toppano

Dettagli

9 - 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 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

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione II Compitino (Vers. B) Programmazione II Compitino (Vers. B) 17 dicembre 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi

Dettagli

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x): Programmazione I 11 gennaio 2012 Matricola:........................................................................ Cognome:........................................................................ Nome:...........................................................................

Dettagli

Programma sorgente, compilatore, file oggetto, file eseguibile. Traduzione effettuata dal compilatore. Dichiarazione di variabili (esempi)

Programma sorgente, compilatore, file oggetto, file eseguibile. Traduzione effettuata dal compilatore. Dichiarazione di variabili (esempi) FODAMETI DI IFORMATICA Prof. PIER LUCA MOTESSORO Facoltà di Ingegneria Università degli Studi di Udine Dal linguaggio macchina al linguaggio C 2000 Pier Luca Montessoro (si veda la nota di copyright alla

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. 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

Dettagli

Linguaggio C Struct e union

Linguaggio C Struct e union FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Struct e union 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Tecniche di compressione senza perdita

Tecniche di compressione senza perdita FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Tecniche di compressione senza perdita 2000 Pier Luca Montessoro (si veda la nota di copyright

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. 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

Dettagli

Codifica dei numeri interi positivi e negativi

Codifica dei numeri interi positivi e negativi FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Codifica dei numeri interi positivi e negativi 2000 Pier Luca Montessoro (si veda la nota di copyright

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli 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

Dettagli

Linguaggio C e sistema operativo

Linguaggio C e sistema operativo FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C e sistema operativo 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Programmazione II Compitino (Vers. A)

Programmazione II Compitino (Vers. A) Programmazione II Compitino (Vers. A) 17 dicembre 2015 Cognome... Nome... Matricola... Anno di corso... Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi al corpo del

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione II Compitino (Vers. B) Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi

Dettagli

Input/output in C e in C++

Input/output in C e in C++ FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Codifica del video

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Codifica del video FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Codifica del video 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

Dettagli

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright

Dettagli

Le basi del linguaggio Java

Le 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

Dettagli

Lezione 6 programmazione in Java

Lezione 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

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

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

Dettagli

Programmazione II Compitino (Vers. A)

Programmazione II Compitino (Vers. A) Programmazione II Compitino (Vers. A) 15 gennaio 2015 Cognome... Nome... Matricola... Anno di corso... Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi al corpo del

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Classi 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 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

Dettagli

Introduzione all uso degli oggetti in Java (parte II) Walter Didimo

Introduzione all uso degli oggetti in Java (parte II) Walter Didimo Introduzione all uso degli oggetti in Java (parte II) Walter Didimo Esercizio all uso di oggetti Nel corso viene fornita una classe i cui oggetti permettono di leggere dati immessi dalla tastiera la classe

Dettagli

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

Architettura del processore. Modello di calcolatore. Caratteristiche del processore. Caratteristiche del processore. Fondamenti di Informatica

Architettura del processore. Modello di calcolatore. Caratteristiche del processore. Caratteristiche del processore. Fondamenti di Informatica FONDAMENTI DI INFORMATICA Prof PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architettura e funzionamento del calcolatore 20 Pier Luca Montessoro (si veda la nota di copyright

Dettagli

Metro VLAN Switch e standard 802.1ad

Metro VLAN Switch e standard 802.1ad Metro VLAN Switch e standard 802.1ad Pietro Nicoletti piero[]studioreti.it VLAN-Metro-802.1ad - 1 P. Nicoletti: si veda nota a pag. 2 Nota di Copyright Questo insieme di trasparenze (detto nel seguito

Dettagli

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Iterazione. 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

Dettagli

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. 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

Dettagli

Laboratorio di Programmazione Laurea in Bioinformatica

Laboratorio di Programmazione Laurea in Bioinformatica Laboratorio di Programmazione Laurea in Bioinformatica 15 dicembre 2008 1 Programmazione strutturata 1.1 Esercizio 1 Si scriva lo pseudocodice di un programma che calcola la media di due numeri reali.

Dettagli

Rappresentazione degli algoritmi

Rappresentazione 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

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. 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

Dettagli

Richiami di Fondamenti di Informatica - 1

Richiami 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

Dettagli

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2) Fondamenti di Informatica.

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2) Fondamenti di Informatica. FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Le trappole del linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Trasmissione bilanciata e amplificatore differenziale

Trasmissione bilanciata e amplificatore differenziale E.M.I. Shield e Grounding: analisi applicata ai sistemi di cablaggio strutturato Trasmissione bilanciata e amplificatore differenziale Pier Luca Montessoro pierluca.montessoro@diegm.uniud.it DIFFAMP -

Dettagli

Programmazione II Compitino (Vers. A)

Programmazione II Compitino (Vers. A) Programmazione II Compitino (Vers. A) 16 gennaio 2009 Cognome Jekyll Nome Doctor Matricola 112233 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi al corpo del metodo

Dettagli

Controllo e correzione degli errori

Controllo e correzione degli errori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Controllo e correzione degli errori 2000 Pier Luca Montessoro si veda la nota di copyright alla

Dettagli

Il linguaggio C. Puntatori e dintorni

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

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi 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

La programmazione in linguaggio C

La programmazione in linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Note sulla macchina a stack

Note sulla macchina a stack Linguaggi e Traduttori Anno Accademico 2014 2015 Prof. Giovanni Pighizzini Note sulla macchina a stack 20 Maggio 2015 Questo documento contiene alcune note sulla macchina virtuale utilizzata per gli esempi

Dettagli

IL CABLAGGIO STRUTTURATO DI CATEGORIA 6

IL CABLAGGIO STRUTTURATO DI CATEGORIA 6 IL CABLAGGIO STRUTTURATO DI CATEGORIA 6 21 maggio 2002 PIER LUCA MONTESSORO Dip. di Ingegneria Elettrica Gestionale e Meccanica Università degli Studi di Udine in collaborazione con 2002 Pier Luca Montessoro

Dettagli

Codifica dei segnali audio

Codifica dei segnali audio FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Codifica dei segnali audio 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide

Dettagli

C: panoramica. Violetta Lonati

C: 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

Dettagli

Problemi, algoritmi e oggetti

Problemi, 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

Dettagli

Istruzioni di ripetizione in Java 1

Istruzioni di ripetizione in Java 1 in Java Corso di laurea in Informatica Le istruzioni di ripetizione consentono di eseguire molte volte la stessa Si chiamano anche cicli Come le istruzioni condizionali, i cicli sono controllati da espressioni

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Le strutture di controllo

Le strutture di controllo INFORMATICA B Ingegneria Elettrica Le strutture di controllo Selezione un esempio introduttivo Si disegni il diagramma di flusso di un algoritmo che chiede all utente un valore intero e visualizza il suo

Dettagli

14 - Metodi e Costruttori

14 - 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio

Dettagli

19 - 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 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

Dettagli

Metodi statici. Dichiarazione e chiamata di metodi statici

Metodi 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

Dettagli

Shielding. E.M.I. Shield e Grounding: analisi applicata ai sistemi di cablaggio strutturato. Pier Luca Montessoro.

Shielding. E.M.I. Shield e Grounding: analisi applicata ai sistemi di cablaggio strutturato. Pier Luca Montessoro. E.M.I. Shield e Grounding: analisi applicata ai sistemi di cablaggio strutturato Shielding Pier Luca Montessoro pierluca.montessoro@diegm.uniud.it SHIELD - 1 Copyright: si veda nota a pag. 2 Nota di Copyright

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

Gestione della memoria di massa e file system

Gestione della memoria di massa e file system FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Gestione della memoria di massa e file system 2000 Pier Luca Montessoro (si veda la nota di copyright

Dettagli

Capitolo 2. Protocolli e contratti. c 2005 Pearson Education Italia Capitolo 2-1 / 82

Capitolo 2. Protocolli e contratti. c 2005 Pearson Education Italia Capitolo 2-1 / 82 Capitolo 2 Protocolli e contratti c 2005 Pearson Education Italia Capitolo 2-1 / 82 Sommario: Protocolli e contratti 1 Nozioni base della programmazione OO La programmazione ad oggetti Protocolli e contratti

Dettagli

Calcolare x n = x x x (n volte)

Calcolare 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

Dettagli

Fondamenti 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 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

Dettagli

Il cablaggio strutturato degli edifici: cosa c e` ` di nuovo?

Il cablaggio strutturato degli edifici: cosa c e` ` di nuovo? Il cablaggio strutturato degli edifici: cosa c e` ` di nuovo? Pier Luca Montessoro Università degli Studi di Udine Dip. di Ing. Elettrica, Gestionale e Meccanica e-mail: montessoro@uniud.it www: http://www.uniud.it/montessoro

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti 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

Dettagli

Programmazione, 5 a lezione

Programmazione, 5 a lezione Programmazione, 5 a lezione Eugenio Omodeo Dipartimento di Matematica e Informatica, Università degli Studi di Trieste. Trieste, 12.10.2010 Esecuzione sequenziale I All avvio di un programma, il processo

Dettagli

Modulo 2: Strutture fondamentali della programmazione Java

Modulo 2: Strutture fondamentali della programmazione Java Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

Linguaggio C Struttura dei programmi

Linguaggio C Struttura dei programmi FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Struttura dei programmi 2001 Pier Luca Montessoro - Davide

Dettagli

Dall analisi alla codifica (1)

Dall 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

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

Dettagli

La voce di Elvis Presley, la chitarra di David Gilmour e le funzioni di callback in linguaggio C

La voce di Elvis Presley, la chitarra di David Gilmour e le funzioni di callback in linguaggio C La voce di Elvis Presley, la chitarra di David Gilmour e le funzioni di callback in linguaggio C l ingegneria elettronica nella musica moderna Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università

Dettagli

Esercizi di Addressing. Fulvio Risso Guido Marchetto

Esercizi di Addressing. Fulvio Risso Guido Marchetto Esercizi di Addressing Fulvio Risso Guido Marchetto 1 Nota di Copyright Questo insieme di trasparenze (detto nel seguito slides) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali.

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative

Dettagli

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino 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

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Introduzione alla programmazione Esercizi risolti

Introduzione alla programmazione Esercizi risolti Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma

Dettagli

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso 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

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

Uso di metodi statici. Walter Didimo

Uso di metodi statici. Walter Didimo Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un

Dettagli

Progettazione delle dorsali in fibra ottica

Progettazione delle dorsali in fibra ottica Progettazione delle dorsali in fibra ottica Mario Baldi Politecnico di Torino mario.baldi@polito.it staff.polito.it/mario.baldi Nota di Copyright Questo insieme di trasparenze (detto nel seguito slide)

Dettagli

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

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

Dettagli

La Gestione della Memoria. Carla Binucci e Walter Didimo

La Gestione della Memoria. Carla Binucci e Walter Didimo La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

Programmazione con Java

Programmazione 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:

Dettagli

Laboratorio di programmazione

Laboratorio 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

Dettagli

5 - Istruzioni condizionali

5 - 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

Dettagli

18 - 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 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

Dettagli

Nota di Copyright. Interfaccia audio. Libreria portaudio. Callback function. Un piccolo problema. Fondamenti di Informatica

Nota di Copyright. Interfaccia audio. Libreria portaudio. Callback function. Un piccolo problema. Fondamenti di Informatica FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Libreria in linguaggio C per elaborazione audio in real time 2010 Pier Luca Montessoro (si veda

Dettagli

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Corso 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

Dettagli

Linguaggio C Espressioni e operatori

Linguaggio C Espressioni e operatori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing.DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Espressioni e operatori 2001 Pier Luca Montessoro - Davide

Dettagli