Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Laurea Ingegneria Informatica Fondamenti di Informatica"

Transcript

1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Novembre

2 Contenuti q Somma di una sequenza di numeri interi q Lunghezza di una sequenza q Massimo di una sequenza di dieci numeri (*) q Somma dei pari e dei dispari in una sequenza q Calcolo degli zeri di una sequenza di numeri interi (*) q Somma dei primi N numeri interi positivi q La formula di Gauss q Che giorno sarà? (*) q Generazione di N numeri interi random (*) q Escursione dei valori di una sequenza di interi (*) q Calcolo dei divisori di un numero intero (*) q Verifica se un numero è primo (*) (*) Esempi non presenti nel libro di testo 2

3 Somma di una sequenza di numeri interi q Si consideri il seguente problema di ingressouscita si vuole leggere dalla tastiera una sequenza di numeri interi, disposti su una singola linea e separati da spazi, calcolare la somma degli elementi della sequenza e visualizzarla sullo schermo Scrivi una sequenza di numeri interi La somma dei numeri è 23 3

4 Lettura e somma di una sequenza di numeri interi... q Problema lettura e somma di una sequenza di numeri interi q Dati di ingresso una sequenza di numeri interi A 1, A 2,..., A N q Pre-condizione N>=0, i numeri sono disposti su una singola linea e separati da spazi q Dati di uscita un numero S q Post-condizione S è uguale alla somma A 1 + A A N 4

5 ... Lettura e somma di una sequenza di numeri interi q Parametricità di questo problema la lunghezza della sequenza il valore degli elementi della sequenza q Il problema della lettura e somma di una sequenza di numeri interi non può essere risolto da un algoritmo che sia semplicemente una sequenza di istruzioni semplici il numero degli elementi della sequenza non è noto a priori q La versione iniziale dell algoritmo è la seguente 1. leggi una sequenza di numeri interi e calcolane la somma somma 2. visualizza somma 5

6 Raffinamento del passo 1 q Raffinamento del passo 1 1. leggi una sequenza di numeri interi e calcolane la somma somma 1.1 inizialmente somma vale zero somma = 0; 1.2 finché ci sono altri elementi, leggili e sommali a somma while ( ci sono altri elementi nella sequenza ) { leggi dalla tastiera un elemento della sequenza numero } incrementa somma di numero 6

7 Uso della variabile somma q La variabile somma è usata nell algoritmo per memorizzare la somma degli elementi che sono stati letti dalla tastiera inizialmente, quando nessun elemento della tastiera è stato letto, vale 0 dopo ciascuna operazione di lettura e incremento, è uguale alla somma degli elementi letti dopo la lettura dell intera sequenza, è uguale alla somma di tutti gli elementi della sequenza che è proprio il valore che deve essere calcolato 7

8 Discussione q L uso dell istruzione ripetitiva permette di risolvere il problema l algoritmo legge tutti gli elementi della sequenza il corpo dell istruzione ripetitiva viene eseguito tante volte quanti sono gli elementi della sequenza l algoritmo calcola la somma degli elementi letti 8

9 Ulteriori raffinamenti q Alcuni ulteriori raffinamenti sono immediati 1.2 finché ci sono altri elementi nella sequenza, leggili e sommali a somma while ( ci sono altri elementi nella sequenza ) { } leggi un elemento della sequenza numero dalla tastiera numero = Lettore.in.leggiInt(); incrementa somma di numero somma = somma + numero; 9

10 Raffinamento della condizione q Rimane da raffinare la condizione dell istruzione ripetitiva while ( ci sono altri elementi nella sequenza ) bisogna sapere che l oggetto Lettore.in fornisce una operazione boolean eoln() che verifica se è stata raggiunta la fine della linea corrente End Of Line (fine della linea) eoln() verifica se non ci sono altri caratteri che possono essere letti dalla linea corrente la condizione che deve essere usata nell istruzione ripetitiva è la negazione logica della condizione calcolata da eoln() ci sono altri elementi nella sequenza se eoln() è falso l operatore! calcola la negazione di una condizione la condizione dell istruzione ripetitiva può essere scritta come!lettore.in.eoln() 10

11 Algoritmo per la somma di una sequenza di numeri interi 1. leggi una sequenza di numeri interi e calcolane la somma somma 1.1 inizialmente somma vale zero somma = 0; 1.2 finché ci sono altri elementi nella sequenza, leggili e sommali a somma while ( ci sono altri elementi nella sequenza ) while (!Lettore.in.eoln() ) { leggi un elemento numero dalla tastiera numero = Lettore.in.leggiInt(); incrementa somma di numero } 2. visualizza somma somma = somma + numero; System.out.println(somma); 11

12 Programma per la somma di una sequenza di numeri int numero; // elemento corrente della sequenza int somma; // somma degli elementi della sequenza /* leggi una sequenza di numeri interi e * calcolane la somma */ /* inizialmente somma vale zero */ somma = 0; /* finché ci sono altri elementi nella sequenza, * leggili e sommali a somma */ while (!Lettore.in.eoln()) { // finché ci sono // altri elementi /* leggi un elemento della sequenza */ numero = Lettore.in.leggiInt(); /* incrementa somma di numero */ somma = somma + numero; } /* visualizza somma */ System.out.println(somma); 12

13 Lunghezza di una sequenza... q Si consideri ora il seguente problema di ingresso-uscita si vuole leggere dalla tastiera una sequenza di numeri interi, disposti su una singola linea e separati da spazi, calcolare la lunghezza della sequenza (ovvero, il numero di elementi della sequenza) e visualizzarla sullo schermo Scrivi una sequenza di numeri interi La lunghezza della sequenza è 4 13

14 ... Lunghezza di una sequenza... q Problema lettura di una sequenza di numeri interi e calcolo della lunghezza q Dati di ingresso una sequenza di numeri interi A 1, A 2,..., A N q Pre-condizione N>=0, i numeri sono disposti su una singola linea e separati da spazi q Dati di uscita un numero L q Post-condizione L è uguale alla lunghezza N della sequenza A 1, A 2,..., A N 14

15 ... Lunghezza di una sequenza q Una variante del problema della lettura e somma di una sequenza di numeri interi bisogna leggere dalla tastiera una sequenza di numeri interi ma non bisogna calcolarne la somma bisogna piuttosto contare il numero degli elementi q È possibile scrivere un algoritmo come adattamento di quello della somma di una sequenza di numeri non ripartendo da zero anziché gestire la variabile somma va gestita una variabile lunghezza per contare il numero degli elementi della sequenza che sono stati letti 15

16 Algoritmo per il calcolo della lunghezza di una sequenza 1. leggi una sequenza di numeri interi e calcolane la lunghezza lunghezza 1.1 inizialmente lunghezza vale zero lunghezza = 0; 1.2 finché ci sono altri elementi nella sequenza, leggili e incrementa lunghezza while (!Lettore.in.eoln() ) { leggi un elemento della sequenza numero dalla tastiera numero = Lettore.in.leggiInt(); incrementa lunghezza lunghezza = lunghezza + 1; } 2. visualizza lunghezza System.out.println(lunghezza); 16

17 Esercizi q Verificare l algoritmo per il calcolo della lunghezza di una sequenza ad esempio, se la sequenza è q Implementare l algoritmo per il calcolo della lunghezza di una sequenza q Scrivere un algoritmo che legge una sequenza non vuota di numeri interi e ne calcola la media aritmetica la somma degli elementi diviso il numero degli elementi 17

18 Calcolo del massimo di dieci numeri... q Si consideri il seguente problema di ingressouscita si vuole leggere dalla tastiera una sequenza di numeri interi di lunghezza fissata (ad esempio, di lunghezza 10), calcolare il valore massimo degli elementi e visualizzarlo sullo schermo Scrivi una sequenza di dieci numeri interi Il valore massimo calcolato è : 12 18

19 ... Calcolo del massimo di dieci numeri q Problema lettura di una sequenza di 10 numeri interi e calcolo del valore massimo degli elementi q Dati di ingresso una sequenza di dieci numeri interi A 1, A 2,..., A 10 q Pre-condizione nessuna q Dati di uscita un numero max q Post-condizione max è il massimo degli elementi della sequenza A 1, A 2,..., A 10 19

20 Algoritmo per il calcolo del massimo tra dieci numeri interi... q L algoritmo può essere realizzato gestendo le seguenti variabili num - valore dell elemento corrente della sequenza cont - contatore degli elementi già letti max - valore massimo degli elementi già letti q La gestione delle variabili max e cont avviene come segue inizialmente cont vale 0 leggi il primo numero num, assumilo come valore provvisorio del massimo max, e incrementa cont per ogni altro numero num letto max deve essere confrontato con num ed eventualmente modificato cont deve essere incrementata di uno 20

21 ... Algoritmo per il calcolo del massimo tra dieci numeri interi Leggi una sequenza di dieci numeri interi e calcolane il massimo: 1. inizializza il contatore dei numeri letti cont = 0; 2. leggi un numero num da input inizializza max max = num; 4. incrementa il contatore dei numeri letti cont = cont + 1; 5. finché ci sono ancora numeri da leggere while (cont <= 9) 5.1 leggi un numero num confronta num con max se num > max if (num > max) memorizza il contenuto di num in max max = num; 5.3 incrementa cont cont = cont + 1; 6. il risultato è max 21

