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 Esempi di algoritmi e programmi - 4 1

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

3 Somma di una sequenza di numeri interi 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 Esempi di algoritmi e programmi - 4 3

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

5 ... Lettura e somma di una sequenza di numeri interi Parametricità di questo problema la lunghezza della sequenza il valore degli elementi della sequenza 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 La versione iniziale dell algoritmo è la seguente 1. leggi una sequenza di numeri interi e calcolane la somma somma 2. visualizza somma Esempi di algoritmi e programmi - 4 5

6 Raffinamento del passo 1 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 Esempi di algoritmi e programmi - 4 6

7 Uso della variabile somma 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 Esempi di algoritmi e programmi - 4 7

8 Discussione 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 Esempi di algoritmi e programmi - 4 8

9 Ulteriori raffinamenti 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; Esempi di algoritmi e programmi - 4 9

10 Raffinamento della condizione 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() Esempi di algoritmi e programmi

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 somma = somma + numero; } 2. visualizza somma System.out.println(somma); Esempi di algoritmi e programmi

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); Esempi di algoritmi e programmi

13 Lunghezza di una sequenza... 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 Esempi di algoritmi e programmi

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

15 ... Lunghezza di una sequenza 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 È 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 Esempi di algoritmi e programmi

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); Esempi di algoritmi e programmi

17 Esercizi Verificare l algoritmo per il calcolo della lunghezza di una sequenza ad esempio, se la sequenza è Implementare l algoritmo per il calcolo della lunghezza di una sequenza 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 Esempi di algoritmi e programmi

18 Calcolo del massimo di dieci numeri... 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 Esempi di algoritmi e programmi

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

20 Algoritmo per il calcolo del massimo tra dieci numeri interi... 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 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 Esempi di algoritmi e programmi

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 Esempi di algoritmi e programmi

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;... Esempi di algoritmi e programmi

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); } } Esempi di algoritmi e programmi

24 Somma dei pari e dei dispari in una sequenza... 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 Una variante della lettura e somma di una sequenza ci sono due dati da visualizzare (in uscita) anziché uno solo Esempi di algoritmi e programmi

25 ... Somma dei pari e dei dispari in una sequenza 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 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 Esempi di algoritmi e programmi

26 Algoritmo per la somma dei pari e dei dispari 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 Esempi di algoritmi e programmi

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; Esempi di algoritmi e programmi

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();... Esempi di algoritmi e programmi

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); Esempi di algoritmi e programmi

30 Calcolo degli zeri di una sequenza 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... Esempi di algoritmi e programmi

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); Esempi di algoritmi e programmi

32 Somma dei primi N numeri interi positivi 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 Esempi di algoritmi e programmi

33 Somma dei primi N numeri interi positivi Problema somma dei primi N numeri interi positivi Insieme di ingresso un numero N Pre-condizione N è un numero naturale, ovvero N 0 Insieme di uscita un numero S 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) Esempi di algoritmi e programmi

34 Somma dei primi N numeri interi positivi 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 Esempi di algoritmi e programmi

35 Algoritmo per la somma dei primi N numeri interi positivi 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 L algoritmo non è completamente dettagliato deve essere eseguito un raffinamento, introducendo una istruzione ripetitiva Esempi di algoritmi e programmi

36 La formula di Gauss 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; uno stesso problema può essere risolto da più algoritmi, anche molto diversi tra loro Esempi di algoritmi e programmi

37 Confronto tra i due algoritmi 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 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 Esempi di algoritmi e programmi

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

39 ... Che giorno sarà? 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; Pre-condizione L anno è un intero positivo maggiore di 1600 La data deve essere ammissibile. Dati di uscita Il giorno della settimana corrispondente alla data immessa in input Esempi di algoritmi e programmi

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

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

42 Il numero dei giorni... 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 Esempi di algoritmi e programmi

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 //mesi con 30 giorni if (i==4 i==6 i==9 i==11) numgiorni = numgiorni+30; else numgiorni = numgiorni+31; i=i+1; }// end while return numgiorni; } Esempi di algoritmi e programmi

44 Il giorno successivo... 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. Esempi di algoritmi e programmi

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; } Esempi di algoritmi e programmi

46 Stampa del Giorno Il metodo StampaGiorno viene impiegato per passare dalla rappresentazione dei giorni tramite char ad una rappresentazione più leggibile Esempi di algoritmi e programmi

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!! "); } Esempi di algoritmi e programmi

48 La classe CheGiornoSara: dichiarazioni import fiji.io.*; class CheGiornoSara{ public static void main(string[] args){ /*input*/ char giorno1gen; //giorno della settimana corrispondente al 1 gennaio int anno; // anno corrispondente int giorno, mese; // giorno e mese di cui si vuol // conoscere il giorno della // settimana /*output*/ char giornoris; // 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; Esempi di algoritmi e programmi

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(); Esempi di algoritmi e programmi

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++ } Esempi di algoritmi e programmi

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

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

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

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; } Esempi di algoritmi e programmi

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(); } } Esempi di algoritmi e programmi

56 Esercizi 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 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 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 Esempi di algoritmi e programmi

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

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? Esempi di algoritmi e programmi

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)); Esempi di algoritmi e programmi

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? **/ Esempi di algoritmi e programmi

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)); } } Esempi di algoritmi e programmi

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

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 Esempi di algoritmi e programmi

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; } Esempi di algoritmi e programmi

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(); Esempi di algoritmi e programmi

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; } Esempi di algoritmi e programmi

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

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

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 Esempi di algoritmi e programmi

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; Esempi di algoritmi e programmi

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");} } Esempi di algoritmi e programmi

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; } } Esempi di algoritmi e programmi

73 Esercizi Scrivere un programma che generi i primi n numeri primi. 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. Suggerimento: non provare con valori di m troppo grandi, massimo m=4. Esempi di algoritmi e programmi

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

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

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

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Novembre 2011 1 Contenuti q Somma di una sequenza di numeri interi

Dettagli

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

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 E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita

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

Dall analisi alla codifica (2)

Dall analisi alla codifica (2) Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 09 Dall analisi alla codifica (2) Dall analisi alla codifica (2) 1 Contenuti Problemi di ingresso e uscita - esercizi Lunghezza di una

Dettagli

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

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 18. Iterazione. Maggio Iterazione Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 18 Maggio 2010 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica

Dettagli

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

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

Dettagli

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E07 Iterazione C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Iterazione 1 Contenuti Si vogliono formalizzare

Dettagli

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

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

Dettagli

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E01 Esempi di programmi A. Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di programmi - 1 1 Contenuti

Dettagli

Iterazione (introduzione)

Iterazione (introduzione) Fondamenti di informatica Oggetti e Java (introduzione) Capitolo 17 (estratto) ottobre 2015 1 Contenuti Accesso a sequenze Accumulazione Conteggio Altre aggregazioni Verifica esistenziale Verifica universale

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Esercizi sui metodi Carla Limongelli Maggio 2010 Esercizi 1 Passaggio di parametri di tipo primitivo Indicare che cosa viene visualizzato sullo

Dettagli

Capitolo 16 Iterazione

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

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Esempi di Problemi Iterativi

Esempi di Problemi Iterativi Corso di Laurea Ingegneria Civile Elementi di Informatica Esempi di Problemi Iterativi C. Limongelli Esempi di Problemi Iterativi 1 Contenuti Esercizi: Palindroma Anagramma Fibonacci Esempi di Problemi

Dettagli

Esempi di Problemi Iterativi

Esempi di Problemi Iterativi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E07 C. Limongelli Dicembre 2011 1 Contenuti q Esercizi: Palindroma Anagramma Fibonacci 2 Palindroma q Scrivere un programma che

Dettagli

Esercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012

Esercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E08 Esercizi su Array C. Limongelli Gennaio 2012 1 Contenuti q Esercizi: Lettura e stampa di un array Massimo elemento di un array

Dettagli

Esercizi su Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E09. C. Limongelli Novembre 2007

Esercizi su Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E09. C. Limongelli Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E09 Esercizi su Array C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esercizi su array 1 Contenuti Esercizi:

Dettagli

Richiami di Fondamenti di Informatica - 1

Richiami di Fondamenti di Informatica - 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Richiami di Fondamenti di Informatica - 1 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Richiami di FdI-1

Dettagli

Istruzioni Ripetitive

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

Dettagli

Istruzioni Ripetitive

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

Dettagli

Corso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1

Corso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1 Corso di Laurea Ingegneria Civile Elementi di Informatica Esercizi Carla Limongelli Esercizi 1 Quanti giorni in un mese? Scrivere un metodo che ricevuto in input un mese e un anno, restituisca il numero

Dettagli

Sintassi e semantica delle istruzioni strutturate in Java

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

Dettagli

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario tipi di dati condizioni cicli cicli annidati per alcuni tipi di dati Java mette a disposizione una rappresentazione

Dettagli

Esercitazione 3. Espressioni booleane I comandi if-else e while

Esercitazione 3. Espressioni booleane I comandi if-else e while Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if

Dettagli

Istruzioni Condizionali

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

Dettagli

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

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Dettagli

Costrutti iterativi. Utilizzo dei costrutti iterativi

Costrutti iterativi. Utilizzo dei costrutti iterativi Costrutti iterativi Utilizzo dei costrutti iterativi Costrutti iterativi (1/3) I costrutti iterativi permettono di eseguire ripetutamente del codice Il linguaggio Java mette a disposizione tre costrutti

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 15 Definizione di metodi. Carla Limongelli Maggio Definizione di metodi 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 15 Definizione di metodi. Carla Limongelli Maggio Definizione di metodi 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 15 Definizione di metodi Carla Limongelli Maggio 2010 Definizione di metodi 1 Contenuti Introduzione alla definizione di metodi Prototipo

Dettagli

del Linguaggio C Istruzioni di iterazione

del Linguaggio C Istruzioni di iterazione Istruzioni i Iterative ti del Linguaggio C Istruzioni di iterazione Le istruzioni di iterazione forniscono strutture di controllo che esprimono la necessità di ripetere una certa istruzione durante il

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

E9 Esercizi sul Capitolo 9 Array

E9 Esercizi sul Capitolo 9 Array E9 Esercizi sul Capitolo 9 Array Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce

Dettagli

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

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di

Dettagli

Metodi statici. Dichiarazione e chiamata di metodi statici

Metodi statici. Dichiarazione e chiamata di metodi statici Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un

Dettagli

Strutture di Controllo

Strutture di Controllo Strutture di Controllo Istruzioni condizionali e cicli http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Fino ad ora, il nostro

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative

Dettagli

E17 Esercizi sugli Array in Java

E17 Esercizi sugli Array in Java E17 Esercizi sugli Array in Java Esercizio 1 (esercizio 9.1 del libro di testo). Implementare un metodo statico di nome stringacorta che prende come parametro un array di oggetti String e che restituisce

Dettagli

Array. Definizione e utilizzo di vettori

Array. Definizione e utilizzo di vettori Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];

Dettagli

Programmazione in Java (I modulo) Lezione 11: Metodi della classe Math

Programmazione in Java (I modulo) Lezione 11: Metodi della classe Math Programmazione in Java (I modulo) Lezione 11: Metodi della classe Math Dalla lezione scorsa... Ricordiamo cosa sono e come si definiscono i metodi statici Metodi static o metodi di classe Sono metodi che

Dettagli

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 17. Correttezza. Maggio Correttezza

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 17. Correttezza. Maggio Correttezza Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 17 Maggio 2010 1 Contenuti Introduzione alla correttezza dei metodi specifica di un metodo correttezza di un metodo correttezza e responsabilità

Dettagli

Fondamenti di Informatica A. A. 2018/19

Fondamenti di Informatica A. A. 2018/19 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 17 A. Miola Gennaio 2012 1 Contenuti q Array paralleli q Array e oggetti q Ricerca sequenziale q Ricerca binaria q Fusione di sequenze

Dettagli

Informatica A aa Seconda prova in itinere. Esempi di esercizi possibili

Informatica A aa Seconda prova in itinere. Esempi di esercizi possibili Informatica A aa 2002-03 Seconda prova in itinere Esempi di esercizi possibili Struttura della prova-parte 1 Fortran: comprensione di un programma dato (semplice) Reti: domanda teorica (per verificare

Dettagli

Laboratorio di Programmazione Laurea in Bioinformatica

Laboratorio di Programmazione Laurea in Bioinformatica Laboratorio di Programmazione Laurea in Bioinformatica 15 dicembre 2008 1 Programmazione strutturata 1.1 Esercizio 1 Si scriva lo pseudocodice di un programma che calcola la media di due numeri reali.

Dettagli

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Istruzioni di Ciclo. Unità 4. 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

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione

Dettagli

Esempio: quanto mi piace questo corso! qufuafantofo mifi pifiafacefe qufuefestofo coforsofo!

Esempio: quanto mi piace questo corso! qufuafantofo mifi pifiafacefe qufuefestofo coforsofo! Esercizio 1 Scrivere un programma che acquisisca da tastiera una sequenza di caratteri terminata da! e riporti sul monitor una sequenza derivata dalla precedente secondo le regole dell alfabeto farfallino

Dettagli

Esercizi su array di array

Esercizi su array di array Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E10 C. Limongelli Gennaio 2010 1 Contenuti Fusione di due array ordinati, con eliminazione di duplicati Verifica array bidimensionale

Dettagli

20/10/2014 M. Nappi/FIL 1

20/10/2014 M. Nappi/FIL 1 FIL Lezione 4: Istruzioni Iterative. Michele Nappi mnappi@unisa.it biplab.unisa.it 20/10/2014 M. Nappi/FIL 1 La struttura di Iterazione while Struttura tt di iterazione i Il programmatore specifica un

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzioni di controllo Iterative Condizionali Algoritmi e Diagrammi di flusso Esercizi 28/03/2011 2 Istruzioni iterative while do

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali

Dettagli

Corso di Laurea Ingegneria Informatica. Dispensa E11. Esercizi su array e. Gennaio 2012

Corso di Laurea Ingegneria Informatica. Dispensa E11. Esercizi su array e. Gennaio 2012 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E11 Esercizi su array e array di array C. Limongelli Gennaio 2012 1 Contenuti Fusione di due array ordinati, con eliminazione di

Dettagli

Correttezza (prima parte)

Correttezza (prima parte) Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di

Dettagli

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli - ESERCIZI DI PROGRAMMAZIONE - condizionali e cicli - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1: dal tema d esame ING-INF del 28 gennaio 2009 Si sviluppi un programma in

Dettagli

Ing. Lorenzo Vismara

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

Dettagli

Linguaggio C++ 5. Strutture cicliche

Linguaggio C++ 5. Strutture cicliche 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) Linguaggio C++ 5 Strutture cicliche Linguaggio C++ 5 1 Strutture cicliche Utilizzate per ripetere un certo numero di volte

Dettagli

5 - Istruzioni condizionali

5 - Istruzioni condizionali 5 - Istruzioni condizionali 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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzione condizionale switch Istruzioni di salto break e continue Uso di variabili di tipo boolean Variabili di tipo array (monodimensionali)

