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

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

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

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

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

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

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

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

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

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

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

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

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

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

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

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

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

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

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

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

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

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

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. 2009-10 I scritto Febbraio 11 Febbraio 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2009-10 I scritto Febbraio 11 Febbraio 2011 Cognome Matricola Nome Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2009-10 I scritto Febbraio 11 Febbraio 2011 Quesito La Biblioteca è costituita da due array: il primo

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

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include

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

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

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

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

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

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

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

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

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

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

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

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

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

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere

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

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

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

ELEMENTI DI PROGETTAZIONE SOFTWARE

ELEMENTI DI PROGETTAZIONE SOFTWARE ELEMENTI DI PROGETTAZIONE SOFTWARE Massimiliano Redolfi Lezione 7: la fortezza Perché un sistema sia robusto ogni suo componente deve essere robusto. Una semplice metodo public class Main { public static

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

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

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

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

Dettagli

Visual Basic.NET La Gestione degli Errori di Federico BARBATI

Visual Basic.NET La Gestione degli Errori di Federico BARBATI Generalità Visual Basic.NET La Gestione degli Errori di Federico BARBATI La gestione degli errori, è una parte fondamentale di un codice ben progettato. Fino ad oggi, gli errori nelle applicazioni scritte

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

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

Programmazione ad Oggetti: JAVA. Esercitazione

Programmazione ad Oggetti: JAVA. Esercitazione Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore

Dettagli

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM Procedure memorizzate SQL-2003/PSM Procedure memorizzate nel database Programmazione general-purpose Leggere sezione 8.2 di Garcia-Molina et al. Lucidi derivati da quelli di Jeffrey D. Ullman 1 Una estensione

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

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizio 1 Nella classe definita di seguito indicare quali sono le variabili di istanza, quali sono le variabili

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

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

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

DAL DIAGRAMMA AL CODICE

DAL DIAGRAMMA AL CODICE DAL DIAGRAMMA AL CODICE Un diagramma di flusso Appare, come un insieme di blocchi di forme diverse che contengono le istruzioni da eseguire, collegati fra loro da linee orientate che specificano la sequenza

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

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

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3 RICORSIVITA 1. Cos è la ricorsività? La ricorsività è un metodo di soluzione dei problemi che consiste nell esprimere la soluzione relativa al caso n in funzione della soluzione relativa al caso n-1. La

Dettagli

Elementi di semantica operazionale

Elementi di semantica operazionale Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B1 Gestione eventi 1 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Le interfacce create

Dettagli

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

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

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

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

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

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

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

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

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

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione

Dettagli

Le stringhe. Le stringhe

Le stringhe. Le stringhe Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è

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

ABC16. 5 Indica nelle reti ethernet cosa è una collisione e come viene gestita. 6 Disegna lo schema della macchina di VON NEUMANN

ABC16. 5 Indica nelle reti ethernet cosa è una collisione e come viene gestita. 6 Disegna lo schema della macchina di VON NEUMANN COGNOME E NOME: Università degli Studi di Brescia ELEMENTI DI INFORMATICA E PROGRAMMAZIONE ALLIEVI Ingegneria GESTIONALE PARTE A.1 - ELEMENTI 20/01/2016 NUM. MATRICOLA CORSO DI LAUREA La dispensa deve

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità

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 E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Novembre 2011 1 Contenuti q Somma di una sequenza di numeri interi

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

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali a Visual Basic Lezione 1 Concetti base e istruzioni condizionali Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Un esempio:

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

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

I file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1

I file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1 I file WAR WAR è una contrazione di Web ARchive. I file WAR consentono di archiviare un intera applicazione web in un unico file. Tomcat fornisce (tramite il Tomcat Manager) un interfaccia grafica per

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

Politecnico di Torino

Politecnico di Torino Politecnico di Torino INFORMATICA II Esame del 19 Luglio 2008 1. Realizzare un programma in linguaggio C per evidenziare le variazioni percentuali di un insieme di azioni quotate in borsa. In un file di

Dettagli

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort Due algoritmi di ordinamento basati sulla tecnica Divide et Impera: Mergesort e Quicksort (13 ottobre 2009, 2 novembre 2010) Ordinamento INPUT: un insieme di n oggetti a 1, a 2,, a n presi da un dominio

Dettagli

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto

Dettagli

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso 2.0 Gli archivi All interno della sezione archivi sono inserite le anagrafiche. In pratica si stratta di tutti quei dati che ricorreranno costantemente all interno dei documenti. 2.1 Inserire gli archivi

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

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

1238 1*8 2 +2*8 1 +3*8 0

1238 1*8 2 +2*8 1 +3*8 0 COGNOME E NOME: Università degli Studi di Brescia ELEMENTI DI INORMATICA E PROGRAMMAZIONE ALLIEVI Ingegneria GESTIONALE PARTE A.1 - ELEMENTI 00/00/0000 NUM. MATRICOLA PER RITIRARSI SCRIVERE QUI "RITIRATO"

Dettagli