22 Applicazione per il calcolo del massimo tra dieci numeri interi... import fiji.io.*; /* Applicazione che calcola il massimo tra 10 numeri */ class Max10Numeri{ public static void main(string[] args){ int num; //numero letto int max; //massimo calcolato int cont; //contatore dei numeri letti //precondizioni sequenza non vuota: almeno un elemento /* inizializzazione del contatore */ cont = 0; /* lettura del primo numero - fuori dal ciclo*/ System.out.println("Scrivi una sequenza di 10 numeri interi"); num = Lettore.in.leggiInt(); /* appena leggo un numero incremento il contatore */ cont = cont + 1;... 22

23 ... Applicazione per il calcolo del massimo tra dieci numeri interi... /* essendo l'unico numero letto esso è il massimo */ max = num; /* devono essere letti altri 9 numeri */ while (cont <= 9){ /*lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); cont = cont + 1; /* se num è maggiore del max, aggiorno max */ if (num > max) max = num; } System.out.print("valore massimo calcolato è: "); System.out.println(max); } } 23

24 Somma dei pari e dei dispari in una sequenza... q Si consideri il seguente problema di ingresso-uscita, che è una variante dei problemi precedenti si vuole leggere dalla tastiera una sequenza di numeri interi, disposti su una singola linea e separati da spazi, calcolare la somma degli elementi di valore pari e la somma degli elementi di valore dispari, e visualizzare la somma dei pari e la somma dei dispari sullo schermo Scrivi una sequenza di numeri interi La somma dei pari è 8 La somma dei dispari è 15 q Una variante della lettura e somma di una sequenza ci sono due dati da visualizzare (in uscita) anziché uno solo 24

25 ... Somma dei pari e dei dispari in una sequenza q Per risolvere il problema bisogna gestire una coppia di variabili sommapari la somma degli elementi di valore pari della sequenza sommadispari la somma degli elementi di valore dispari della sequenza q Queste due variabili devono essere gestite come segue inizialmente valgono entrambe zero per ogni numero della sequenza se il numero è pari, allora deve essere usato per incrementare sommapari altrimenti il numero è dispari, e deve essere usato per incrementare sommadispari 25

26 Algoritmo per la somma dei pari e dei dispari q In questo caso, all interno dell istruzione ripetitiva, deve essere usata una istruzione condizionale if-else per ogni elemento della sequenza deve essere eseguita una tra due istruzioni al verificarsi (o meno) di una condizione una possibile istruzione è l incremento di sommapari l altra possibile istruzione è l incremento di sommadispari comunque deve essere eseguita esattamente una tra queste due istruzioni la condizione è numero è pari l operatore % calcola il resto della divisione tra due numeri interi un numero è pari se diviso per due dà resto zero la condizione dell istruzione condizionale può essere scritta come numero%2==0 26

27 Uso dell istruzione if-else leggi gli elementi della sequenza e calcola la somma dei pari e la somma dei dispari sommapari = 0; sommadispari = 0; finché ci sono altri elementi nella sequenza, leggili e calcola la somma dei pari e la somma dei dispari while (!Lettore.in.eoln() ) { numero = Lettore.in.leggiInt(); se numero è pari, incrementa sommapari di numero, altrimenti incrementa sommadispari di numero } if ( numero%2==0 ) sommapari = sommapari + numero; else sommadispari = sommadispari + numero; 27

28 Programma per la somma dei pari e la somma dei dispari... int numero; // elemento corrente della sequenza int sommapari; // somma degli elementi pari int sommadispari; // somma degli elementi dispari /* leggi una sequenza di numeri interi e calcola * la somma dei pari e la somma dei dispari */ /* inizialmente le somme valgono zero */ sommapari = 0; sommadispari = 0; /* finché ci sono altri elementi nella sequenza, leggili * e calcola la somma dei pari e la somma dei dispari */ while (!Lettore.in.eoln()) { /* leggi un elemento della sequenza */ numero = Lettore.in.leggiInt();... 28

29 ... Programma per la somma dei pari e dei dispari... /* se numero è pari, incrementa sommapari di numero, * altrimenti incrementa sommadispari di numero */ if (numero%2==0) // se numero è pari /* incrementa sommapari di numero */ sommapari = sommapari + numero; else // altrimenti numero è dispari /* incrementa sommadispari di numero */ sommadispari = sommadispari + numero; } /* visualizza le somme */ System.out.println(sommaPari); System.out.println(sommaDispari); 29

30 Calcolo degli zeri di una sequenza q Risolvere il seguente problema di ingressouscita leggere dalla tastiera una sequenza di numeri interi, disposti su una singola linea e separati da spazi, calcolare il numero di zeri della sequenza (ovvero, il numero di elementi della sequenza che sono uguali a zero) e visualizzare il numero di zeri sullo schermo Scrivi una sequenza di numeri interi Il numero di zeri nella sequenza è 1... bisogna usare l istruzione if... 30

31 Calcolo degli zeri di una sequenza frammento di codice da completare int numero; // elemento corrente della sequenza int zeri; // numero di zeri nella sequenza /* leggi una sequenza di numeri interi e * calcolane il numero di zeri */ /* inizialmente zeri vale zero */ zeri = 0; /* finché ci sono altri elementi nella sequenza, * leggili e calcola il numero di zeri */ while (!Lettore.in.eoln()) { /* leggi un elemento della sequenza */ numero = Lettore.in.leggiInt();... // da completare } /* visualizza zeri */ System.out.println(zeri); 31

32 Somma dei primi N numeri interi positivi q Si vuole risolvere il problema di calcolare la somma dei primi N numeri interi positivi, dato un numero naturale N un problema nella forma più generale la sua soluzione deve portare alla scrittura di un metodo in cui il numero naturale N è un parametro del metodo la somma dei primi N numeri interi positivi deve essere restituita dal metodo 32

33 Somma dei primi N numeri interi positivi q Problema somma dei primi N numeri interi positivi q Insieme di ingresso un numero N q Pre-condizione N è un numero naturale, ovvero N 0 q Insieme di uscita un numero S q Post-condizione S è uguale alla somma N dei primi N numeri positivi (S deve essere uguale a zero nel caso in cui N sia uguale a zero) 33

34 Somma dei primi N numeri interi positivi q La somma dei primi N numeri interi positivi può essere calcolata da un algoritmo che utilizza le seguenti variabili una variabile somma, gestita come segue la variabile somma inizialmente vale zero a somma deve essere sommato ciascuno dei primi N numeri interi positivi ovvero, ciascun numero intero compreso tra 1 e N una variabile i a cui si vogliono far assumere come valori tutti i numeri interi compresi tra 1 e N ovvero, i valori che devono essere sommati a somma 34

35 Algoritmo per la somma dei primi N numeri interi positivi q La prima formulazione dell algoritmo è la seguente inizializza somma somma = 0; per ogni valore di i compreso tra 1 e N, incrementa somma di i somma = somma + i; il risultato è somma q L algoritmo non è completamente dettagliato deve essere eseguito un raffinamento, introducendo una istruzione ripetitiva 35

