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

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

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

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

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

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

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

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

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

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

ALGORITMI 1 a Parte. di Ippolito Perlasca. Algoritmo:

ALGORITMI 1 a Parte. di Ippolito Perlasca. Algoritmo: ALGORITMI 1 a Parte di Ippolito Perlasca Algoritmo: Insieme di regole che forniscono una sequenza di operazioni atte a risolvere un particolare problema (De Mauro) Procedimento che consente di ottenere

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

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

Funzioni. Corso di Fondamenti di Informatica

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

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

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo stituto Tecnico Statale Commerciale Dante Alighieri Cerignola (FG) Dispense di nformatica Anno Scolastico 2008/2009 Classe 3APS Dal Problema all'algoritmo Pr.: 001 Ver.:1.0 Autore: prof. Michele Salvemini

Dettagli

1) Le Espressioni regolari

1) Le Espressioni regolari ESPRESSIONI REGOLARI e FILTRI SED, GREP e AWK 1) Le Espressioni regolari Un'espressione regolare è un modello che descrive un insieme di stringhe. Le espressioni regolari sono costruite, in maniera analoga

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED

I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED SED è un programma in grado di eseguire delle trasformazioni elementari in un flusso di dati di ingresso,

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

1) Primi semplici programmi in C++: ingresso e uscita di informazioni

1) Primi semplici programmi in C++: ingresso e uscita di informazioni 1) Primi semplici programmi in C++: ingresso e uscita di informazioni Ecco un primo esempio di programma in linguaggio C++: Esempio 1.1 /* QUESTO PROGRAMMA MOLTIPLICA 3 PER 5 E SOMMA 7 AL RISULTATO DEL

Dettagli

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero

---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero ---------------------------------------------------------------- Puntatori a funzione. In C è possibile utilizzare dei puntatori a funzioni, ovvero delle variabili a cui possono essere assegnati gli indirizzi

Dettagli

Dall italiano alla logica proposizionale

Dall italiano alla logica proposizionale Rappresentare l italiano in LP Dall italiano alla logica proposizionale Sandro Zucchi 2009-10 In questa lezione, vediamo come fare uso del linguaggio LP per rappresentare frasi dell italiano. Questo ci

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Excel basi e funzioni

Excel basi e funzioni Esercitazione di Laboratorio Excel basi e funzioni Contenuto delle celle 1. Testo 2. Numeri 3. Formule Formattazione delle celle (1) Formattazione del testo e dei singoli caratteri: Orientamento a 45 Allineamento

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

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

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali 1 Numeri naturali La successione di tutti i numeri del tipo: 0,1, 2, 3, 4,..., n,... forma l'insieme dei numeri naturali, che si indica con il simbolo N. Tale insieme si può disporre in maniera ordinata

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Oggetti sintattici e oggetti semantici Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P.

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

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

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli

Import Dati Release 4.0

Import Dati Release 4.0 Piattaforma Applicativa Gestionale Import Dati Release 4.0 COPYRIGHT 2000-2005 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati.questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

LA MOLTIPLICAZIONE IN PRIMA ELEMENTARE

LA MOLTIPLICAZIONE IN PRIMA ELEMENTARE LA MOLTIPLICAZIONE IN PRIMA ELEMENTARE E bene presentarla confrontando tra loro varie tecniche: addizione ripetuta; prodotto combinatorio (schieramenti). Rispetto a quest'ultima tecnica, grande utilità

Dettagli

Floating Point N = M BE. Notazione in virgola mobile. base. esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1.

Floating Point N = M BE. Notazione in virgola mobile. base. esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1. Floating Point Notazione in virgola mobile N = M BE mantissa base esponente esempi 34.76 104 3.6891 106 = 36.891 105 =368.91 104 12.78 10-3 1.6273 102 forma normalizzata: la mantissa ha una sola cifra

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Come si può esprimere il risultato dl un conteggio e di una misura? Quando si dice che In una

Come si può esprimere il risultato dl un conteggio e di una misura? Quando si dice che In una NUMERI INTERI E NUMERI DECIMALI Come si può esprimere il risultato dl un conteggio e di una misura? Quando si dice che In una cassetta sono contenuti 45 penne e che una lamiera misura 1,35 m. dl lunghezza,

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

La ricorsione. Politecnico di Milano Sede di Cremona

La ricorsione. Politecnico di Milano Sede di Cremona La ricorsione Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Definizioni ricorsive Sono comuni

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com Corso di Informatica Medica Esercitazione 1I 2013-2014! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com 1 2 Esercizio 1 Scrivere un programma che legga due array di interi da tastiera dica

Dettagli

al via 1 Percorsi guidati per le vacanze di matematica e scienze UNITÀ CAMPIONE Edizioni del Quadrifoglio Evelina De Gregori Alessandra Rotondi

al via 1 Percorsi guidati per le vacanze di matematica e scienze UNITÀ CAMPIONE Edizioni del Quadrifoglio Evelina De Gregori Alessandra Rotondi Evelina De Gregori Alessandra Rotondi al via 1 Percorsi guidati per le vacanze di matematica e scienze per la Scuola secondaria di primo grado UNITÀ CAMPIONE Edizioni del Quadrifoglio Test d'ingresso NUMERI

Dettagli

Programmazione Funzionale

Programmazione Funzionale Programmazione Funzionale LP imperativi: apparenza simile modello di progettazione = macchina fisica Famiglia dei LP imperativi = progressivo miglioramento del FORTRAN Obiezione: pesante aderenza dei LP

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

WORD (livello avanzato): Struttura di un Documento Complesso. Struttura di un Documento Complesso

WORD (livello avanzato): Struttura di un Documento Complesso. Struttura di un Documento Complesso Parte 5 Adv WORD (livello avanzato): Struttura di un Documento Complesso 1 di 30 Struttura di un Documento Complesso La realizzazione di un libro, di un documento tecnico o scientifico complesso, presenta

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

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di esempio CERCA 90 NEL SACCHETTO = estrai num Casi num 90 Effetti CERCA 90 NEL

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

I numeri. Premessa: Che cosa sono e a che servono i numeri?

I numeri. Premessa: Che cosa sono e a che servono i numeri? I numeri Premessa: Che cosa sono e a che servono i numeri? Come ti sarai reso conto, i numeri occupano un ruolo importante nella tua vita: dai numeri che esprimono il prezzo degli oggetti venduti in un

Dettagli

APPLICAZIONI SU PIU FILE

APPLICAZIONI SU PIU FILE APPLICAZIONI SU PIU FILE Serve poter sviluppare applicazioni su piú file: - alcune funzioni e alcune definizioni di dati in un file - altre funzioni e dati in file diversi Perché?? 1. Se il programma è

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli