Collaudo e Correzione di Errori

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Collaudo e Correzione di Errori"

Transcript

1 Collaudo e Correzione di Errori C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari

2 Obiettivi Imparare ad eseguire il collaudo di unità Capire i principi della selezione e valutazione dei casi di test Imparare ad usare il logging Prendere familiarità con l'udo di un debugger Imparare le strategie per un debugging efficace 2

3 Collaudo di Unità 3 Unico e più importante strumento per il collaudo Controlla un singolo metodo o un insieme di metodi cooperanti Non si testa il programma completo che si sta sviluppando, bensì le singole classi isolate Per ogni test, si fornisce una semplice classe detta test harness La classe test harness procura i parametri ai metodi da collaudare

4 Esempio: 4 Impostare Classi Test Harness Usiamo un comune algoritmo per il calcolo della radice quadrata: Dare un valore x che potrebbe essere abbastanza vicino alla radice quadrata desiderata (x = a va bene) La vera radice sta tra x e a/x Considerare il punto medio (x + a/x) / 2 come migliore approssimazione Ripetere la procedura. Fermarsi quando due approssimazioni successive sono tra loro molto vicine

5 Esempio: 5 Impostare Classi Test Harness Il metodo converge rapidamente Radice quadrata di 100: Guess #1: 50.5 Guess #2: Guess #3: Guess #4: Guess #5: Guess #6: Guess #7: Guess #8: 10.0

6 RootApproximator.java 6 01: /** 02: Calcola approssimazioni della radice quadrata 03: di un numero usando l'algoritmo di Erone. 04: */ 05: public class RootApproximator 06: 07: /** 08: Costruisce l'approssimazione della radice per un dato numero. anumber numero per il quale estrarre la radice quadrata 10: (Precondizione: anumber >= 0) 11: */ 12: public RootApproximator(double anumber) 13: 14: a = anumber; 15: xold = 1; 16: xnew = a; 17:

7 RootApproximator.java 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 7 /** Calcola una approssimazione migliore della the next guess */ public double nextguess() xold = xnew; if (xold!= 0) xnew = (xold + a / xold) / 2; return xnew;

8 RootApproximator.java 8 31: /** 32: Calcola la radice migliorando l'approssimazione 33: finchè due successivi risultati risultano approssimativamente uguali. il valore della radice quadrata calcolato 35: */ 36: public double getroot() 37: 38: assert a >= 0; 39: while (!Numeric.approxEqual(xnew, xold)) 40: nextguess(); 41: return xnew; 42: 43: 44: private double a; // il numero di cui si deve calcolare la radice 45: private double xnew; // approssimazione corrente 46: private double xold; // approssimazione precedente 47:

9 Numeric.java 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 9 /** A class for useful numeric methods. */ public class Numeric /** Tests whether two floating-point numbers are. equal, except for a roundoff x a floating-point y a floating-point true if x and y are approximately equal */ public static boolean approxequal(double x, double y) final double EPSILON = 1E-12; return Math.abs(x - y) <= EPSILON;

10 RootApproximatorTester 10.java 01: import java.util.scanner; 02: 03: /** 04: This program prints ten approximations for a square root. 05: */ 06: public class RootApproximatorTester 07: 08: public static void main(string[] args) 09: 10: System.out.print("Enter a number: "); 11: Scanner in = new Scanner(System.in); 12: double x = in.nextdouble(); 13: RootApproximator r = new RootApproximator(x); 14: final int MAX_TRIES = 10;

11 RootApproximatorTester 11.java 15: 16: 17: 18: 19: 20: 21: 22: for (int tries = 1; tries <= MAX_TRIES; tries++) double y = r.nextguess(); System.out.println("Guess #" + tries + ": " + y); System.out.println("Square root: " + r.getroot());

12 Collaudare il Programma Output Enter a number: 100 Guess #1: 50.5 Guess #2: Guess #3: Guess #4: Guess #5: Guess #6: Guess #7: Guess #8: 10.0 Guess #9: 10.0 Guess #10: 10.0 Square root:

13 Collaudare il Programma 13 La classe RootApproximator funziona correttamente per tutti gli input? Serve collaudarla su tanti altri valori Continuare a ri-collaudare con altri valori non è una buona idea; i collaudi non sono ripetibili Se un problema viene corretto e si deve collaudare di nuovo, si dovrebbero ricordare tutti gli input precedenti Soluzione: scrivere test harness che facilitano la ripetizione del collaudo delle unità

14 Fornire l'input per il Collaudo 14 Ci sono vari meccanismi per fornire casi di test Un meccanismo è quello di cablare (scrivere direttamente nel codice) gli inputs di test nel test harness Si esegue semplicemente il test harness ogni volta che si corregge un bug nella classe collaudata Alternativa: si tengono gli input di test su file appositi

15 RootApproximatorHarness1 15.java 01: /** 02: Programma che calcola le radici quadrate di valori di input selezionati 03: */ 04: public class RootApproximatorHarness1 05: 06: public static void main(string[] args) 07: 08: double[] testinputs = 100, 4, 2, 1, 0.25, 0.01 ; 09: for (double x : testinputs) 10: 11: RootApproximator r = new RootApproximator(x); 12: double y = r.getroot(); 13: System.out.println("square root of " + x 14: + " = " + y); 15: 16: 17:

16 RootApproximatorHarness1 16.java Output square square square square square square root root root root root root of of of of of of = = = = = = 0.1

