Dall analisi alla codifica (2)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Dall analisi alla codifica (2)"

Transcript

1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Dall analisi alla codifica (2) Aprile 2010 Dall analisi alla codifica (2) 1

2 Contenuti Problemi di ingresso e uscita (esempi ed esercizi) Lunghezza di una sequenza Perimetro di un triangolo Equazioni di primo e secondo grado Elevamento a potenza Media aritmetica di una sequenza di numeri interi Numero di zeri di una sequenza di numeri interi Somma di una sequenza di 10 numeri interi Massimo di una sequenza di 10 numeri interi Somma dei primi n numeri interi dispari Escursione dei valori in una sequenza Divisori di un numero Generazione di n numeri random 2 Dall analisi alla codifica (2) 2

3 Esercizi Per tutti gli esercizi che seguono eseguire i seguenti passi (se non sono presenti): Definire la specifica del problema indicando sinteticamente: Il problema i dati di input Le pre-condizioni che devono soddisfare I dati di input I dati di output Le post-condizioni che devono soddisfare I dati di output Scrivere l algoritmo risolutivo in pseudo-codice Scrivere l algoritmo risolutivo con il diagramma a blocchi Scrivere la traccia del processo di esecuzione per almeno un dato insieme di dati di input Scrivere la codifica Java ed esegure il programma su diversi dati di input 3

4 Lunghezza di una sequenza Si consideri ora 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 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 Dall analisi alla codifica (2) 4

5 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 Dall analisi alla codifica (2) 5

6 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 che inizialmente deve valere zero ogni volta che viene letto un elemento deve essere incrementata di uno lunghezza viene usata per contare il numero degli elementi della sequenza che sono stati letti al termine, è uguale alla lunghezza della sequenza Dall analisi alla codifica (2) 6

7 Algoritmo per il calcolo della lunghezza di una sequenza (pseudocodifica) 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); Dall analisi alla codifica (2) 7

8 Algoritmo per il calcolo della lunghezza di una sequenza (diagramma a blocchi) input (A1,,An) l = 0 Ci sono ancora numeri da leggere? No Si Ai = numero letto l = l+1 scrivi l Fine assegnazione selezione iterazione 8

9 Lunghezza di una sequenza: codifica import fiji.io.*; /* Applicazione che calcola la lunghezza di una sequenza di numeri dati in input */ class LunghezzaSequenza{ public static void main(string[] args){ int num; int l; //precondizioni sequenza non vuota l=0; System.out.println("Scrivi una sequenza non vuota di numeri interi"); /* finche' non viene dato invio */ while (!Lettore.in.eoln()){ /*lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); l=l+1; System.out.print("lunghezza calcolata "); System.out.println(l); Dall analisi alla codifica (2) 9

10 Perimetro di un triangolo Problema Calcolare il perimetro di un triangolo date le coordinate dei suoi vertici Input coordinate dei vertici x1,y1 x2,y2 x3,y3 Pre-condizioni Coordinate dei vertici tutte positive Output perimetro Post-condizioni. Dall analisi alla codifica (2) 10

11 Perimetro di un triangolo input (x1,y1,x2,y2,x3,y3) assegnazione d12=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) d13=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)) d23=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)) perimetro = d12 + d13 + d23 Scrivi perimetro Fine 11

