Java. Linguaggi di Programmazione Linguaggi Speciali & Tecnologie dei Linguaggi di Programmazione: Scritto del 30 Giugno 2006

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Java. Linguaggi di Programmazione Linguaggi Speciali & Tecnologie dei Linguaggi di Programmazione: Scritto del 30 Giugno 2006"

Transcript

1 Linguaggi di Programmazione Linguaggi Speciali & Tecnologie dei Linguaggi di Programmazione: Scritto del 30 Giugno 2006 Java Nome e Cognome: Matricola: Corso di Laurea: Date le classi seguenti: class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; public static Point[] makearray(int n, Point p1, Point p2) { Point[] res = new Point[n]; boolean flag = true; for (int i = 0; i < n; i++) { res[i] = flag? p1 : p2; flag =!flag; return res; public static Point sum(point[] a) { Point res = a[0]; for(int i = 1; i < a.length; i++) { res.x = res.x + a[i].y; res.x = res.x + a[i].x; return res; Dopo l esecuzione di: Point pt1 = new Point(1,2); Point pt2 = new Point(2,4); Point pt3 = Point.sum(Point.makeArray(3, pt1, pt2)); 1. Quanto vale pt1.x? 2. Quanto vale pt1.y? 3. Quanto vale pt2.x? 4. Quanto vale pt2.y? 5. Quanto vale pt3.x? 6. Quanto vale pt3.y? Date le classi seguenti: 1

2 class A { String method(b a, A b) { return "a"; class B extends A { String method(a a, B b) { return "b"; String method(b a, B b) { return "c"; e gli oggetti seguenti: A a = new A(); B b = new B(); A c = new B(); 7. Quanto vale a.method(a, a)? (a) "a" (b) "b" (c) "c" (d) Errore NoSuchMethod (e) Errore Ambiguous 8. Quanto vale b.method(b, b)? (a) "a" (b) "b" (c) "c" (d) Errore NoSuchMethod (e) Errore Ambiguous 9. Quanto vale c.method(c, c)? (a) "a" (b) "b" (c) "c" (d) Errore NoSuchMethod (e) Errore Ambiguous 10. Quanto vale b.method(b, c)? (a) (b) (c) (d) (e) "a" "b" "c" Errore NoSuchMethod Errore Ambiguous 2

3 11. Dato un array bidimensionale a di stringhe, il suo contorno è composto dalle caselle a[i][j] dove il valore di i o j è quello minimo o quello massimo rispetto alla loro dimensione. Una copertura di a è un array monodimensionale b di stringhe tale che il contorno di a è contenuto in b, ovvero ogni elemento del contorno di a compare in b. Definire un metodo pubblico statico unique che verifica che un array monodimensionale di stringhe è composto di valori unici, ovvero ogni valore compare una volta sola nell array. Definire un metodo minimalcover che prende un array bidimensionale a di stringhe e un array monodimensionale b di stringhe e verifica che b è una copertura di lunghezza minima di a. Per esempio, minimalcover(new String[][] { {"verde", "verde", "verde", "verde", {"bianco", "blue", "bianco", { "rosso", new String[] {"verde", "bianco", "rosso") restituisce true. 3

4 12. Sia Combinator la rappresentazione di un piccolo linguaggio di combinatori Turing completo. Questo linguaggio è composto di due combinatori S e K e dell applicazione di una funzione a un argomento. abstract class Combinator { class S extends Combinator { S () { class K extends Combinator { K () { 4

5 class Apply extends Combinator { Combinator fun; Combinator arg; Apply (Combinator fun, Combinator arg) { this.fun = fun; this.arg = arg; Per simulare l applicazione con più di un argomento si combina l applicazione. Per esempio, il termine S K (K S) K che rappresenta l applicazione di S ai tre argomenti K, (K S) e K, ed il termine K S S che rappresenta l applicazione di K ai due argomenti S e S si definiscono come: Combinator c1 = new Apply(new Apply(new Apply(new S(), new K()), new Apply(new K(), new S())), new K()); Combinator c2 = new Apply(new Apply(new K(), new S()), new S()); Ci sono due regole di riduzione, una per ogni combinatore. Dati due termini x e y qualsiasi, K x y si riduce in x. Dati tre termini x, y e z qualsiasi, S x y z si riduce in x z (y z). La valutazione si effettua in modo non deterministico iterando l applicazione delle regole di riduzione all interno del termine. Per esempio, c1 si valuta in K. Una possibile sequenza di riduzioni è la seguente: S K (K S) K K K (K S K) K K S K. Aggiungere in Combinator: - un metodo pubblico iss che indica se un oggetto di tipo Combinator è un S. Per esempio, new S().isS() restituisce true. - un metodo pubblico isk che indica se un oggetto di tipo Combinator è un K. Per esempio, new K().isK() restituisce true. - un metodo pubblico isapp che indica se un oggetto di tipo Combinator è un Apply. Per esempio, c1.isapp() restituisce true. - un metodo pubblico numberofs che ritorna il numero di combinatori S dentro un termine. Per esempio, c1.numberofs() restituisce 2. - un metodo pubblico equals che fa un test di uguaglianza strutturale con un oggetto o di tipo Object. Per esempio, c1.equals("true") restituisce false, invece new S().equals(new S()) restituisce true. - un metodo pubblico gethead che ritorna il combinatore di testa di un applicazione con argomenti multipli. Per esempio, c1.gethead().iss() restituisce true. - un metodo pubblico numberofargs che ritorna il numero di argomenti di un applicazione. Per esempio, c1.numberofargs() restituisce 3 e c2.numberofargs() restituisce 2. - un metodo pubblico isreds che indica se la regola di riduzione per S è applicabile sulla radice di un termine. Per esempio, c1.isreds() restituisce true. - un metodo pubblico isredk che indica se la regola di riduzione per K è applicabile sulla radice di un termine. Per esempio, c2.isredk() restituisce true. - un metodo pubblico reduce che prova ad applicare una riduzione all interno di un termine. Se tale riduzione non è possibile solleva l eccezione NothingToDoException. Per esempio, c2.reduce().iss() restituisce true. 5

6 - un metodo pubblico eval che itera la riduzione all interno di un termine fino ad esaurimento. Per esempio, c1.eval().isk() restituisce true. 6

7 7

8 Esterel 13. Scrivere un programma che gestisce il centralino delle docce di una piscina comunale. Il centralino gestisce l apertura e la chiusura di due docce (OPEN1, OPEN2 e CLOSE1, CLOSE2). All inizio, le due docce non sono in funzione. Sul centralino ci sono due pulsanti con una lampadina che indicano lo stato delle docce. Il programma può accendere la lampadina (LIGHT1_ON o LIGHT2_ON) o spengerla (LIGHT1_OFF o LIGHT1_OFF). Per mettere in funzione una doccia, l utente deve introdurre una carta magnetica (ENTER) e premere sul pulsante corrispondente (BUTTON1 o BUTTON1). Quando la doccia è libera, il centralino carica il costo della doccia sulla carta (DEBIT) e mette in funzione la doccia corrispondente (OPEN1 o OPEN2) e accende la lampadina corrispondente (LIGHT1_ON o LIGHT2_ON). La doccia funziona per 3 minuti (SECOND) prima di fermarsi (CLOSE1 e LIGHT1_OFF o CLOSE2 e LIGHT2_OFF). Premere su una doccia già occupata fa emettere un segnale sonoro (BEEP). Lasciare una carta inserita per più di un minuto (SECOND) fa emettere un segnale sonoro (BEEP) ogni due secondi (SECOND) fino a quando la carta è ritirata (EXIT). Le dichiarazioni dei segnali sono le seguenti: module SHOWER: input SECOND, ENTER, EXIT, BUTTON1, BUTTON2; relation SECOND # ENTER # EXIT # BUTTON1 # BUTTON2; output BEEP, DEBIT, OPEN1, OPEN2, CLOSE1, CLOSE2, LIGHT1_ON, LIGHT2_ON, LIGHT1_OFF, LIGHT2_OFF;... end module 8

9 Risposte dello scritto del 30 Giugno 2006 Java Date le classi seguenti: class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; public static Point[] makearray(int n, Point p1, Point p2) { Point[] res = new Point[n]; boolean flag = true; for (int i = 0; i < n; i++) { res[i] = flag? p1 : p2; flag =!flag; return res; public static Point sum(point[] a) { Point res = a[0]; for(int i = 1; i < a.length; i++) { res.x = res.x + a[i].y; res.x = res.x + a[i].x; return res; Dopo l esecuzione di: Point pt1 = new Point(1,2); Point pt2 = new Point(2,4); Point pt3 = Point.sum(Point.makeArray(3, pt1, pt2)); 1. Quanto vale pt1.x? Quanto vale pt1.y? 2 3. Quanto vale pt2.x? 2 4. Quanto vale pt2.y? 4 5. Quanto vale pt3.x? 18 1

10 6. Quanto vale pt3.y? 2 Date le classi seguenti: class A { String method(b a, A b) { return "a"; class B extends A { String method(a a, B b) { return "b"; String method(b a, B b) { return "c"; e gli oggetti seguenti: A a = new A(); B b = new B(); A c = new B(); 7. Quanto vale a.method(a, a)? (a) "a" (b) "b" (c) "c" (d) Errore NoSuchMethod (e) Errore Ambiguous 8. Quanto vale b.method(b, b)? (a) "a" (b) "b" (c) "c" (d) Errore NoSuchMethod (e) Errore Ambiguous 9. Quanto vale c.method(c, c)? (a) (b) (c) (d) (e) "a" "b" "c" Errore NoSuchMethod Errore Ambiguous 2

11 10. Quanto vale b.method(b, c)? (a) (b) (c) (d) (e) "a" "b" "c" Errore NoSuchMethod Errore Ambiguous 11. Dato un array bidimensionale a di stringhe, il suo contorno è composto dalle caselle a[i][j] dove il valore di i o j è quello minimo o quello massimo rispetto alla loro dimensione. Una copertura di a è un array monodimensionale b di stringhe tale che il contorno di a è contenuto in b, ovvero ogni elemento del contorno di a compare in b. Definire un metodo pubblico statico unique che verifica che un array monodimensionale di stringhe è composto di valori unici, ovvero ogni valore compare una volta sola nell array. Definire un metodo minimalcover che prende un array bidimensionale a di stringhe e un array monodimensionale b di stringhe e verifica che b è una copertura di lunghezza minima di a. Per esempio, minimalcover(new String[][] { {"verde", "verde", "verde", "verde", {"bianco", "blue", "bianco", { "rosso", new String[] {"verde", "bianco", "rosso") restituisce true. public static boolean in(string s, int n, String[] a) { for(int i = n; i < a.length; i++) { if (s.equals(a[i])) { public static boolean in(string s, String[] a) { return in(s, 0, a); public static boolean in(string[] a, String[] b) { for (int i = 0; i < a.length; i++) { if (!in(a[i], b)) { public static boolean unique(string[] a) { for(int i = 0; i < a.length - 1; i++) { if (in(a[i], i + 1, a)) { 3

12 public static boolean inborder(string s, String[][] a) { if (a.length == 0) { if (in(s, a[0]) in(s, a[a.length -1])) { for(int i = 1; i < a.length - 1; i++) { if (a[i].length!=0 && (s.equals(a[i][0]) s.equals(a[i][a[i].length -1]))) { public static boolean inborder(string a[], String[][] b) { for(int i = 0; i < a.length; i++) { if (!(inborder(a[i], b))) { public static boolean cover(string[] c, String[][] a) { if (a.length == 0) { if (!(in(a[0], c) && in(a[a.length -1], c))) { for(int i = 1; i < a.length - 1; i++) { if (a[i].length!= 0 &&!(in(a[i][0], c) && in(a[i][a[i].length -1], c))){ public static boolean minimalcover(string[][] a, String[] c) { return (unique(c) && inborder(c,a) && cover(c,a)); 12. Sia Combinator la rappresentazione di un piccolo linguaggio di combinatori Turing completo. Questo linguaggio è composto di due combinatori S e K e dell applicazione di una funzione a un argomento. abstract class Combinator { 4

13 class S extends Combinator { S () { class K extends Combinator { K () { class Apply extends Combinator { Combinator fun; Combinator arg; Apply (Combinator fun, Combinator arg) { this.fun = fun; this.arg = arg; Per simulare l applicazione con più di un argomento si combina l applicazione. Per esempio, il termine S K (K S) K che rappresenta l applicazione di S ai tre argomenti K, (K S) e K, ed il termine K S S che rappresenta l applicazione di K ai due argomenti S e S si definiscono come: Combinator c1 = new Apply(new Apply(new Apply(new S(), new K()), new Apply(new K(), new S())), new K()); Combinator c2 = new Apply(new Apply(new K(), new S()), new S()); Ci sono due regole di riduzione, una per ogni combinatore. Dati due termini x e y qualsiasi, K x y si riduce in x. Dati tre termini x, y e z qualsiasi, S x y z si riduce in x z (y z). La valutazione si effettua in modo non deterministico iterando l applicazione delle regole di riduzione all interno del termine. Per esempio, c1 si valuta in K. Una possibile sequenza di riduzioni è la seguente: S K (K S) K K K (K S K) K K S K. Aggiungere in Combinator: - un metodo pubblico iss che indica se un oggetto di tipo Combinator è un S. Per esempio, new S().isS() restituisce true. - un metodo pubblico isk che indica se un oggetto di tipo Combinator è un K. Per esempio, new K().isK() restituisce true. - un metodo pubblico isapp che indica se un oggetto di tipo Combinator è un Apply. Per esempio, c1.isapp() restituisce true. - un metodo pubblico numberofs che ritorna il numero di combinatori S dentro un termine. Per esempio, c1.numberofs() restituisce 2. - un metodo pubblico equals che fa un test di uguaglianza strutturale con un oggetto o di tipo Object. Per esempio, c1.equals("true") restituisce false, invece new S().equals(new S()) restituisce true. - un metodo pubblico gethead che ritorna il combinatore di testa di un applicazione con argomenti multipli. Per esempio, c1.gethead().iss() restituisce true. - un metodo pubblico numberofargs che ritorna il numero di argomenti di un applicazione. Per esempio, c1.numberofargs() restituisce 3 e c2.numberofargs() restituisce 2. 5

14 - un metodo pubblico isreds che indica se la regola di riduzione per S è applicabile sulla radice di un termine. Per esempio, c1.isreds() restituisce true. - un metodo pubblico isredk che indica se la regola di riduzione per K è applicabile sulla radice di un termine. Per esempio, c2.isredk() restituisce true. - un metodo pubblico reduce che prova ad applicare una riduzione all interno di un termine. Se tale riduzione non è possibile solleva l eccezione NothingToDoException. Per esempio, c2.reduce().iss() restituisce true. - un metodo pubblico eval che itera la riduzione all interno di un termine fino ad esaurimento. Per esempio, c1.eval().isk() restituisce true. class NothingToDoException extends Exception { abstract class Combinator { public boolean iss() { public boolean isk() { public boolean isapp() { public abstract int numberofs(); public abstract boolean equals(object o); public Combinator gethead() { return this; public int numberofargs() { return 0; public boolean isredk() { return (gethead().isk() && numberofargs() == 2); public boolean isreds() { return (gethead().iss() && numberofargs() == 3); public Combinator reducetop() { return this; public Combinator reduce() throws NothingToDoException { Combinator res = reducetop(); if (this.equals(res)) { throw new NothingToDoException(); return res; public Combinator eval() { Combinator res = this, next; while (true) { System.out.println(res); 6

15 next = res.reducetop(); if (next.equals(res)) { return res; res = next; class S extends Combinator { S() { public boolean iss() { public int numberofs() { return 1; public boolean equals(object o) { return (o instanceof S); class K extends Combinator { K() { public boolean isk() { public int numberofs() { return 0; public boolean equals(object o) { return (o instanceof K); class Apply extends Combinator { Combinator fun; Combinator arg; Apply(Combinator fun, Combinator arg) { this.fun = fun; this.arg = arg; public boolean isapp() { public int numberofs() { return fun.numberofs() + arg.numberofs(); public boolean equals(object o) { if (!(o instanceof S)) { 7

16 Apply app = (Apply) o; return (fun.equals(app.fun) && arg.equals(app.arg)); public Combinator gethead() { return fun.gethead(); public int numberofargs() { return fun.numberofargs() + 1; public Combinator reducetop() { if (isredk()) { return ((Apply) fun).arg; if (isreds()) { Apply app1 = (Apply) fun; Apply app2 = (Apply) app1.fun; return new Apply(new Apply(app2.arg, arg), new Apply(app1.arg, arg)); Combinator res1 = fun.reducetop(); if (fun.equals(res1)) { return (new Apply(fun, arg.reducetop())); return new Apply(res1, arg); Esterel 13. Scrivere un programma che gestisce il centralino delle docce di una piscina comunale. Il centralino gestisce l apertura e la chiusura di due docce (OPEN1, OPEN2 e CLOSE1, CLOSE2). All inizio, le due docce non sono in funzione. Sul centralino ci sono due pulsanti con una lampadina che indicano lo stato delle docce. Il programma può accendere la lampadina (LIGHT1_ON o LIGHT2_ON) o spengerla (LIGHT1_OFF o LIGHT1_OFF). Per mettere in funzione una doccia, l utente deve introdurre una carta magnetica (ENTER) e premere sul pulsante corrispondente (BUTTON1 o BUTTON1). Quando la doccia è libera, il centralino carica il costo della doccia sulla carta (DEBIT) e mette in funzione la doccia corrispondente (OPEN1 o OPEN2) e accende la lampadina corrispondente (LIGHT1_ON o LIGHT2_ON). La doccia funziona per 3 minuti (SECOND) prima di fermarsi (CLOSE1 e LIGHT1_OFF o CLOSE2 e LIGHT2_OFF). Premere su una doccia già occupata fa emettere un segnale sonoro (BEEP). Lasciare una carta inserita per più di un minuto (SECOND) fa emettere un segnale sonoro (BEEP) ogni due secondi (SECOND) fino a quando la carta è ritirata (EXIT). Le dichiarazioni dei segnali sono le seguenti: module SHOWER: input SECOND, ENTER, EXIT, BUTTON1, BUTTON2; relation SECOND # ENTER # EXIT # BUTTON1 # BUTTON2; 8

17 output BEEP, DEBIT, OPEN1, OPEN2, CLOSE1, CLOSE2, LIGHT1_ON, LIGHT2_ON, LIGHT1_OFF, LIGHT2_OFF;... end module module SHOWER: input SECOND, ENTER, EXIT, BUTTON1, BUTTON2; relation SECOND # ENTER # EXIT # BUTTON1 # BUTTON2; output BEEP, DEBIT, OPEN1, OPEN2, CLOSE1, CLOSE2, LIGHT1_ON, LIGHT2_ON, LIGHT1_OFF, LIGHT2_OFF; signal SHOW1, SHOW2, RUN1, RUN2 in loop await RUN1; emit OPEN1; emit LIGHT1_ON; emit DEBIT; await SECOND; abort sustain SHOW1; when 179 SECOND; emit LIGHT2_ON; emit CLOSE2; end loop loop await RUN2; emit OPEN2; emit LIGHT2_ON; emit DEBIT; await SECOND; abort sustain SHOW2; when 179 SECOND; emit LIGHT2_ON; emit CLOSE2; end loop loop await ENTER; abort every BUTTON1 do present SHOW1 then emit BEEP else emit RUN1 end present end every every BUTTON2 do present SHOW2 then emit BEEP else emit RUN2 end present end every 9

18 await 60 SECOND; every 2 SECOND do emit BEEP end every when EXIT end loop end signal end module 10

COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002. Soluzione degli Esercizi

COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002. Soluzione degli Esercizi COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002 degli Esercizi ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int i=0, j=0; int[][] a=b; boolean trovato=false;

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

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 12 ADT: Lista, Pila, Coda A. Miola Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti!Tipo

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

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 E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

Dettagli

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) 1) Si considerino le classi Java: Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) class Card Card (String seed, int value) this.seed=seed; this.value=value; String seed; int

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

SAPIENZA Università di Roma, Facoltà di Ingegneria

SAPIENZA Università di Roma, Facoltà di Ingegneria SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: LA FASE DI REALIZZAZIONE La fase di

Dettagli

Iterazione e ricorsione. Cicli, Array e Programmazione su Sequenze. Ciclo while. Cicli

Iterazione e ricorsione. Cicli, Array e Programmazione su Sequenze. Ciclo while. Cicli Iterazione e ricorsione Dal punto di vista della teoria della computazione, affinché un linguaggio di programmazione imperativo (C, Pascal, codice nei metodi del Java, ecc.) raggiunga la potenza di calcolo

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli 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

Dettagli

Programmazione 1 A.A. 2015/2016

Programmazione 1 A.A. 2015/2016 Cognome e Nome Matricola (se disponibile) Programmazione 1 A.A. 2015/2016 Parziale del 4 Novembre 2015 Compito n 1 Esercizio 1 (4 punti) Convertire da base 16 a base 2 il numero FA1 Convertire da base

Dettagli

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione

Dettagli

Un esercizio d esame. Flavio De Paoli

Un esercizio d esame. Flavio De Paoli Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori

Dettagli

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

SAPIENZA Università di Roma, Facoltà di Ingegneria

SAPIENZA Università di Roma, Facoltà di Ingegneria SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Corso di Tecniche di Programmazione

Corso di Tecniche di Programmazione Corso di Tecniche di Programmazione Corsi di Laurea in Ingegneria Informatica ed Automatica Anno Accedemico 003/004 Proff. Giuseppe De Giacomo, Luca Iocchi, Domenico Lembo Dispensa : Algoritmi di Ordinamento

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008 Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 6 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Visual Basic for Applications (VBA) Francesco Brun Fondamenti di Informatica a.a. 2014/2015

Visual Basic for Applications (VBA) Francesco Brun Fondamenti di Informatica a.a. 2014/2015 Francesco Brun Fondamenti di Informatica a.a. 2014/2015 Scopo di questo approfondimento Lo scopo di questo approfondimento è rispondere alla domanda: e se nella vita mi troverò a dover utilizzare un linguaggio

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 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Tipi astratti di dato e loro realizzazione in Java

Tipi astratti di dato e loro realizzazione in Java Unità 13 Tipi astratti di dato e loro realizzazione in Java Sommario Tipo astratto di dato Specifica di tipi astratti Astrazione di valori e astrazione di entità Realizzazione di tipi astratti in Java

Dettagli

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo & Monica Scannapieco Anno Accademico 2003/04 LA FASE DI PROGETTO E

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Cicli, Array e Programmazione su Sequenze

Cicli, Array e Programmazione su Sequenze Cicli, Array e Programmazione su Sequenze Luca Tesei Università di Camerino luca.tesei at unicam.it Università di Camerino - Corso di Laurea in Informatica - Programmazione + Laboratorio di Programmazione

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

Progettazione e sviluppo di un sistema software complesso. Lezione X

Progettazione e sviluppo di un sistema software complesso. Lezione X Progettazione e sviluppo di un sistema software complesso Lezione X Scopo della lezione Approfondire la conoscenza con la costruzione e l uso delle classi in Java Imparare a progettare un sistema complesso

Dettagli

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint parseint parseint showinputdialog JOptionPanenull null throw BankAccount IllegalArgumentException amount public class BankAccount { public void withdraw(double amount) { if (balance < amount) { // Parametro

Dettagli

Definizione di classi con array di oggetti

Definizione di classi con array di oggetti Definizione di classi con array di oggetti 1. (Esame scritto del 18/9/2002, Esercizio 6.) La banca dati di un agenzia assicurativa per auto è caratterizzata da un insieme di polizze di assicurazioni per

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");

Dettagli

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di

Dettagli

Laboratorio di Informatica Lezione 2

Laboratorio di Informatica Lezione 2 Laboratorio di Informatica Lezione 2 Cristian Consonni 30 settembre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 2 1 / 42 Outline 1 Commenti e Stampa a schermo 2 Strutture di controllo 3

Dettagli

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

ISI s.r.l. Corso di Access 05 CREARE UN ELENCO MAILING ED INVIARE MESSAGGI DI POSTA ELETTRONICA Pag. 1/6

ISI s.r.l. Corso di Access 05 CREARE UN ELENCO MAILING ED INVIARE MESSAGGI DI POSTA ELETTRONICA Pag. 1/6 Pag. 1/6 Quello che vogliamo ottenere con questo database è un semplice programma che permetta di fare mailing tramite posta elettronica. 1 Dopo aver creato il database con Access 97 o 2000 è necessario

Dettagli

Cifratura simmetrica

Cifratura simmetrica Cifratura Cifratura simmetrica Alice canale insicuro Bob 2 Cifratura simmetrica m Algoritmo di decifratura m Alice canale insicuro Algoritmo di cifratura Bob 3 Cifrari simmetrici chiave privata k chiave

Dettagli

Astrazioni sul controllo. Iteratori

Astrazioni sul controllo. Iteratori Astrazioni sul controllo Iteratori Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di un operazione che consenta cicli (iterazioni) Es.: gli

Dettagli

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

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

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

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 Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Il software e la programmazione

Il software e la programmazione Il software e la programmazione Concetti base sul software Elementi di programmazione Cenni sul linguaggio Pascal Che cosa è il software Determina ciò che un computer può fare Include istruzioni memorizzate

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ottava Esercitazione. introduzione ai thread java mutua esclusione Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione

Dettagli

Politecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola

Politecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola Politecnico di Milano Ingegneria del Software a.a. 2006/07 Appello del 14 settembre 2007 Cognome Nome Matricola Sezione (segnarne una) Baresi, Ghezzi, Morzenti, SanPietro Istruzioni 1. La mancata indicazione

Dettagli

ARRAY E STRINGHE. G. Frosini Slide 1

ARRAY E STRINGHE. G. Frosini Slide 1 ARRAY E STRINGHE G. Frosini Slide 1 Array: VARIABILI ARRAY struttura dati costituita da elementi (anche nessuno, array vuoto) dello stesso tipo; tipo array: tipo degli elementi, non numero degli elementi;

Dettagli

Interpretazione astratta in praticaun analizzatore generico per Ja

Interpretazione astratta in praticaun analizzatore generico per Ja Riassunto puntate precedenti Control Flow Graph Proprietà Dominio numerico Approssimazione Interpretazione astratta in pratica Un analizzatore generico per Java Pietro Ferrara Università Ca Foscari di

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 18 marzo 2011 Problema basato su 10.5 del libro di testo La CINA (Compagnia Italiana per il Noleggio di Automobili) dispone di

Dettagli

String, Array e Main. Lezione 7

String, Array e Main. Lezione 7 String, Array e Main Lezione 7 Scopo della Lezione Presentare la classe String ed il tipo Stringa; Presentare ed imparare ad usare gli array in Java; Approfondire la conoscenza con il metodo speciale main.

Dettagli

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Soluzioni delle prove al calcolatore Esercizio 7 (esame del 08/01/2009) class TabellaDiNumeri{ private double[][] tabella;

Dettagli

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java.

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java. Corso di Laurea in Informatica e Comunicazione Digitale a.a. 2006-2007 Interazione Uomo-Macchina Introduzione a Java Seconda Parte Irene Mazzotta Giovanni Cozzolongo Vincenzo Silvetri 1 Richiami: Java

Dettagli

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1 Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio

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 formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File 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

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

Dettagli

Lezione 11 Accesso al file system

Lezione 11 Accesso al file system A cura di Carlo Pelliccia Qualunque applicazione Android può leggere e scrivere file dalla memoria interna del telefono o da una scheda esterna inserita nel dispositivo. I principi da osservare per compiere

Dettagli

Come trattare il risultato di un comando SQL (relazioni) che

Come trattare il risultato di un comando SQL (relazioni) che USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.

Dettagli

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma. Semantica dei programmi La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma. Semantica operazionale: associa ad ogni programma la sequenza delle sue

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Complessità computazionale

Complessità computazionale 1 Introduzione alla complessità computazionale Un problema spesso può essere risolto utilizzando algoritmi diversi Come scegliere il migliore? La bontà o efficienza di un algoritmo si misura in base alla

Dettagli

// inizializzazione della biblioteca con utenti, libri e prestiti // non richiesta Biblioteca.inizializza();

// inizializzazione della biblioteca con utenti, libri e prestiti // non richiesta Biblioteca.inizializza(); // Fondamenti di Informatica/Informatica Grafica // Soluzione del compito del 21/03/2003 // per semplicità si è deciso di riportare in un unico file il testo // delle soluzioni degli esercizi 1, 2 e 3.

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

Dettagli

Lab 11 Gestione file di testo"

Lab 11 Gestione file di testo Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 11 Gestione file di testo" Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Main System Monitor Keyboard

Main System Monitor Keyboard Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti

Dettagli

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori Programmazione ad oggetti in Java Daniela Micucci Outline La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori 2 Programmazione ad oggetti in Java 1 OOP Java

Dettagli

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4]; ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica)

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Tipi Tipo Astratto di Permette di specicare dati in modo astratto Astratto Indipendentemente

Dettagli