Soluzione del primo compitino

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Soluzione del primo compitino"

Transcript

1 Corso di Programmazione Anno Accademico Prof. Giovanni Pighizzini Soluzione del primo compitino Esercizio 1 Considerate la seguente dichiarazione di variabile: Sequenza<String> elenco; //si riferisce a una sequenza di oggetti String Supponete che elenco si riferisca a un oggetto già costruito (quindi non contiene null). Scrivete una porzione di codice alla fine della quale due variabili lungtot e nonlettere (da definire opportunamente) contengano, rispettivamente, la somma delle lunghezze delle stringhe presenti nella sequenza e il numero di stringhe che contengono almeno un carattere che non sia una lettera. Ad esempio, se la sequenza contiene le stringhe "Cane" "44 gatti" "" "123" "ZzZ!!!" le variabili lungtot e nonlettere dopo l esecuzione dovranno contenere rispettivamente 21 e 3. Soluzione Possiamo utilizzare un ciclo for-each in cui ad ogni iterazione si esamina una stringa della sequenza. for (String s: elenco)...esamina la stringa riferita da s... Per ciascuna stringa esaminata si deve: aggiungere alla variabile lungtot, dichiarata e inizializzata a zero prima del ciclo, la lunghezza della stringa in esame, ottenibile mediante il metodo length dell oggetto riferito da s; stabilire se la stringa riferita da s contenga almeno un carattere che non sia una lettera e, in tal caso, aggiungere 1 alla variabile nlettere (anch essa dichiarata e inizializzata a zero prima del ciclo). Esaminiamo più in dettaglio questa operazione: possiamo utilizzare una variabile nonlettera di tipo boolean, destinata a contenere true se si è trovato almeno un carattere che non sia una lettera. La variabile viene inizializzata a false. Si esamina quindi la stringa, carattere per carattere: se il carattere considerato non è una lettera, si pone a true la variabile nonlettera. Per verificare se il carattere non sia una lettera, possiamo ricorrere al metodo statico isletter di Character e negare la risposta ottenuta. Pertanto se lung contiene la lunghezza della stringa (ottenuta precedentemente) possiamo scrivere: c 2009 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 Soluzione del primo compitino 2 boolean nonlettera = false; for (int i = 0; i < lung; i++) { char c = s.charat(i) if (!Character.isLetter(c)) nonlettera = true; Dopo la scansione della stringa, decidiamo se incrementare nonlettere: if (nonlettera) nonlettere = nonlettere + 1; Il codice risultante, riscritto senza utilizzare la variabile c, è: int lungtot = 0; int nonlettere = 0; for (String s: elenco) { int lung = s.length(); lungtot = lungtot + lung; boolean nonlettera = false; for (int i = 0; i < lung; i++) if (!Character.isLetter(s.charAt(i))) nonlettera = true; if (nonlettera) nonlettere = nonlettere + 1; In realtà, una volta che esaminando un carattere di una stringa si verifica che esso non è una lettera, è inutile continuare ad esaminare gli altri caratteri della stessa stringa. Si può quindi introdurre un istruzione break (da documentare vicino all intestazione del for), nel corpo dell if. L ultima parte del corpo del ciclo esterno può essere dunque riscritta come: boolean nonlettera = false; for (int i = 0; i < lung; i++) // terminazione anche con break! if (!Character.isLetter(s.charAt(i))) { nonlettera = true; break; if (nonlettera) nonlettere = nonlettere + 1; Osserviamo che a questo punto, ogni volta che si assegna true a nonlettera, si passa poi a incrementare nonlettere. Pertanto, possiamo rimuovere la variabile di tipo boolean ed eseguire direttamente l incremento, sostituendo la sequenza di istruzioni scritta sopra con: for (int i = 0; i < lung; i++) // terminazione anche con break! if (!Character.isLetter(s.charAt(i))) { nonlettere = nonlettere + 1; break; Note ed errori frequenti Uso scorretto del costrutto for-each.