17 Fornire l'input per il Collaudo 17 Si possono anche generare casi di test in maniera automatica Se sono possibili pochi input allora basta far girare il test per intero ciclando su un numero (rappresentativo) di casi

18 RootApproximatorHarness2 18.java 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: /** Programma che calcola le radici quadrate di valori in input forniti attraverso un ciclo. */ public class RootApproximatorHarness2 public static void main(string[] args) final double MIN = 1; final double MAX = 10; final double INCREMENT = 0.5; for (double x = MIN; x <= MAX; x = x + INCREMENT) RootApproximator r = new RootApproximator(x); double y = r.getroot(); System.out.println("square root of " + x + " = " + y);

19 RootApproximatorHarness2 19.java Output square square square... square square square root of 1.0 = 1.0 root of 1.5 = root of 2.0 = root of 9.0 = 3.0 root of 9.5 = root of 10.0 =

20 Fornire l'input per il Collaudo 20 Test precedenti hanno ristreto il campo ad un limitato sotto-insieme di valori Alternativa: generazione causale di casi di test

21 RootApproximatorHarness3 21.java 01: import java.util.random; 02: 03: /** 04: Il programma calcola la radice quadrata di numeri casuali 05: */ 06: public class RootApproximatorHarness3 07: 08: public static void main(string[] args) 09: 10: final double SAMPLES = 100; 11: Random generator = new Random(); 12: for (int i = 1; i <= SAMPLES; i++) 13: 14: // Genera un valore casuale di test 15:

22 RootApproximatorHarness3 22.java 16: 17: 18: 19: 20: 21: 22: 23: double x = 1000 * generator.nextdouble(); RootApproximator r = new RootApproximator(x); double y = r.getroot(); System.out.println("square root of " + x + " = " + y);

23 RootApproximatorHarness3 23.java Output square square square square square square... root root root root root root of of of of of of = = = = = =

24 Fornire l'input per il Collaudo Selezionare buoni casi di test è un'abilità nel debuggare i programmi Testare tutte le caratteristiche dei metodi che si stanno collaudando Testare i casi tipici 100, 1/4, 0.01, 2, 10E12, per SquareRootApproximator Testare i casi limite: casi che sono ai confini del dominio di input 0 per SquareRootApproximator 24

25 Fornire l'input per il Collaudo 25 I programmatori spesso fanno errori trattando condizioni limite: divisione per zero, estrarre caratteri da stringhe vuote, e accedere riferimenti nulli Racogliere casi di test negativi: gli input che ci si aspetta che il programma rigetti Esempio: la radice di -2. Il test è superato se l'harness termina con l'asserzione del fallimento (se il controllo delle asserzioni è abilitato)

26 Lettura di Input di test da File 26 Più elegante mettere i valori di test in un file Ridirezione dell'input: java Program < data.txt Alcune IDE non supportano la ridirezione dell'input. Allora si usa la shell (console con riga di comando) Ridirezione dell'output: java Program > output.txt

27 RootApproximatorHarness4 27.java 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: import java.util.scanner; /** Il programma calcola la radice quadrata di input forniti attraverso System.in. */ public class RootApproximatorHarness4 public static void main(string[] args) Scanner in = new Scanner(System.in); boolean done = false; while (in.hasnextdouble()) double x = in.nextdouble(); RootApproximator r = new RootApproximator(x); double y = r.getroot(); System.out.println("square root of " + x + " = " + y);

28 Lettura di Input di test da File 28 File test.in: facendo girare il programma: java RootApproximatorHarness4 < test.in > test.out

29 Lettura di Input di test da File File test.out: square square square square square square root root root root root root of of of of of of = = = = = =

30 Valutazione dei Casi di Test Come saper se il l'output è corretto? Calcola re valori corretti a mano es. per un programma di pagamenti, calcolare le tasse manualmente Fornire input di test per i quali si sa la risposta es. la radice di 4 è 2 e la radice di 100 è 10 30

31 Valutazione dei Casi di Test 31 Verificare che i valori di output soddisfi cete proprietà es. radice quadrata elevata al quadrato = valore originario Usare un Oracolo: un metodo lento ma affidabile per calcolare un risulktato per esigenze di collaudo es. usare Math.pow per calcolare più lentamernte x1/2 (equivalente alla radice quadrata di x)

32 RootApproximatorHarness5 32.java 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: import java.util.random; /** Il programma verifica il calcolo dei valori della radice quadrata controllando una proprietà delle radici quad. */ public class RootApproximatorHarness5 public static void main(string[] args) final double SAMPLES = 100; int passcount = 0; int failcount = 0; Random generator = new Random(); for (int i = 1; i <= SAMPLES; i++)

33 RootApproximatorHarness5 33.java 17: // Generare valori di test casuali 18: 19: double x = 1000 * generator.nextdouble(); 20: RootApproximator r = new RootApproximator(x); 21: double y = r.getroot(); 22: 23: // controlla che il valore di test soddisfi la proprietà del quadrato 24: 25: if (Numeric.approxEqual(y * y, x)) 26: 27: System.out.print("Test passed: "); 28: passcount++; 29: 30: else 31: 32: System.out.print("Test failed: "); 33: failcount++; 34:

34 RootApproximatorHarness5 34.java 35: 36: 37: 38: 39: 40: 41: 42: System.out.println("x = " + x + ", root squared = " + y * y); System.out.println("Pass: " + passcount); System.out.println("Fail: " + failcount);

