Informatica. Fondamenti della Programmazione in Java. Leonardo Vanneschi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Informatica. Fondamenti della Programmazione in Java. Leonardo Vanneschi"

Transcript

1 Informatica Fondamenti della Programmazione in Java Leonardo Vanneschi 1

2 1. Fondamenti Il primo programma in Java Il programma che stampa a video una sequenza di caratteri (o stringa): class Esempio { public static void main (String[] args) { System.out.println("Hello World!"); Nota: per poter essere utilizzato, questo programma deve necessariamente essere contenuto in un file di testo di nome Esempio.java. Spiegazione dettagliata del programma Per i più "esperti": Esempio è il nome della classe che contiene il metodo main; public: il metodo main può essere invocato anche esternamente alla classe che lo contiene; static: il metodo main si riferisce alla classe Esempio e non ad una particolare istanza di esse; in altri termini, esiste uno ed un solo metodo main, identico per ogni istanza della classe Esempio; void: il metodo main non restituisce alcun risultato (dunque ha il solo ruolo di compiere delle azioni); main è il nome del metodo principale di un programma Java: il primo ad essere eseguito. String[] args: l'argomento del metodo main è un vettore di stringhe di caratteri chiamato args; System.out.println è il comando predefinito di Java per stampare a video una sequenza di caratteri. Tale sequenza va passata come parametro a questo comando. Tutti questi concetti verranno chiariti durante il corso. Per i "principianti": La prima riga significa che il programma che sto scrivendo si chiama Esempio. Affinché esso possa funzionare, esso deve essere contenuto in un file di testo con lo stesso nome e con l'estensione ".java" (quindi in questo caso Esempio.java). La seconda può essere interpretata come l' "inizio del programma": a partire dalla riga successiva a questa, ha inizio il codice che viene eseguito. In prima approssimazione, le prime due righe possono essere considerate come qualcosa che non deve essere compreso nei dettagli, ma che va scritto ogni volta in modo meccanico e sempre uguale, con la sola eccezione del fatto che il nome del programma (la parola che segue la parola class nella prima riga) può essere scelta di volta in volta e con il vincolo che tale nome deve essere identico al nome del file che contiene il codice. 2

3 System.out.println è il comando predefinito di Java per stampare a video una sequenza di caratteri. La sequenza di caratteri da stampare deve essere scritta dopo il comando, tra parentesi e tra virgolette. Tutti questi concetti verranno chiariti durante il corso. Compilazione ed esecuzione Per poter eseguire un programma Java, occorre prima compilarlo. Una volta che si è scritto il programma, infatti, esso è in una forma comprensibile da parte di un essere umano, ma non da parte di un calcolatore (si dice che è scritto in un linguaggio di programmazione di alto livello). Viceversa, un calcolatore è una macchina in grado di eseguire programmi scritti in un linguaggio macchina, o, nel gergo di Java, in byte-code (un programma scritto in linguaggio macchina può approssimativamente essere immaginato come una sequenza di bit, ovvero di caratteri 0 e 1). Quindi, il programma scritto da un essere umano, per poter essere eseguito deve essere tradotto in linguaggio macchina. Questo è il compito principale del compilatore. Le tappe da compiere per poter eseguire il programma Esempio.java sono schematizzate qua sotto: Programma di Programma in alto livello (file byte-code (file Esempio.java) compilatore Esempio.class) esecuzione Comando per compilare: javac Esempio.java Comando per eseguire: java Esempio e possono essere riassunte dai seguenti punti: Compilare il programma con il comando javac Esempio.java (questo comando, se viene eseguito senza errori, fa si che venga creato un nuovo file chiamato Esempio.class che è la traduzione in byte-code del file Esempio.java). Eseguire il programma con il comando java Esempio L'effetto sarà la visualizzazione a video della sequenza di caratteri Hello World! 3

4 Note: i comandi javac e java (detti anche compilatore e interprete di Java) sono comandi che devono essere eseguiti dal Sistema Operativo presente sul vostro calcolatore (probabilmente Linux o Windows nel vostro caso). Il meccanismo più elementare per "interagire" con un Sistema Operativo (e quello che verrà utilizzato in questo corso) è tramite un terminale. Quindi, ad esempio per eseguire il comando javac Esempio.java, occorre aprire un terminale con l'apposito meccanismo previsto dal vostro sistema operativo (normalmente lo si può fare tramite un apposito menu), posizionarsi nella directory in cui è contenuto il file Esempio.java, scrivere con la tastiera javac Esempio.java e premere il tasto return. Per poter essere eseguiti, i comandi javac e java devono essere stati precedentemente installati. Essi possono essere scaricati ed installati gratuitamente dal sito seguendo il link downloads e scegliendo il Sistema Operativo utilizzato. Oltre a quello di tradurre programmi ad alto livello in programmi in linguaggio macchina, il compilatore ha anche il compito di segnalare gli errori che sono stati commessi al momento della scrittura del programma. Si noti che i soli errori che possono essere segnalati da un compilatore sono errori di sintassi. Esempi di errori di sintassi: Scrivere Sytsem.otu.priltn invece di System.out.println. Dimenticare il simbolo ";" alla fine di un comando. Dimenticarsi di chiudere una parentesi che era stata precedentemente aperta.... (i possibili errori di sintassi sono moltissimi, ve ne accorgerete presto in laboratorio, purtroppo... E' importante non scoraggiarsi se all'inizio commettete molti di questi errori: è del tutto normale! Vedrete che con l'esperienza le cose andranno meglio). Esempi di errori di semantica: Il programma che volevo scrivere non doveva stampare a video la stringa Hello World!, ma doveva fare la somma di due numeri interi. Chiaramente il compilatore non è in grado di segnalare errori di semantica. Questi ultimi sono di sola competenza del programmatore, che ha tutta la responsabilità di far si che il programma si comporti come desiderato. Quando il compilatore trova un errore si sintassi all'interno del programma, si interrompe e segnala sul terminale il tipo di errore e la riga di codice in cui l'errore è contenuto. In questo modo (con un po' di esperienza!) dovrebbe risultare facile da parte del programmatore identificare l'errore, correggerlo e riprovare a compilare. Quando il programma non contiene errori di sintassi, il compilatore genera un nuovo file (nella stessa directory in cui vi trovate) chiamato Esempio.class, che è la traduzione in byte-code del file Esempio.java. Se si cerca di aprire il file Esempio.class con un editore di testo, si vedrà che questo file risulta del tutto illeggibile da parte di un essere umano. Questo codice non deve essere ne' letto, ne' capito, ma deve essere eseguito, tramite il comando java Esempio. 4

5 2. Variabili, Tipi di Dato, Espressioni Il Concetto di Variabile Per introdurre il concetto di variabile (uno dei concetti fondamentali della programmazione), si consideri un programma un po' più complesso di quello visto fin qui: class Esempio { public static void main (String[] args) { System.out.println("2"); System.out.println("2"); System.out.println("2"); E' chiaro che questo programma stampa a video tre volte la stringa 2. Supponiamo adesso che dopo aver scritto questo programma, ci si renda conto che la stringa che doveva essere stampata non era 2, bensì (ad esempio) 5. Per correggere il programma da questo errore di semantica, occorrerà correggere tre punti del programma. In questo caso il lavoro non sarebbe granché oneroso, ma è facile immaginare che, se la stringa dovesse essere stampata mille volte, risulterebbe assai fastidioso dover effettuare mille correzioni dello stesso errore! Questo problema (ovvero quello di scrivere un programma che deve poi essere modificato in un secondo tempo per qualche motivo) è molto frequente. Uno dei metodi per affrontare in modo più efficace questo problema è quello di utilizzare il concetto di variabile. In prima approssimazione, ed in modo del tutto intuitivo e informale, una variabile può essere definita come una scatola (o, un po' più correttamente, come una parte della memoria del calcolatore) che contiene dei valori. Una variabile è identificata da: un nome; un tipo di dato; un valore. Per esempio, una possibile definizione di variabile in Java può essere: int x = 5; In questo modo, abbiamo definito una variabile tale che: il suo nome è x; il suo tipo è int, ovvero questa variabile è un numero intero; il suo valore è 5. Il tipo di dato di una variabile è legato alla sua taglia, ovvero allo spazio di memoria che essa occupa. Dopo che la riga di codice int x = 5; è stata eseguita, infatti, viene riservato uno 5

6 spazio di memoria per la variabile x e la taglia di questo spazio di memoria è esattamente la dimensione sufficiente per contenere un numero intero (32 bit in Java). Successivamente, all'interno di questa regione di memoria viene registrato il valore 5. Altro esempio: char c = 'a'; il suo nome è c; il suo tipo è char, che significa che si tratta di un carattere alfanumerico; il suo valore è il carattere a. In questo caso, al momento dell'esecuzione della riga di codice char c = 'a'; viene riservato, all'interno della memoria del calcolatore, uno spazio per la variabile c della taglia necessaria per contenere un qualsiasi carattere alfanumerico (16 bit in Java) e successivamente viene registrato il valore a all'interno di questa regione. Si noti che la rappresentazione binaria del carattere a è uguale a quella di un numero intero di tipo short, quindi occorre utilizzare i simboli ' e ' per distinguere questi due casi. Vediamo adesso come può essere riscritto il programma precedente utilizzando una variabile: class Esempio { public static void main (String[] args) { int n = 2; System.out.println(n); System.out.println(n); System.out.println(n); Note: E' chiaro che stavolta se occorre cambiare il valore che deve essere stampato a video, il cambiamento può essere fatto una sola volta, in un sol punto del programma. E' importante notare la differenza tra l'uso del comando System.out.println con e senza le virgolette: un comando come System.out.println("n"); stampa a video la lettera n; viceversa, un comando come System.out.println(n); implica la ricerca all'interno della memoria di una variabile di nome n e la stampa a video del suo valore. Adesso che abbiamo (parzialmente) capito l'utilità del concetto di variabile, possiamo dedicarci con un livello maggiore di dettaglio alle tre caratteristiche tipiche delle variabili: i tipi di dato, i nomi (detti anche identificatori) e i valori. 6

7 Tipi di Dato In Java esistono due categorie di tipi di dato: Tipi di dato primitivi Tipi di dato complessi (o classi predefinite) Inoltre, in Java il programmatore ha la possibilità di definire dei nuovi tipi di dato. I tipi di dato primitivi di Java sono: short numeri interi rappresentabili con 16 bit int numeri interi rappresentabili con 32 bit long numeri interi rappresentabili con 64 bit float numeri reali rappresentabili con 32 bit double numeri reali rappresentabili con 64 bit char caratteri alfanumerici (rappresentabili con 16 bit) boolean i valori di verità. I possibili valori sono true (vero) e false (falso) e quindi, dato che i possibili valori sono 2, sono rappresentabili con 1 bit. I tipi di dato short, int, long, float e double sono detti tipi numerici. Esistono (pochi) altri tipi di dato semplici in Java (come ad esempio il tipo byte), che vengono utilizzati di rado e non sono di interesse in questo corso. Tra i tipi di dato complessi (si noti che, come risulterà più chiaro alla fine del corso, il termine classi predefinite è più corretto ed appropriato, ma in questa fase si è preferito utilizzare il termine tipi di dato complessi perché più intuitivo) in Java sono moltissimi. Fin qui ne abbiamo visto uno soltanto: String sequenze di caratteri alfanumerici Risulterà chiaro durante il corso il motivo per cui i tipi di dato complessi debbano essere distinti dai tipi di dato semplice. Inoltre, durante il corso si vedranno altri esempi di tipi di dato complessi di Java (anche se non ci avvicineremo neanche ad una analisi esaustiva di tutte le classi predefinite del linguaggio) e impareremo a definire nuovi tipi di dato. 7

8 Identificatori Un identificatore è una sequenza di caratteri: tale che: Esempi: c 0 non è una cifra; c 0 c 1...c N-1 i tale che 0 i N-1: c i non è un simbolo di operazione aritmetica (+,-,*,/,...) o logica (&,,!) e non è uguale a uno spazio vuoto (carattere di spaziatura). somma è un identificatore corretto; 3aPagina NON è un identificatore corretto perché comincia con una cifra; due+tre NON è un identificatore corretto perché contiene un simbolo di operazione aritmetica; il-mio-nome NON è un identificatore corretto perché contiene simboli di operazioni aritmetiche; il_mio_nome è un identificatore corretto (si noti la differenza col caso precedente); ilmionome è un identificatore corretto; il mio nome NON è un identificatore corretto perché contiene degli spazi bianchi. x2 è un identificatore corretto (contiene o più cifre, ma nessuna di esse appare come primo carattere). 8

9 Valori delle variabili I valori costanti delle variabili e la loro rappresentazione dipendono fortemente dal tipo di dato. In particolare: I valori di tipo short, int e long si rappresentano scrivendo semplicemente dei numeri senza la virgola. Chiaramente il tipo long contiene un insieme di possibili valori più grande rispetto al tipo int e quest'ultimo contiene un insieme di possibili valori più grande rispetto al tipo short, dato che i valori di tipo long sono rappresentati con 64 bit, quelli di tipo int con 32 bit e quelli di tipo short con 16 bit. I valori di tipo float e double si rappresentano come numeri con la virgola (la notazione è americana, ovvero viene utilizzato il punto per separare le cifre intere da quelle decimali). Ancora una volta, il tipo double contiene un insieme di possibili valori più grande rispetto al tipo float, perché i suoi valori si rappresentano utilizzando un numero superiore di bit. I valori di tipo char si rappresentano scrivendo un carattere alfanumerico tra apice singolo. I valori di tipo boolean si rappresentano scrivendo le parole true e false senza alcuna virgoletta o apice (attenzione: la differenza tra maiuscole e minuscole in Java è sempre importante; True non è un valore booleano, true si). I valori di tipo String si rappresentano scrivendo sequenze di caratteri tra virgolette (o apici doppi). Esempi di definizioni di variabili int x = 5; short pippo = 5; long y = 5; float numero = 5.3; double ciao = 5.3; char ilmiocarattere = 'w'; boolean b = true; String s = "Ciao a tutti, come va questa lezione di informatica?"; Oltre ai valori costanti, per ogni tipo di dato si possono avere valori dati dal risultato di una espressione più complessa, come risulterà chiaro dopo la lettura del prossimo paragrafo. Oltre a definire le variabili come negli esempi qui sopra, si può anche: Definire una variabile senza assegnarle (immediatamente) un valore. Ad esempio, una definizione come: int n; 9

10 definisce una variable intera senza alcun valore (si può immaginare che le celle di memoria riservate per questa variabile vengano lasciate vuote). In questo caso si dice che la variabile è stata dichiarata, ma non inizializzata. In alcuni casi, è utile dichiarare una variabile senza assegnarle immediatamente un valore, ma è bene tenere presente che il linguaggio Java non consente (per fortuna!) l'utilizzo di una variabile se prima non le è stato assegnato un valore. Inoltre il linguaggio Java vieta l'uso di una variabile se prima non è stata inizializzata. Morale: non usate mai variabili senza dichiararle e inizializzarle (l'inizializzazione può essere fatta al momento della dichiarazione o successivamente, ma sempre prima del loro primo utilizzo). In seguito vedremo come sia possibile assegnare un valore a una variabile che è stata definita precedentemente, oppure cambiare il valore di una variabile, tramite il cosiddetto comando di assegnamento. Definire più variabili "in un colpo solo". Una definizione come: int x, y, z; è assolutamente equivalente alla sequenza di definizioni: int x; int y; int z; 10

11 Espressioni Le principali espressioni in Java sono le espressioni aritmetiche, le espressioni relazionali, le espressioni logiche e le espressioni su stringhe. Esse vengono trattate separatamente qua sotto. Espressioni aritmetiche La definizione di queste espressioni è data dai seguenti punti: Un numero è una espressione aritmetica. Se A e B sono espressioni aritmetiche, allora: - A+B (addizione) - A-B (sottrazione) - A/B (divisione) - A*B (moltiplicazione) - A%B (modulo o resto della divisione intera) sono espressioni aritmetiche. Se A è un'espressione aritmetica, allora anche (A) è un'espressione aritmetica. Esempio di espressione aritmetica: (5+7)*3+2 Precedenza degli operatori aritmetici: gli operatori * e / hanno la precedenza rispetto a + e -. Questo significa che * e / vengono eseguiti prima di + e - indipendentemente dalla posizione in cui si trovano nell'espressione. Esempio: * 2 restituisce come risultato 19 in altri termini, prima viene calcolato 7*2 e poi il risultato viene sommato a 5. Per cambiare la precedenza degli operatori si possono usare le parentesi. Esempio: ( ) * 2 restituisce come risultato 24 in altri termini, prima viene calcolato 5+7 e poi il risultato viene moltiplicato per 2. 11

12 Espressioni relazionali La definizione di queste espressioni è data dai seguenti punti: Se A e B sono espressioni aritmetiche, allora: - A == B (uguale) - A > B (maggiore) - A < B (minore) - A >= B (maggiore o uguale) - A <= B (minore o uguale) - A!= B (diverso) sono espressioni relazionali. Se A è un'espressione relazionale, allora anche (A) è un'espressione relazionale. Si noti il fatto che le espressioni relazionali restituiscono sempre come risultato un valore di tipo boolean. Esempi di espressioni relazionali: 5 == 8 il risultato è false (o "è falsa" o "vale false") perché 5 non è uguale a 8 5 == 5 vale true 3+4 > 2+1 vale true perché 7 è maggiore di 3 5 >= 5 vale true 5 >= 8 vale false 5 >= 3 vale true Espressioni Logiche La definizione di queste espressioni è data dai seguenti punti: true e false sono espressioni logiche. Se A è un'espressione relazionale, allora A è anche un'espressione logica. Se A e B sono espressioni logiche, allora: -!A (negazione logica) - A & B (and logico) - A B (or logico) - A && B (and logico ottimizzato) - A B (or logico ottimizzato) sono espressioni logiche. Se A è un'espressione logica, allora anche (A) è un'espressione logica. 12

13 Il valore restituito come risultato da un'espressione logica è un valore di tipo boolean. Questo valore può essere sempre calcolato in funzione dei valori di A e B grazie all'uso delle cosiddette tabelle di verità. Le tabelle di verità della negazione logica, dell'and logico e dell'or logico sono riportate brevemente qua sotto: A!A true false false true A B A & B true true true true false false false true false false false false A B A B true true true true false true false true true false false false 13

14 Esempi di espressioni logiche (4 > 3) & (2 > 1) vale false (7+1 > 2+2) (8+1 > 100) vale true true & (4 < 1) vale false Differenza tra gli operatori & ed &&: A & B valuta le espressioni A e B e ne calcola l'and logico A && B valuta l'espressione A; se il valore di A è uguale a false, allora l'espressione B non viene valutata ma viene restituito direttamente il valore false come risultato. In caso contrario, viene valutata l'espressione B e viene restituito l'and logico tra A e B. E' chiaro che il risultato restituito da A && B è sempre uguale a quello restituito da A & B, ma valutare A && B è meno costoso che valutare A & B. Nel caso in cui l'espressione B sia molto complessa, questa differenza di efficienza può essere significativa! Morale: se non si hanno validi motivi per valutare anche l'espressione a destra dell'operatore, usare sempre && quando si vuole eseguire un and logico. Esempio: (4 < 3) && ((5 <= 9) (7%6 == 1) &...) L'espressione (4 < 3) è falsa, quindi tutto il resto dell'espressione non è calcolata, ma viene restituito immediatamente il valore false. Differenza tra gli operatori ed : A B valuta le espressioni A e B e ne calcola l'or logico A B valuta l'espressione A; se il valore di A è uguale a true, allora l'espressione B non viene valutata ma viene restituito direttamente il valore true come risultato. In caso contrario, viene valutata l'espressione B e viene restituito l'or logico tra A e B. Ancora una volta, è chiaro che il risultato restituito da A B è sempre uguale a quello restituito da A B, ma valutare A B è meno costoso che valutare A B. Morale: se non si hanno validi motivi per valutare anche l'espressione a destra dell'operatore, usare sempre quando si vuole eseguire un or logico. 14

15 Espressioni su stringhe Le espressioni che possono essere formate un Java utilizzando le stringhe sono molte e non è scopo di questo corso una analisi esaustiva di ognuna di esse. Ci limiteremo a trattare le espressioni formate da concatenazione di stringhe: se A e B sono due stringhe, allora A+B è una stringa formata dalla concatenazione delle stringhe A e B. La concatenazione tra due stringhe A e B è semplicemente una sequenza formata da tutti i caratteri che compongono A seguiti da tutti i caratteri che compongono B (senza alcun carattere di separazione). Esempio: "buon" + "Giorno" è una espressione che restituisce come risultato la stringa "buongiorno". Nota: se uno solo degli operandi dell'operatore + è una stringa, allora l'altro operando viene trasformato in una stringa e successivamente viene eseguita l'operazione di concatenazione. Ad esempio: String s = "ciao" + 4; alla fine di questo comando, il valore della stringa s è "ciao4". 15

16 Definizione di variabile Adesso siamo pronti a definire in modo più preciso la sintassi della definizione di una variabile all'interno di un programma Java: [<modificatore>] <tipo T> <identificatore> = <espressione di tipo T> ; Si osservi che con questa notazione per definire la sintassi, tutto ciò che è racchiuso tra i simboli e è inteso come "opzionale" (ovvero può essere o non essere presente nel codice). Inoltre, si noti che: Un modificatore è una tra le parole chiave di Java public, private, static, ecc.... I modificatori verranno introdotti nella parte finale del corso e per adesso non verranno utilizzati. L'espressione che compare alla sinistra del simbolo di uguaglianza deve essere dello stesso tipo rispetto a quello dichiarato a sinistra del nome della variabile. Il simbolo ; è obbligatorio alla fine di una dichiarazione di variabile, come alla fine di ogni comando Java (separatore di comandi). Esempi di definizioni di variabili corrette: boolean variabilelogica = (5>4) & (3<10) & true; int x = 5+9*8+2; double pippo = 10/3; Esempi di definizioni errate: boolean ciao = 10*4; double x = (5 == 3); 16

17 Esempio di programma Java che utilizza variabili ed espressioni: class Esercizio { public static void main (String[] args) { int x = 5; int y = 3; int somma; somma = x + y; System.out.println("La somma è: " + somma); Si cerchi di capire nei minimi dettagli il funzionamento di questo programma. Nota: Come già detto, l'operatore + in Java ha un significato diverso a seconda del tipo di dato dei suoi operandi: se entrambi gli operandi sono di tipo numerico, + è l'operazione aritmetica di somma. se almeno uno dei due operandi è una stringa, + è l'operatore di concatenazione tra stringhe. Quindi: 5+4 è una espressione di tipo intero il cui risultato è 9 "5"+4 è una espressione di tipo stringa il cui risultato è "54" 4+"5" è una espressione di tipo stringa il cui risultato è "54" "4"+"5" è una espressione di tipo stringa il cui risultato è "54" Gli ultimi tre risultati sono valori di tipo String e non hanno nulla a che vedere con il numero 54! Cercare di capire bene questi concetti prima di proseguire con la lettura. 17

18 3. Interazione con l'utente Un programma Java può interagire con il mondo esterno tramite la classe SavitchIn. Ad esempio, tramite questa classe è possibile fare in modo che sia l'utilizzatore del programma (e non il programmatore!) a settare il valore di alcune variabili. Ad esempio, si consideri la seguente definizione di variabile: int n = SavitchIn.readLineInt(); al momento dell'esecuzione di questa linea di codice, l'interprete di Java di arresta ed aspetta che l'utilizzatore scriva un numero intero e prema il tasto return. Una volta che l'utilizzatore preme il tasto return, tutto ciò che è stato scritto precedentemente è interpretato come il valore della variabile n e l'esecuzione del programma continua (si noti che se l'utilizzatore scrive un valore di un tipo diverso dal tipo int, l'esecuzione del programma si blocca e viene segnalato un errore). Esempio Il seguente programma esegue la somma di due numeri digitati dall'utilizzatore: class Esercizio { public static void main (String [] args) { int x; int y; System.out.println("Scrivi il primo numero: "); x = SavitchIn.readLineInt(); System.out.println("Scrivi il secondo numero: "); y = SavitchIn.readLineInt(); int somma = x + y; System.out.println("Somma dei numeri che hai scritto = " + somma); Compilare ed eseguire questo programma per capirne il comportamento. Cercare di capire questo programma nei minimi dettagli prima di proseguire. Si noti che è impossibile scrivere un programma che esegue la somma di due numeri qualsiasi senza far uso delle variabili! La classe SavitchIn non è sempre installata su tutti i PC. In tal caso deve essere installata manualmente. La si può scaricare gratuitamente, ad esempio, dal sito: Altri metodi della classe SavitchIn: double x = SavitchIn.readLineDouble(); char c = SavitchIn.readLineChar(); String s = SavitchIn.readLineWord(); 18

19 4. Istruzione di Assegnamento E' l'istruzione che permette di modificare il valore di una variabile (o di assegnarle un valore per la prima volta, se esso non è già stato assegnato al momento della sua dichiarazione). Sintassi: <identificatore> = <espressione>; dove <espressione> deve restituire un valore dello stesso tipo di quello utilizzato al momento della dichiarazione di <identificatore> (altrimenti il compilatore di Java segnala un errore e si interrompe). Semantica: Si valuta l'espressione ottenendo, se la valutazione termina, un valore v. Il valore v viene scritto nella regione di memoria che è stata associata alla variabile al momento della sua dichiarazione. Un caso interessante: in Java (come nella maggior parte dei linguaggi di programmazione) è permesso l'utilizzo di una istruzione di assegnamento come la seguente: x = espressione(x) ; dove espressione(x) è una espressione che fa uso di x. Ad esempio, si può scrivere una istruzione come: x = x+1; Il significato è: Viene sommato 1 al vecchio valore di x. Il risultato viene scritto di nuovo nella regione di memoria associata a x. In generale: Viene valutata espressione(x) utilizzando il vecchio valore di x. Il risultato viene scritto di nuovo nella regione di memoria associata a x. Esempio class Esercizio { public static void main (String[] args) { int x; x=10; x=x+1; 19

20 x=x+2; x=x+10; Cercare di capire il funzionamento di questo programma. Qual'è il valore della variabile x alla fine dell'esecuzione? Nota: Il linguaggio Java consente anche la notazione: x++; che ha esattamente lo stesso significato di x=x+1; ma è (leggermente) più efficiente. Esempio: class Esercizio { public static void main (String[] args) { int x = 10; x++; x++; System.out.println(x); Che cosa stampa a video questo programma? Il linguaggio Java consente anche la notazione ++x; il risultato è sempre lo stesso, ma c'è un'importante differenza tra x++ e ++x. Per comprenderla, si considerino i seguenti esempi: Il frammento di codice: int x = 2; System.out.println((x++) == 3); System.out.println(x); stampa a video: false 3 Il frammento di codice: int x = 2; System.out.println((++x) == 3); System.out.println(x); stampa a video: 20

21 true 3 In altri termini, c'è una differenza tra x++ e ++x soltanto quando li si utilizza all'interno di una espressione relazionale: Nel caso di ++x prima si incrementa il valore di x e poi si valuta l'espressione relazionale. Nel caso di x++ prima si valuta l'espressione relazionale e poi si incrementa il valore di x. 21

22 Importanza dell'inizializzazione di una variabile Inizializzare una variabile significa assegnarle un valore per la prima volta da quando è stata dichiarata. Non si può utilizzare una variabile a destra del simbolo = in una istruzione di assegnamento se essa non è stata prima inizializzata (pena: errore del compilatore). Esempio: class Esercizio { public static void main (String[] args) { int x; int y; x = 5; int somma; somma = x+y; Il compilatore restituisce un errore quando si tenta di eseguire questo programma: y non è stata inizializzata (non ha un valore o, più correttamente, non ha un valore significativo). Importanza dei tipi di dato Non si può (quasi mai) assegnare ad una variabile di un tipo un valore di un altro tipo! (Pena: errore del compilatore). Esempio: class Esercizio { public static void main (String[] args) { String s = "ciao"; int x = 5; x = s; > Errore s = x; > Errore In questo caso, il programma restituisce un errore a tempo di compilazione perché i tipi int e String non sono compatibili. Una variabile di un tipo T1 può essere assegnata a un valore di tipo T2 se e solo se T1 e T2 sono tipi compatibili. Di seguito vengono trattate le regole per stabilire se due tipi di dato sono o meno compatibili. 22

23 Compatibilità dei Tipi di Dato Le regole per stabilire se due tipi di dato sono o meno compatibili (prendendo in considerazione solo i tipi di dato che sono stati considerati fin qui) sono le seguenti: I tipi numerici sono compatibili con gli altri tipi (String, char, boolean). String, char e boolean non sono compatibili tra di loro (per ogni loro permutazione). I tipi numerici possono essere compatibili tra di loro, con le seguenti regole: Vedendo un tipo di dato come un insieme, esistono le seguenti relazioni tra i tipi numerici in Java: short int long float double Un tipo numerico T1 è compatibile con un altro tipo numerico T2 (in altri termini un valore di tipo T1 può essere assegnato a una variabile di tipo T2) se e solo se: T1 T2 Esempio: double x; x = 1; Questo assegnamento è consentito perché int double. Il valore double "corrispondente" al valore intero 1 è 1.0. Esempio: int x; x = 1.5; Questo assegnamento NON è consentito in quanto non è vero che il tipo double è contenuto in int. Il valore double 1.5 NON ha un corrispettivo nel tipo int. Errore a tempo di compilazione. Esempio: int x = 5; double y = 7.3; double somma = x+y; Questo assegnamento è consentito; il risultato è un double: il valore intero di x viene prima trasformato nel suo corrispettivo nel tipo double e poi i due double vengono sommati. 23

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

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

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

Programmare in Java. Olga Scotti

Programmare in Java. Olga Scotti Programmare in Java Olga Scotti Linguaggi di programmazione linguaggio macchina assembler linguaggi ad alto livello Linguaggi ad alto livello istruzioni comprensibili linguaggio simile a quello naturale

Dettagli

Richiesta pagina PHP (es: index.php)

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

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

int a = 4; int b = 5; int c = a + b;

int a = 4; int b = 5; int c = a + b; Lezione 5 Operatori ed espressioni Caricare i dati in memoria non è l'unica operazione necessaria per trattare le informazioni. Bisogna intervenire sui valori conservati, esaminandoli, combinandoli e rendendoli

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Rappresentazione delle informazioni L informatica si occupa di rappresentare ed elaborare informazioni diverse: numeri caratteri audio immagini video I caratteri: ASCII

Dettagli

Variabili e tipi di dato

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

Dettagli

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

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Java: Compilazione e Traduzione Editing, compilazione, esecuzione

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

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

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

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

Dettagli

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione

Esempio. Esempio. Linguaggio di Programmazione. Linguaggi di programmazione. Linguaggio di computazione. Linguaggi di programmazione Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Problema e metodologie di progetto Linguaggio C: Introduzione Monica Mordonini Problema e Algoritmo

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

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi Tipo intero Tipi base o primitivi Tipi interi: int, byte, short, long Tipi float: float, double Caratteri: char Tipo booleano: boolean Operatori numerici e logici La parola chiave int definisce una variabile

Dettagli

Appunti di Informatica 1. Gianluca Rossi

Appunti di Informatica 1. Gianluca Rossi Appunti di Informatica 1 Gianluca Rossi Versione maggio 2011 Indice 1 Algoritmi, macchine e linguaggi di programmazione 3 1.1 La macchina di Von Neumann........................ 5 1.2 Dal linguaggio macchina

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

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

A.A. 2003-2004. Alessandro Lubisco. Indice

A.A. 2003-2004. Alessandro Lubisco. Indice Laboratorio di indagini campionarie A.A. 2003-2004 Visual Basic for Application in Access 2000 Alessandro Lubisco Indice Definizioni...5 Istruzione...5 Variabile...5 Espressione...5 Espressione numerica...5

Dettagli

Iprogrammi scritti in Java sono formati da Classi che

Iprogrammi scritti in Java sono formati da Classi che Capitolo 3. Pesci e Animali Domestici Le Classi di Java Translated by Francesco Orciuoli Iprogrammi scritti in Java sono formati da Classi che rappresentano gli oggetti del mondo reale. Sebbene le persone

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

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

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

Dettagli

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

Aurora Martina Angelo Raffaele Meo Clotilde Moro Mario Scovazzi. Passo dopo passo impariamo a programmare con PYTHON

Aurora Martina Angelo Raffaele Meo Clotilde Moro Mario Scovazzi. Passo dopo passo impariamo a programmare con PYTHON Aurora Martina Angelo Raffaele Meo Clotilde Moro Mario Scovazzi Passo dopo passo impariamo a programmare con PYTHON Usare Python come calcolatrice Sul tuo computer clicca su: start, programmi, Python,

Dettagli

Matlab: Strutture di Controllo. Informatica B

Matlab: Strutture di Controllo. Informatica B Matlab: Strutture di Controllo Informatica B Tipo di dato logico È un tipo di dato che può avere solo due valori true (vero) 1 false (falso) 0 I valori di questo tipo possono essere generati direttamente

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

Dettagli

Appunti di Informatica www.mimmocorrado.it 1

Appunti di Informatica www.mimmocorrado.it 1 Installare Java Il programma può essere scaricato dal seguente indirizzo: http://www.java.com/it/download/windows_ie.jsp?locale=it&host=www.java.com Per installare la JDK è necessario: 1. scaricare il

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 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

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

Introduzione a I LINGUAGGI DI PROGRAMMAZIONE

Introduzione a I LINGUAGGI DI PROGRAMMAZIONE Introduzione a I LINGUAGGI DI PROGRAMMAZIONE a cura di Francesco Galgani www.galgani galgani.itit Avvertenza: Con la presente pubblicazione, mi limiterò a introdurre sinteticamente alcuni concetti fondamentali

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Da JavaScript a Java

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Da JavaScript a Java Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Da JavaScript a Java Versione 3.4.05 Per la prima lezione in aula e la prima esercitazione in laboratorio 1 Da JavaScript a Java

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

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

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

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

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

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

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

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

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

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

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI Scienza ed industria hanno oggi costituito legami molto forti di collaborazione che hanno portato innovazione tecnologica sia a livello organizzativo-amministrativo

Dettagli

Corso basilare di programmazione

Corso basilare di programmazione Parte vi Corso basilare di programmazione Introduzione............................................ 947 Programma didattico.................................. 947 Strumenti per la compilazione..........................

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

FUNZIONI AVANZATE DI EXCEL

FUNZIONI AVANZATE DI EXCEL FUNZIONI AVANZATE DI EXCEL Inserire una funzione dalla barra dei menu Clicca sulla scheda "Formule" e clicca su "Fx" (Inserisci Funzione). Dalla finestra di dialogo "Inserisci Funzione" clicca sulla categoria

Dettagli

Tipi di dato-prima parte

Tipi di dato-prima parte Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Non è necessario assegnare un valore alla variabile nel momento in cui la si dichiara: System.out.println(a); Il testo dell'errore è:

Non è necessario assegnare un valore alla variabile nel momento in cui la si dichiara: System.out.println(a); Il testo dell'errore è: Lezione 4 Variabili e tipi di dati Tutti i programmi, senza alcuna eccezione, manipolano dei dati. Un programma di videoscrittura, ad esempio, deve tener traccia delle digitazioni dell'utente, un videogioco

Dettagli

Codifica binaria e algebra di Boole

Codifica binaria e algebra di Boole Codifica binaria e algebra di Boole Corso di Programmazione A.A. 2008/09 G. Cibinetto Contenuti della lezione Codifica binaria dell informazione Numeri naturali, interi, frazionari, in virgola mobile Base

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

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

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

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

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

Un algoritmo è una sequenza di comandi (detti istruzioni) che istruiscono sull'esecuzione di un determinato compito.

Un algoritmo è una sequenza di comandi (detti istruzioni) che istruiscono sull'esecuzione di un determinato compito. Definizione di algoritmo Un algoritmo è una sequenza di comandi (detti istruzioni) che istruiscono sull'esecuzione di un determinato compito. Esempi di algoritmi possono essere: una ricetta di cucina,

Dettagli

Fondamenti di programmazione in Java. Lezione III

Fondamenti di programmazione in Java. Lezione III Fondamenti di programmazione in Java Lezione III Scopo della lezione Descrivere gli strumenti che utilizzeremo nel resto del corso per sviluppare programmi in java UltraEdit Java SDK Imparare a scrivere

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Calcolare il massimo di una lista

Calcolare il massimo di una lista Calcolare il massimo di una lista Ieri abbiamo imparato a calcolare il massimo di una lista predefinita: lista = [4,24,-89,81,3,0,-12,31] max = lista[0] # questo e' un commento: primo elemento di lista

Dettagli

Programmazione in Excel con il linguaggio Visual Basic

Programmazione in Excel con il linguaggio Visual Basic Programmazione in Excel con il linguaggio Visual Basic L'ambiente di programmazione Il foglio elettronico Excel, così come gli altri prodotti Office di Microsoft, possiede un vero e proprio ambiente di

Dettagli

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario.

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario. Programmazione e laboratorio: introduzione al corso Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione per

Dettagli

Costruzione di Siti Web con PHP e MySQL. Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date

Costruzione di Siti Web con PHP e MySQL. Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date Costruzione di Siti Web con PHP e MySQL Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date Argomenti della lezione In questa lezione si riprenderanno le strutture di controllo, verrà introdotto

Dettagli

Lezione 12. Ingegneria del codice

Lezione 12. Ingegneria del codice Lezione 12 Ingegneria del codice 2 Ingegneria del codice Insieme di metodologie e pratiche per la produzione di codice di qualità Leggibilità Robustezza Manutenibilità 3 Ingegneria del codice In questi

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

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

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop SMS IN Rules SMS IN Rules } Geodrop Geodrop SMS In 2.3 Regole per la manipolazione dei messaggi Guida alla scrittura di condizioni complesse Guida alle condizioni complesse v1.0-it, 7 Dicembre 2012 Indice

Dettagli

LUdeS Informatica 2 EXCEL. Prima parte AA 2013/2014

LUdeS Informatica 2 EXCEL. Prima parte AA 2013/2014 LUdeS Informatica 2 EXCEL Prima parte AA 2013/2014 COS E EXCEL? Microsoft Excel è uno dei fogli elettronici più potenti e completi operanti nell'ambiente Windows. Un foglio elettronico è un programma che

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

Introduzione alla programmazione in Java

Introduzione alla programmazione in Java Introduzione alla programmazione in Java 1 Programmare ad oggetti La programmazione come attività di creazione di modelli. I concetti di classe, oggetto e scambio di messaggi. Un primo esempio di programma

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

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

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

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

INTRODUZIONE INTRODUZIONE JAVA JAVA

INTRODUZIONE INTRODUZIONE JAVA JAVA INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti

Dettagli

Corso di Laurea in INFORMATICA

Corso di Laurea in INFORMATICA Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica

Dettagli

Lezione 16: L architettura LC-3

Lezione 16: L architettura LC-3 Lezione 16: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 15 Maggio 2013 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Laboratorio di Calcolo, Facoltà di Fisica, Università Roma 1. MiniGuida PHP. http://labcalc.phys.uniroma1.it/sharedwindowsdocs/

Laboratorio di Calcolo, Facoltà di Fisica, Università Roma 1. MiniGuida PHP. http://labcalc.phys.uniroma1.it/sharedwindowsdocs/ Laboratorio di Calcolo, Facoltà di Fisica, Università Roma 1 MiniGuida PHP http://labcalc.phys.uniroma1.it/sharedwindowsdocs/ Liberamente adottata ed adattata a soli scopi didattici e senza fini di lucro

Dettagli

Corso di Visual Basic (Parte 9)

Corso di Visual Basic (Parte 9) Corso di Visual Basic (Parte 9) di Maurizio Crespi La nona lezione del corso dedicato alla programmazione in Visual Basic si pone lo scopo di illustrare le funzioni definibili dall'utente e il concetto

Dettagli

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli 4 Un primo programma Java Introduzione alla programmazione in Java class Program1 { System.out.println("Benvenuti al corso"); 1 5 Programmi e mondo reale Programmare ad oggetti Il codice di un programma

Dettagli

FORMULE: Operatori matematici

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

Dettagli

Modulo 5 La programazione Unità 4 Selezione

Modulo 5 La programazione Unità 4 Selezione Modulo 5 La programazione Unità 4 Selezione Prof. Antonio Scanu 1 Quando si utilizza Il costrutto selezione Questo costrutto permette di effettuare una scelta fra due possibili alternative. Per effettuare

Dettagli

Prima lezione di Access 2000

Prima lezione di Access 2000 Corso di Access Lezione 1 Lezione 2 Lezione 3 Lezione 4 Lezione 5 Lezione 6 Lezione 7 Lezione 8 Lezione 9 Lezione 10 Lezione 11 Prima lezione di Access 2000 Creare una Tabella La tabella è l'elemento principale

Dettagli

www.wlascuola.4000.it

www.wlascuola.4000.it 1 Cenni di programmazione Risolvere un problema significa trovare un procedimento che consenta di produrre i risultati, a partire dai dati iniziali, attraverso un processo di elaborazione. La metodologia

Dettagli

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 90.1 Sistemi di numerazione.................................................... 605 90.1.1 Sistema decimale..................................................

Dettagli

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; } Java è un linguaggio di programmazione c indipendente dalla piattaforma, ovvero un linguaggio di programmazione che permette di compilare i programmi una volta sola e di installarli su computer che usano

Dettagli

LA NUMERAZIONE BINARIA

LA NUMERAZIONE BINARIA LA NUMERAZIONE BINARIA 5 I SISTEMI DI NUMERAZIONE Fin dalla preistoria l uomo ha avuto la necessità di fare calcoli, utilizzando svariati tipi di dispositivi: manuali (mani, bastoncini, sassi, abaco),

Dettagli

DISPENSE (minime) DI EXCEL

DISPENSE (minime) DI EXCEL DISPENSE (minime) DI EXCEL 1 Operatori di calcolo delle formule Gli operatori specificano il tipo di calcolo che si desidera eseguire sugli elementi di una formula. Sono disponibili quattro diversi tipi

Dettagli

anno 2014-15 Introduzione all'algoritmica per i Licei 3 Controllo del flusso di esecuzione.

anno 2014-15 Introduzione all'algoritmica per i Licei 3 Controllo del flusso di esecuzione. anno 2014-15 Introduzione all'algoritmica per i Licei 3 Controllo del flusso di esecuzione. Elio Giovannetti Dipartimento di Informatica Università di Torino versione 1 marzo 2015 Quest'opera è distribuita

Dettagli