3 Soluzione del primo compitino 3 Le posizioni nelle stringhe sono contate a partire da 0 e non da 1. Ogni elemento della sequenza riferita da elenco è un oggetto di tipo String. 1. Un metodo statico è un servizio offerto da una classe e pertanto deve essere invocato indicando il nome della classe che lo fornisce. Se si usa break per provocare la terminazione del ciclo, è bene evidenziarne la presenza con un breve commento vicino alla condizione del ciclo. L uso dell assegnamento i = lung per provocare prematuramente la terminazione del ciclo for è un pessimo stile di programmazione. Per questo scopo esiste break. Le istruzioni break e continue hanno significati differenti. Il tipo char non contiene solo lettere e cifre: è sbagliato utilizzare il metodo isdigit di Character per controllare che un carattere non sia una lettera. È inutile riempire il codice di parentesi graffe destinate a contenere una sola istruzione: è bene limitare l uso delle graffe ai casi in cui vi sia la necessità di raggruppare più istruzioni. Esercizio 2 Completate il seguente metodo main in modo che legga due stringhe inserite dall utente. Il metodo deve poi stabilire e comunicare se la seconda stringa sia un fattore della prima. In caso affermativo il metodo deve inoltre: (a) indicare a partire da quale carattere della prima stringa compare la seconda stringa; tale indicazione deve essere fornita, all interno di un messaggio all utente, come numero ordinale scritto in lettere (si vedano gli esempi); se la stringa appare più volte, è richiesta l indicazione della posizione della prima occorrenza; (b) visualizzare il prefisso della prima stringa che precede la prima occorrenza della seconda stringa e il suffisso che la segue. Note: - Una stringa è un fattore di un altra se appare contiguamente all interno di essa. Ad esempio, cambi è un fattore di scambiare e di cambiamento, ma non di cambogia. - Un fattore che non è preceduto da nulla viene detto prefisso, un fattore che non è seguito da nulla viene detto suffisso. Ad esempio, nella stringa scambiare, il prefisso che precede cambi è s, il suffisso che lo segue è are. - Non preoccupatevi delle questioni relative alle maiuscole e minuscole, che sono considerate diverse. Pertanto Cambi non è un fattore di scambiare. - Attenzione: nel messaggio fornito all utente la posizione della stringa va indicata contando i caratteri secondo l uso comune e non secondo le convenzioni di Java. Esempi di esecuzione Dove cercare? cambiamento Cosa cercare? cambi cambi appare in cambiamento dal primo carattere Prefisso precedente: Suffisso seguente: amento 1 Si osservi che tra gli elementi di una Sequenza non vi possono essere riferimenti null.

4 Soluzione del primo compitino 4 Dove cercare? scambio Cosa cercare? cambi cambi appare in scambio dal secondo carattere Prefisso precedente: s Suffisso seguente: o Dove cercare? cambogia Cosa cercare? cambi cambi non appare in cambogia Dove cercare? cambiamento Cosa cercare? am am appare in cambiamento dal secondo carattere Prefisso precedente: c Suffisso seguente: biamento public static void main(string[] args) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager(); String dove = in.readline("dove cercare? ");... Soluzione Iniziamo a completare la parte di lettura del metodo main: String dove = in.readline("dove cercare? "); String cosa = in.readline("cosa cercare? "); A questo punto il metodo deve stabilire se la stringa referita da dove contenga quella riferita da cosa. A tale scopo può essere utilizzato il metodo contains della classe String. In base al risultato di questo controllo andranno forniti messaggi differenti: if (dove.contains(cosa))..comunica quanto indicato nei punti (a) e (b) del testo dell esercizio... else...comunica che la seconda stringa non appare nella prima... La parte else può essere realizzata semplicemente con l istruzione: out.println(cosa + " non appare in " + dove); Sviluppiamo ora l altra parte della selezione, seguendo l ordine indicato ai punti (a) e (b) dell esercizio. Determiniamo la posizione in cui cosa appare in dove. A tale scopo possiamo utilizzare il metodo indexof: int i = dove.indexof(cosa); Dobbiamo osservare che il valore ottenuto, memorizzato nella variabile i, corrisponde alla convenzione di Java, in cui le posizioni sono numerate a partire da 0. Per contare da 1, secondo l uso comune, dovremo dunque considerare i + 1.