Dettagli

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione.

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione. Alcuni Soluzioni ESERCIZIO 1 Data una sequenza di interi di dimensione dim, determinare se esistono esattamente cont occorrenze del valore val, utilizzando per questo una variabile booleana check. Stato

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione 9 novembre 2016 (Trump Day!) Lo scheletro dei vostri programmi deve essere import java.io.*; import java.util.*; public class... { public static void main( String[] args )

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

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere

Dettagli

Lezione 6 programmazione in Java

Lezione 6 programmazione in Java Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi

Dettagli

Lab 04 Programmazione Strutturata"

Lab 04 Programmazione Strutturata Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura

Dettagli

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

I cicli. Iterazioni Calcolo della media Istruzioni break e continue I cicli Iterazioni Calcolo della media Istruzioni break e continue Ciclo while p Vero A while() ; Falso Esegue una istruzione mentre una condizione è verificata Programmazione

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Esercizio 1: media di numeri reali (uso funzioni e struct)

Esercizio 1: media di numeri reali (uso funzioni e struct) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le

Dettagli

Metodi statci. Dichiarazione e chiamata di metodi statci

Metodi statci. Dichiarazione e chiamata di metodi statci Metodi statci Dichiarazione e chiamata di metodi statci Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Iterazione Tutor: Angelo Feraudo angelo.feraudo2@unibo.it a.a. 2018/2019 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 22 ITERAZIONE Iterazione: Strumento che consente

Dettagli

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica Laboratorio di informatica Ingegneria meccanica Esercitazione 6 7 novembre 2007 Correzione di un programma Un programma può contenere errori sintattici e/o errori logici. Gli errori sintattici vengono

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Ingegneria Meccanica Esercitazione 5, 6 novembre 2007 versione 10 novembre 2007 Da Esercitazione 3 (I) 5. Scrivere un programma che, acquisito da stdin un valore intero (int)

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 E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 15. A. Miola Dicembre 2011

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 15. A. Miola Dicembre 2011 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 15 A. Miola Dicembre 2011 1 Contenuti q Introduzione alla correttezza q dei metodi specifica di un metodo correttezza di un metodo

Dettagli

Laboratorio di Programmazione Laurea in Bioinformatica

Laboratorio di Programmazione Laurea in Bioinformatica Laboratorio di Programmazione Laurea in Bioinformatica 28 novembre 2007 1 Programmazione strutturata 1.1 Esercizio 1 Si scriva lo pseudocodice di un programma che calcola la media di due numeri reali.

Dettagli

prof. P. Mancarella Dip.to Informatica INFORMATICA 1 a.a. 07/08 pag. 170

prof. P. Mancarella Dip.to Informatica INFORMATICA 1 a.a. 07/08 pag. 170 Istruzioni condizionali Esempio: Dati tre valori che rappresentano le lunghezze dei lati di un triangolo, stabilire se si tratti di un triangolo equilatero, isoscele o scaleno. Algoritmo: determina tipo

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Istruzioni di selezione e tipi enumerativi Tutor: Angelo Feraudo angelo.feraudo2@unibo.it a.a. 2017/2018 Fondamenti di Informatica T-1 Angelo Feraudo 1 / 27 SELEZIONE Permette

Dettagli

Laboratorio di Matematica e Informatica 1

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

Dettagli

Strutture di controllo (v.anche cap. 8 del testo MATLAB per l ingegneria )

Strutture di controllo (v.anche cap. 8 del testo MATLAB per l ingegneria ) (v.anche cap. 8 del testo MATLAB per l ingegneria ) Selezione if 1 2 If, while, for, do until Se la condizione è vera, esegui 1, altrimenti esegui 2 MATLAB - ontrollo 2 Selezione if if ( condizione ) blocco

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene

Dettagli

Costrutto switch. Come utilizzare il costrutto switch

Costrutto switch. Come utilizzare il costrutto switch Costrutto switch Come utilizzare il costrutto switch Costrutto switch (1/4) Il costrutto if-else permette di selezionare le istruzioni da eseguire tra due alternative, a seconda del valore di una condizione

Dettagli