35 RootApproximatorHarness5 35.java Output Test passed: Test passed: Test passed: Test passed: Test passed:... Pass: 100 Fail: 0 x x x x x = = = = = , root squared = , root squared = , root squared = , root squared = , root squared =

36 RootApproximatorHarness6 36.java 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: import java.util.random; /** Il programma verifica il calcolo dei valori della radice quadrata mediante un oracolo. */ public class RootApproximatorHarness6 public static void main(string[] args) final double SAMPLES = 100; int passcount = 0; int failcount = 0; Random generator = new Random(); for (int i = 1; i <= SAMPLES; i++) // Generare valori di test casuali

37 RootApproximatorHarness6 37.java 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: double x = 1000 * generator.nextdouble(); RootApproximator r = new RootApproximator(x); double y = r.getroot(); double oraclevalue = Math.pow(x, 0.5); // // if controllare che il valore di test eguagli approssimativamente quello dell'oracolo (Numeric.approxEqual(y, oraclevalue)) System.out.print("Test passed: "); passcount++; else System.out.print("Test failed: "); failcount++;

38 RootApproximatorHarness6 38.java 37: 38: 39: 40: 41: 42: 43: System.out.println("square root = " + y + ", oracle = " + oraclevalue); System.out.println("Pass: " + passcount); System.out.println("Fail: " + failcount);

39 RootApproximatorHarness6 39.java Output Test passed: Test passed: Test passed: Test passed: Test passed:... Pass: 100 Fail: 0 square square square square square root root root root root = = = = = , oracle = , oracle = , oracle = , oracle = , oracle =

40 Regression Testing 40 Conservare i casi di test Usare i test memorizzati in versioni successive Una suite di test è un insieme di test per il collaudo ripetuto Ciclico = bug che è corretto ma riappare in successive versioni Regression testing: ripetizione di test precedenti per assicurare che punti deboli noti in versioni precedenti non appaiano in nuove versioni

41 Copertura del Test 41 Test a scatola nera: funzionalità di collaudo che non prende in considerazione la struttura interna dell'implementazione. Test a scatola bianca: prendere in considerazione la struttura intern nel progettare i test Copertura: misura di quante parti di un programma siano state collaudate Assicurarsi che ogni parte del programma sia interessata al meno una volta da un caso di test es. assicurarsi di eseguire ogni diramazione in almeno un caso di test

42 Copertura del Test 42 Suggerimento: scrivere casi di test prima di finire di scrivere il programma dà l'idea di quello che dovrebbe fare I programmi moderni possono essere ardui da testare Interfacce grafiche (uso del mouse) Connessioni di rete (ritardi e cadute) Ci sono strumenti pr l'automazione del test in tali situazioni Principi di base del regression testing della copertura completa sono ancora validi

43 Colludare Unità con JUnit 43 Inglobato in IDE come BlueJ e Eclipse Filosofia: ogni volta che si implementa una classe si implementi anche una classe di test

44 Colludare Unità con JUnit 44

45 Trace di un Programma Messaggi che mostrano il flusso dell'esecuzione if (status == SINGLE) System.out.println("status is SINGLE");

46 Trace di un Programma 46 Svantaggio: serve rimuoverli a collaudo terminato, rimettere quando si trova un altro errore Soluzione: usare la classe Logger disabilitare i messaggi di trace senza rimuoverli dal programma

47 Logging 47 I messaggi di log possono essere disattivati quando il collaudo è completato Si usa l'ggetto globale Logger.global Registrare (log) un messaggio: Logger.global.info("status is SINGLE");

48 Logging Per default, i messaggi registrati sono stampati. Li si disabilita con: Logger.global.setLevel(Level.OFF); Il logging può diventare assillante (meglio nè troppo nè troppo poco) Alcuni programmatori al logging preferiscono il debugging (prossima sezione) 48

49 Logging 49 Quando si traccia il flusso d'esecuzione, gli eventi più importanti sono l'entrata e l'uscita dai metodi All'inizio di un metodo, stampa dei parametri: public TaxReturn(double anincome, int astatus) Logger.global.info("Parameters: anincome = " + anincome + " astatus = " + astatus);...

50 Logging 50 Alla fine di un metodo, si stampa il valore di ritorno: public double gettax()... Logger.global.info("Return value = " + tax); return tax;

51 Usare un Debugger Debugger = applicazione che fa girare un 51 programma e ne analizza il comportamento in fase d'esecuzione Un debugger permette di fermare e far ripartire il proprio programma, osservare il contenuto delle variabili ed eseguirlo passo passo Più grandi sono i programmi, più sono difficili da debuggare semplicemente mediante logging

52 Usare un Debugger 52 I debugger possono essere una parte della propria IDE (Eclipse, BlueJ) o programmi separati (JSwat) Tre concetti-chiave: Breakpoint Esecuzione istruzione per istruzione Osservazione delle variabili

53 Debugger Fermo 53 ad un Breakpoint Figure 3: Stopping at a Breakpoint

54 Controllare le Variabili Figure 4: Inspecting Variables 54

55 Debugging 55 L'esecuzione è sospesa ogni volta che si raggiunge breakpoint In un debugger, un programma gira a piena velocità fino a quando non si raggiunge un breakpoint Quando l'esecuzione si interrompe, si può: Controllare il contenuto delle variabili Far eseguire il programma una riga alla volta oppure, continuare a farlo girare a piena velocità fino al prossimo breakpoint

56 Debugging 56 Quando il programma termina, anche il debugger si ferma I breakpoint rimangono attivi fino alla loro rimozione Due comandi per l'esecuzione di un singolo passo: Step Over: salta le chiamate dei metodi Step Into: entra nei metodi chiamati

57 Single-Step Example 57 Riga corrente: String input = in.next(); Word w = new Word(input); int syllables = w.countsyllables(); System.out.println("Syllables in " + input + ": " + syllables); Quando si saltano le chiamate di metodi, si passa alla riga successiva: String input = in.next(); Word w = new Word(input); int syllables = w.countsyllables(); System.out.println("Syllables in " + input + ": " + syllables);

58 Esempio di Single-Step 58 Invece, entrando nelle chiamate, si passa alla prima riga di codice del metodo countsyllables: public int int.. int countsyllables() count = 0; end = text.length() - 1;.

59 Sessione d'esempio 59 di Debugging Word: classe oper contare le silabe i una parola Ogni grupo di vocali adiacenti (a, e, i, o, u, y) conta come una sillaba Però, una e a fine parola non conta come sillaba Se l'algoritmo restituisce 0, si incrementi ad 1 Il costruttore rimuove i caratteri non-lettera all'inizio ed alla fine

60 Word.java 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 60 /** Questa classe descrive una parola in un documento. */ public class Word /** Construisce una parola togliendo i caratteri non alfabetici ad inizio e fine, come la s la stringa in input */ public Word(String s) int i = 0; while (i < s.length() &&!Character.isLetter(s.charAt(i))) i++; int j = s.length() - 1; while (j > i &&!Character.isLetter(s.charAt(j))) j--; text = s.substring(i, j);

61 Word.java 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: /** Restituisce il testo della parola rimossi i caratteri non alfabetici iniziali e il testo della parola */ public String gettext() return text; /** Counta le sillabe nella il conto delle sillabe */ 61

62 Word.java 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 62 public int countsyllables() int count = 0; int end = text.length() - 1; if (end < 0) return 0; // la stringa vuota non ha sillabe // Una e alla fine della parola non conta come vocale char ch = Character.toLowerCase(text.charAt(end)); if (ch == 'e') end--; boolean insidevowelgroup = false; for (int i = 0; i <= end; i++) ch = Character.toLowerCase(text.charAt(i)); String vowels = "aeiouy"; if (vowels.indexof(ch) >= 0)

63 Word.java 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: // ch is a vowel if (!insidevowelgroup) // Inizio di un nuovo gruppo di vocali count++; insidevowelgroup = true; // ogni parola ha minimo una sillaba if (count == 0) count = 1; return count; private String text; 63

64 WordTester.java 64 01: import java.util.scanner; 02: 03: /** 04: Questo programma testa il metodo countsyllables della classe Word 05: */ 06: public class WordTester 07: 08: public static void main(string[] args) 09: 10: Scanner in = new Scanner(System.in); 11: 12: System.out.println("Enter a sentence ending in a // period."); 13: 14: String input; 15: do 16:

65 WordTester.java 17: 18: 19: 20: 21: 22: 23: 24: 25: 65 input = in.next(); Word w = new Word(input); int syllables = w.countsyllables(); System.out.println("Syllables in " + input + ": " + syllables); while (!input.endswith("."));

66 Debuggare il Programma output non corretto (buggy) (per l'input "hello yellow peach"): Syllables Syllables Syllables in in in hello: 1 yellow: 1 peach: 1 Porre un breakpoint sulla prima riga di countsyllables della classe Word Far partire il programma, fornire l'input. Il programma si ferma al breakpoint Il metodo controlla se la lettera finale è una 'e' 66

67 Debuggare il Programma Figure 5: Debugging the CountSyllables Method 67

68 Debuggare il Programma Controllare se funziona: 68 eseguire fino alla riga dove si fa il controllo ed osservare la variabile ch Dovrebbe contenere la lettera finale ma contiene una 'l'

69 Trovare Altri Problemi Figure 6: The Current Values of the Local and Instance Variables 69

70 Trovare Altri Problemi end viene posta a 3, non a 4 70 text contiene "hell", non "hello" No c'è da sorprendersi se countsyllables restituisce 1 Il colpevole è altrove Non riesce a tornare in tempo Far partire di nuovo ponendo un breakpoint nel costruttore di Word

71 Debuggare 71 il Costruttore di Word Fornire l'input "hello" di nuovo Fermare subito dopo la fine del secondo loop nel costruttore Controllare le variabili i e j I valori sono 0 e 4 giusto dato che l'input consiste di lettere Perchè il testo viene impostato ad "hell"?

72 Debuggare 72 il Costruttore di Word Errore di fuori-di-uno: il secondo parametro della sotto-stringa è la prima posizione da non includere text = substring(i, j); dovrebbe essere text = substring(i, j+1);

73 Debuggare 73 il Costruttore di Word Figure 7: Debugging the Word Constructor

74 Un Altro Errore Correggere l'errore Ricompilare Testare di nuovo: Syllables in hello: 1 Syllables in yellow: 1 Syllables in peach: 1 Oh no, non va ancora bene 74

75 Un Altro Errore Far partire il debugger Cancellare i vecchi breakpoint e impostare un breakpoint sul metodo countsyllables Fornire l'input "hello" 75

76 Debuggare (ancora) 76 CountSyllables Fermare all'inizio di countsyllables. Quindi, eseguire il ciclo passo passo: boolean insidevowelgroup = false; for (int i = 0; i <= end; i++) ch = Character.toLowerCase(text.charAt(i)); if ("aeiouy".indexof(ch) >= 0) // ch è una vocale if (!insidevowelgroup) // Inizio di un nuovo gruppo di vocali count++; insidevowelgroup = true;

77 Debuggare (ancora) 77 CountSyllables Prima iterata ('h'): salta il test delle vocali Seconda iterata ('e'): passa il test, incrementa count Terza iterata ('l'): salta il test... Quinta iterata ('o'): passa il test, ma se la seconda viene saltata, count non viene incrementata

78 Correggere il Bug 78 insidevowelgroup non viene più resettata a false Modifica: if ("aeiouy".indexof(ch) >= 0)... else insidevowelgroup = false;

79 Correggere il Bug 79 Ri-testare: tutti i casi di test superati Syllables in hello: 2 Syllables in yellow: 2 Syllables in peach.: 1 Adesso il programma è privo di errori? Il debugger non può rispondere a questa domanda

80 Primo Bug Figure 8: The First Bug 80

Collaudo e correzione di errori

Collaudo e correzione di errori Collaudo e correzione di errori Obiettivi del capitolo Imparare a eseguire collaudi di unità Comprendere i principi della selezione e valutazione dei casi di prova Apprendere l utilizzo delle asserzioni

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e

Dettagli

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

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

Dettagli

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro Laboratorio di Programmazione Lezione 1 Cristian Del Fabbro Reperibilità homepage corso: https://users.dimi.uniud.it/~cristian.delfabbro/teaching.php email: cristian.delfabbro@uniud.it telefono: 0432 558676

Dettagli

Corso di Fondamenti di Informatica Classi di istruzioni 2

Corso di Fondamenti di Informatica Classi di istruzioni 2 Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da

Dettagli

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

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

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

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

Dettagli

Procedura operativa per la gestione della funzione di formazione classi prime

Procedura operativa per la gestione della funzione di formazione classi prime Procedura operativa per la gestione della funzione di formazione classi prime Questa funzione viene fornita allo scopo di effettuare la formazione delle classi prime nel rispetto dei parametri indicati

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

Uso di metodi statici. Walter Didimo

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

Dettagli

Un esempio di if annidati

Un esempio di if annidati Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XIV, parte I ) Costrutto di selezione switch Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di

Dettagli

Mini-Corso di Informatica

Mini-Corso di Informatica Mini-Corso di Informatica CALCOLI DI PROCESSO DELL INGEGNERIA CHIMICA Ing. Sara Brambilla Tel. 3299 sara.brambilla@polimi.it Note sulle esercitazioni Durante le esercitazioni impareremo a implementare

Dettagli

COSTRUZIONE DI UN APPLICAZIONE

COSTRUZIONE DI UN APPLICAZIONE COSTRUZIONE DI UN APPLICAZIONE Per costruire un applicazione occorre: compilare il file (o i file se più d uno) che contengono il testo del programma (file sorgente) Il risultato sono uno o più file oggetto.

Dettagli

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino mento del listino re il listino è molto semplice e richiede poco tempo. Prima di lanciare il comando listino occorre fare attenzione al tipo di listino che si deve aggiornare. Tenere ben presente che i

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

Dettagli

ESERCIZIO: CODICE FISCALE

ESERCIZIO: CODICE FISCALE ESERCIZIO: CODICE FISCALE Problema: Scrivere un programma che, a partire dai dati anagrafici, calcoli il codice fiscale di una persona. Il C.F. è composto di 5 parti: tre lettere identificative del cognome

Dettagli

Introduzione alle macchine a stati (non definitivo)

Introduzione alle macchine a stati (non definitivo) Introduzione alle macchine a stati (non definitivo) - Introduzione Il modo migliore per affrontare un problema di automazione industriale (anche non particolarmente complesso) consiste nel dividerlo in

Dettagli

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 4 anno accademico 2015-2016 Mario Verdicchio Numeri primi Si definisce primo un numero intero maggiore di 1 che ha due soli divisori: se stesso e 1 Esempi di numeri primi:

Dettagli

Fondamenti VBA. Che cos è VBA

Fondamenti VBA. Che cos è VBA Fondamenti VBA Che cos è VBA VBA, Visual Basic for Application è un linguaggio di programmazione, inserito nelle applicazioni Office di Microsoft (Ms Word, Ms Excel, Ms PowerPoint, Visio). VBA è una implementazione

Dettagli

Esercizio 1: archivio CD e DVD

Esercizio 1: archivio CD e DVD Esercizio 1: archivio CD e DVD Realizzare un applicazione Java per la creazione e la consultazione di un archivio di dischi ottici (CD e DVD). L applicazione riceve da standard input in maniera interattiva

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Definizione di metodi

Definizione di metodi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 9 Definizione di metodi Carla Limongelli Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di metodi 1 Contenuti

Dettagli

Heap e code di priorità

Heap e code di priorità Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010

Dettagli

1 L estrazione di radice

1 L estrazione di radice 1 L estrazione di radice Consideriamo la potenza 3 2 = 9 di cui conosciamo: Esponente 3 2 = 9 Valore della potenza Base L operazione di radice quadrata consiste nel chiedersi qual è quel numero x che elevato

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

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

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

Dettagli

Introduzione a Visual Basic Lezione 2 Cicli e anomalie

Introduzione a Visual Basic Lezione 2 Cicli e anomalie a Visual Basic Lezione 2 Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Perché i cicli? Un esempio concreto Finora abbiamo visto

Dettagli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m

Dettagli