12 Perimetro di un triangolo A che serve? Indica che la import fiji.io.*; classe usa classi del /* Applicazione che calcola e visualizza package fiji.io, in * il perimetro di un triangolo. */ particolare class PerimetroTriangolo { public static void main(string[] args) { double x1, y1; // coordinate primo vertice double x2, y2; // coordinate secondo vertice double x3, y3; // coordinate terzo vertice double d12, d13, d23; // distanze tra i vertici double perimetro; // perimetro del triangolo /* imposta le coordinate dei vertici */ System.out.println("CALCOLO DEL PERIMETRO DI UN TRIANGOLO"); System.out.println("scrivi le coordinate del primo vertice"); x1 = Lettore.in.leggiInt(); y1 = Lettore.in.leggiInt(); System.out.println("scrivi le coordinate del secondo vertice"); x2 = Lettore.in.leggiInt(); y2 = Lettore.in.leggiInt(); System.out.println("scrivi le coordinate del terzo vertice"); x3 = Lettore.in.leggiInt(); y3 = Lettore.in.leggiInt(); Dall analisi alla codifica (2) segue...

13 Perimetro di un triangolo Esiste un metodo che calcola la potenza? Math.pow (vedere documentazione classe Math)... segue... /* calcola la distanza tra p1 e p2 */ d12 = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); d13 = Math.sqrt((x1-x3)*(x1-x3) + (y1-y3)*(y1-y3)); d23 = Math.sqrt((x2-x3)*(x2-x3) + (y2-y3)*(y2-y3)); /* calcola il perimetro del triangolo */ perimetro = d12 + d13 + d23; /* visualizza il perimetro */ System.out.print("Il perimetro del triangolo e' "); System.out.println(perimetro); System.out sa eseguire anche una operazione print, che visualizza l argomento, ma senza poi andare a capo (come fa println) Dall analisi alla codifica (2) 13

14 Equazioni di 1 e 2 grado Problema Input Calcolo delle radici di un equazione di primo o secondo grado i coefficienti a, b, c dell equazione ax*x+bx+c Pre-condizioni Coordinate dei vertici tutte positive Output le radici dell equazione x1 e x2, oppure segnalazione di non esistenza di radici Post-condizioni a*x1*x1 + b*x1 + c = 0 e a*x2*x2 + b*x2 + c = 0 Dall analisi alla codifica (2) 14

15 Equazioni di 1 e 2 grado Si input (a,b,c) a = 0 No selezione assegnazione Si b = 0 No delta = b*b-4*a*c Scrivi no soluzione x1 = -c/b Scrivi 1 soluzione,x1 Si delta < 0 No Scrivi x1 = no soluzione (-b + sqrt(delta))/2*a x2 = (-b - sqrt(delta))/2*a Scrivi x1 e x2 Fine Dall analisi alla codifica (2) 15

16 Equazioni di 1 e 2 grado Programma: Calcolo radici equazione di 1 e 2 grado Variabili: double a, b, c, delta, x1, x2; Istruzioni: input(a,b,c) if (a==0){ if (b==0) scrivi( non esistono soluzioni ); else{ x1 = -c/b; scrivi( unica soluzione, x1); else{ delta = b*b - 4*a*c; if (delta < 0) scrivi( non esistono soluzioni ); else{ x1 = (-b + sqrt(delta))/2*a; x2 = (-b - sqrt(delta))/2*a; scrivi( soluzioni:, x1, x2); Dall analisi alla codifica (2) 16

17 Equazioni di 1 e 2 grado import fiji.io.*; /** Applicazione che calcola le radici reali delle equazioni di secondo grado */ class Equazioni2grado{ public static void main(string[] args){ double a,b,c; //coefficenti dell'equazione double delta; //valore del delta double x1,x2; //radici reali, se esistono /*lettura dei coefficienti da input */ System.out.println("Scrivi i coefficienti dell'equazione"); a = Lettore.in.leggiDouble(); b = Lettore.in.leggiDouble(); c = Lettore.in.leggiDouble(); Dall analisi alla codifica (2) 17

18 Equazioni di 1 e 2 grado if (a==0){ if (b==0) System.out.println("l'eq. non ha soluzioni"); else{ x1 = -c/b; System.out.println("l'eq. ha 1 sola soluzione"); System.out.println(x1); else{ //a<>0 /* calcolo del delta */ delta = b*b-4*a*c; /* verifica se il delta e' positivo o nullo */ if (delta<0) System.out.println("l'equazione non ammette soluzioni"); else{ x1 = (-b+math.sqrt(delta))/(2*a); x2 = (-b-math.sqrt(delta))/(2*a); System.out.print("le soluzioni sono "); System.out.print(x1); System.out.print(" e "); System.out.println(x2); Dall analisi alla codifica (2) 18

19 Elevamento a potenza Problema Calcolare l elevamento a potenza tra numeri naturali positivi (o nulli) Input Base, esp Pre-condizioni interi positivi o nulli Output pot Post-condizioni pot = base esp Dall analisi alla codifica (2) 19

20 Elevamento a potenza No input (base,esp) base==0 and esp==0 Si selezione assegnazione iterazione pot = 1 esp > 0 Si pot = pot * base No Scrivi errore esp = esp - 1 scrivi pot Fine Dall analisi alla codifica (2) 20

21 Elevamento a potenza Programma: Variabili: Elevamento a potenza int base; int esp; int pot; Istruzioni: 1. input(base, esp) 2. if (base==0 AND esp ==0) 3. scrivi( errore ); else{ 4. pot = 1; 5. while (esp > 0) { 6. pot = pot * base; 7. esp = esp 1; 8. scrivi pot; Dall analisi alla codifica (2) 21

22 Elevamento a potenza: traccia del processo di esecuzione Istruzione base esp pot La variabile pot contiene il valore della potenza Dall analisi alla codifica (2) 22

23 Elevamento a potenza: codifica import fiji.io.*; /* elevamento a potenza tra numeri naturali positivi (o nulli) */ class Potenza { public static void main(string[] args) { /* Definizione variabili */ int base; // base int esp; // esponente int pot; // risultato /** Corpo programma **/ System.out.println("elevamento a potenza:"); System.out.print("base: "); base = Lettore.in.leggiInt(); System.out.print("esponente:"); esp = Lettore.in.leggiInt();... segue... Dall analisi alla codifica (2) 23

24 Elevamento a potenza... segue... if ((base == 0) && (esp == 0)) System.out.println("errore"); else{ pot = 1; while (esp > 0) { pot = pot * base; esp = esp - 1; System.out.println("risultato = " + pot); Dall analisi alla codifica (2) 24

25 Esercizio 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 Dall analisi alla codifica (2) 25

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

27 Calcolo degli zeri di una sequenza int numero; int zeri; // elemento corrente della sequenza // 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(); /* se numero è uguale a zero, incrementa zeri */ if (numero==0) /* incrementa zeri */ zeri = zeri + 1; /* visualizza zeri */ System.out.println(zeri); // se numero è uguale a zero 27

28 Somma di una sequenza 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 dieci), calcolare la somma degli elementi e visualizzarla sullo schermo Scrivi una sequenza di dieci numeri interi La somma dei dieci numeri è 20 28

29 Lettura e somma di una sequenza di dieci numeri interi Problema lettura di una sequenza di dieci numeri interi e calcolo della somma 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 S Post-condizione S è la somma degli elementi della sequenza A 1, A 2,..., A 10 29

30 Lettura e somma di una sequenza di dieci numeri interi Una soluzione poco parametrica e poco modificabile dieci variabili dieci istruzioni di lettura una somma di dieci valori Soluzione parametrica basata su una istruzione ripetitiva si suppone che la lunghezza della sequenza sia nota a priori cerchiamo un algoritmo parametrico rispetto a questa lunghezza 30

31 Lettura e somma di una sequenza di dieci numeri interi L algoritmo può essere realizzato gestendo le seguenti variabili numero valore dell elemento corrente della sequenza somma la somma degli elementi della sequenza che sono stati già letti numeriletti il numero degli elementi della sequenza che sono stati già letti La gestione delle variabili somma e numeriletti è come segue inizialmente valgono entrambe zero per ogni numero letto somma deve essere incrementata di numero numeriletti deve essere incrementata di uno 31

32 Algoritmo per la lettura e somma di dieci numeri leggi una sequenza di dieci numeri interi e calcolane la somma 1.inizializza la somma e il numero di elementi letti somma = 0; numeriletti = 0; 2.leggi i dieci elementi della sequenza e calcolane la somma while ( ci sono altri elementi nella sequenza ) { leggi un elemento numero della sequenza numero = Lettore.in.leggiInt(); incrementa somma di numero somma = somma + numero; incrementa numeriletti numeriletti = numeriletti + 1; Bisogna raffinare la condizione dell istruzione ripetitiva quante volte viene valutata la condizione? quanto vale numeriletti durante ciascuna valutazione della condizione? 32

33 Algoritmo per la lettura e somma di dieci numeri inizializza la somma e il numero di elementi letti somma = 0; numeriletti = 0; leggi i dieci elementi della sequenza e calcolane la somma while ( numeriletti<10 ) { leggi un elemento numero della sequenza numero = Lettore.in.leggiInt(); incrementa somma di numero somma = somma + numero; incrementa numeriletti numeriletti = numeriletti + 1; 33

34 Programma per la lettura e somma di dieci numeri int numero; // elemento corrente della sequenza int somma; // somma degli elementi della sequenza int numeriletti; // numero degli elementi letti /* leggi una sequenza di dieci numeri interi e * calcolane la somma */ /* inizializza la somma e il numero di elementi letti */ somma = 0; numeriletti = 0; /* leggi i dieci elementi della sequenza e * calcolane la somma */ while (numeriletti < 10) { /* leggi un elemento della sequenza */ numero = Lettore.in.leggiInt(); /* incrementa somma di numero */ somma = somma + numero; /* incrementa numeriletti */ numeriletti = numeriletti + 1; /* visualizza somma */ System.out.println(somma); // ci sono altri elementi 34

35 Calcolo del massimo di dieci numeri Si consideri il seguente problema di ingresso-uscita 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 e :

36 Calcolo del massimo di una sequenza di 10 numeri interi 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

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

38 Algoritmo per il calcolo del massimo tra 10 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 3. 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 5.2 confronta num con max se num > max memorizza il contenuto di num in max if (num > max) max = num; 6. il risultato è max 5.3 incrementa cont cont = cont + 1; 38 38

39 Codifica per il calcolo del massimo tra 10 interi int num; int max; int cont; //numero letto //massimo calcolato //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; /* essendo l'unico numero letto esso e' il massimo */ max = num;

40 ... Codifica per il calcolo del massimo tra 10 interi /* 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 e' maggiore del max, aggiorno max */ if (num > max) max = num; System.out.print( Il valore massimo calcolato e : "); System.out.println(max); 40 40

41 Applicazione per il calcolo del massimo tra 10 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(); 41 41

42 ... Applicazione per il calcolo del massimo tra 10 interi... /* appena leggo un numero incremento il contatore */ cont = cont + 1; /*essendo l'unico numero letto esso e' 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 e' maggiore del max, aggiorno max */ if (num > max) max = num; System.out.print("valore massimo calcolato e : "); System.out.println(max); 42 42

43 Algoritmo per il calcolo del massimo tra 10 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 3. 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 5.2 confronta num con max se num > max memorizza il contenuto di num in max if (num > max) max = num; 6. il risultato è max 5.3 incrementa cont cont = cont + 1; 43 43

44 Massimo tra 3 interi: traccia del processo di esecuzione Es Istruzione num cont max La variabile max contiene il valore del massimo della sequenza Dall analisi alla codifica (2) 44

45 Somma dei primi n numeri interi dispari Problema Scrivere un applicazione che, dato un numero intero n, calcoli e visualizzi la somma dei primi n numeri dispari Esempio per n = 4 la somma dei primi 4 numeri dispari e =16 Dati di ingresso un intero n Pre-condizione n >= 0 Dati di uscita un numero somma Post-condizione somma è la somma dei primi n numeri dispari 45 45

46 Algoritmo: somma dei primi n numeri interi dispari L algoritmo può essere realizzato gestendo le seguenti variabili n - quantità di numeri dispari da sommare somma - somma degli interi dispari disp - numero dispari corrente leggi da tastiera un numero intero n inizializza somma a zero inizializza il primo numero dispari disp a 1 usa la stessa variabile n come contatore: finché n > 0 aggiungi a somma il valore di disp incrementa disp di 2 (il prossimo numero dispari) decrementa n visualizza il valore di somma 46 46

47 Codifica: somma dei primi n numeri interi dispari int n; //numero totale di dispari da sommare e contatore int disp; //numero dispari da sommare int somma; //somma calcolata //pre: n > 0 /*lettura del numero di elementi da sommare */ System.out.println("Scrivi il numero (>0)di elementi da sommare"); n = Lettore.in.leggiInt(); somma = 0; disp = 1; //il primo num dispari 47 while (n > 0){ /* lettura di un numero ad ogni iterazione */ somma = somma + disp; n = n - 1; disp = disp + 2; 47

48 Applicazione: somma dei primi n numeri interi dispari import fiji.io.*; /* Applicazione che calcola la somma dei primi n numeri dispari */ class SommaDispari{ public static void main(string[] args){ int n; //numero totale di dispari da sommare e contatore int disp; //numero dispari da sommare int somma; //somma calcolata 48 //pre: n > 0 /* lettura del numero di elementi da sommare */ System.out.println("Scrivi il numero di dispari da sommare (>0)"); n = Lettore.in.leggiInt(); somma = 0; disp = 1; // il primo numero dispari while (n > 0){ /* lettura di un numero ad ogni iterazione */ somma = somma + disp; n = n - 1; disp = disp + 2; System.out.print( La somma dei primi "); System.out.print(n); System.out.print( numeri dispari e "); System.out.println(somma); 48

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

50 Algoritmo: 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 Finche 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 allora aggiorno min con num L escursione è data da (max-min+1) Se la sequenza e composta tutta da valori negativi? 50 50

51 51 Codifica: 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; /* finche' non viene dato invio */ while (!Lettore.in.eoln()){ /*lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); /* se num e' maggiore del max, aggiorno max */ if (num > max) max = num; /* se num e' minore di min aggiorno min */ if (num < min) min = num; System.out.print("L'escursione della sequenza e' "); System.out.println(Math.abs(max-min+1)); 51

52 Applicazione: 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;

53 Escursione dei valori in una sequenza... /* finche' non viene dato invio */ while (!Lettore.in.eoln()){ /* lettura di un numero ad ogni iterazione */ num = Lettore.in.leggiInt(); /* se num e' maggiore del max, aggiorno max */ if (num > max) max = num; /* se num e' 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 e' "); System.out.println(Math.abs(max-min+1)); 53 53

54 Calcolo dei divisori di un numero 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 Una sequenza di interi 54 Post-condizione La sequenza in uscita è composta dai divisori di num 54

55 Algoritmo per il calcolo dei divisori di un numero 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 da' resto 0 allora div e' 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

56 Codifica: calcolo dei divisori di un numero /* 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 div */ while (div <= lim){ if (num%div == 0) System.out.println(div); div = div + 1; 56 56

57 Applicazione per il calcolo dei divisori di un numero 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 e' 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 da' resto 0 allora * div e' un divisore di num e lo visualizzo */ 57 /*lettura del numero*/ System.out.println("Scrivi un intero positivo"); num = Lettore.in.leggiInt();... 57

58 Calcolo e stampa dei divisori di un numero... /* 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: "); 58 /* verifico i divisori da 2 fino a lim */ while (div <= lim){ if (num%div == 0) System.out.println(div); div = div + 1; 58

59 Generazione di n numeri 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 59 59

60 Algoritmo per la generazione di n numeri random Il metodo Math.random() calcola un numero pseudo-casuale 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, che permette di contare il 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 60 60

61 Codifica: generazione di n 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; 61 61

62 Applicazione per la generazione di n numeri random import fiji.io.*; /* Applicazione che genera n numeri random tra 0 e 99 */ 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(); 62 62

63 Esercizi Definire una classe applicazione per calcolare e visualizzare il valore massimo di una sequenza di N numeri interi 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 Scrivere un applicazione che verifica se un numero intero letto da tastiera e primo Scrivere un applicazione che calcola e visualizza i primi 10 numeri primi 63 63

Problemi, algoritmi e oggetti

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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 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

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

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

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

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

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

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

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

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

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

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

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

Espressioni. Operatori aritmetici e metodi della classe java.lang.math

Espressioni. Operatori aritmetici e metodi della classe java.lang.math Espressioni Operatori aritmetici e metodi della classe java.lang.math Assicurarsi di aver selezionato il progetto dal Package Explorer Aggiungere il package fiji.jar Selezionare dal menù: Project Properties

Dettagli

Espressioni. Operatori aritmetici e metodi della classe java.lang.math

Espressioni. Operatori aritmetici e metodi della classe java.lang.math Espressioni Operatori aritmetici e metodi della classe java.lang.math Assicurarsi di aver selezionato il progetto dal Package Explorer Aggiungere il package fiji.jar Selezionare dal menù: Project Properties

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

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

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

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript Funzioni Funzioni predefinite della libreria matematica Funzioni disponibili: Math.sqrt(x) radice quadrata Math.log(x) logaritmo naturale in base e di x Math.abs(x) valore assoluto di x Math.ceil(x) arrotonda

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

Formalismi per la descrizione di algoritmi

Formalismi per la descrizione di algoritmi Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano

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

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

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

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Introduzione alla programmazione Esercizi risolti

Introduzione alla programmazione Esercizi risolti Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma

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

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

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

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

Laboratorio di Informatica 4 Novembre 2005

Laboratorio di Informatica 4 Novembre 2005 Laboratorio di Informatica 4 Novembre 2005 Marco Iarusso Programmazione Java Ringraziamenti Parte della presente dispensa materiale didattico è derivato dalla dispensa prodotta da Luca Cabibbo Dip. Informatica

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

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

Array mono- e bi-dimensionali Cicli while e do-while

Array mono- e bi-dimensionali Cicli while e do-while 111 Fondamenti di Informatica Array mono- e bi-dimensionali Cicli while e -while Fondamenti di Informatica - D. Talia - UNICAL 1 111 Array Monodimensionali Nell uso di array L operazione sull indice può

Dettagli

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a

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

Laboratorio di Python

Laboratorio di Python , Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De

Dettagli

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA" V i a A n g e l o Ma j, 1 2 4 1 2 1 B E R G AMO 035 237502 Fax: 035 236331 Sito e contatti: www.liceolussana.com Codice fiscale: 80026450165 PROGRAMMA SVOLTO

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Esempio: somma di due numeri

Esempio: somma di due numeri Esempio: somma di due numeri Scrivere l algoritmo che esegue la somma di due numeri ESEMPIO: somma di due numeri

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - 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 Corso di Laurea

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Università degli Studi di Brescia Elementi di Informatica e Programmazione ESERCITAZIONE Docente: A. Saetti Esercitatori: M. Sechi, A. Bonisoli Vers. 04/10/2017 Docente: Alessandro Saetti Elementi di informatica

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

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

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

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

Laboratorio di Programmazione Ottobre. Simone Zaccaria

Laboratorio di Programmazione Ottobre. Simone Zaccaria Laboratorio di Programmazione 27 31 Ottobre Simone Zaccaria Esercizio di Ripasso Scrivere un programma che: 1. dichiari 2 variabili a e b; 2. inizializzi le 2 variabili con valori numerici a scelta; 3.

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

Definizione di classi

Definizione di classi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti

Dettagli

PROGRAMMAZIONE STRUTTURATA

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

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Modulo 2: Strutture fondamentali della programmazione Java

Modulo 2: Strutture fondamentali della programmazione Java Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti

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

Le strutture di controllo

Le strutture di controllo INFORMATICA B Ingegneria Elettrica Le strutture di controllo Selezione un esempio introduttivo Si disegni il diagramma di flusso di un algoritmo che chiede all utente un valore intero e visualizza il suo

Dettagli

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Programmazione a blocchi. Algobuild Prof. Sergio Roselli Programmazione a blocchi Algobuild Prof. Sergio Roselli Blocchi base Inizio programma I Fine programma F Input IN A Output Esecuzione OUT A A = 5 + 1 L interprete Algobuild Algobuildpermette di trascrivere

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

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

Unità B3 Strutture di controllo

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

Dettagli

Corso di Fondamenti di Informatica Classi di istruzioni 2

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

Dettagli

Decomposizione per scelta

Decomposizione per scelta Decomposizione per scelta T C F P1 P2 Codifica if ( C ) T C F P1 P1 P2 else P2 C : condizione da verificare (espressione booleana a valore VERO/FALSO). Parentesi obbligatorie P1 : istruzione da eseguire

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

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

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

Dettagli

Istruzioni iterative. Istruzioni iterative

Istruzioni iterative. Istruzioni iterative Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",

Dettagli

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)

Dettagli

Esercitazioni di Fondamenti Informatica - Modulo A 1

Esercitazioni di Fondamenti Informatica - Modulo A 1 Esercitazioni di Fondamenti Informatica - Modulo A 1 Da MSDN: The while statement executes a statement or a block of statements until a specified expression evaluates to false while ( expression ) statement

Dettagli

Istruzioni iterative (o cicliche)

Istruzioni iterative (o cicliche) Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

Programmare in C. Esempio: Algoritmo del Risveglio

Programmare in C. Esempio: Algoritmo del Risveglio MASTER Information Technology Excellence Road (I.T.E.R.) Programmare in C (strutture di controllo) Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1

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

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni Classi di istruzioni In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell algoritmo. Questa consiste di: Leggi i valori di

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale

Dettagli

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

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

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1 Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)

Dettagli

Corso sul linguaggio Java

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

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione 9 novembre 2016 Sequenze di Collatz Considerate la seguente regola: dato un numero intero positivo n, se n è pari lo si divide per 2, se è dispari lo si moltiplica per 3 e

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

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute. I due esercizi seguenti su un esempio semplice (trovare il massimo tra due o tra tre numeri) introducono la descrizione di algoritmi con diagrammi a blocchi, le strutture di controllo sequenza e condizione,

Dettagli

Laboratorio di Python

Laboratorio di Python Istruzione di condizione, Input da tastiera, Università di Bologna 6 e 8 marzo 2013 Sommario 1 Tipi di errore e Debugging 2 3 4 Outline Tipi di errore e Debugging 1 Tipi di errore e Debugging 2 3 4 Esercizio

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

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array

Dettagli

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense. Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Dettagli

#include <iostream> using namespace std; // int main ( ) { // --- Dichiarazione delle variabili int N ; float A, Pot;

#include <iostream> using namespace std; // int main ( ) { // --- Dichiarazione delle variabili int N ; float A, Pot; Dati A e N (A reale >0 e N intero >=0) comunica il valore di A elevato alla N. CL 3 - Es_11.cpp Variabili di Input: N di tipo intero, A di tipo reale Variabili di Output: Pot di tipo reale Variabili di

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=

Dettagli

Corso di Fondamenti di Informatica. Dispensa 3: Espressioni artimetico-logiche e costrutti di decisione. Prof. Domenico Rosaci

Corso di Fondamenti di Informatica. Dispensa 3: Espressioni artimetico-logiche e costrutti di decisione. Prof. Domenico Rosaci Corso di Fondamenti di Informatica Dispensa 3: Espressioni artimetico-logiche e costrutti di decisione Prof. Domenico Rosaci 2014-15 Esercizio 1: Scrivere un programma che chieda all'utente di inserire

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2013 2014 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi

Dettagli

Prof. Pagani Corrado ALGORITMI ESERCITAZIONI CICLI

Prof. Pagani Corrado ALGORITMI ESERCITAZIONI CICLI Prof. Pagani Corrado ALGORITMI ESERCITAZIONI CICLI DIAGRAMMA A BLOCCHI: SWITCH DIAGRAMMA BLOCCHI: WHILE DIAGRAMMA BLOCCHI: FOR for (inizializzazione contatore, condizione, incremento) { istruzioni ; }

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello

Dettagli