5 Soluzione del primo compitino 5 Otteniamo la stringa che rappresenta in lettere la posizione, e la visualizziamo, come negli esempi. Poiché è richiesta la stringa in lettere come numero ordinale, rappresentiamo il numero come oggetto della classe Intero e ne invochiamo il metodo toordinalstring. Scriviamo pertanto le seguenti istruzioni: int i = dove.indexof(cosa); Intero ii = new Intero(i + 1); // i + 1 per contare da 1! String is = ii.toordinalstring(); out.println(cosa + " appare in " + dove + " dal " + is + " carattere"); Ricaviamo e visualizziamo il prefisso e suffisso richiesti. Per ricavare queste stringhe ricorriamo ai metodi substring con gli opportuni argomenti, visualizzando poi il risultato: String prefisso = dove.substring(0, i); String suffisso = dove.substring(i + cosa.length()); out.println("prefisso precedente: " + prefisso); out.println("suffisso seguente: " + suffisso); 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 CercaStringa { public static void main(string[] a) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager(); String dove = in.readline("dove cercare? "); String cosa = in.readline("cosa cercare? "); if (dove.contains(cosa)) { //cerca la posizione di cosa in dove... int i = dove.indexof(cosa); //...e ne ottiene la rappresentazione in lettere Intero ii = new Intero(i + 1); // i + 1 per contare da 1! String is = ii.toordinalstring(); //visualizza il risultato out.println(cosa + " appare in " + dove + " dal " + is + " carattere"); //calcola e visualizza prefisso e suffisso String prefisso = dove.substring(0, i); String suffisso = dove.substring(i + cosa.length()); out.println("prefisso precedente: " + prefisso); out.println("suffisso seguente: " + suffisso);

6 Soluzione del primo compitino 6 else out.println(cosa + " non appare in " + dove); Anziché utilizzare il metodo contains per la condizione della selezione, si può utilizzare il risultato di indexof (-1 indica che il fattore cercato non c è). A tale scopo, è opportuno spostare la dichiarazione e l assegnamento int i = dove.indexof(cosa); prima della selezione, modificando la condizione in i!= -1 Esercizio 2 Completate il seguente metodo main in modo che: (a) legga un numero intero e lo visualizzi in lettere (b) legga una stringa (c) controlli se la stringa letta è un fattore della stringa che rappresenta in lettere il numero intero e, in caso affermativo, ricavi la stringa che si ottiene cancellando la stringa letta dalla stringa che rappresenta il numero (nel caso la stringa letta appaia più volte, cancellate solo la prima occorrenza, nel caso non appaia non cancellate nulla); (d) visualizzi il tutto come fosse una sottrazione, esattamente nello stesso formato presentato negli esempi di esecuzione che seguono. Note: - Una stringa è un fattore di un altra se appare contiguamente all interno di essa. Ad esempio, odi è un fattore di dodici e di odissea, ma non di modelli. - Non preoccupatevi delle questioni relative alle maiuscole e minuscole, che sono considerate diverse. Pertanto Odi non è un fattore di dodici. Esempi di esecuzione Numero in cifre? 7 sette Cosa cercare? t sette - t = sete Numero in cifre? 44 quarantaquattro Cosa cercare? qua quarantaquattro - qua = rantaquattro Numero in cifre? 125 centoventicinque Cosa cercare? venti centoventicinque - venti = centocinque Numero in cifre? 125 centoventicinque

7 Soluzione del primo compitino 7 Cosa cercare? dieci centoventicinque - dieci = centoventicinque public static void main(string[] args) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager(); int num = in.readint("numero in cifre? ");... Soluzione Il metodo main, dopo la lettura del numero con l istruzione: int num = in.readint("numero in cifre? "); deve visualizzare il numero scritto in lettere (punto (a) dell esercizio). A tale scopo, il numero può essere rappresentato come oggetto della classe Intero, ricavando, mediante il metodo tostring, la corrispondente stringa in lettere. Un riferimento a tale stringa, che oltre a dover essere visualizzata, sarà utile anche successivamente, viene memorizzato in una variabile nums: Intero numi = new Intero(num); String nums = numi.tostring(); out.println(nums); La lettura della stringa (punto (b)) è semplicemente: String s = in.readline("cosa cercare? "); Scriviamo ora il codice per i punti (c) e (d). Sulla base degli esempi, il messaggio che dovrà essere visualizzato si compone delle seguenti parti: il numero letto, espresso in lettere; la variabile nums contiene già il riferimento alla stringa che dobbiamo utilizzare per questa parte; il simbolo - (preceduto e seguito da uno spazio, per separarlo dal resto); la stringa letta, il cui riferimento è nella variable s; il simbolo = (preceduto e seguito da uno spazio, per separarlo dal resto); la stringa ottenuta secondo quanto indicato al punto (c). Supponendo che una variabile risultato di tipo String contenga un riferimento alla stringa richiesta al punto (c), l istruzione finale di visualizzazione sarà: out.println(nums + " - " + s + " = " + risultato); Studiamo ora come ottenere risultato. Occorre stabilire se la stringa che rappresenta il numero, cioè la stringa referita da nums, contenga come fattore quella riferita da s. A tale scopo può essere utilizzato il metodo contains della classe String. In base al risultato di questo test andranno forniti messaggi differenti: if (nums.contains(s)) risultato = stringa ottenuta cancellando la stringa riferita da s da quella riferita da nums else risultato = nums