Risoluzione di problemi ingegneristici con Excel

Risoluzione di problemi ingegneristici con Excel Risoluzione di problemi ingegneristici con Excel Problemi Ingegneristici Calcolare per via numerica le radici di un equazione Trovare l equazione che lega un set di dati ottenuti empiricamente (fitting

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

Informatica 3 secondo recupero 13 Settembre 2002

Informatica 3 secondo recupero 13 Settembre 2002 Informatica 3 secondo recupero 13 Settembre 2002 Nome (stampatello) Cognome (stampatello) Matr Recupero: Prima prova in itinere Seconda prova in itinere spazio per il docente Punteggi recupero prima prova

Dettagli

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi 7 Disegni sperimentali ad un solo fattore Giulio Vidotto Raffaele Cioffi Indice: 7.1 Veri esperimenti 7.2 Fattori livelli condizioni e trattamenti 7.3 Alcuni disegni sperimentali da evitare 7.4 Elementi

Dettagli

Istruzioni di ripetizione in Java 1

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

Dettagli

PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20

PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 Introduzione Materiale richiesto Notebook o computer Controllore PCD1 E Cavo USB Scheda «Training»

Dettagli

VISUAL BASIC FOR APPLICATION

VISUAL BASIC FOR APPLICATION VISUAL BASIC FOR APPLICATION LA PIATTAFORMA DI SVILUPPO GLI ELEMENTI DI VBA Finestra di progetto: mostra l elenco gerarchico dei progetti aperti e di tutti i moduli di codice e finestre di interfaccia

Dettagli

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE. DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE. PIANIFICAZIONE La pianificazione è la prima fase. Questa è la più delicata

Dettagli

Uso del pannello operatore

Uso del pannello operatore Questa sezione fornisce informazioni sul pannello operatore della stampante, sulla modifica delle impostazioni e sui menu del pannello operatore. È possibile modificare la maggior parte delle impostazioni

Dettagli

(1) (2) (3) (4) 11 nessuno/a 9 10. (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

(1) (2) (3) (4) 11 nessuno/a 9 10. (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B Compito: Domanda 1 Per l'algoritmo fornito di seguito, qual è il valore assunto dalla variabile contatore quando l'algoritmo termina: Passo 1 Poni il valore di contatore a 1 Passo 2 Ripeti i passi da 3

Dettagli

Algoritmi e Linguaggi

Algoritmi e Linguaggi Algoritmi e Linguaggi Programmi e linguaggi Un calcolatore è solo un esecutore rapidissimo di istruzioni Un programma è un insieme di istruzioni codificate in un opportuno linguaggio 2 / 21 Linguaggi e

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

1 Definizione di sistema lineare omogeneo.

1 Definizione di sistema lineare omogeneo. Geometria Lingotto. LeLing1: Sistemi lineari omogenei. Ārgomenti svolti: Definizione di sistema lineare omogeneo. La matrice associata. Concetto di soluzione. Sistemi equivalenti. Operazioni elementari

Dettagli

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli Codice La relazione che associa ad ogni successione ben formata di simboli di un alfabeto il dato corrispondente è detta codice. Un codice mette quindi in relazione le successioni di simboli con il significato

Dettagli

Informatica d ufficio

Informatica d ufficio Informatica d ufficio Anno Accademico 2008/2009 Lezione N 3 Microsoft Word - prima parte Microsoft Word E un Word processor,cioè un programma che consente di creare e modificare documenti. Prevede numerose

Dettagli

Utilizzare il debugger di Visual Studio

Utilizzare il debugger di Visual Studio Appendice F Utilizzare il debugger di Visual Studio Obiettivi Essere in grado di impostare i breakpoint e di eseguire un programma nel debugger. Essere in grado di utilizzare il comando Continue per continuare

Dettagli

PON 2007 2013 Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

PON 2007 2013 Liceo Scientifico Leonardo da Vinci. Vallo della Lucania PON 2007 2013 Liceo Scientifico Leonardo da Vinci Vallo della Lucania Nuovi percorsi matematici: Osservare, descrivere, costruire. Matlab - 2: Lavorare con le matrici Vallo della Lucania 26 Settembre 2008

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Esame Laboratorio di Sistemi Operativi 2-01-2008 Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 1 ora. Domande chiuse:

Dettagli

ATLAS 2.X : CONTROLLI PRE ESAME

ATLAS 2.X : CONTROLLI PRE ESAME ATLAS 2.X : CONTROLLI PRE ESAME Configurazione di Atlas 2.x sul server CONTESTO La macchina deve rispecchiare le seguenti caratteristiche MINIME di sistema: Valori MINIMI per Server di TC con 10 postazioni

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

File di script. I File di Script Corso 2D - R.Virili 1

File di script. I File di Script Corso 2D - R.Virili 1 File di script I File di Script Corso 2D - R.Virili 1 Cosa sono Consentono di combinare diversi comandi AutoCAD e di eseguirli in una sequenza prefissata. I comandi possono essere scritti come file di

Dettagli

VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA

VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA Riportiamo di seguito i vari passaggi per poter gestire la rivalorizzazione, sui documenti di scarico, del costo di

Dettagli

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,

Dettagli

Programma per la generazione di filastrocche

Programma per la generazione di filastrocche Programma per la generazione di filastrocche In questa sezione illustriamo un programma, realizzato all interno del progetto, che consente di generare le filastrocche che sono costituite da una strofa

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

Individuazione di sottoproblemi

Individuazione di sottoproblemi Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che

Dettagli

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni Anno Accademico 2011/2012 Segnali: Interrupt software per la gestione di eventi asincroni Concetto di segnale Un segnale è un interrupt software Un segnale può essere generato da un processo utente o dal

Dettagli

COSA SONO I FLOW CHART

COSA SONO I FLOW CHART COSA SONO LOW CHART flow chart sono schemi che descrivono visivamente come procede l esecuzione di un programma. Essi non sono legati ad uno specifico linguaggio: dato un flow chart, il programmatore può

Dettagli

Shell BASH. Variabili Redirezione

Shell BASH. Variabili Redirezione Shell BASH Variabili Redirezione Variabili Scrittura/definizione: a=3 (senza spazi) Lettura: ${a} o semplicemente $a Esempi: > a=3 > echo $a 3 > echo $aa > echo ${a}a 3a > a=ciao pippo bash: pippo: command

Dettagli

Lezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi

Lezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi Università degli Studi di Pisa Dipartimento di Informatica Lezione n.2b LPR-A-09 Threads: Callable & Future 6/10/2008 Vincenzo Gervasi Lezione U 2b: Callable & Future Vincenzo Gervasi 1 CALLABLE E FUTURE

Dettagli

float somma_float(float a, float b) int get_ascii(char c)

float somma_float(float a, float b) int get_ascii(char c) Una funzione è caratterizzata da: Tipo di dato restituito void (non restituisce nulla) int, una struttura definita dal programmatore ecc Nome della funzione Elenco parametri in ingresso, specifica: il

Dettagli

La segreteria didattica dovrà eseguire semplici operazioni per effettuare lo scrutinio:

La segreteria didattica dovrà eseguire semplici operazioni per effettuare lo scrutinio: GESTIONE SCRUTINI SEGRETERIA La segreteria didattica dovrà eseguire semplici operazioni per effettuare lo scrutinio: 1. CONTROLLO PIANI DI STUDIO DELLE CLASSI; 2. ASSEGNAZIONI PROFESSORI MATERIE; 3. CONTROLLO

Dettagli

Esercizi sulla conversione tra unità di misura

Esercizi sulla conversione tra unità di misura Esercizi sulla conversione tra unità di misura Autore: Enrico Campanelli Prima stesura: Settembre 2013 Ultima revisione: Settembre 2013 Per segnalare errori o per osservazioni e suggerimenti di qualsiasi

Dettagli

IMPARARE LE LINGUE STRANIERE A SCUOLA Un sondaggio delle convinzioni di studenti e insegnanti II ELABORAZIONE, Febbraio 2010

IMPARARE LE LINGUE STRANIERE A SCUOLA Un sondaggio delle convinzioni di studenti e insegnanti II ELABORAZIONE, Febbraio 2010 1 IMPARARE LE LINGUE STRANIERE A SCUOLA II ELABORAZIONE, Febbraio 1 Scuole campione: 6 Istituti tecnici e professionali di cittadine medio-piccole del Nord Italia; 4 classi prime (N=84); 4 classi seconde

Dettagli

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio Pillola operativa Presenze Rilevazione timbrature Versione 1.1 del

Dettagli

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1 1) Il bus in un computer trasporta a) solo dati b) solo istruzioni c) sia dati sia istruzioni 2) In una sequenza

Dettagli

FONDAMENTI DI POWER POINT

FONDAMENTI DI POWER POINT Scuola Internet Formazione Didattica http://digilander.iol.it/docenti FONDAMENTI DI POWER POINT In questo manuale troverete le informazioni basilari per lavorare con Power Point. L utilizzo delle diverse

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

1 DESCRIZIONE DELLE FUNZIONI... 3 1.1 REGISTRAZIONE UTENZE INTERNET... 3. 1.1.1 Caricamento utente internet (data entry)... 3

1 DESCRIZIONE DELLE FUNZIONI... 3 1.1 REGISTRAZIONE UTENZE INTERNET... 3. 1.1.1 Caricamento utente internet (data entry)... 3 Portale TESEO Guida al servizio INDICE 1 DESCRIZIONE DELLE FUNZIONI... 3 1.1 REGISTRAZIONE UTENZE INTERNET.... 3 1.1.1 Caricamento utente internet (data entry)... 3 1.1.2 Primo accesso e registrazione...

Dettagli

Metodi Computazionali. Generazione di numeri pseudocasuali

Metodi Computazionali. Generazione di numeri pseudocasuali Metodi Computazionali Generazione di numeri pseudocasuali A.A. 2009/2010 Pseudo random numbers I più comuni generatori di numeri random determinano il prossimo numero random di una serie come una funzione

Dettagli

ADT Coda con priorità

ADT Coda con priorità Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni

Dettagli

Daniela Lera A.A. 2008-2009

Daniela Lera A.A. 2008-2009 Daniela Lera Università degli Studi di Cagliari Dipartimento di Matematica e Informatica A.A. 2008-2009 Equazioni non lineari Metodo di Newton Il metodo di Newton sfrutta le informazioni sulla funzione

Dettagli

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 1/01/016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai

Dettagli

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it Guida introduttiva su Eclipse Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it Introduzione Eclipse è un ambiente di sviluppo (IDE) multilinguaggio e multipiattaforma scritto in Java. E Open Source. Può

Dettagli

GUIDA AL COLLEGAMENTO DEL MODEM ALICE GATE 2 Plus Wi-Fi CON SONY PLAYSTATION 3

