Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
|
|
- Giuliano Poletti
- 8 anni fa
- Visualizzazioni
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 Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi
DettagliCorso 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
DettagliProblemi, 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
DettagliCorso 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
DettagliAlgoritmi 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
DettagliDall 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)
DettagliEsempi 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
DettagliCorrettezza. 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
DettagliLa 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
DettagliUn 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
DettagliTipi 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
DettagliProf. 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
DettagliLe 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.
DettagliRisolvere 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
Dettagli10 - 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
DettagliEsercizi 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
DettagliLa 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.
DettagliAlgebra 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
DettagliDall 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
Dettagli4 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
Dettagli3 - 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
DettagliAlgoritmo. 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
DettagliDI 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
DettagliUniversità 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
DettagliINTRODUZIONE 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.
DettagliCorso 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
DettagliMatematica 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
DettagliFunzioni 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
DettagliArduino: 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
DettagliEsercizi 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
DettagliDAL 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
DettagliLab 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
DettagliCorso 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.
DettagliEsercitazione 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.
DettagliESERCIZIO 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
DettagliCorso 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
Dettagli3. 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
DettagliConcetto 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
DettagliCorso 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
DettagliStrutture. 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
DettagliStudente (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
DettagliSemantica 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è,
DettagliFORMULE: 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
DettagliIntroduzione 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
DettagliIntroduzione 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:
DettagliLogica 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
DettagliUnità 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
DettagliStudente: 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
DettagliInformatica 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,
DettagliProgetto 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
DettagliFondamenti 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
DettagliEsercizi 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
DettagliEXCEL 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")
DettagliPROBLEMA 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
DettagliStudente (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
Dettagli12 - 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,
DettagliCenni 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
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
DettagliAPPUNTI 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
DettagliLezione 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
DettagliSISTEMI 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
DettagliRichiesta 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
DettagliSistemi 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
DettagliAritmetica 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
DettagliRICERCA 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
DettagliCorso 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
DettagliProcesso 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
DettagliLE 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
DettagliEsercitazione 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
Dettagli1) 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
DettagliAlgebra 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
DettagliSono 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
DettagliInizializzazione, 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
DettagliLaboratorio 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
DettagliESERCIZI 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
DettagliParte 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
DettagliSoluzioni 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;
DettagliCorso 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
DettagliCorso 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
DettagliMetodologie 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
DettagliLAVORO 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
DettagliVariabili 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
DettagliUso 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
Dettagli24 : 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
DettagliEsercitazione 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,
DettagliCorso 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
DettagliCOGNOME 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
DettagliSiamo 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
DettagliDefinire 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
DettagliAppunti 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
DettagliRealizzazione 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
DettagliAlgoritmi 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
DettagliEsercizio: 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,
DettagliGESTIONE 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
DettagliVerifica 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
DettagliBreve 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
DettagliProva 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
DettagliProgrammazione 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)
DettagliCaratteri 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.
DettagliSequenza 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