8 Soluzione del primo compitino 8 Per ricavare la stringa richiesta nel caso la condizione sia vera, procediamo come segue. Determiniamo la posizione in cui s appare in nums. A tale scopo possiamo utilizzare il metodo indexof: int i = nums.indexof(s); Ricaviamo il prefisso e suffisso che, rispettivamente, precedono e seguono il fattore corrispondente a s. Per ricavare queste stringhe ricorriamo ai metodi substring con gli opportuni argomenti: String prima = nums.substring(0, i); String dopo = nums.substring(i + s.length()); La stringa cercata è data dalla concatenazione di queste due stringhe: risultato = prima + dopo; 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.*; import prog.utili.intero; class Cancella { public static void main(string[] a) { ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager(); int num = in.readint("numero in cifre? "); //costruisce un oggetto Intero che rappresenta num Intero numi = new Intero(num); //ricava la stringa che rappresenta il numero in lettere... String nums = numi.tostring(); out.println(nums); //...e la visualizza //lettura della stringa String s = in.readline("cosa cercare? "); //determina la stringa risultato String risultato; if (nums.contains(s)) { //cerca la stringa riferita da s int i = nums.indexof(s); String prima = nums.substring(0, i); String dopo = nums.substring(i + s.length()); risultato = prima + dopo; else risultato = nums; //visualizza la sottrazione

9 Soluzione del primo compitino 9 out.println(nums + " - " + s + " = " + risultato); Anziché utilizzare il metodo contains per la condizione della selezione, si può utilizzare il risultato di indexof, come indicato nella soluzione dell esercizio precedente. Note ed errori frequenti I meccanismi di autoboxing e unboxing sono disponibili esclusivamente tra i tipi primitivi e le corrispondenti classi involucro. La classe involucro per int è Integer e non Intero. Pertanto per ottenere un oggetto della classe Intero che rappresenti un dato int, è necessario utilizzare esplicitamente il costruttore di Intero. La variabile num è del tipo primitivo int. Pertanto non possono essere invocati metodi utilizzando num come fosse un riferimento. Scritture come num.tostring... o num.length... non hanno alcun senso. Mentre l operatore + tra stringhe indica la concatenazione, non esiste un operatore - per cancellare. Per ottenere la stringa risultante dalla cancellazione, richiesta dall esercizio, si doveva procedere come nella soluzione, concatenando il prefisso che precede la parte da cancellare, con il suffisso che la segue. Il prefisso e il suffisso possono essere ricavati con i metodi substring. Attenzione all uso degli indici dei metodi substring: il metodo con due argomenti riceve l indice della prima posizione da considerare e l indice della prima posizione (successiva alla precedente) da non considerare. Secondo le convenzioni del linguaggio gli indici vengono contati a partire da zero. Esercizio 3 Date due variabili c e d di tipo double, si considerino le seguenti due espressioni: c >= d - 2 c < d (a) Esprimete in linguaggio Java la congiunzione delle due espressioni. (b) Esprimete in linguaggio Java la negazione dell espressione ottenuta al punto precedente, senza utilizzare l operatore! di negazione. Soluzione L operatore di congiunzione (AND) è indicata in Java con il simbolo &&. Pertanto, per il punto (a) è sufficiente scrivere: c >= d - 2 && c < d Applicando le leggi di De Morgan, la negazione della condizione precedente è esprimibile come!(c >= d - 2)!(c < d) Ricordandando che la negazione di >= e < sono uno la negazione dell altro, otteniamo: c < d - 2 c >= d

10 Soluzione del primo compitino 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. Gli operatori && e sono preferibili ai corrispondenti operatori orientati ai bit & e, per i quali la valutazione è meno efficiente, non utilizzando il meccanismo della lazy evaluation. Esercizio 4 Siano x e y due variabili di tipo int. Indicate i valori che conterrà ciascuna delle due variabili dopo l esecuzione dei seguenti frammenti di codice, nell ipotesi che prima dell esecuzione di ciascuno di essi x contenga 4 e y contenga 9: (a) x = (y = x) + y++; (b) x = y++ + (y = x); (c) x = (x = y++) + y; (d) x = y + (x = y++); Soluzione Osserviamo prima di tutto che in tutte le espressioni sul lato destro degli assegnamenti vi sono due effetti collaterali: uno dovuto all assegnamento a y che modifica la variabile y fornendo, come valore ai fini del calcolo dell espressione, il valore assegnato; l altro è dovuto all operatore di incremento postfisso nell espressione y++ che produce il valore di y ai fini del calcolo dell espressione e provoca subito dopo un incremento. Per risolvere l esercizio occorre prestare particolare attenzione all ordine con cui vengono eseguite le operazioni, in particolare all ordine con cui vengono valutati gli operandi della somma sul lato destro dell assegnamento. Ricordiamo che all inizio i contenuti delle variabili sono: x == 4 y == 9 (a) x = (y = x) + y++; Per valutare l operando sinistro di +, viene eseguito l assegnamento y = x. Si ottiene pertanto: x == 4 y == 4 operando sx == 4 Per valutare l operando destro si deve applicare l operatore di decremento postfisso: questo produce prima di tutto il valore di y come risultato, che sarà dunque l operando destro, e poi l incremento della variabile y: x == 4 y == 5 operando sx == 4 operando dx == 4 Il risultato della somma è dunque 8, che viene assegnato a x, ottenendo: x == 8 y == 5 (b) x = y++ + (y = x); Dalla situazione iniziale, con la valutazione dell operando sinistro, y++, si ottiene: x == 4 y == 10 operando sx == 9 Si valuta quindi l operando destro y = x: x == 4 y == 4 operando sx == 9 operando dx == 4 Pertanto, dopo il calcolo della somma e dell assegnamento, si ha: x == 13 y == 4 (c) x = (x = y++) + y; Per valutare l operando sinistro di + è necessario assegnare a x il risultato dell espressione y++. Il valore assegnato sarà anche il valore dell operando sinistro. Come nei casi precedenti,

11 Soluzione del primo compitino 11 l espressione y++ produce, prima di tutto, come risultato il valore presente in y, in questo caso 9 e poi provoca l incremento di y. Pertanto, dopo la valutazione di x = y++, si ha: x == 9 y == 10 operando sx == 9 L operando destro è direttamente il valore di y, che ora è 10. Pertanto, il risultato della somma è 19. Dunque, dopo l esecuzione si ha: x == 19 y == 10 (d) x = y + (x = y++); L operando sinistro di + è il valore contenuto in y: x == 4 y == 9 operando sx == 9 La valutazione dell operando destro, avviene secondo i passi descritti al punto precedente, provocando effetti collaterali sia su x sia su y: x == 9 y == 10 operando sx == 9 operando dx == 9 Dopo l esecuzione della somma si ha dunque: x == 18 y == 10 Note ed errori frequenti È fondamentale fare attenzione all ordine con cui vengono valutate gli operatori nelle espressioni e all ordine con cui si producono gli effetti collaterali. Nell operatore di incremento postfisso si produce il valore dell espressione (che coincide con il contenuto della variabile da incrementare) e subito dopo si effettua l incremento della variabile. Esercizio 5 Supponete che in, di tipo ConsoleInputManager, sia un riferimento alla tastiera. Per ognuno dei seguenti frammenti di codice, rispondete alle domande: L esecuzione può essere infinita (cioè non terminare)? stringa in ingresso per cui ciò avvenga. Se avete risposto sì, indicate una L esecuzione può terminare? Se avete risposto sì, indicate una stringa in ingresso per cui ciò avvenga. (a) String t = in.readline("stringa? "); String s = t + t; while (s!= t) s = s.substring(s.length() / 2); (b) String t = in.readline("stringa? "); String s = t + t; while (s == t) s = s.substring(s.length() / 2); (c) String t = in.readline("stringa? "); String s = t + t; while (s.equals(t)) s = s.substring(s.length() / 2); (d) String t = in.readline("stringa? "); String s = t + t; while (!s.equals(t)) s = s.substring(s.length() / 2);

12 Soluzione del primo compitino 12 Soluzione I quattro frammenti di codice differiscono solo per la condizione del ciclo. La prima istruzione assegna alla variabile t il riferimento a una stringa inserita dall utente. La seconda istruzione assegna a s il riferimento a una stringa data dalla concatenazione di t con se stessa. La condizione nel frammento (a) confronta i due riferimenti s e t, che sono inizialemente diversi. Ad ogni iterazione, a s viene assegnato il riferimento a una nuova stringa, ottenuta mediante il metodo substring. Quindi, durante l esecuzione il riferimento in s non potrà mai diventare uguale al riferimento in t che, invece, non viene modificato. Pertanto la condizione è sempre vera. Dunque il ciclo è infinito per qualunque stringa fornita in ingresso, e dunque non può mai terminare. Per le stesse ragioni, nel caso (b) la condizione è immediatamente falsa. Pertanto l esecuzione termina subito, qualunque sia la stringa in ingresso. Nel caso (c) la condizione utilizza il metodo equals della classe String che verifica l uguaglianza tra le stringhe. Nel caso venga inserita la stringa vuota, sia t che s si riferiranno a oggetti che rappresentano tale stringa. Inoltre, l oggetto ottenuto nel corpo del ciclo, mediante il metodo substring rappresenta anch esso la stringa vuota. Dunque leggendo la stringa vuota il ciclo non termina. Se invece viene letta una stringa non vuota, la condizione risulta immediatamente falsa, e l esecuzione termina. Infine, nel caso (d), se l utente ha inserito la stringa vuota, la condizione, negazione di quella del caso (c), è immediatamente falsa e il ciclo termina. Se l utente ha invece inserito una stringa non vuota, come ad esempio "pippo", alla prima valutazione la condizione risulterà vera. Infatti, la stringa riferita da s conterrà due copie della stringa riferita da t (nell esempio "pippopippo"). L assegnamento all interno del ciclo fa in modo che la variabile s si riferisca a una nuova stringa, che rappresenta la seconda metà della stringa a cui si riferiva s prima dell assegnamento (nell esempio la nuova stringa sarà "pippo"). Siccome la stringa riferita da s era formata dalla concatenazione di due copie della stringa riferita da t, questa nuova stringa è uguale a quella riferita da t. Pertanto alla seconda valutazione la condizione risulta falsa provocando così la terminazione del ciclo. Dunque, nel caso (d) il ciclo termina per qualunque stringa in ingresso. 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). Non è possibile che uno stesso frammento di codice non possa essere infinito e non possa terminare.

Soluzione del primo compitino

Soluzione del primo compitino Corso di Programmazione Anno Accademico 2010 2011 Prof. Giovanni Pighizzini Soluzione del primo compitino Esercizio 1 Considerate le seguenti dichiarazioni di variabile: Sequenza elenco; Importo

Dettagli

Soluzione del primo compitino

Soluzione del primo compitino Corso di Programmazione Anno Accademico 2011 2012 Prof. Giovanni Pighizzini del primo compitino Esercizio 1 Completate il seguente metodo main in modo che: (a) legga due stringhe di caratteri, (b) controlli

Dettagli

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2011

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2011 Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 24 novembre 2011 Negli esercizi fate riferimento alle

Dettagli

//riferimento a una sequenza di oggetti della classe Importo

//riferimento a una sequenza di oggetti della classe Importo Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 29 novembre 2010 Negli esercizi fate riferimento alle

Dettagli

Compitino del 24 novembre 2008: soluzione

Compitino del 24 novembre 2008: soluzione Corso di Programmazione Anno Accademico 2008 2009 Prof. Giovanni Pighizzini Compitino del 24 novembre 2008: soluzione Esercizio 1 Completate il seguente metodo main in modo che legga un numero intero inserito

Dettagli

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008 Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 24 novembre 2008 Negli esercizi fate riferimento alle

Dettagli

Soluzione della prova scritta del 5 febbraio 2013

Soluzione della prova scritta del 5 febbraio 2013 Corso di Programmazione Anno Accademico 2012 2013 Prof. Giovanni Pighizzini della prova scritta del 5 febbraio 2013 Questo documento discute un esempio di soluzione di alcuni esercizi assegnati. Naturalmente

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2013 2014 Prof. Giovanni Pighizzini Note ed esercizi aggiuntivi 6. Ancora uso dei cicli, tipi generici Esercizio 6.1 Scrivete un applicazione che legga un numero

Dettagli

Linguaggio C Strutture di controllo

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

Dettagli

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

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2014 2015 Prof. Giovanni Pighizzini Note ed esercizi aggiuntivi 10. Ereditarietà, file di testo, gerarchia delle classi e gerarchia dei tipi Esercizio 10.1 Scrivete

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

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007 Cognome............................. Nome................................ Programmazione Compitino del 17 gennaio 2007 Matricola............................ NOTA: Negli esercizi 1, 2, 3, 4 fate riferimento

Dettagli

Note ed esercizi aggiuntivi

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

Dettagli

Note ed esercizi aggiuntivi

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

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

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

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 18. Iterazione. Maggio Iterazione

Corso 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

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

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, alcuni dei quali sviluppati e discussi

Dettagli

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

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

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E06. C. Limongelli Dicembre 2011

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E06. C. Limongelli Dicembre 2011 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E06 C. Limongelli Dicembre 2011 1 Contenuti q Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione

Dettagli

Scopo del progetto è la costruzione di un compilatore per il linguaggio descritto qui di seguito.

Scopo del progetto è la costruzione di un compilatore per il linguaggio descritto qui di seguito. Corso di Linguaggi e Traduttori Anno Accademico 2017 2018 Prof. Giovanni Pighizzini Progetto d esame Scopo del progetto è la costruzione di un compilatore per il linguaggio descritto qui di seguito. Variabili

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

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

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Cast 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

Dettagli

Istruzioni Ripetitive

Istruzioni Ripetitive Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 11 Istruzioni Ripetitive Carla Limongelli Novembre 2009 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni ripetitive 1 Contenuti

Dettagli

Istruzioni di selezione in Java 1

Istruzioni di selezione in Java 1 Ordine di esecuzione Istruzioni di selezione in Java Corso di laurea in Comunicazione digitale Nei metodi l ordine di esecuzione delle istruzioni è sequenziale se non specificato altrimenti Alcune istruzioni

Dettagli

Capitolo 16 Iterazione

Capitolo 16 Iterazione Capitolo 16 Accesso a sequenze I problemi esaminati in questo capitolo hanno lo scopo di accedere ed elaborare delle sequenze sequenze immesse dall utente lette dalla tastiera di lunghezza nota con un

Dettagli

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if Scelte Costrutto condizionale Scelte, blocchi Fino ad ora il corpo dei metodi che abbiamo scritto aveva solo un modo di essere eseguito: in sequenza dalla prima istruzione all ultima In applicazioni non

Dettagli

Codifiche Binary Coded Decimal (BCD) e Gray

Codifiche Binary Coded Decimal (BCD) e Gray FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Codifiche Binary Coded Decimal (BCD) e Gray 28 Pier Luca Montessoro (si veda la nota di copyright

Dettagli

Istruzioni Ripetitive

Istruzioni Ripetitive Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 11 Istruzioni Ripetitive Carla Limongelli Novembre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni ripetitive 1 Contenuti

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

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

Istruzioni di selezione in Java 1

Istruzioni di selezione in Java 1 Le istruzioni del programma Istruzioni di selezione in Java Corso di laurea in Il controllo del flusso del programma Istruzioni condizionali o di selezione Istruzioni di ripetizione Espressioni condizionali

Dettagli

Array. Walter Didimo

Array. Walter Didimo Array Walter Didimo Un problema ricorrente Gli strumenti di programmazione che abbiamo visto sin qui non sono ancora sufficienti per risolvere tutti i problemi di base Consideriamo ad esempio il seguente

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

Corso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione

Corso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione Corso di Laurea Ingegneria Elementi di Informatica C. Limongelli 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica esistenziale Verifica

Dettagli

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

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2) - 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

Dettagli

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4

Dettagli

Preparazione allo Scritto di Programmazione

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

Dettagli

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione

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

Note ed esercizi aggiuntivi

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

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

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

Array. Definizione e utilizzo di vettori

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

Dettagli

Dal linguaggio macchina al linguaggio C

Dal linguaggio macchina al linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Dal linguaggio macchina al linguaggio C 2000 Pier Luca Montessoro (si veda la nota di copyright

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

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Matricola:...................... Cognome:...................... Nome:...................... Informatica

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

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI IF Ogni linguaggio di programmazione presenta almeno una struttura di controllo decisionale. La sintassi del linguaggio C è la seguente. if ()

Dettagli

Gestione dei compiti

Gestione 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

Programmazione in Java (I modulo) Lezione 4

Programmazione in Java (I modulo) Lezione 4 Programmazione in Java (I modulo) Lezione 4 Costanti Chiamiamo costanti tutti i valori numerici (interi o con la virgola), i caratteri e le stringhe. Esempio: 2, 3.7, 'y, buongiorno Le costanti numeriche

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

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso 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

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

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

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

Sintassi e semantica delle istruzioni strutturate in Java

Sintassi e semantica delle istruzioni strutturate in Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 14 Sintassi e semantica delle istruzioni strutturate in Java Carla Limongelli Aprile 2010 1 Contenuti Classificazione delle istruzioni

Dettagli

Programmazione I - Preparazione A.A. 2010/2011

Programmazione I - Preparazione A.A. 2010/2011 Programmazione I - Preparazione A.A. 2010/2011 3 febbraio 2011 Matricola:........................................................................ Cognome:........................................................................

Dettagli

Informatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane

Informatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane Operatori in Java Operatori in Java Corso di laurea in Informatica Operatori aritmetici Operatori di uguaglianza e relazionali Operatori logici in espressioni booleane La precedenza degli operatori L associatività

Dettagli

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

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

Dettagli

Basi della programmazione in Java

Basi della programmazione in Java Basi della programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

Ing. Lorenzo Vismara

Ing. Lorenzo Vismara Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&&#2! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)&#7& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#

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

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

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public 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

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

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 20 febbraio 2012 TEMPO DISPONIBILE: 1 ora Negli

Dettagli

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

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli. Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 16 Tipi riferimento e stringhe Carla Limongelli Maggio 2010 Definizione di metodi 1 Contenuti Tipi riferimento Stringhe e oggetti String

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

Cosa si intende con stato

Cosa si intende con stato Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

IL 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

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

Stringhe. Walter Didimo

Stringhe. Walter Didimo Stringhe Walter Didimo La classe String L uso di stringhe (sequenze di caratteri alfanumerici) nei programmi è molto frequente Per tale motivo, l API di Java offre una classe con molti metodi utili per

Dettagli

Linguaggio C Vettori e stringhe

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

Dettagli

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi

Dettagli

Java e i Tipi di dati primitivi. Parte 3

Java e i Tipi di dati primitivi. Parte 3 Java e i Tipi di dati primitivi Parte 3 La nozione di tipo di dato Il tipo del dato consente di esprimere la natura del dato Indica il modo con cui verrà interpretata la sequenza di bit che rappresenta

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

Confrontare valori 1

Confrontare valori 1 Confrontare valori 1 Confrontare valori Le condizioni dell enunciato if sono molto spesso dei confronti tra due valori if (x >= 0) y = x; Gli operatori di confronto si chiamano operatori relazionali >

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL 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

Dettagli

La Ricorsione. Carla Binucci e Walter Didimo

La 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

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 10 Istruzioni Condizionali Carla Limongelli Novembre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni condizionali 1 Contenuti

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

Laboratorio di Matematica e Informatica 1

Laboratorio di Matematica e Informatica 1 Laboratorio di Matematica e Informatica 1 Matteo Mondini Antonio E. Porreca matteo.mondini@gmail.com porreca@disco.unimib.it Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi

Dettagli

Linguaggi e Traduttori

Linguaggi e Traduttori Linguaggi e Traduttori Progetto d esame a.a. 2014/15 Scopo del progetto è la costruzione di un compilatore per il linguaggio descritto di seguito, la cui grammatica è riportata alla fine del documento.

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