10 - Programmare con gli Array

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "10 - Programmare con gli Array"

Transcript

1 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa milazzo milazzo di.unipi.it Corso di Laurea Magistrale in Informatica Umanistica A.A. 2013/2014 Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

2 Programmare con gli array Lo scopo di questa lezione è illustrare alcuni schemi di programmi cioè soluzioni a problemi di programmazione che ricorrono frequentemente nello sviluppo di programmi sono essenzialmente degli algoritmi, espressi nel linguaggio di programmazione scelto (Java) Ci concentreremo su problemi che richiedono cicli e array per essere risolti Quindi: schemi di programmi iterativi Per ogni schema di programma che consideremo: Vedremo un esempio di problema e il programma che lo risolve Ragioneremo sul programma dell esempio per estrarne lo schema di funzionamento Menzioneremo altri esempi di problemi che possono essere risolti seguendo lo stesso schema Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

3 Innanzitutto: quando gli array non servono? (1) Innanzitutto è bene capire che non sempre serve usare un array. Esempio: programma che chiede all utente di inserire 10 numeri e ne calcola la media import java. util. Scanner ; public class Media { // soluzione che usa un array public static void main ( String [] args ) { Scanner input = new Scanner ( System. in ); int [] valori = new int [10]; // memorizza tutti i valori in un array for ( int i =0; i <10; i ++) valori [ i] = input. nextint (); // somma tutti gli elementi dell array int somma = 0; for ( int x : valori ) somma +=x; } } // calcola e stampa la media int media = somma /10; System. out. println ("La media e : " + media ); Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

4 Innanzitutto: quando gli array non servono? (2) Prima di creare un array e iniziare a riempirlo di valori, pensare bene se c e un modo per ottenere lo stesso risultato lavorando on-the-fly ossia utilizzando i dati man mano che arrivano, senza memorizzarli import java. util. Scanner ; public class Media2 { // soluzione che NON usa un array public static void main ( String [] args ) { Scanner input = new Scanner ( System. in ); // somma on - the - fly tutti gli elementi inseriti int somma = 0; for ( int i =0; i <10; i ++) somma += input. nextint (); } } // calcola e stampa la media int media = somma /10; System. out. println ("La media e : " + media ); Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

5 Innanzitutto: quando gli array non servono? (3) Altro esempio dello stesso tipo... Esempio: scrivere un programma che stampa gli elementi di un array in ordine inverso import java. util. Scanner ; public class Inverti { // soluzione che usa un secondo array public static void main ( String [] args ) { int [] valori = { 5, 7, 9, 11, 23, 8 }; int last = valori. length -1; // posizione dell ultimo elemento // creo un nuovo array in cui copio i valori in ordine inverso int [] valori2 = new int [ valori. length ]; for ( int i =0; i< valori. length ; i ++) valori2 [i] = valori [last -i]; } // stampa il contenuto del secondo array for ( int x : valori2 ) System. out. println (x); Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

6 Innanzitutto: quando gli array non servono? (4) Ma... serve veramente il secondo array? I dati sono già memorizzati nel primo. Basta eseguire le stampe in ordine inverso... import java. util. Scanner ; public class Inverti2 { // soluzione che NON usa un secondo array public static void main ( String [] args ) { } int [] valori = { 5, 7, 9, 11, 23, 8 }; // scorre l array dall ultimo elemento al primo // notare l uso degli indici nel ciclo for for ( int i=( valori. length -1); i >=0; i - -) System. out. println ( valori [i ]); Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

7 Innanzitutto: quando gli array non servono? (5) In quali di questi esempi è necessario un array? 1. Chiedere all utente di inserire 10 numeri e stampare il minimo tra essi 2. Chiedere all utente di inserire 10 stringhe e stampare la stringa ottenuta concatenandole tutte l una dopo l altra 3. Chiedere all utente di inserire 10 numeri e, successivamente, ristamparli tutti nell ordine 4. Chiedere all utente di inserire 10 caratteri e stampare Trovata Vocale! se tra essi è presente almeno una vocale 5. Chiedere all utente di inserire 10 numeri e verificare se i primi 5 sono uguali agli ultimi 5 (ad es. 1,3,4,7,9,1,3,4,7,9) Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

8 Innanzitutto: quando gli array non servono? (5) In quali di questi esempi è necessario un array? 1. Chiedere all utente di inserire 10 numeri e stampare il minimo tra essi 2. Chiedere all utente di inserire 10 stringhe e stampare la stringa ottenuta concatenandole tutte l una dopo l altra 3. Chiedere all utente di inserire 10 numeri e, successivamente, ristamparli tutti nell ordine 4. Chiedere all utente di inserire 10 caratteri e stampare Trovata Vocale! se tra essi è presente almeno una vocale 5. Chiedere all utente di inserire 10 numeri e verificare se i primi 5 sono uguali agli ultimi 5 (ad es. 1,3,4,7,9,1,3,4,7,9) Soluzione: NNSNS Quanto deve essere grande l array nel caso 5? Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

9 Schemi di programmi su array D ora in poi assumeremo che i dati su cui vogliamo lavorare siano contenuti in un array Vedremo solo frammenti di programmi da inserire nel seguente scheletro import java. util. Scanner ; public class NomeProgramma { public static void main ( String [] args ) { Scanner input = new Scanner ( System. in ); int [] valori = int [10]; // l array in questione // inizializzazione da parte dell utente for ( int i =0; i <10; i ++) valori [ i] = input. nextint (); // I FRAMMENTI DI PROGRAMMI CHE VEDREMO // DOVRANNO ESSERE INSERITI QUI } } Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

10 Scansione sequenziale di un array (1) Esempio: Sommare tutti i valori di un array int somma =0; for ( int x: valori ) somma +=x; System. out. println ( somma ); Si scandisce tutto l array dall inizio alla fine portandosi dietro la somma dei valori incontrati All i-esima iterazione la variabile (accumulatore) somma rappresenta in modo sintetico tutti gli elementi dell array tra le posizioni 0 e i-1 In altre situazioni la variabile da portarsi dietro può essere un contatore (Esempio: stampare quanti zeri sono contenuti nell array) un valore (Esempio: stampare il valore minimo) un indice (Esempio: stampare la posizaione del valore minimo) combinazioni delle precedenti (Esempi: stampare valore e posizione del minimo; stampare minimo e massimo) Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

11 Scansione sequenziale di un array (2) Schema di programma: scansione sequenziale 1. Dichiara e inizializza variabili opportune X,Y,... (da "portarsi dietro") 2. Per ogni elemento E dell array aggiorna le variabili X,Y,... considerando E 3. Stampa il risultato sulla base dei valori finali di X,Y,... Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

12 Scansione sequenziale di un array (3) Altri esempi in cui può essere applicato questo schema: 1. Dato un array di stringhe stampare la stringa più lunga 2. Verificare se un dato elemento è presente in un array (terminologia: problema della ricerca di un elemento) 3. In un array di caratteri, stampare il numero di occorrenze di ogni vocale (es: "Ci sono 5 a, 3 e, 7 i, 0 o, 9 u") 4. Verificare se i valori di un array sono in ordine crescente Che informazioni bisogna portarsi dietro in ogni caso? Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

13 Scansione a doppio indice di un array (1) Esempio: Inversione di un array: ridisporre gli elementi dell array in ordine inverso (dall ultimo al primo) Da così: A così: valori valori Idee su come fare? Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

14 Scansione a doppio indice di un array (2) Idea: scambio il primo elemento con l ultimo, il secondo con il penultimo, ecc... Attenzione: come si scambiano i valori di due elementi dell array? NON in questo modo: valori [0] = valori [9]; valori [9] = valori [0]; // AAARGH!! che fine ha fatto valori [0]? CI VUOLE una variabile d appoggio: int tmp = valori [0]; valori [0] = valori [9]; valori [9] = tmp ; Lo stesso vale quando si vogliono scambiare i valori di due normali variabili Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

15 Scansione a doppio indice di un array (3) Ecco la soluzione: for ( int i =0; i <( valori. length /2); i ++) { // notare la guardia // posizione elemento da scambiare con quello in posizione i int j=( valori. length -1) -i; } int tmp = valori [ i]; valori [i] = valori [j]; valori [j] = tmp ; In questo caso stiamo usando due indici, i e j, per muoverci nell array i e j in questo caso vengono aggiornati insieme (sono legati da una formula matematica) In altri casi i e j possono essere aggiornati a turno (esempio successivo) Notare che questo ciclo fa valori.length/2 iterazioni, ma ad ogni iterazioni vengono letti 2 valori. Totale: tutti i valori.length valori vengono letti Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

16 Scansione a doppio indice di un array (4) Altro esempio: Si supponga di avere un array valori di 10 elementi in cui gli elementi della prima metà e della seconda metà sono disposti in ordine crescente. Copiare tutti gli elementi di valori in un nuovo array valori2 in modo che siano tutti ordinati. Se questo è valori: valori Questo deve essere valori2: valori Idee su come fare? Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

17 Scansione a doppio indice di un array (5) Idea: confronto valori[0] con valori[5] e copio il minore in valori2. Incremento l indice del valore che ho copiato, ripeto il confronto e continuo così... int valori2 = new int [10]; int i=0, j=5, k =0; // k serve per scorrere valori2 do { // copia il minore e incrementa i o j if ( valori [i]< valori [j]) { valori2 [ k] = i ++; } else { valori2 [ k] = j ++; } // incrementa k k ++; valori [ i]; valori [ j]; } while ((i <5)&&( j <10)); // uno tra i e j non ha concluso il suo lavoro... // solo uno di questi due cicli viene eseguito while (i <5) { valori2 [ k]= valori [ i]; i ++; k ++; } while (j <10) { valori2 [ k]= valori [ j]; j ++; k ++; } Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

18 Scansione a doppio indice di un array (6) Schema di programma: scansione a doppio indice 1. Dichiara e inizializza due indici i e j 2. In un ciclo usa i e j per confrontare/scambiare i valori dell array aggiorna i e/o j 3. Gestisci eventuali elementi dell array non considerati 4. Stampa il risultato Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

19 Scansione a doppio indice di un array (6) Altri esempi in cui può essere applicato questo schema: 1. Verificare se un array di char è palindromo, ossia la sequenza di caratteri letti da sinistra a destra, oppure da destra a sinistra è la stessa. (Il concetto di palindromo è di solito riferito alle stringhe: ad es. "ailatiditalia", "itopinonavevanonipoti", inotipiedideipitoni,...) Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

20 Scansione di un array con cicli annidati (1) Nello schema precedente ogni elemento dell array veniva confrontato con un altro elemento. Spesso capita di dover confrontare ogni elemento dell array con tutti gli altri elementi Esempio: Un programma che verifica se esistono due elementi uguali nell array Come in questo caso: valori Bisogna per forza confrontare ogni elemento con tutti gli altri Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

21 Scansione di un array con cicli annidati (2) Idea: prendo il primo elemento e lo confronto con tutti i successivi, prendo il secondo elemento e lo confronto con tutti i successivi,... // flag che diventa true quando si trova un elemento ripetuto boolean trovato = false ; // per ogni elemento ( ultimo escluso )... for ( int i =0; i <9; i ++) { //... considera tutti i successivi (da i +1)... for ( int j=i +1; j <10; j ++) { //... e confronta if ( valori [i ]== valori [j]) trovato = true ; } } Note: quando si considera il secondo elemento non c e bisogno di confrontarlo con il primo (già fatto!), e così via... per evitare tali controlli superflui non si può usare for-each (non consente di gestire gli indici) si possono usare anche cicli while e do-while (ad esempio, per interrompere la ricerca appena trovato diventa true) Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

22 Scansione di un array con cicli annidati (3) Schema di programma: scansione con cicli annidati 1. Dichiara e inizializza un indice i 2. Cicla per i che va da 0 alla penultima posizione In ogni iterazione del ciclo: a. Dichiara e inizializza un indice j b. Cicla per j che va da i+1 all ultima posizione In ogni iterazione del ciclo: Usa i e j per confrontare/scambiare gli elementi 3. Stampa il risultato Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

23 Scansione di un array con cicli annidati (4) Altro esempio: Ordinamento di un array (algoritmo Selection sort) Da così: valori A così: valori Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

24 Scansione di un array con cicli annidati (5) L algoritmo Selection sort è (più o meno) quello che molti usano per sistemarsi le carte in mano... Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

25 Scansione di un array con cicli annidati (6) Idea: cerco il valore minimo e lo metto in prima posizione (scambiandoli), cerco il minimo dei rimanenti e lo metto in seconda posizione (scambiandoli),... Animazione: in rosso i valori da scambiare e in grassetto i valori sistemati eccetera... valori valori valori valori Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

26 Scansione di un array con cicli annidati (7) Ecco la soluzione (Selection sort): for ( int i =0; i <9; i ++) { // cerca il minimo nelle posizioni tra i e int posmin =i; //... portandosi dietro l indice for ( int j=i; j <10; j ++) { if ( valori [j]< valori [ posmin ]) posmin =j; } } // scambia il minimo con l elemento in posizione i int tmp = valori [ i]; valori [i] = valori [ posmin ]; valori [ posmin ] = tmp ; Note: La ricerca del minimo segue lo schema scansione sequenziale portandosi dietro un indice posmin Il for interno fa partire j dal valore i, non i-1 (piccolo aggiustamento dello schema scansione con cicli annidati ) Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

27 Scansione di un array con cicli annidati (8) Altri esempi in cui può essere applicato questo schema: 1. Altri algoritmi di ordinamento iterativi (Ad esempio: Insertion sort e Bubble sort) 2. Stampare tutte le coppie possibili di valori dell array 3. Determinare il numero di copie dell elemento che compare più volte nell array In tutti questi esempi il tipo dei valori dell array può essere numerico, char o String Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

28 Breve confronto tra gli schemi proposti (1) Abbiamo visto Scansione sequenziale Scansione a doppio indice Scansione con cicli annidati I tre schemi servono per risolvere problemi diversi La scansione sequenziale usa un solo indice, mentre gli altri ne usano due I due indici sono gestiti da un unico ciclo nella scansione a doppio indice Sono invece gestiti da due cicli diversi nella scansione con cicli annidati Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

29 Breve confronto tra gli schemi proposti (2) Nella scansione sequenziale e a doppio indice ogni elemento dell array viene usato una volta sola (o comunque poche volte) Nella scansione con cicli annidati ogni elemento può essere usato fino a length volte Questo incide sul tempo di esecuzione del programma (o meglio sul numero di operazioni che dovrà eseguire detto anche complessità computazionale) Un programma che usa la scansione sequenziale o la scansione a doppio indice esegue un numero di operazioni proporzionale alla dimensione dell array (complessità lineare) Un programma che usa la scansione con cicli annidati esegue un numero di operazioni proporzionale al quadrato della dimensione dell array (complessità quadratica) Al crescere della dimensione dell array, il numero di operazioni dell approccio scansione con cicli annidati cresce più velocemente che negli altri casi (per approfondimenti: libro di Crescenzi, Gambosi e Grossi) Paolo Milazzo (Università di Pisa) Programmazione - Programmare Array A.A. 2013/ / 28

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

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

Semplici Algoritmi di Ordinamento

Semplici Algoritmi di Ordinamento Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono

Dettagli

Corso di Tecniche di Programmazione

Corso di Tecniche di Programmazione Corso di Tecniche di Programmazione Corsi di Laurea in Ingegneria Informatica ed Automatica Anno Accedemico 003/004 Proff. Giuseppe De Giacomo, Luca Iocchi, Domenico Lembo Dispensa : Algoritmi di Ordinamento

Dettagli

23 - Graphical User Interface GUI (Cenni)

23 - Graphical User Interface GUI (Cenni) 23 - Graphical User Interface GUI (Cenni) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo

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

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File 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

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

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

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

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

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

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

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

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

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

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

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

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Laboratorio di Informatica Lezione 2

Laboratorio di Informatica Lezione 2 Laboratorio di Informatica Lezione 2 Cristian Consonni 30 settembre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 2 1 / 42 Outline 1 Commenti e Stampa a schermo 2 Strutture di controllo 3

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

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 14 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

Dettagli

Algebra Booleana ed Espressioni Booleane

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

Dettagli

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 15 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

2 - Introduzione al linguaggio Java

2 - Introduzione al linguaggio Java 2 - Introduzione al linguaggio Java 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

Dettagli

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di

Dettagli

Eclipse - Nozioni Base

Eclipse - Nozioni Base Eclipse - Nozioni Base 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

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa Ricerche, ordinamenti e fusioni 5.1 Introduzione Questo capitolo ci permette di fare pratica di programmazione utilizzando gli strumenti del linguaggio introdotti finora. A una prima lettura possono essere

Dettagli

Complessità computazionale

Complessità computazionale 1 Introduzione alla complessità computazionale Un problema spesso può essere risolto utilizzando algoritmi diversi Come scegliere il migliore? La bontà o efficienza di un algoritmo si misura in base alla

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 18 marzo 2011 Problema basato su 10.5 del libro di testo La CINA (Compagnia Italiana per il Noleggio di Automobili) dispone di

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Introduzione alla tecnica di Programmazione Dinamica

Introduzione alla tecnica di Programmazione Dinamica Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/37 Sommario della lezione Introduzione alla tecnica di Programmazione Dinamica Esempio di applicazione n. 1:

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno UD 3.1b: Costrutti di un Algoritmo Dispense 1.2 I Costrutti di base 13 apr 2010

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni 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

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

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Definizione di classi con array di oggetti

Definizione di classi con array di oggetti Definizione di classi con array di oggetti 1. (Esame scritto del 18/9/2002, Esercizio 6.) La banca dati di un agenzia assicurativa per auto è caratterizzata da un insieme di polizze di assicurazioni per

Dettagli

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

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

Dettagli

Breve riepilogo della puntata precedente:

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

Dettagli

RICERCA DI UN ELEMENTO

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

Dettagli

Corso di Informatica

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

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

16.3.1 Alberi binari di ricerca

16.3.1 Alberi binari di ricerca 442 CAPITOLO 16. STRUTTURE DI DATI DINAMICHE root 7 5 11 2 8 13 10 Figura 16.11 Esempio di albero binario: ogni nodo contiene il dato da immagazzinare e tre puntatori che definiscono le sue relazioni di

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

String, Array e Main. Lezione 7

String, Array e Main. Lezione 7 String, Array e Main Lezione 7 Scopo della Lezione Presentare la classe String ed il tipo Stringa; Presentare ed imparare ad usare gli array in Java; Approfondire la conoscenza con il metodo speciale main.

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

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

Un oggetto per la lettura dalla tastiera

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

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

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

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

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Ricerca di un valore nell array

Ricerca di un valore nell array Algoritmi su array Quando si usano gli array, si eseguono frequentemente alcune operazioni tipiche : inizializzazione lettura stampa ricerca del minimo e del massimo ricerca di un valore eliminazione di

Dettagli

L algoritmo di ricerca binaria. Daniele Varin LS Ing. Informatica Corso di Informatica teorica Docente: prof. Paolo Sipala

L algoritmo di ricerca binaria. Daniele Varin LS Ing. Informatica Corso di Informatica teorica Docente: prof. Paolo Sipala L algoritmo di ricerca binaria Daniele Varin LS Ing. Informatica Corso di Informatica teorica Docente: prof. Paolo Sipala L algoritmo di ricerca binaria (o dicotomica) In informatica,, la ricerca dicotomica

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Caratteri e stringhe Esercizi risolti

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

Dettagli

If a cascata, switch, boolean

If a cascata, switch, boolean If a cascata, switch, boolean If a cascata Switch Il tipo boolean Operatori logici, valutazione pigra 1 If a cascata Consideriamo una semplice classe che deve descrivere con una stringa gli effetti di

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o

Dettagli

Esempi di algoritmi. Lezione III

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

Dettagli

ARRAY E STRINGHE. G. Frosini Slide 1

ARRAY E STRINGHE. G. Frosini Slide 1 ARRAY E STRINGHE G. Frosini Slide 1 Array: VARIABILI ARRAY struttura dati costituita da elementi (anche nessuno, array vuoto) dello stesso tipo; tipo array: tipo degli elementi, non numero degli elementi;

Dettagli

Introduzione al MATLAB c Parte 2

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

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

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

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

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

PROVA INTRACORSO TRACCIA A Pagina 1 di 6 PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

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 19 Ricorsione A. Miola Marzo 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti q Funzioni e domini definiti

Dettagli

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015 VINCENZO MARRA Indice Parte 1. Input/Output standard dalla console 2 Esercizio 1 2 Eco

Dettagli

Tipologie di macchine di Turing

Tipologie di macchine di Turing Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

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

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

Dettagli

Ricorsione. Corso di Fondamenti di Informatica

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

Dettagli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

Dettagli

Iterazione e ricorsione. Cicli, Array e Programmazione su Sequenze. Ciclo while. Cicli

Iterazione e ricorsione. Cicli, Array e Programmazione su Sequenze. Ciclo while. Cicli Iterazione e ricorsione Dal punto di vista della teoria della computazione, affinché un linguaggio di programmazione imperativo (C, Pascal, codice nei metodi del Java, ecc.) raggiunga la potenza di calcolo

Dettagli

Programmazione ad Oggetti: JAVA. Esercitazione

Programmazione ad Oggetti: JAVA. Esercitazione Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

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

Dettagli

Idee guida. Finite State Machine (1) Un automa a stati finiti è definito da una 5- pla: FSM = , dove: Finite State Machine (2)

Idee guida. Finite State Machine (1) Un automa a stati finiti è definito da una 5- pla: FSM = <Q,,, q0, F>, dove: Finite State Machine (2) Idee guida ASM = FSM con stati generalizzati Le ASM rappresentano la forma matematica di Macchine Astratte che estendono la nozione di Finite State Machine Ground Model (descrizioni formali) Raffinamenti

Dettagli

Costruzione di Siti Web con PHP e MySQL. Lezione 4: Operatori, Array, Controlli e Cicli

Costruzione di Siti Web con PHP e MySQL. Lezione 4: Operatori, Array, Controlli e Cicli Costruzione di Siti Web con PHP e MySQL Lezione 4: Operatori, Array, Controlli e Cicli Argomenti della lezione In questa lezione si riprenderà il concetto di Array, nel suo aspetto basilare, ed in particolare

Dettagli