Realizzare classi. Cosa abbiamo fatto finora. Realizzare classi. Realizzare classi. Realizzare classi. Realizzare classi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Realizzare classi. Cosa abbiamo fatto finora. Realizzare classi. Realizzare classi. Realizzare classi. Realizzare classi"

Transcript

1 Cosa abbiamo fatto finora Abbiamo visto: tipi di dato base (numeri, booleani e caratteri) oggetti e riferimenti a oggetti di un tipo già definito (String e Rectangle) strutture di controllo (sequenza, scelta, iterazione) una struttura di dati (array) Ora vediamo come progettare e realizzare classi. Vogliamo realizzare un nuovo concetto e dobbiamo eseguire un processo di astrazione per individuare e distinguere ciò che è rilevante nel concetto da quelli che sono i dettagli tecnici : quando saliamo su una automobile ci interessa che, girando la chiave si metta in moto e ci disinteressiamo di come ciò avvenga. Il costruttore dell automobile ha realizzato per noi un esemplare di auto che si accende girando la chiave. Questo è il concetto rilevante per chi usa l auto. Il dettaglio tecnico è invece rilevante per l ingegnere meccanico che progetta il motore. Gli oggetti vengono descritti nelle classi; il comportamento degli oggetti è noto usandoli mediante l invocazione di metodi. Possiamo considerare un oggetto come una scatola nera (black box) dotata di: un interfaccia pubblica costituita dai metodi che l utente può usare e che definisce il comportamento dell oggetto; una realizzazione nascosta, costituita dal codice dei metodi e dai dati. Il primo esempio di programma realizzava l invio all output standard di un messaggio di saluto. Il primo esempio di classe realizzerà un concetto per costruire un messaggio di saluto, che potrà poi essere inviato all output standard. La parte rilevante è la costruzione del messaggio. Diamo un nome al nostro nuovo concetto, nuovo tipo di dato, e costruiamo una classe: public class Saluto {... Cosa vogliamo che faccia un metodo che agisce su un oggetto di tipo Saluto? restituire il messaggio Costruiremo un metodo ciao, in modo tale che, se primo è una variabile oggetto di tipo Saluto, invocando il metodo tramite l oggetto primo.ciao() ci venga restituita il messaggio. 1

2 Un concetto ha una forma (dati, campi) e un comportamento (metodi). La forma del nostro concetto Saluto sarà un messaggio e quindi una variabile di tipo String. Un oggetto di tipo NuovoConcetto, creato con l operatore new, si chiama esemplare o istanza della classe NuovoConcetto. I dati dell oggetto si chiamano: campi o variabili di esemplare, o variabili di istanza. Definizione di una variabile di istanza (campo di esemplare). Sintassi. accesso tipo nomevariabile; Esempio. private String messaggio; accesso: private tipo: String nomevariabile: messaggio Cosa significa private. Significa che solamente i metodi della classe possono accedere a quella variabile. Per conoscere dall esterno informazioni su questa variabile si devono utilizzare dei metodi di accesso (pubblici). Per modificare dall esterno lo stato dell oggetto si devono usare dei metodi di modifica (pubblici). L utente esterno non sa come è stato realizzato l oggetto (dettaglio tecnico) ma lo può usare attraverso i suoi metodi (rilevante). Questa caratteristica si chiama incapsulamento. In tale modo i dati sono protetti ed è chi progetta la classe che definisce e scrive il codice dei metodi con i quali si può accedere a tali dati. I dati si possono definire public (non è un errore di sintassi), ma ciò è contrario alle direttive della programmazione a oggetti. Costruiamo l interfaccia pubblica, che permetterà all utente di manipolare l oggetto. In questo esempio avremo un solo metodo che restituirà il contenuto del messaggio: public String ciao(){ return messaggio; Sintassi. accesso tipodiritorno nomemetodo (parametri){ //corpo del metodo Un metodo di una interfaccia pubblica: 1. ha uno specificatore di accesso public 2. ha un tipo di dato restituito String 3. ha un nome ciao 4. ha un eventuale elenco di parametri ( ) 5. ha un corpo { return messaggio; Cosa fa l istruzione return: interrompe l esecuzione del metodo e restituisce un valore all istruzione che ha invocato il metodo: il controllo ritorna al metodo invocante che riprende l esecuzione (sospesa). 2

3 Sintassi. return espressione; L espressione definisce il valore restituito dal metodo e deve essere del tipo dichiarato nella intestazione del metodo. Il metodo ciao deve restituire una stringa: messaggio è di tipo String e il tipo restituito dal metodo èstring. Un metodo non restituisce necessariamente un valore: in questo caso il metodo è di tipo void. Al termine di un metodo con valore restituito di tipo void, viene eseguito automaticamente un istruzione return. Il compilatore segnala un errore se si termina un metodo con un valore restituito, diverso da void, senza un enunciato return. Quando un oggetto viene creato, esso viene inizializzato dal costruttore dell oggetto. Costruttore. accesso NomeClasse (tipo argomento, ) { //corpo del costruttore Esempio. public Saluto(){ messaggio = Ciao ; Lo scopo di un costruttore è quello di inizializzare le variabili di esemplare. Come si invoca un costruttore? NomeClasse nomeoggetto = new NomeClasse(); I costruttori si invocano soltanto con l operatore new. L operatore new riserva la memoria per l oggetto; il costruttore definisce il suo stato iniziale. Se non definiamo un costruttore per una classe, il compilatore genera un costruttore predefinito. Il costruttore predefinito di una classe: è pubblico e non richiede parametri inizializza tutte le variabili di esemplare: a zero le variabili di tipo numerico a false le variabili di tipo boolean al valore speciale null i riferimenti oggetto, in modo che tali variabili non si riferiscano ad alcun oggetto. Un costruttore appartiene all interfaccia pubblica: 1. ha uno specificatore di accesso public 2. ha sempre il nome della Classe Saluto 3. ha un eventuale elenco di parametri ( ) 4. ha un corpo {messaggio = Ciao ; 5. NON ha tipo di ritorno: NON è un metodo. Si possono avere uno o più costruttori. 3

4 Questa classe costruisce sempre lo stesso messaggio: Ciao. Vogliamo personalizzare il messaggio in modo che l utente possa inserire il suo nome; scriviamo un secondo costruttore che riceve come parametro il nome dell utente: public Saluto(String nome){ messaggio = Ciao + nome; public class Saluto{ //parte privata private String messaggio; //interfaccia pubblica public Saluto(){//primo costruttore messaggio = Ciao ; public Saluto(String nome){//secondo costruttore messaggio = Ciao + nome; public String ciao(){//metodo di accesso return messaggio; //fine classe Saluto Per sapere se il nostro concetto funziona bene dobbiamo costruire una classe di collaudo come se fossimo gli utenti della classe Saluto. Abbiamo due costruttori e quindi costruiremo (almeno) due oggetti (due esemplari della classe) e stamperemo i messaggi corrispondenti. Possiamo inserire nomi diversi nel secondo costruttore. public class ProvaSaluto{//classe di prova public static void main(string[] arg){ Saluto primo = new Saluto(); Saluto secondo = new Saluto( Eva ); Saluto terzo = new Saluto( Lorenzo ); System.out.println(primo.ciao()); System.out.println(secondo.ciao()); System.out.println(terzo.ciao()); //fine main //fine classe Sovraccarico (overloading). Abbiamo due costruttori con lo stesso nome ma con parametri diversi: il primo non ha parametri, il secondo ha un parametro di tipo String. Come funziona la scelta? Il compilatore verifica che il costruttore ci sia e sia coerente (il parametro o manca o è String) ed assegna il primo costruttore alla variabile primo e il secondo costruttore alle variabili secondo e terzo. Se esistono più costruttori in una classe, questi hanno tutti lo stesso nome, perché devono comunque avere lo stesso nome della classe: il compilatore decide quale costruttore invocare basandosi sul numero e sul tipo dei parametri forniti nell invocazione. Se si usa lo stesso nome, il nome diventa sovraccarico (nel senso di carico di significati diversi ): questo accade spesso con i costruttori. 4

5 Accade più di rado con i metodi; c è però un motivo ben preciso per farlo (ed è bene farlo in questi casi): usare lo stesso nome per metodi diversi (che richiedono parametri di tipo diverso) viene fatto per indicare che viene compiuta la stessa elaborazione ma su tipi di dati diversi. Abbiamo già visto questo sovraccarico con il metodo print che ha parametri di tipo diverso oppure non ha parametri. Cosa accade quando facciamo: Saluto secondo = new Saluto( Eva ); Si costruisce un oggetto di tipo Saluto: 1. viene attivato il secondo costruttore 2. il parametro nome prende il valore Eva 3. il campo del messaggio diventa la stringa Ciao Eva 4. new restituisce la referenza 5. la referenza è memorizzata in secondo secondo Ciao Eva Cosa accade quando facciamo: Saluto a = new Saluto(); Saluto b = new Saluto(); a e b sono due oggetti distinti: due esemplari della classe Saluto; essi contengono lo stesso messaggio (la stringa Ciao ) ma sono due aree di memoria diverse. Passaggio dei parametri Nella classe di prova abbiamo l istruzione Saluto secondo = new Saluto( Eva ); Nella classe Saluto abbiamo il costruttore public Saluto(String nome){ messaggio = Ciao + nome; Quando viene attivato il costruttore, la stringa Eva viene assegnata alla variabile stringa nome (parametro) del costruttore e quindi usata nell assegnazione successiva. Passaggio dei parametri Finchè non viene attivato il secondo costruttore, la stringa nome non ha valore. Ogni oggetto creato con il secondo costruttore ha la sua variabile nome che viene inizializzata nel momento in cui tale costruttore viene attivato Ciao Lorenzo Ciao Eva Compilazione Possiamo compilare la classe Saluto.java ed ottenere il bytecode Saluto.class. Questa è una buona regola: compilare la classe e verificare che almeno a livello di compilazione non ci siano errori. Possiamo compilare la classe di prova ProvaSaluto.java senza aver compilato la classe Saluto. Cosa accade? terzo secondo 5

6 Compilazione Quando il compilatore incontra l istruzione Saluto primo = new Saluto(); verifica che Saluto sia il nome di una classe: trova un file di nome Saluto.java che contiene una classe pubblica di nome Saluto. In tale modo la classe Saluto viene collegata alla classe di prova e compilata anch essa. Si possono compilare separatamente le classi che definiscono i nuovi tipi di dato. Quando si compila il programma di collaudo si compilano anche tutte le classi che ad esso sono agganciate (se non sono già state compilate). Categorie di variabili Realizzando classi incontriamo tre diverse categorie di variabili (par. 3.7) variabili di istanza (campi di esemplare) variabili parametro variabili locali Queste variabili si differenziano per: appartenenza, visibilità, inizializzazione, ciclo di vita. Variabili di istanza Una variabile di istanza: private String messaggio; appartiene all oggetto e ogni oggetto ne possiede una è visibile ai metodi ed ai costruttori della classe viene inizializzata dal costruttore, oppure ha una inizializzazione di default viene creata ( nasce ) quando l oggetto viene creato viene eliminata ( muore ) quando l oggetto viene eliminato (ossia non è più referenziato) o quando il main termina. Variabili parametro Una variabile parametro di un metodo o di un costruttore: (String[] arg) (String nome) appartiene al metodo è visibile all interno del metodo viene inizializzata all atto dell invocazione del metodo viene creata ( nasce ) quando il metodo viene invocato viene eliminata ( muore ) quando il metodo termina la sua esecuzione. Variabili locali Una variabile locale: int a; Saluto primo; appartiene a un metodo è visibile all interno del metodo deve essere esplicitamente inizializzata viene creata ( nasce ) quando viene eseguito l enunciato che la definisce: nometipo nomevar; viene eliminata ( muore ) quando l esecuzione del programma esce dal blocco in cui è stata definita. Il progetto BankAccount 6

7 Si vuole progettare una classe BankAccount che rappresenti un conto bancario (par ). Dobbiamo prima di tutto individuare quali sono le funzioni che questo concetto deve rappresentare: in un conto bancario noi possiamo versare dei soldi, prelevare dei soldi e richiedere il saldo. Pertanto il comportamento che deve avere un oggetto di tipo BankAccount sarà rappresentato da dei metodi: - versare denaro: deposit - prelevare denaro: withdraw - conoscere il saldo: getbalance Da che cosa è rappresentato un conto bancario? Qual è lo stato di un conto bancario? Un conto bancario è rappresentato dalla quantità di denaro presente al momento in cui lo si guarda: il saldo attuale. La classe BankAccount avrà come dato (campo, forma) il saldo: una variabile di istanza di nome balance. Una variabile di istanza ha: un nome un accesso un tipo di dato viene inizializzata esplicitamente o per default. Come nome della variabile si sceglie un nome che ne ricordi il significato; come tipo un valore reale; l accesso è bene che sia private : private double balance; Le variabili di esemplare sono di solito private perché in tale modo possono essere lette o modificate soltanto da metodi della classe a cui appartengono. Sono nascoste (hidden) al programmatore che utilizza la classe, e possono essere lette o modificate soltanto mediante l invocazione di metodi pubblici della classe (incapsulamento o information hiding). L incapsulamento ha dei vantaggi. Il vantaggio fondamentale è quello di impedire l accesso incontrollato allo stato di un oggetto, impedendo così anche che l oggetto venga (accidentalmente o deliberatamente) ad assumere uno stato incoerente. Il progettista della classe BankAccount potrebbe definire (ragionevolmente) che soltanto un saldo non negativo rappresenti uno stato valido per un conto bancario. Dato che il valore di balance può essere modificato soltanto invocando i metodi per depositare o prelevare denaro, il progettista può impedire che diventi negativo, magari segnalando una condizione d errore. Se invece fosse possibile assegnare direttamente un valore a balance dall esterno, sarebbe impossibile gestire gli eventuali errori (il saldo potrebbe diventare negativo anche senza prelievi). Per lo stesso motivo le uniche operazioni sono depositare e prelevare e non esiste un metodo con cui decidere il valore del proprio saldo. 7

8 Ciascun oggetto, esemplare o istanza, della classe ha una propria copia delle variabili di esemplare. Non c è alcuna relazione tra le varabili di esemplare di oggetti diversi. Ciascuna può essere modificata indipendentemente dall altra, così come ogni correntista ha un suo conto bancario ed un suo saldo. Possiamo decidere di aprire un conto con saldo iniziale 0, oppure con un saldo iniziale uguale ad un valore assegnato. Definiremo pertanto due costruttori. //primo costruttore public BankAccount(){ balance = 0; //secondo costruttore public BankAccount(double initialbalance){ balance = initialbalance; Anche in questa classe si hanno due costruttori: il compilatore effettua la risoluzione dell ambiguità. Se non trova un costruttore che corrisponda ai parametri forniti nell invocazione, segnala un errore semantico // NON FUNZIONA! BankAccount a = new BankAccount("tanti soldi"); cannot resolve symbol symbol : constructor BankAccount (java.lang.string) location : class BankAccount Per ogni metodo dobbiamo pensare a quale sarà: l accesso il tipo di dati restituito il nome gli eventuali parametri il corpo del metodo Dal momento che stiamo progettando il comportamento dell oggetto, infatti stiamo realizzando l interfaccia pubblica, i tre metodi avranno accesso public. Il metodo deposit deve permettere di depositare denaro; quindi avrà un parametro, double amount, e non dovrà restituire nulla. Il metodo withdraw deve permettere di prelevare denaro; in maniera analoga a deposit avrà un parametro, double amount, e non dovrà restituire nulla. Il metodo getbalance deve permettere di conoscere il saldo e quindi dovrà restituire un double che rappresenta il saldo e non avrà parametri. L intestazione di un metodo si chiama anche firma (signature). public class BankAccount{ private double balance; //primo costruttore public BankAccount(){ balance = 0; //secondo costruttore public BankAccount(double initialbalance){ balance = initialbalance; 8

9 public void deposit(double amount){ //realizzazione del metodo public void withdraw(double amount){ //realizzazione del metodo public double getbalance(){ realizzazione del metodo La realizzazione dei metodi di BankAccount è molto semplice: lo stato dell oggetto (il saldo del conto) è memorizzato nella variabile di esemplare balance quando si deposita o si preleva una somma di denaro, il saldo del conto si incrementa o si decrementa della stessa somma il metodo getbalance restituisce il valore del saldo corrente memorizzato nella variabile balance Per semplicità, questa realizzazione non impedisce che un conto assuma saldo negativo. Classe di prova per BankAccount public class BankAccount{ //dati e costruttori public void deposit(double amount){ double newbalance = balance + amount; balance = newbalance; public void withdraw(double amount){ balance = balance - amount; public double getbalance(){ return balance; /*Costruiamo una classe di prova che costruirà oggetti di tipo BankAccount*/ public class ProvaBankAccount{ public static void main (String[] arg){ BankAccount cliente1 = new BankAccount(); BankAccount cliente2 = new BankAccount(1000); cliente1.deposit(5000); cliente2.withdraw(300); System.out.println( il primo cliente possiede + cliente1.getbalance()+ euro ); System.out.println( il secondo cliente possiede + cliente2.getbalance()+ euro ); Conseguenza dell incapsulamento Poiché la variabile balance di BankAccount è private, non vi si può accedere da metodi che non siano della classe (errore semantico segnalato dal compilatore) /* codice interno ad un metodo che non appartiene a BankAccount */ double b = cliente1.balance; // ERRORE balance has private access in BankAccount double b = cliente1.getbalance(); // OK I parametri dei metodi public void deposit(double amount){ balance = balance + amount; Cosa succede quando invochiamo il metodo? cliente1.deposit(5000); L esecuzione del metodo dipende da due valori: il riferimento all oggetto cliente1 (parametro implicito) il valore 5000 (parametro esplicito) Quando viene eseguito il metodo, il suo parametro esplicito amount assume il valore 5000 (par. 3.8): public void deposit(double amount) 9

10 I parametri dei metodi Nel metodo vengono utilizzate due variabili: amount: è il parametro esplicito del metodo balance: è la variabile di esemplare della classe. Sappiamo che di tale variabile esiste una copia per ogni oggetto. Alla variabile balance di quale oggetto? Come si fa a sapere quale saldo viene incrementato? Il parametro implicito che invoca il metodo deposit è cliente1, pertanto è il balance di cliente1. Parola chiave this Per facilitare la comprensione e la lettura del codice riguardo all appartenenza della variabile di istanza ad un oggetto, si usa la parola chiave this. Si può scrivere: this.balance = this.balance + amount; Con l invocazione del metodo: cliente1.deposit(5000); il nome del parametro implicito cliente1 viene assegnato a this; ogni metodo ha sempre uno ed un solo parametro implicito (dello stesso tipo della classe a cui appartiene il metodo). Parola chiave this La vera sintassi del metodo dovrebbe essere public void deposit(double amount){ this.balance = this.balance + amount; // this ha il tipo del parametro implicito Algoritmi di Ricerca Solitamente non si usa perché this è uguale per tutti gli oggetti. Quando un metodo agisce su una variabile di esemplare, cliente1.deposit(5000), è il compilatore che costruisce un riferimento alla variabile di esemplare (balance) dell oggetto rappresentato dal parametro implicito (cliente1). Consideriamo un insieme di elementi (numeri, caratteri, stringhe, oggetti di un tipo di dato, ) e vogliamo rispondere alla domanda se un elemento dato appartiene oppure no all insieme. L idea per un simile algoritmo è quella di considerare uno ad uno gli elementi e di confrontarli con l elemento dato. Come possiamo considerarli tutti una ed una sola volta? Cosa significa essere uguali per numeri, stringhe, oggetti di tipo qualunque? Per prima cosa consideriamo una struttura di dati in cui inserire gli elementi: array. Gli elementi sono considerati in sequenza e quindi sappiamo che esiste un primo elemento, il successivo, l ultimo. Supponiamo, per ora, che questi elementi siano dei numeri: sappiamo, pertanto, cosa significa dire che due numeri a e b sono uguali o diversi. Vedremo poi cosa vuole dire che due oggetti (dello stesso tipo) sono uguali e come facciamo ad eseguire un confronto tra oggetti. 10

11 Problema. Sia A un array di numeri (interi, reali) e sia b un elemento dello stesso tipo di A. vogliamo rispondere alla domanda: b è un elemento di A? Analisi. A = (a 1, a 2, a n ) esiste un indice i (compreso tra 1 ed n) tale che a i = b? I caso. Gli elementi di A sono tutti distinti tra loro: se esiste l indice i tale che sia a i = b, esso è unico. Dobbiamo esaminare una sequenza di valori e per ognuno di essi ci chiediamo se a i == b Abbiamo quindi una struttura iterativa. Quale predicato governa la struttura? 1. Dobbiamo esaminare tutti i numeri: avremo un indice che scorre gli elementi dal primo all ultimo, passando al successivo. 2. Ci fermiamo quando lo abbiamo trovato (dopo non c è più, visto che sono tutti diversi tra loro). Abbiamo un predicato composto che diventa falso non appena uno dei due predicati che lo compongono risulti falso: pertanto si prosegue (finché ci sono numeri) e (finché non è trovato) Progetto. Per il primo predicato utilizziamo un indice che descrive tutti gli elementi; per il secondo predicato utilizziamo una variabile booleana trovato che inizialmente è falsa (l elemento può non essere presente) e che diventa vera se l elemento è presente. Scriviamo lo schema dell algoritmo, usando un linguaggio di pseudocodifica, poi andremo a verificare se la struttura iterativa risolve il problema dato. Algoritmo ricercalineare definizione variabili a array, b intero n, i intero trovato booleano acquisire e stampare n, le n componenti di a e il valore b i 0 trovato falso mentre i n e non trovato i i+1 se a[i] == b allora trovato vero eseguire //finescelta //fine ciclo mentre se trovato //P e Q: quale è diventato falso? allora stampa trovato al posto i altrimenti stampa elemento non presente //fine scelta //fine algoritmo Per verificare l algoritmo, costruiamo il tracciato (tracing) dei valori assunti dalle variabili durante l esecuzione del programma su una particolare scelta di dati (processo). Costruiamo una tabella dopo aver assegnato dei valori ad n, A e b. Quando si prova un programma, questo tracciato si ottiene eseguendo della stampe dei valori della variabili. n = 5 A = (7, 1, -3, 0, 4) b = 0 11

12 Tracing Tracing n 5 i 0 trovato F b = 0 n 5 i 0 trovato F b = 15 i n sì sì sì sì sì non trovato V V V V F P V V V V F il ciclo i termina a[i] i=4 a[i] == b no no no sì trovato = V trovato F F F V iterazione i n sì sì sì sì sì no non trovato V V V V V V P V V V V V F il i ciclo a[i] termina a[i] == b no no no no no i = 5 trovato F F F F F trovato = F iterazione Codifica Gli array in Java hanno un indice che inizia da 0. Nella maggior parte dei problemi la sequenza inizia da 1; è meglio iniziare da 1 o da 0 se si vuole scrivere l algoritmo nel linguaggio di programmazione? Iniziare da 1 significa lasciare un posto vuoto a sinistra della prima componente che mai andrà utilizzato, diversamente da quelli vuoti a destra (nel caso in cui n<dimensione); il numero massimo di elementi allora sarà n=dimensione-1. Iniziando da 1 posizione ed ordinale coincidono: il primo è al posto 1, il secondo al posto 2, Codifica In previsione di utilizzare le tecniche di raddoppio per gestire array, come se l array avesse lunghezza variabile, conviene iniziare da 0, e ricordare che il primo elemento è al posto 0, il secondo al posto 1, Cosa cambia nell algoritmo? Gli elementi saranno: a 0, a 1,, a n-1 e pertanto i -1 mentre i n-1 e non trovato Oppure possiamo definire due variabili intere: inizio, fine (primo, ultimo) a cui attribuire i valori voluti. Codifica //definizione delle variabili //acquisire e stampare i dati: acquisizione da 0 trovato = false; i = -1; while((i!= n-1) && (!trovato)){ i++; if(a[i] == b) trovato = true; if(trovato) System.out.println( trovato al posto + i); else System.out.println( elemento non presente ); Varianti Possiamo anche iniziare dall indice che corrisponde al primo valore dell array. Come cambiano allora il predicato e l incremento, data la relazione tra essi? i inizio trovato falso mentre i fine+1 e non trovato eseguire se a[i] == b allora trovato vero altrimenti i i+1 //finescelta //fine ciclo mentre //con inizio = 0 e fine = n-1 oppure inizio = 1 e fine = n 12

13 Varianti Abbiamo messo subito il confronto perché il primo elemento è subito disponibile. Abbiamo messo l incremento di i in alternativa, perché viene eseguito solo se il predicato è falso. Potevamo mettere l incremento in sequenza, dopo finescelta? Nel caso di elemento trovato, l indice i non indica più la posizione, ma quella successiva. Pertanto o si stampa i-1, o si assegna ad altra variabile posiz il valore dell indice nel caso vero, o l importante è sapere che una operazione in sequenza ad una if viene eseguita con predicato vero e con predicato falso. Varianti Possiamo anche scrivere il predicato senza fare uso della variabile logica trovato. L uso delle variabili logiche è per migliorare la comprensione dell algoritmo. Una variabile logica occupa poco posto e non necessita di confronti: il suo valore è già true oppure false (è solo un accesso). Esercizio. Riscrivere l algoritmo senza fare uso della variabile logica trovato: si dovrà inserire nel predicato il confronto a[i]!= b 13

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Uso di metodi statici. Walter Didimo

Uso di metodi statici. Walter Didimo Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Definizione di metodi

Definizione di metodi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 9 Definizione di metodi Carla Limongelli Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di metodi 1 Contenuti

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa

Dettagli

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; } Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double

Dettagli

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Livelli di astrazione

Livelli di astrazione Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++ Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -

Dettagli

Istruzioni di ripetizione in Java 1

Istruzioni di ripetizione in Java 1 in Java Corso di laurea in Informatica Le istruzioni di ripetizione consentono di eseguire molte volte la stessa Si chiamano anche cicli Come le istruzioni condizionali, i cicli sono controllati da espressioni

Dettagli

Corso di Fondamenti di Informatica Classi di istruzioni 2

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

Dettagli

Procedura operativa per la gestione della funzione di formazione classi prime

Procedura operativa per la gestione della funzione di formazione classi prime Procedura operativa per la gestione della funzione di formazione classi prime Questa funzione viene fornita allo scopo di effettuare la formazione delle classi prime nel rispetto dei parametri indicati

Dettagli

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi Somma di numeri floating point Algoritmi di moltiplicazione e divisione per numeri interi Standard IEEE754 " Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.0 10 2-38

Dettagli

Diagrammi a blocchi 1

Diagrammi a blocchi 1 Diagrammi a blocchi 1 Sommario Diagrammi di flusso, o a blocchi. Analisi strutturata. Esercizi. 2 Diagrammi a blocchi È un linguaggio formale di tipo grafico per rappresentare gli algoritmi. Attraverso

Dettagli

PROGRAMMAZIONE STRUTTURATA

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

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

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

Dettagli

Individuazione di sottoproblemi

Individuazione di sottoproblemi Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che

Dettagli

Un esempio di if annidati

Un esempio di if annidati Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XIV, parte I ) Costrutto di selezione switch Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di

Dettagli

Problema: calcolare il massimo tra K numeri

Problema: calcolare il massimo tra K numeri Problema: calcolare il massimo tra K numeri Scrivere un algoritmo che fornisca in input ad un programma un numero K e K interi positivi. L algoritmo deve restituire il valore massimo tra quelli introdotti

Dettagli

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1 1) Il bus in un computer trasporta a) solo dati b) solo istruzioni c) sia dati sia istruzioni 2) In una sequenza

Dettagli

La codifica. dell informazione

La codifica. dell informazione La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero

Dettagli

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli

Dettagli

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. ACCESS Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati. Database Relazionale: tipo di database attualmente più diffuso grazie alla

Dettagli

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 4 anno accademico 2015-2016 Mario Verdicchio Numeri primi Si definisce primo un numero intero maggiore di 1 che ha due soli divisori: se stesso e 1 Esempi di numeri primi:

Dettagli

Lezioni di Ricerca Operativa 2 Dott. F. Carrabs

Lezioni di Ricerca Operativa 2 Dott. F. Carrabs Lezioni di Ricerca Operativa Dott. F. Carrabs.. 009/00 Lezione 6: - mmissibilità di un vincolo - Vincoli alternativi - Vincoli alternativi a gruppi - Rappresentazione di funzioni non lineari: Costi fissi

Dettagli

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE. DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE. PIANIFICAZIONE La pianificazione è la prima fase. Questa è la più delicata

Dettagli

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli Codice La relazione che associa ad ogni successione ben formata di simboli di un alfabeto il dato corrispondente è detta codice. Un codice mette quindi in relazione le successioni di simboli con il significato

Dettagli

Capitolo 3. Realizzare classi. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Capitolo 3. Realizzare classi. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Capitolo 3 Realizzare classi Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Acquisire familiarità con il procedimento di realizzazione di classi Essere

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel

Dettagli

Istruzioni iterative. Istruzioni iterative

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

Dettagli

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file. IL CONCETTO DI FILE Un file è una astrazione fornita dal sistema operativo, il cui scopo è consentire la memorizzazione di informazioni su memoria di massa. Concettualmente, un file è una sequenza di registrazioni

Dettagli

Programmazione Orientata agli Oggetti

Programmazione Orientata agli Oggetti Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato

Dettagli

VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA

VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA VALORIZZAZIONE MOVIMENTI DI SCARICO E VALORIZZAZIONE TRASFERIMENTO COSTI DI ANALITICA Riportiamo di seguito i vari passaggi per poter gestire la rivalorizzazione, sui documenti di scarico, del costo di

Dettagli

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

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

Dettagli

Introduzione a Visual Basic Lezione 2 Cicli e anomalie

Introduzione a Visual Basic Lezione 2 Cicli e anomalie a Visual Basic Lezione 2 Mario Alviano Introduzione all informatica Università della Calabria http://alviano.net/introinfo A.A. 2008/09 Introduzione Perché i cicli? Un esempio concreto Finora abbiamo visto

Dettagli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

1 Definizione di sistema lineare omogeneo.

1 Definizione di sistema lineare omogeneo. Geometria Lingotto. LeLing1: Sistemi lineari omogenei. Ārgomenti svolti: Definizione di sistema lineare omogeneo. La matrice associata. Concetto di soluzione. Sistemi equivalenti. Operazioni elementari

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi

Dettagli

Introduzione alle macchine a stati (non definitivo)

Introduzione alle macchine a stati (non definitivo) Introduzione alle macchine a stati (non definitivo) - Introduzione Il modo migliore per affrontare un problema di automazione industriale (anche non particolarmente complesso) consiste nel dividerlo in

Dettagli

Fondamenti VBA. Che cos è VBA

Fondamenti VBA. Che cos è VBA Fondamenti VBA Che cos è VBA VBA, Visual Basic for Application è un linguaggio di programmazione, inserito nelle applicazioni Office di Microsoft (Ms Word, Ms Excel, Ms PowerPoint, Visio). VBA è una implementazione

Dettagli

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi

7 Disegni sperimentali ad un solo fattore. Giulio Vidotto Raffaele Cioffi 7 Disegni sperimentali ad un solo fattore Giulio Vidotto Raffaele Cioffi Indice: 7.1 Veri esperimenti 7.2 Fattori livelli condizioni e trattamenti 7.3 Alcuni disegni sperimentali da evitare 7.4 Elementi

Dettagli

Fortran in pillole : prima parte

Fortran in pillole : prima parte Fortran in pillole : prima parte Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria Introduzione al Fortran Un libro consigliato

Dettagli

Un convertitore D/A o digitale/analogico è un dispositivo che ha lo scopo di

Un convertitore D/A o digitale/analogico è un dispositivo che ha lo scopo di Convertitore D/A Un convertitore D/A o digitale/analogico è un dispositivo che ha lo scopo di trasformare un dato digitale in una grandezza analogica, in generale una tensione. Naturalmente vi deve essere

Dettagli

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

VISUAL BASIC FOR APPLICATION

VISUAL BASIC FOR APPLICATION VISUAL BASIC FOR APPLICATION LA PIATTAFORMA DI SVILUPPO GLI ELEMENTI DI VBA Finestra di progetto: mostra l elenco gerarchico dei progetti aperti e di tutti i moduli di codice e finestre di interfaccia

Dettagli

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro Laboratorio di Programmazione Lezione 1 Cristian Del Fabbro Reperibilità homepage corso: https://users.dimi.uniud.it/~cristian.delfabbro/teaching.php email: cristian.delfabbro@uniud.it telefono: 0432 558676

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

GUIDA RAPIDA EDILCONNECT

GUIDA RAPIDA EDILCONNECT 1 GUIDA RAPIDA EDILCONNECT Prima di iniziare In EdilConnect è spesso presente il simbolo vicino ai campi di inserimento. Passando il mouse sopra tale simbolo viene visualizzato un aiuto contestuale relativo

Dettagli

Note_Batch_Application 04/02/2011

Note_Batch_Application 04/02/2011 Note Utente Batch Application Cielonext La Batch Application consente di eseguire lavori sottomessi consentendo agli utenti di procedere con altre operazioni senza dover attendere la conclusione dei suddetti

Dettagli

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel In un foglio elettronico, le celle sono identificate mediante delle coordinate; in genere, sono utilizzate le lettere per identificare

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono

Dettagli

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double

Dettagli

Programma per la generazione di filastrocche

Programma per la generazione di filastrocche Programma per la generazione di filastrocche In questa sezione illustriamo un programma, realizzato all interno del progetto, che consente di generare le filastrocche che sono costituite da una strofa

Dettagli

Introduzione al Linguaggio C ed all IDE DEV-C++

Introduzione al Linguaggio C ed all IDE DEV-C++ Microsoft Windows e Dev-C++ Introduzione al Linguaggio C ed all IDE DEV-C++ 1 Le Esercitazioni in Laboratorio! MTA + MLAB1/2: Edificio Via Valotti, primo piano e piano interrato! Orario: Giovedì 14:30-17:30!

Dettagli

Oggetti e classi. Cos è un oggetto

Oggetti e classi. Cos è un oggetto Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA 28 Gennaio 1999 PROVA SCRITTA Esercizio 1 Un elaboratore rappresenta numeri interi in complemento a due su 8 bit e numeri reali in utilizzando un byte per la mantissa normalizzata e un byte per l esponente

Dettagli

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5.

INDICE. Vista Libretto Livello Digitale 2. Importazione di dati da strumento 3. Inserisci File Vari 5. Compensazione Quote 5. Prodotto da INDICE Vista Libretto Livello Digitale 2 Importazione di dati da strumento 3 Inserisci File Vari 5 Compensazione Quote 5 Uscite 6 File Esporta Livellazioni (.CSV) 6 Corso Livello Digitale Pag.

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

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007

Files in C++ Fondamenti di Informatica. R. Basili. a.a. 2006-2007 Files in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Sintesi Motivazioni Definizione di file in C++ Un esempio Uso dei file Esempi Esercizi Motivazioni il programma in esecuzione legge (sequenzialmente)

Dettagli

Manutenzione periodica al PIANO DEI CONTI

Manutenzione periodica al PIANO DEI CONTI Manutenzione periodica al PIANO DEI CONTI La nuova gestione Utilità Piano dei Conti Premessa... 2 La creazione di un nuovo sottoconto... 3 1. Nuovo sottoconto tramite duplica da piano dei conti standard...

Dettagli

Refactoring 5 Sposta Metodo. 5 Sposta Metodo. 5 Sposta Metodo - Codice iniziale

Refactoring 5 Sposta Metodo. 5 Sposta Metodo. 5 Sposta Metodo - Codice iniziale Refactoring Un metodo sta usando più caratteristiche (attributi e operazioni) di un altra classe che non quella in cui è definito Crea un nuovo metodo con un corpo simile nella classe che il metodo usa

Dettagli

Risoluzione di problemi ingegneristici con Excel

Risoluzione di problemi ingegneristici con Excel Risoluzione di problemi ingegneristici con Excel Problemi Ingegneristici Calcolare per via numerica le radici di un equazione Trovare l equazione che lega un set di dati ottenuti empiricamente (fitting

Dettagli

Manuale di Aggiornamento BOLLETTINO. Rel B. DATALOG Soluzioni Integrate a 32 Bit

Manuale di Aggiornamento BOLLETTINO. Rel B. DATALOG Soluzioni Integrate a 32 Bit KING Manuale di Aggiornamento BOLLETTINO Rel. 4.70.2B DATALOG Soluzioni Integrate a 32 Bit - 2 - Manuale di Aggiornamento Sommario 1 PER APPLICARE L AGGIORNAMENTO... 3 2 NOVITA 4.70.2B... 5 2.1 Annullo

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

Traduzione e adattamento a cura di Gylas per Giochi Rari. Versione 1.1 Novembre

Traduzione e adattamento a cura di Gylas per Giochi Rari. Versione 1.1 Novembre Traduzione e adattamento a cura di Gylas per Giochi Rari Versione 1.1 Novembre 2001 http://www.giochirari.it e-mail: giochirari@giochirari.it NOTA. La presente traduzione non sostituisce in alcun modo

Dettagli

Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE

Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE Laboratorio di Architettura lezione 5 Massimo Marchiori W3C/MIT/UNIVE Da Alto a Basso livello: compilazione Come si passa da un linguaggio di alto livello a uno di basso livello? Cioe a dire, come lavora

Dettagli

Laboratorio di Architettura degli Elaboratori

Laboratorio di Architettura degli Elaboratori Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Set di istruzioni del MIPS32: istruzioni aritmetiche e di trasferimento Istruzioni (Alcune) Categorie di istruzioni in MIPS Istruzioni

Dettagli

1 DESCRIZIONE DELLE FUNZIONI... 3 1.1 REGISTRAZIONE UTENZE INTERNET... 3. 1.1.1 Caricamento utente internet (data entry)... 3

1 DESCRIZIONE DELLE FUNZIONI... 3 1.1 REGISTRAZIONE UTENZE INTERNET... 3. 1.1.1 Caricamento utente internet (data entry)... 3 Portale TESEO Guida al servizio INDICE 1 DESCRIZIONE DELLE FUNZIONI... 3 1.1 REGISTRAZIONE UTENZE INTERNET.... 3 1.1.1 Caricamento utente internet (data entry)... 3 1.1.2 Primo accesso e registrazione...

Dettagli

Normalizzazione. Definizione

Normalizzazione. Definizione Normalizzazione Definizione Le forme normali 2 Una forma normale è una proprietà di una base di dati relazionale che ne garantisce la qualità, cioè l'assenza di determinati difetti Quando una relazione

Dettagli

Equazioni, funzioni e algoritmi: il metodo delle secanti

Equazioni, funzioni e algoritmi: il metodo delle secanti Equazioni, funzioni e algoritmi: il metodo delle secanti Christian Ferrari 1 Introduzione La risoluzione di equazioni in R ci ha mostrato che solo per le equazioni polinomiali di primo e secondo grado,

Dettagli

Array multidimensionali e stringhe

Array multidimensionali e stringhe Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi

Dettagli

1 IL LINGUAGGIO MATEMATICO

1 IL LINGUAGGIO MATEMATICO 1 IL LINGUAGGIO MATEMATICO Il linguaggio matematico moderno è basato su due concetti fondamentali: la teoria degli insiemi e la logica delle proposizioni. La teoria degli insiemi ci assicura che gli oggetti

Dettagli

MANUALE ISCRIZIONE E DOMANDA ON-LINE

MANUALE ISCRIZIONE E DOMANDA ON-LINE MANUALE ISCRIZIONE E DOMANDA ON-LINE SOMMARIO INTRODUZIONE REGISTRAZIONE UTENTI GIA CONOSCIUTI DAL SISTEMA ACCESSO AL SITO PRIMO ACCESSO RICHIESTA ISCRIZIONE AI SERVIZI CONTROLLO STATO DELLA DOMANDA CANCELLAZIONE

Dettagli

Mini-Corso di Informatica

Mini-Corso di Informatica Mini-Corso di Informatica CALCOLI DI PROCESSO DELL INGEGNERIA CHIMICA Ing. Sara Brambilla Tel. 3299 sara.brambilla@polimi.it Note sulle esercitazioni Durante le esercitazioni impareremo a implementare

Dettagli

Lavoro & Previdenza La circolare su temi previdenziali e giuslavoristici

Lavoro & Previdenza La circolare su temi previdenziali e giuslavoristici Lavoro & Previdenza La circolare su temi previdenziali e giuslavoristici N. 47 11.03.2016 CU 2016: rettifiche e sanzioni In caso di dati omessi o errati si ha tempo fino a lunedì 14 marzo per reinoltrare

Dettagli

Word Formattazione del testo. Samuele Mazzolini

Word Formattazione del testo. Samuele Mazzolini Word Formattazione del testo Samuele Mazzolini Imposta pagina Potrebbe essere utile per certi documenti impostare la pagina in orizzontale invece che in verticale. Questo è possibile con il comando Imposta

Dettagli

Indice. Introduzione 2. 1.1.1 Collegamento iniziale 3. 1.1.2 Identificazione della sede operativa (sede di lavoro) 5

Indice. Introduzione 2. 1.1.1 Collegamento iniziale 3. 1.1.2 Identificazione della sede operativa (sede di lavoro) 5 S.I.L. Sintesi Comunicazioni Obbligatorie [COB] Import Massivo XML Agosto 2009 Indice Argomento Pag. Introduzione 2 1.1.1 Collegamento iniziale 3 1.1.2 Identificazione della sede operativa (sede di lavoro)

Dettagli

Le equazioni di I grado

Le equazioni di I grado Le equazioni di I grado ITIS Feltrinelli anno scolastico 007-008 R. Folgieri 007-008 1 Le equazioni abbiamo una uguaglianza tra due quantità (espressioni algebriche, perché nei due termini ci possono essere

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

COME ACCEDERE 5 COME VERSARE IL DENARO 6 COME DISPORRE DEL DENARO 7 LA TUA BANCA ON-LINE 8 SICUREZZA 9 ALTRE INFORMAZIONI UTILI 10

COME ACCEDERE 5 COME VERSARE IL DENARO 6 COME DISPORRE DEL DENARO 7 LA TUA BANCA ON-LINE 8 SICUREZZA 9 ALTRE INFORMAZIONI UTILI 10 COME ACCEDERE 5 COME VERSARE IL DENARO 6 COME DISPORRE DEL DENARO 7 LA TUA BANCA ON-LINE 8 SICUREZZA 9 ALTRE INFORMAZIONI UTILI 10 è finalmente attivo. In questo manuale troverai tutte le informazioni

Dettagli

Funzioni condizionali

Funzioni condizionali Excel Base- Lezione 4 Funzioni condizionali Sono funzioni il cui risultato è dipendente dal verificarsi o meno di una o più condizioni. Esempio: SE CONTA.SE SOMMA.SE E, O 1 Funzione SE La funzione SE serve

Dettagli

Oggetto: Utility per la variazione massiva del codice IVA.

Oggetto: Utility per la variazione massiva del codice IVA. Oggetto: Utility per la variazione massiva del codice IVA. Questa utility permette la variazione di massa dei codici IVA nelle anagrafiche articoli, clienti e fornitori e nei documenti significativi al

Dettagli

PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20

PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 PG5 Starter Training Applicazione File System Daniel Ernst EN02 2012-02-26 Stefano Peracchi IT01 2013-05-20 Introduzione Materiale richiesto Notebook o computer Controllore PCD1 E Cavo USB Scheda «Training»

Dettagli

Guida Compilazione Questionario SCUOLA DELL INFANZIA PARITARIA

Guida Compilazione Questionario SCUOLA DELL INFANZIA PARITARIA Guida Compilazione Questionario SCUOLA DELL INFANZIA PARITARIA Guida Compilazione Questionario Struttura delle schermate Barra degli strumenti Area di lavoro Scuola dell Infanzia Paritaria Esempio Struttura

Dettagli

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,

Dettagli

FONDAMENTI DI INFORMATICA Lezione n. 11

FONDAMENTI DI INFORMATICA Lezione n. 11 FONDAMENTI DI INFORMATICA Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di

Dettagli

Anno 2. Radicali algebrici e aritmetici: condizioni di esistenza

Anno 2. Radicali algebrici e aritmetici: condizioni di esistenza Anno 2 Radicali algebrici e aritmetici: condizioni di esistenza 1 Introduzione Perché studiare i radicali? In matematica ogni volta che facciamo un operazione dobbiamo anche vedere se è possibile tornare

Dettagli

La segreteria didattica dovrà eseguire semplici operazioni per effettuare lo scrutinio:

La segreteria didattica dovrà eseguire semplici operazioni per effettuare lo scrutinio: GESTIONE SCRUTINI SEGRETERIA La segreteria didattica dovrà eseguire semplici operazioni per effettuare lo scrutinio: 1. CONTROLLO PIANI DI STUDIO DELLE CLASSI; 2. ASSEGNAZIONI PROFESSORI MATERIE; 3. CONTROLLO

Dettagli

Pagamento Oneri. Gli oneri di istruttoria ed i bolli vengono pagati all invio della richiesta.

Pagamento Oneri. Gli oneri di istruttoria ed i bolli vengono pagati all invio della richiesta. Pagamento Oneri Gli oneri di istruttoria ed i bolli vengono pagati all invio della richiesta. Per l effettuazione del pagamento a saldo occorre attendere l e-mail di comunicazione dell importo degli oneri

Dettagli

Definizione. Il valore assoluto lascia inalterato ciò che è già positivo e rende positivo ciò che positivo non è.

Definizione. Il valore assoluto lascia inalterato ciò che è già positivo e rende positivo ciò che positivo non è. VALORE ASSOLUTO Definizione a a, a, se a se a 0 0 Esempi.. 7 7. 9 9 4. x x, x, se x se x Il valore assoluto lascia inalterato ciò che è già positivo e rende positivo ciò che positivo non è. Utilizzando

Dettagli

Rappresentazioni numeriche

Rappresentazioni numeriche Rappresentazioni numeriche Un numero è dotato di un valore una rappresentazione La rappresentazione di un numero è il sistema che utilizziamo per indicarne il valore. Normalmente è una sequenza (stringa)

Dettagli