36 La formula di Gauss q Esiste una nota formula (formula di Gauss) per il calcolo della somma S N dei primi N numeri interi positivi (valida per N naturale) S N = N = N (N+1) / 2 /* Calcola la somma dei primi n numeri positivi. */ public static int sommaprimipositivigauss(int n) { // pre: n >= 0 int somma; // somma dei primi n numeri positivi } /* calcola la somma dei primi n numeri positivi */ somma = n*(n+1)/2; /* il risultato è somma */ return somma; q uno stesso problema può essere risolto da più algoritmi, anche molto diversi tra loro 36

37 Confronto tra i due algoritmi q Quante operazioni sono richieste per lo svolgimento dei due algoritmi? la soluzione iterativa per il calcolo della somma dei primi N numeri interi positivi richiede lo svolgimento di 2N+2 assegnazioni e di N+1 confronti la soluzione basata sulla formula di Gauss richiede lo svolgimento di 1 sola assegnazione q La soluzione basata sulla formula di Gauss è sempre più efficiente di quella iterativa sempre va interpretato nel senso di per ogni possibile valore di N che soddisfa la pre-condizione del problema ovvero per ogni numero naturale N 37

38 Che giorno sarà?... q Problema Applicazione che calcola il giorno della settimana corrispondente ad una data q Esempio sapendo che il primo gennaio del 2007 è lunedì, che giorno sarà il 15 agosto? (mercoledì) 38

39 ... Che giorno sarà? q Dati di ingresso Il giorno della settimana corrispondente al 1 gennaio dell anno di riferimento; L anno di riferimento; La data (gg/mm) appartenente all anno di riferimento di cui si vuole conoscere il giorno della settimana; q Pre-condizione L anno è un intero positivo maggiore di 1600 La data deve essere ammissibile. q Dati di uscita Il giorno della settimana corrispondente alla data immessa in input 39

40 Convenzione q I giorni della settimana sono rappresentati da caratteri (tipo char) con la seguente convenzione: Giorni char Lunedì l Martedì m Mercoledì M Giovedì g Venerdì v Sabato s Domenica d 40

41 L algoritmo q Leggo i dati da input. q Calcolo il numero di giorni (numgiorni) che separano la data di interesse dal 1 gennaio. q Il resto della divisione di numgiorni per 7 indica la distanza settimanale del giorno dalla data di interesse q Copio il giorno del 1 gennaio in giornores che rappresenterà il risultato finale q Finché (cont <= distanza settimanale) Calcolo il giorno successivo a giornores Assegno il valore del nuovo giorno a giornores q Stampa dei risultati 41

42 Il numero dei giorni... q Per calcolare il numero di giorni che separano il primo giorno dell anno e l ultimo giorno del mese precedente alla data di interesse, sfruttiamo il metodo NumeroGiorni, che tra le altre cose terrà conto se un anno è bisestile o meno 42

43 ... Il numero dei giorni public static int NumeroGiorni(int mese, int anno){ int i; int numgiorni; i=1; numgiorni=0; while (i< mese) { /* calcolo dei giorni del mese */ if (i==2) if (Bisestile.bisestile(anno)) numgiorni = numgiorni+29; else numgiorni = numgiorni+28; } else i=i+1; }// end while return numgiorni; //mesi con 30 giorni if (i==4 i==6 i==9 i==11) numgiorni = numgiorni+30; else numgiorni = numgiorni+31; 43

44 Il giorno successivo... q L individuazione del giorno successivo viene effettuata tramite il metodo succ in funzione del parametro in input di tipo char, che rappresenta un giorno, questo metodo restituisce la codifica del giorno successivo. 44

45 ... Il giorno successivo public static char succ(char giorno){ char successore; if (giorno == 'l') successore = 'm'; else if(giorno == 'm') successore = 'M'; else if (giorno == 'M') successore = 'g'; else if (giorno == 'g') successore = 'v'; else if (giorno == 'v') successore = 's'; else if (giorno == 's') successore = 'd'; else if (giorno == 'd') successore = 'l'; else successore = 'e'; // per gestire un errore return successore; } 45

46 Stampa del Giorno q Il metodo StampaGiorno viene impiegato per passare dalla rappresentazione dei giorni tramite char ad una rappresentazione più leggibile 46

47 Stampa del Giorno public static void StampaGiorno(char c){ if (c == 'l') System.out.println(" lunedi'"); else if (c == 'm') System.out.println(" martedi'"); else if (c == 'M') System.out.println(" mercoledi'"); else if (c == 'g') System.out.println(" giovedi'"); else if (c == 'v') System.out.println(" venerdi'"); else if (c == 's') System.out.println(" sabato"); else if (c == 'd') System.out.println(" domenica"); else System.out.println(" errore!! "); } 47

48 La classe CheGiornoSara: dichiarazioni import fiji.io.*; class CheGiornoSara{ public static void main(string[] args){ /*input*/ char giorno1gen; int anno; int giorno, mese; /*output*/ char giornoris; //giorno della settimana corrispondente al 1 gennaio // anno corrispondente // giorno e mese di cui si vuol // conoscere il giorno della // settimana // giorno della settimana //corrispondente a g,m /* variabili d'appoggio */ int numgiorni; //numero di giorni tra il 1 gennaio e la //data richiesta int i,app; 48

49 La classe CheGiornoSara: acquisizione dei dati /*lettura della data di partenza senza controllo sulla correttezza dei dati */ System.out.println("Scrivi il giorno della settimana corrispondente al 1 gennaio"); System.out.println("(l m M g v s d) "); giorno1gen = Lettore.in.leggiChar(); System.out.println("Di quale anno?"); anno = Lettore.in.leggiInt(); System.out.println("Di quale data vuoi calcolare il giorno della settimana? "); System.out.println("scrivi giorno e mese in cifre, separati da spazi"); giorno = Lettore.in.leggiInt(); mese = Lettore.in.leggiInt(); 49

50 La classe CheGiornoSara: calcolo /* calcolo il numero di giorni tra il 1 gennaio e l ultimo giorno del mese precedente */ numgiorni=numerogiorni(mese,anno); /* poi aggiungo i giorni del mese in esame */ numgiorni = numgiorni+giorno-1; /* -1 perchè devo contare dal 1 gennaio escluso */ app = numgiorni % 7; // distanza settimanale da colmare giornoris= giorno1gen; i=1; while(i<=app){ giornoris=succ(giornoris); i++ } 50

51 La classe CheGiornoSara: stampa del risultato /* stampa dei dati */ System.out.print(" il giorno corrispondente al " + giorno + "/" + mese + "/" + anno + " è: "); StampaGiorno(giornoRis); }//end main 51

52 Generazione di n numeri interi random q Problema Scrivere un applicazione per generare e visualizzare sullo schermo N numeri interi random compresi tra 0 e 99 q Dati di ingresso un intero N q Pre-condizione N >= 0 q Dati di uscita Una sequenza di numeri q Post-condizione Nessuna 52

53 Algoritmo per la generazione di n interi numeri random q Il metodo Math.random() calcola un numero pseudocasuale di tipo double compreso nell intervallo [0,1). q Bisogna trasformarlo in un numero di tipo int compreso in [0,100) moltiplicandolo per 100 q Leggi un intero n q Inizializza un contatore i a 0, che permette di contare il numero di volte che deve essere richiamato il metodo Math.random() per generare gli n numeri random q Mentre i < n Genera un numero random, moltiplicalo per 100, trasformalo in un intero e visualizzalo sullo schermo Incrementa il contatore i 53

54 Codifica per la generazione di n interi numeri random //pre: n>=0 int res; // numero generato int n; // numero di elementi da generare int i; // contatore per l'istr. ripetitiva /*lettura del valore di n */ System.out.println("quanti numeri vuoi generare? "); n = Lettore.in.leggiInt(); i=0; while(i <n ){ /* calcolo del numero random */ res = (int)(math.random()*100); System.out.print(res); System.out.print(" "); i=i+1; } 54

55 Applicazione per la generazione di n interi numeri random import fiji.io.*; /* Applicazione che genera n numeri random tra 0 e 100 */ class NumeriRandom{ public static void main(string[] args){ //pre: n>=0 int res; // numero generato int n; // numero di elementi da generare int i; // contatore per l'istr. ripetitiva /*lettura del valore di N */ System.out.println("quanti numeri vuoi generare? "); n = Lettore.in.leggiInt(); i=0; while( i<n ){ /* calcolo del numero random */ res = (int)(math.random()*100); System.out.print(res); System.out.print(" "); i=i+1; } System.out.println(); } } 55

56 Esercizi q Definire un metodo di un oggetto per generare e visualizzare N numeri interi random nell intervallo [0,100), assumendo il valore di N come parametro del metodo q Definire un metodo di un oggetto per calcolare e visualizzare il valore massimo di una sequenza di N numeri interi, assumendo il valore di N come parametro del metodo q Definire una classe applicazione per generare N numeri interi random nell intervallo [0,100) e per calcolare e visualizzare il valore massimo degli N numeri interi generati in modo random 56

57 Escursione dei valori in una sequenza q Problema Scrivere un applicazione che calcola l'escursione dei valori di una sequenza di interi letta da tastiera q Esempio Dati i valori l escursione è 7 (da -2 a 4) q Dati di ingresso una sequenza di numeri interi q Pre-condizione La sequenza è non vuota q Dati di uscita Massimo, minimo ed escursione q Post-condizione 57

58 Algoritmo per l escursione dei valori in una sequenza Inizializzo max e min: Leggo il primo elemento della sequenza e lo memorizzo in num max = num min = num Finché non sono terminati gli elementi sulla linea di input leggo un numero e lo memorizzo in num se num > max allora aggiorno max con num se num < min allora aggiorno min con num L escursione è data da (max-min+1) Se la sequenza è composta tutta da valori negativi? 58

59 Codifica per l escursione dei valori in una sequenza System.out.println( Scrivi una sequenza non vuota di numeri interi "); num = Lettore.in.leggiInt(); max = num; min = num; /* finchè non viene dato invio */ while (!Lettore.in.eoln()){ /*lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); /* se num è maggiore del max, aggiorno max */ if (num > max) max = num; /* se num è minore di min aggiorno min */ if (num < min) min = num; } System.out.print("L'escursione della sequenza è "); System.out.println(Math.abs(max-min+1)); 59

60 Applicazione per l escursione dei valori in una sequenza... import fiji.io.*; /* Applicazione che calcola l'escursione dei valori di una sequenza di interi letta da input */ class Escursione{ public static void main(string[] args){ int num; int max,min; //precondizioni sequenza non vuota System.out.println("Scrivi una sequenza non vuota di numeri interi"); num = Lettore.in.leggiInt(); max=num; min=num; /* OPPURE */ /* inizializzazione delle var con il massimo e minimo intero rappresentabili: valori che saranno subito aggiornati dalla lettura del primo elemento che esiste perchè la sequenza è non vuota */ //max =Integer.MIN_VALUE; //min =Integer.MAX_VALUE; /** sono inizializzazioni sufficientemente generali? **/ 60

61 ... Applicazione per l escursione dei valori in una sequenza /* finchè non viene dato invio */ while (!Lettore.in.eoln()){ /* lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); /* se num è maggiore del max, aggiorno max */ if (num > max) max = num; /* se num è minore di min aggiorno min */ if (num < min) min = num; } System.out.print("valore massimo "); System.out.println(max); System.out.print("valore minimo "); System.out.println(min); System.out.print("L'escursione della sequenza è "); System.out.println(Math.abs(max-min+1)); } } 61

62 Calcolo dei divisori di un numero intero q Problema Dato un numero num intero positivo calcolare e visualizzare tutti i suoi divisori (1 e num esclusi) q Esempio I divisori di 28 sono 2, 4, 7, e 14 q Dati di ingresso num q Pre-condizione num intero positivo q Dati di uscita sequenza dei divisori q Post-condizione??? 62

63 Algoritmo per il calcolo dei divisori di un numero intero Dato un numero intero num, verifico che tutti i valori div compresi tra 2 e num/2 dividano o meno num Se il risultato della divisione di num per div dà resto 0 allora div è un divisore di num e lo visualizzo inizializza lim a num/2 Inizializza div a 2 Finché il divisore div è < lim Se il resto della divisione di num per div è 0 allora visualizza div incrementa div di 1 63

64 Codifica per il calcolo dei divisori di un numero intero /* lettura del numero */ System.out.println("Scrivi un intero positivo"); num = Lettore.in.leggiInt(); /* inizializzo il limite massimo dei divisori */ lim = num/2; /* inizializzo il divisore */ div = 2; /* spiegazione delle stampe che verranno prodotte all'interno del ciclo while */ System.out.println("I suoi divisori sono: "); /* verifico da 2 fino a lim */ while (div <= lim){ if (num%div == 0) System.out.println(div); div = div + 1; } 64

65 Applicazione per il calcolo dei divisori di un numero intero... import fiji.io.*; /* Applicazione che calcola e visualizza i divisori di un * numero intero letto da tastiera */ class Divisori{ public static void main(string[] args){ int num; //numero letto int lim; //limite massimo dei divisori int div; //divisore //precondizioni: num è intero positivo (>=1) /* dato num, verifico che tutti i valori div compresi * tra 2 e num/2 dividano o meno num. Se il risultato * della divisione di num per div dà resto 0 allora * div è un divisore di num e lo visualizzo */ /*lettura del numero*/ System.out.println("Scrivi un intero positivo"); num = Lettore.in.leggiInt(); 65

66 ... Applicazione per il calcolo dei divisori di un numero intero /* inizializzo il limite massimo dei divisori */ lim = num/2; /* inizializzo il divisore */ div = 2; /* spiegazione delle visualizzazioni che verranno * prodotte all'interno del ciclo while */ System.out.println("I suoi divisori sono: "); } } /* verifico i divisori da 2 fino a lim */ while (div <= lim){ if (num%div == 0) System.out.println(div); div = div + 1; } 66

67 Esercizi q Scrivere un applicazione che verifica se un numero intero letto da tastiera è primo q Scrivere un metodo che verifica se un numero intero assunto come parametro del metodo è primo q Scrivere un applicazione che calcola e visualizza i primi 10 numeri primi 67

68 Esercizio: verifica se un numero è primo q Problema Scrivere un applicazione che verifica se un numero è primo q Dati di ingresso Un intero positivo n q Pre-condizione n>0 q Dati di uscita Vero/falso (primo / non primo) q Post-condizione 68

69 Algoritmo per la verifica se un numero è primo Leggi n da input Inizializza div a 2 Inizia a provare se div divide n: se div divide n fine - perché n non è primo Finché (div non divide n) e (div non è arrivato a n/2) incremento div di 1 se esci dal ciclo perché n è divisibile per div allora n è primo altrimenti n non è primo 69

70 Codifica per la verifica se un numero è primo int div; //divisore per la verifica div = 2; while ((n%div!=0)&& (div<=n/2)) div = div +1; /* esco dal ciclo quando n%div = 0 (il num è divisibile) oppure quando div > n/2 (li ho provati tutti) */ if (n%div==0) return false; else return true; 70

71 Applicazione per la verifica se un numero è primo... import fiji.io.*; /* Applicazione che verifica se un numero è primo */ class Primi{ public static void main(string[] args){ int n; //numero letto da input //pre: n>0 /*lettura del numero da input*/ System.out.println("Scrivi un numero (>0)"); n = Lettore.in.leggiInt(); if (primo(n)) {System.out.print("il numero "); System.out.print(n); System.out.println(" è primo");} else {System.out.print("il numero "); System.out.print(n); System.out.println(" NON è primo");} } 71

72 ... Applicazione per la verifica se un numero è primo public static boolean primo(int n){ int div; //divisori per la verifica boolean trovato; //true se è stato trovato un divisore div = 2; trovato = false; while (!trovato && (div<=n/2)){ if (n%div == 0) trovato = true; div = div +1;} /* esco dal ciclo o quando trovato è true (il num è divisibile) o quando div > n/2 li ho provati tutti */ return!trovato; } } 72

73 Esercizi q Scrivere un programma che generi i primi n numeri primi. q Un numero n si dice perfetto se la somma di tutti I suoi divisori (n escluso) è uguale a n. Ad esempio 6 è perfetto perché = 6. Scrivere un applicazione che legge da input un intero m e genera I primi m numeri perfetti. q Suggerimento: non provare con valori di m troppo grandi, massimo m=4. 73

74 Riferimenti al libro di testo q Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al capitolo 5 su Problemi, algoritmi e oggetti q Con particolare riferimento ai paragrafi Dal al

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 E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi

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 2009 http://www.dia.uniroma3.it/~java/fondinf/ Esempi di

Dettagli

Problemi, algoritmi e oggetti

Problemi, algoritmi e oggetti Fondamenti di informatica Oggetti e Java Luca Cabibbo Capitolo 5 Marzo 2007 1 Fondamenti di informatica: Oggetti e Jav Contenuti... Problemi e algoritmi comprensione del problema identificazione di un

Dettagli

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

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

Dall analisi alla codifica (2)

Dall analisi alla codifica (2) Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Dall analisi alla codifica (2) Aprile 2010 Dall analisi alla codifica (2) 1 Contenuti Problemi di ingresso e uscita (esempi ed esercizi)

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

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

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

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

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base: LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto

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

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

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

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

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

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

Dall analisi alla codifica (1)

Dall analisi alla codifica (1) Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 09 Dall analisi alla codifica (1) Aprile 2010 Dall'analisi alla codifica (1) 1 Contenuti... Problemi e algoritmi comprensione del problema

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

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

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

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

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

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

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

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

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

Lab 04 Istruzioni, cicli e array"

Lab 04 Istruzioni, cicli e array Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2011/2012 Lab 04 Istruzioni, cicli e array" Lab04

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

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.

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

Corso sul linguaggio Java

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

Dettagli

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

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

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

Semantica Assiomatica

Semantica Assiomatica Semantica Assiomatica Anche nella semantica assiomatica, così come in quella operazionale, il significato associato ad un comando C viene definito specificando la transizione tra stati (a partire, cioè,

Dettagli

FORMULE: Operatori matematici

FORMULE: Operatori matematici Formule e funzioni FORMULE Le formule sono necessarie per eseguire calcoli utilizzando i valori presenti nelle celle di un foglio di lavoro. Una formula inizia col segno uguale (=). La formula deve essere

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

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

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

Unità B3 Strutture di controllo

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

Dettagli

Studente: SANTORO MC. Matricola : 528

Studente: SANTORO MC. Matricola : 528 CORSO di LAUREA in INFORMATICA Corso di CALCOLO NUMERICO a.a. 2004-05 Studente: SANTORO MC. Matricola : 528 PROGETTO PER L ESAME 1. Sviluppare una versione dell algoritmo di Gauss per sistemi con matrice

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

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

Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

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

EXCEL FUNZIONI PRINCIPALI

EXCEL FUNZIONI PRINCIPALI EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

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

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

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Cenni su algoritmi, diagrammi di flusso, strutture di controllo Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 13 aprile 2012 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Dettagli

RICERCA DI UN ELEMENTO

RICERCA DI UN ELEMENTO RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare

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

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Esercitazione 3. Corso di Fondamenti di Informatica

Esercitazione 3. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 3 Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

1) Dati in ingresso 2 numeri, l algoritmo calcola e stampa a video la loro somma

1) Dati in ingresso 2 numeri, l algoritmo calcola e stampa a video la loro somma Algoritmo: E un insieme finito di azioni che risolvono un determinato problema, trasformando i dati di input in di dati di output (o risultati) attraverso relazioni o formule che legano i dati in ingresso

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

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

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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

Dettagli

Corso 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

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

LAVORO ESTIVO DI INFORMATICA CLASSE 2O LAVORO ESTIVO DI INFORMATICA CLASSE 2O PER COLORO CHE HANNO AVUTO LA SOSPENSIONE DEL GIUDIZIO, GLI ESERCIZI SVOLTI DEVONO ESSERE CONSEGNATI TASSATIVAMENTE IL GIORNO DELL'ESAME SCRITTO. A CHI È STATO ASSEGNATO

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

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

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2 Dati due numeri naturali a e b, diremo che a è divisibile per b se la divisione a : b è esatta, cioè con resto 0. In questo caso diremo anche che b è un divisore di a. 24 : 3 = 8 con resto 0 26 : 4 = 6

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

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

COGNOME E NOME (IN STAMPATELLO) MATRICOLA

COGNOME E NOME (IN STAMPATELLO) MATRICOLA Politecnico di Milano Facoltà di Ingegneria dell Informazione Informatica 3 Proff. Ghezzi, Lanzi, Matera e Morzenti Seconda prova in itinere 4 Luglio 2005 COGNOME E NOME (IN STAMPATELLO) MATRICOLA Risolvere

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca

Dettagli

Appunti di Sistemi Elettronici

Appunti di Sistemi Elettronici Prof.ssa Maria Rosa Malizia 1 LA PROGRAMMAZIONE La programmazione costituisce una parte fondamentale dell informatica. Infatti solo attraverso di essa si apprende la logica che ci permette di comunicare

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

Algoritmi e diagrammi di flusso

Algoritmi e diagrammi di flusso Algoritmi e diagrammi di flusso Un algoritmo può essere descritto come una sequenza finita ed ordinata di operazioni che descrivono la soluzione di un problema. Per sequenza finita si intende che un algoritmo

Dettagli

Esercizio: numero primo

Esercizio: numero primo Esercizio: numero primo Dato un numero N scrivere un algoritmo che verifichi se N è un numero primo e stampi un relativo messaggio Il numero N è un numero primo se è divisibile solo per 1 e per N Quindi,

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

Verifica della correttezza formale del numero di partita IVA

Verifica della correttezza formale del numero di partita IVA Verifica della correttezza formale del numero di partita IVA A tutti i soggetti che intraprendono un attività rilevante ai fini Iva (impresa, arte, professione), al momento della presentazione della dichiarazione

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Prova di Laboratorio di Programmazione

Prova di Laboratorio di Programmazione Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare

Dettagli

Programmazione dinamica

Programmazione dinamica Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)

Dettagli

Caratteri e stringhe Esercizi risolti

Caratteri e stringhe Esercizi risolti Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.

Dettagli

Sequenza alternativa degli eventi: Variazione di prezzo superiore al 20% per almeno un articolo.

Sequenza alternativa degli eventi: Variazione di prezzo superiore al 20% per almeno un articolo. Corso di Ingegneria del software - Seconda prova di verifica in itinere, 17 dicembre 2008 C, Montangero, L. Semini Dipartimento di Informatica, Università di Pisa a.a. 2008/09 La prova si svolge a libri

Dettagli