GUIDA AL COLLEGAMENTO DEL MODEM ALICE GATE 2 Plus Wi-Fi CON SONY PLAYSTATION 3 GUIDA AL COLLEGAMENTO DEL MODEM ALICE GATE 2 Plus Wi-Fi CON SONY PLAYSTATION 3 1. Step 1 - Scelta della modalità di collegamento desiderata Il sistema Playstation3 può essere collegato al modem Alice tramite

Dettagli

Esercizi per la prova in itinere (con soluzioni)

Esercizi per la prova in itinere (con soluzioni) Esercizi per la prova in itinere (con soluzioni) Programmazione e Analisi di Dati Mod. A Programmazione Java ATTENZIONE: per la soluzione di questi esercizi usare solo i costrutti del linugaggio Java e

Dettagli

Codice Gray. (versione Marzo 2007)

Codice Gray. (versione Marzo 2007) Codice Gray (versione Marzo 27) Data una formula booleana con n variabili, per costruire una tavola di verità per questa formula è necessario generare tutte le combinazioni di valori per le n variabili.

Dettagli

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell Lab. di Sistemi Operativi - Esercitazione - Comandi Shell 1 - Esercizi Comandi Unix - 2 Esercizio n 0 0a) creare una cartella EsercitazioneLSO-1 nella directory di lavoro 0b) creare un file testo chiamato

Dettagli

Manutenzione periodica al PIANO DEI CONTI

Manutenzione periodica al PIANO DEI CONTI Manutenzione periodica al PIANO DEI CONTI La nuova gestione Utilità Piano dei Conti Premessa... 2 La creazione di un nuovo sottoconto... 3 1. Nuovo sottoconto tramite duplica da piano dei conti standard...

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono

Dettagli

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE

Dettagli

Esercizi svolti. risolvere, se possibile, l equazione xa + B = O, essendo x un incognita reale

Esercizi svolti. risolvere, se possibile, l equazione xa + B = O, essendo x un incognita reale Esercizi svolti 1. Matrici e operazioni fra matrici 1.1 Date le matrici 1 2 1 6 A = B = 5 2 9 15 6 risolvere, se possibile, l equazione xa + B = O, essendo x un incognita reale Osservazione iniziale: qualunque

Dettagli

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli Formule iterative L algoritmo che, comunemente, viene presentato a scuola per l estrazione della radice quadrata è alquanto laborioso e di scarsa

Dettagli

Introduzione al Linguaggio C ed all IDE DEV-C++

Introduzione al Linguaggio C ed all IDE DEV-C++ Microsoft Windows e Dev-C++ Introduzione al Linguaggio C ed all IDE DEV-C++ 1 Le Esercitazioni in Laboratorio! MTA + MLAB1/2: Edificio Via Valotti, primo piano e piano interrato! Orario: Giovedì 14:30-17:30!

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

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti

Dettagli

LA MEMORIA NEL CALCOLATORE

LA MEMORIA NEL CALCOLATORE Tipi di memorie (1) Rappresenta il supporto fisico, il dispositivo su cui sono immagazzinate le informazioni (dati e programmi) ROM (Read Only Memory) 1-2 MByte Cache 1 MByte di sola lettura contiene programmi

Dettagli

DOCUMENTAZIONE WEB RAIN - ACCESSO CLIENTI

DOCUMENTAZIONE WEB RAIN - ACCESSO CLIENTI DOCUMENTAZIONE WEB RAIN - ACCESSO CLIENTI L accesso alle informazioni sullo stato degli ordini di vendita del sistema informativo della società RAIN avviene attraverso il sito internet della società stessa

Dettagli

REGOLE DI BASE DEL GIOCO DEGLI SCACCHI

REGOLE DI BASE DEL GIOCO DEGLI SCACCHI REGOLE DI BASE DEL GIOCO DEGLI SCACCHI Queste sono le regole di base del gioco degli scacchi. Per giocare nei tornei occorre seguire anche altre regole comportamentali ed agonistiche. Il regolamento completo

Dettagli

Zeri di una funzione. Funzioni continue - Proprietà. certo intervallo dell'asse x. da: a ξ. cui f(x)=0. precisione desiderata (iterazione( iterazione)

Zeri di una funzione. Funzioni continue - Proprietà. certo intervallo dell'asse x. da: a ξ. cui f(x)=0. precisione desiderata (iterazione( iterazione) Zeri di una funzione Ricerca delle (eventuali) radici reali di una funzione che si supporrà definita e continua in un certo intervallo dell'asse x La ricerca delle radici approssimate e' composta da: 1)

Dettagli

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. ACCESS Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Database Relazionale: tipo di database attualmente più diffuso grazie alla

Dettagli

Automatizzare le attività con le macro di Visual Basic

Automatizzare le attività con le macro di Visual Basic Automatizzare le attività con le macro di Visual Basic Se non si ha esperienza con le macro, non c'è da preoccuparsi. Una macro è semplicemente un insieme registrato di sequenze di tasti e di istruzioni,

Dettagli

Esercizio: la classe CashRegister

Esercizio: la classe CashRegister Esercizio: la classe CashRegister Si veda anche il libro di testo: Consigli pratici 3.1 Sezione 4.2 Sezione 8.2 Esercizi 8.1 e 8.2 1 Problema Si chiede di realizzare una classe CashRegister che simuli

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, eliminazione, lettura e scrittura di file di testo Creazione, eliminazione, lettura e scrittura di file di testo Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file La classe

Dettagli