IL LINGUAGGIO C++ Michele Marchesi. Appunti per un corso. Libri consigliati, da cui sono stati prese idee ed esempi:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "IL LINGUAGGIO C++ Michele Marchesi. Appunti per un corso. Libri consigliati, da cui sono stati prese idee ed esempi:"

Transcript

1 IL LINGUAGGIO C++ Michele Marchesi Appunti per un corso Libri consigliati, da cui sono stati prese idee ed esempi: R. Winder, Guida al C++ Corso completo di programmazione, Jackson Libri, 1993 B. Flamig, Turbo C++, a self-teching guide, Wiley, 1991 B. Stroustrup, Il linguaggio C edizione, Addison-Wesley, 1992 M.A. Ellis, B. Stroustrup, The annotated C++ reference manual, Addison- Wesley, 1990 K. Gorlen, S. Orlow, P. Plexico, Data abstraction and OO programming in C++, Wiley, R.B. Murray, C++ Strategies and Tactics, Addison-Wesley, 1993.

2 1. Fondamenti La programmazione Lo sviluppo di un qualsiasi nuovo sistema software è un'attività di risoluzione di problemi che richiede allo sviluppatore di: Analizzare il problema in oggetto. Progettare una soluzione al problema. Realizzare la soluzione. Collaudare la realizzazione. Un programma è un sistema che trasforma i dati inclusi nel programma stesso, o introdotti dall'utente quando il programma è eseguito. Il C++ è un linguaggio imperativo: le istruzioni del linguaggio controllano direttamente l'elaborazione. Vi sono due vedute principali moderne della programmazione imperativa: 1. Le istruzioni eseguono e cambiano i valori dei dati: Tipi di Dati Astratti (ADT). 2. I valori dei dati si passano messaggi l'un l'altro per richiedere trasformazioni di valore: programmazione orientata agli oggetti. I programmi C++ si possono scrivere in entrambi gli stili. Un semplice programma C++ Un programma che stampa Ciao sul terminale. File di intestazione per operazioni di ingresso-uscita #include <iostream.h> La funzione principale. void main() { cout << "Ciao.\n" ; } C++ 1.1

3 Le caratteristiche degne di nota: La maggior parte del codice sorgente è un commento La riga # include <iostream.h> fa sì che sia inclusa un'informazione essenziale per poter eseguire input/output, e cioé la libreria IOSTREAM. Il programma Ciao utilizza la libreria IOSTREAM per far uscire qualcosa con l'istruzione: cout << "Ciao.\n"; dove cout rappresenta il terminale video, << rappresenta l'operazione di uscita e la stringa "Ciao.\n" è ciò che effettivamente viene stampato. Il \n nella stringa rappresenta "ritorno carrello, a capo". Ciò serve a rendere leggibile l'uscita. Il costrutto che comprende l'istruzione di uscita: void main() { cout << "Ciao.\n" ; } è una funzione, quella particolare funzione chiamata main. Tutti i programmi C++ debbono avere una ed una sola funzione chiamata main, che inizia l'esecuzione del programma quando questo gira sul calcolatore. Il void associato alla funzione è il tipo della funzione. Il tipo void ci dice che questa funzione farà soltanto delle azioni ma non restituirà un valore. Le parentesi tonde ( ) dopo il nome della funzione mostrano che è effettivamente una funzione e le parentesi graffe { } delimitano il codice sorgente che costituisce la funzione, cioé in questo caso la singola funzione di uscita. C++ 1.2

4 Aspetto esterno del codice e commenti Il C++, è un linguaggio con formato libero. Al compilatore non importa quanto il codice sorgente sia formattato purché sia sintatticamente corretto. I caratteri di a capo, spazio e tabulazione sono esempi di spazio bianco, e il compilatore tratta tutti gli spazi bianchi contigui come un singolo carattere di spazio bianco. Per gli esseri umani, il codice sorgente deve essere formattato in modo strutturato. Vi sono vari metodi di formattazione "standard" che sono stati proposti per la programmazione in C++. Il criterio principale è quello per cui tutti i frammenti di software vanno scritti nello stesso stile. Il codice sorgente ben formattato, oltre ad aiutare la comprensibilità e la ricerca degli errori, è di solito più corretto e perciò richiede meno correzioni. Le caratteristiche critiche della formattazione sono l'indentazione, le spaziature e il posizionamento delle istruzioni, l'uso di lettere maiuscole e minuscole e l'uso dei commenti. In C++, tutto quello che segue il fino alla fine della riga corrente è un commento. Vi è un'altra forma: il tipo /*...*/, come in C. Tutto ciò che si trova tra questi due simboli, non importa su quante righe di codice, è un commento. Questa forma di commento non è annidabile. Alcuni dei possibili stili di commento: Lo stile di commento "standard" usato negli esercizi per gruppi di commenti. / Una variante molto appariscente. Usata per lo piu' per commenti all'inizio di file o di funzioni. / /* * Uno stile alternativo per blocchi di commenti * usato da molti. Questo stile e' comune * nella programmazione in C. */... C++ 1.3

5 Commento interno come usato negli esercizi cout << "Un uscita.\n" ; Un commento su una riga. /* * Commento interno con asterischi! */ cout << "Altra uscita.\n"; /* Altro commento su una riga */ Astrazione e programmazione Uno dei problemi principali nella scrittura di grandi programmi, è che il programmatore non può comprendere il programma nel suo insieme a meno che il software non sia in qualche modo modulare. Modularità è la scomposizione in parti più piccole che possano essere comprese e su cui si possa ragionare indipendentemente. La scomposizione di un problema complesso in sottoproblemi più semplici è il modo fondamentale usato dagli uomini per affrontare la complessità del mondo che ci circonda. I buoni linguaggi di programmazione forniscono delle caratteristiche per rendere il software modulare. Modularità ed astrazione La modularità viene raggiunta assicurandosi che gli elementi del sistema abbiano contorni ben definiti e ben definite interfacce attraverso le quali gli elementi interagiscono. I moduli interagiscono solamente tramite le proprie interfacce. La corretta separazione delle funzionalità delle varie parti di un sistema permette di considerare i moduli come "scatole nere". In un linguaggio di programmazione l'atto di ignorare i dettagli di un componente di un programma e di ragionare soltanto sulla sua interfaccia si chiama astrazione. Vi sono due tipi di astrazione: una riguarda le azioni, l'astrazione funzionale (talora chiamata astrazione procedurale), e l'altra riguardante i dati, l'astrazione dei dati. C++ 1.4

6 L'astrazione funzionale permette di scomporre un sistema in funzioni,a loro volta scomposte in sottofunzioni. Tutto è basato sulle azioni del programma, cioè sull'elaborazione dei dati. L'astrazione dei dati permette all'utente di costruire strutture dati a partire da strutture più primitive, e poi di poterle utilizzare come se fossero primitive. L'astrazione dei dati di solito comporta il progetto di nuovi tipi di dati (struttura interna del nuovo tipo più operazioni che si possono utilizzare su quel tipo). Un'astrazione dei dati è modulare, cioè i dettagli interni sono nascosti, ma il tipo si può usare tramite l'interfaccia ed è chiamato tipo di dato astratto (Abstract Data Type, ADT). Il C++ supporta il processo di astrazione dei dati col costrutto di classe e supporta l'astrazione funzionale col costrutto di funzione. L'uso delle astrazioni dei dati e funzionale come unità di programmazione accresce la produttività dei programmatori, che devono sviluppare ogni volta soltanto piccoli pezzi di codice. Inoltre l'astrazione riduce il numero di errori introdotti nel software poiché la dimensione e la complessità di ciascuna unità collaudabile indipendentemente risulta piccola. Specifica ed implementazione I termini specifica ed implementazione sono usati per descrivere le parti che compongono la descrizione di un'astrazione. Una specifica presenta delle informazioni circa l'interfaccia di un'astrazione dei dati o funzionale e indica lo scopo dell'astrazione. Essa include tutte le informazioni richieste dal programmatore per usare un'astrazione. La specifica non dà nessuna informazione su come è fatta l'astrazione. Un'implementazione descrive come l'astrazione ottiene le proprietà descritte nella specifica, il suo interno. Le implementazioni possono cambiare, ma se le specifiche rimangono le stesse, il comportamento di tutti i programmi che usano quell'astrazione non viene modificato. C++ 1.5

7 Tipi e supporto per le astrazioni I buoni linguaggi di programmazione sono fortemente tipizzati, cioè ciascun elemento, dato o funzione del programma, ha un tipo. Questa tipizzazione di tutti gli elementi di un programma aiuta il programmatore ad evitare errori, permette ai compilatori di controllare la correttezza di un programma, specialmente quanto viene utilizzato materiale di libreria, ed aiuta la scoperta di errori potenziali. Il C++ è un linguaggio fortemente tipizzato: tutte le strutture dati e le funzioni di un programma devono avere un tipo dichiarato esplicitamente. Il compilatore controlla accuratamente la coerenza dei tipi in tutto il codice sorgente e se scopre un conflitto emette messaggi di errore. Un esempio di astrazione funzionale Il seguente programma è un estensione del programma Ciao che fa uso dell'astrazione funzionale: Un programma che stampa una serie di messaggi sul terminale. Include le informazioni di ingresso-uscita. #include <iostream.h> Una funzione che stampa Ciao. Non ha parametri. void stampaciao() { cout << "Ciao.\n" ; } La parte principale del programma. Stampa molte cose sul terminale per mostrare l'ordine in cui sono fatte le cose. void main() { cout << "Sto per stampare Ciao.\n" ; stampaciao() ; cout << "Ho appena stampato Ciao.\n" ; } Quando il programma viene compilato ed eseguito l'output prodotto è: C++ 1.6

8 prompt> a.out Sto per stampare Ciao. Ciao. Ho appena stampato Ciao. prompt> Questo programma evidenzia il fatto che le istruzioni nella funzione main sono eseguite in maniera sequenziale. Il programma ha tre elementi oltre ai commenti: #include stampaciao main Questa istruzione di controllo è necessaria per permettere al programmatore di usare il sistema predefinito di ingressouscita IOSTREAM. Il file d'intestazione incluso iostream.h contiene tutte le informazioni di tipo per il compilatore, perché il compilatore possa fare tutti i suoi controlli di consistenza. Una funzione di tipo void. Questa funzione è chiamata da main. E' un'esempio di astrazione funzionale anche se banale. All'interno di main la funzione stampaciao è chiamata senza sapere che cosa essa fa internamente. La specifica della funzione era: una funzione che stampa Ciao. e che non restituisce alcun valore. Questa semantica è indicata dal nome della funzione stampaciao. La funzione ha tipo void per evidenziare il fatto che non restituisce alcun valore. Come già detto, questa è la funzione che controlla tutto, ed è la prima funzione che viene eseguita. I tipi di dati primitivi Per poter costruire le astrazioni vi devono essere degli strumenti di costruzione da cui partire. Nel caso della programmazione essi sono i tipi di dati primitivi ed alcune opportune operazioni su questi. C++ 1.7

9 Costanti letterali e variabili In tutti i programmi i dati, primitivi o definiti dall'utente, sono presenti in due forme: costanti letterali e variabili. Le costanti letterali sono rappresentazioni dei valori di un dato tipo. Le variabili sono "scatole" con un nome nelle quali si possono mettere dei valori che possono essere cambiati durante l'esecuzione di un programma. Nel C++ sia le costanti letterali che le variabili sono tipizzate. Le costanti letterali hanno un tipo che dipende dal loro valore. Per le variabili, occorre che il programmatore dia esplicitamente un tipo utilizzando un'istruzione di dichiarazione. Dare un nome alle variabili Così come deve avere un tipo, una variabile deve avere un nome, in modo da poter essere usata dentro un programma. Vi sono le seguenti regole (come in C): I nomi delle variabili devono iniziare con un carattere alfabetico. Si possono utilizzare, come altri caratteri, i caratteri alfabetici minuscoli e maiuscoli, le cifre numeriche ed il carattere _. Alcuni compilatori permettono di usare anche il carattere $ nei nomi delle variabili. I nomi delle variabili possono essere di lunghezza arbitraria. Purtroppo, qualche compilatore insiste col dare un limite superiore alla lunghezza delle variabili. Non si possono utilizzare come nomi di variabili le parole chiave del linguaggio C++: C++ 1.8

10 asm do if register typedef auto double inline return union break else int short unsigned case enum long signed virtual char extern new sizeof void class float operator static volatile const for overload struct while continue friend private switch default goto protected template delete handle public this Queste regole si applicano anche ai nomi delle funzioni, delle classi, delle etichette. ecc. Vi sono due modi principali di dare un nome composto alle variabili. Una possibilità è quella di utilizzare nomi aventi come separatore tra le parole il carattere _, ad esempio: una_variabile, una_funzione_utile e un_tipo L'altro schema consiste nell'utilizzare lettere maiuscole per indicare l'inizio di una nuova parola all'interno di un nome. In tale schema, i nomi delle variabili e delle funzioni iniziano tutti con una lettera minuscola mentre i nomi di un tipo definito dall'utente cominciano con una lettera maiuscola, ad esempio: unavariabile, unafunzioneutile e UnTipo. La maggior parte degli autori del linguaggio C++ usa questo secondo schema, che sta diventando uno standard de facto. In ogni caso, dato il sistema di generazione automatica dei nomi delle funzioni da parte del compilatore C++ (type-safe linkage), occorre evitare di usare il doppio "underscore" nei nomi. L'inizializzazione delle variabili Il linguaggio C++ permette di dare un valore alle variabili quando queste sono definite, cioè le variabili possono essere inizializzate. E' sempre una buona pratica farlo. C++ 1.9

11 E' anche bene non definire una variabile fino a che questa non sia necessaria. L'inizializzazione di una variabile si può effettuare ponendola uguale a un'espressione arbitraria, utilizzante anche variabili e funzioni precedentemente definite: int i = 7 ; float x = 5. + sqrt(i * 7.) ; I tipi primitivi: valori e definizioni Numeri interi I tipi interi in C++ sono: char, short, int e long. Il tipo char serve a rappresentare i caratteri piuttosto che i numeri interi, e quindi sarà descritto separatamente. Il C++ consente anche di utilizzare tipi senza segno, per esempio il tipo unsigned int. Invece di essere numeri complementati a 2, i tipi senza segno implementano numeri modulo 2 n, cioè gli interi sono sempre interi positivi con valore che va da 0 a 2 n -1. Esempi di definizioni: int i = 24, j = 35 ; short int s1 = 5555 ; short s2 = 7463 ; long int l1 = ; long l2 = i ; unsigned int ui = 12, uj = 444 ; unsigned short us = 444 ; unsigned short int ut = us ; unsigned long ul = ; unsigned long int um = ; Lunghezza tipica e campo di valori dei tipi interi C

12 Tipo 16 bit (short e talora int) 32 bit (long e talora int) signed (-2 15 ) (2 15-1) (-2 31 ) (2 31-1) unsigned (2 16-1) (2 32-1) Rappresentazione dei valori interi Le costanti letterali intere sono di solito a base dieci. Vi sono però anche rappresentazioni ottali, ed esadecimali dei valori interi. Le costanti decimali iniziano con una cifra da 1 a 9 e continuano con cifre nell'intervallo da 0 a 9. Esempi di costanti decimali sono: 134, Le costanti letterali ottali sono quelle che cominciano con uno 0 (carattere zero). Le cifre 8 e 9 non possono essere usate. Esempi di costanti letterali ottali sono: 0156, 010, Le costanti letterali esadecimali del C++ iniziano con i due caratteri 0x o 0X (0 poi x). Le cifre degli esadecimali sono da 0 a 9, a-f, A-F, ove a rappresenta il numero 10, b rappresenta 11 ecc. fino a f che rappresenta il 15. Esempi di costanti esadecimali sono: 0xff, -0x24d5, 0x01F4da4. Le costanti letterali hanno assegnato il tipo a seconda del loro valore. Si può forzare che una costante letterale sia di valore long appendendo una L o una l alla costante stessa. Si possono imporre costanti letterali senza segno appendendo una U o una u alla costante stessa. Usando entrambi i simboli si può definire un valore unsigned long. C

13 Caratteri Ci deve essere una corrispondenza riconosciuta tra i valori dei caratteri immagazzinati nella macchina e la notazione scritta comune. Vi sono molte corrispondenze diverse, ma la più comune è il codice ASCII. Così il tipo char è in effetti una forma di intero. C'è perciò una sintassi per rappresentare i caratteri nel codice dei programmi indipendentemente dai codici utilizzati per metterli in corrispondenza ai numeri interi (costanti letterali carattere). Tutti i caratteri stampabili sono rappresentati racchiudendo il carattere stesso tra apici singoli. Le prime quattro lettere dell'alfabeto sono scritte: 'a' 'b' 'c' 'd' Vi sono però alcuni caratteri molto utili che richiedono una speciale sintassi per essere rappresentati. La tabella seguente mostra i cosiddetti codici di "escape" per questi caratteri: Nome del carattere Nome ASCII Rappresentazione C++ a capo NL \n tabulazione orizzontale HT \t tabulazione verticale VT \v spazio indietro BS \b ritorno carrello CR \r form feed FF \f campanello (bell) BEL \a barretta rovesciata \ \\ apice ' \' C

14 Vi sono due altre sequenze di escape che permettono al programmatore di immettere direttamente valori numerici come costanti carattere: Base letterale Rappresentazione Ottale Esadecimale \ooo \xhhh ove ooo indica 1, 2 o 3 cifre ottali senza uno zero iniziale hhh indica 1, 2 o 3 cifre esadecimali, di nuovo senza zero iniziale. Qualunque sia la lunghezza di un char, essa è l'unità di misura standard di lunghezza per tutti i tipi. Nella maggior parte delle macchine i caratteri sono interi di 8 bit. L'intervallo dei loro valori va da -128 a 127. Con l'avvento dei terminali grafici e con l'estensione delle tabelle dei caratteri per comprendere simboli grafici, il tipo unsigned char può essere molto utile. L'intervallo intero va da 0 a 28-1 (0-255). Si tenga presente che anche un char può contenere un carattere di codice v > 127, solo che in tal caso il valore intero in esso contenuto è negativo, e vale v Un unsigned char invece contiene il valore v inalterato. Alcune definizioni di variabili di tipo carattere: char c1 = 'A', c2 = '\160' ; unsigned char u1 = '\xa9' ; C

15 Numeri reali Sono di due tipi: float (in genere di 32 bit) e double (in genere 64 bit). I numeri reali si possono rappresentare in due modi in un programma C++: come sequenza di cifre che comprendono un punto decimale, o in termini di mantissa e di esponente, per esempio:.1, 0.4, 1., 1.3, -.1, -0.4, -1., e4, 1.9e4, 1.4E-3, -1e4, -1.9E4, -1.4e-3 Per default, tutte le costanti reali del C++ sono di tipo double. Se si inizializza una variabile float con tale costante, allora il compilatore garantisce la corretta conversione. Volendo che una costante sia di tipo float, occorre aggiungere una F o una f a tale costante, ma ciò non si può fare nel caso di forma esponenziale. Esempi di definizioni e di inizializzazioni di variabili reali: float f1 = ; float f2 =.32e-3 ; double d1 = ; double d2 = e43 ; Campo di valori dei tipi reali secondo lo standard IEEE Tipo Bit mantissa / Cifre Intervalli dei valori bit caratteristica significative float 23 / 8 circa 7 [-1.7 x , x ], 0, [0.29 x 10-38, 1.7 x ] double 52 / 11 circa 15 [-0.9 x , x ], 0, [0.86 x , 0.9 X ] C

16 Ingresso e uscita dei tipi di dati primitivi A causa del sistema di tipizzazione forte del C++, la libreria IOSTREAM è capace di distinguere il tipo di input o di output. Così nel frammento di programma: cout << x ; cout << y ; il compilatore utilizza i tipi delle variabili x e y per essere sicuro che la libreria IOSTREAM esegua il tipo corretto di uscita. Quello che segue è un breve programma che mostra come definire ed inizializzare un int ed un double. Questi valori sono poi stampati sul video-terminale. Un programma che mostra la definizione, l'inizializzazione e l'uscita delle variabili. #include <iostream.h> void main() { Dichiara due variabili e le inizializza int valint = 4 ; double valreal = ; Fa uscire i valori delle variabili. cout << "valoreintero = " << valint << ", " ; cout << "valorereale = " << valreal << "\n" ; } Si può anticipare che le variabili cout e cin, definite nel file iostream.h, appartengono alle classi ostream e istream, rispettivamente. Esse denotano istanze di tali classi, associate all'unità standard di output e di input. Gli operatori << e >> (che nel linguaggio standard rappresentano operatori "shift" con due operandi interi) sono sovrapposti, cioé ridefiniti, avendo come primo parametro un ostream o un istream, rispettivamente. In tal modo il programma dato sopra funziona. Questi operatori sono stati scelti perché rappresentano delle "freccette" che rendono bene il flusso dei dati verso cout e da cin. C

17 Ingresso dei dati: nella libreria IOSTREAM, cin (di solito) rappresenta la tastiera, e >> rappresenta l'operazione d'ingresso. Le stesse regole riguardanti il controllo di tipo che valgono per l'uscita valgono anche per l'ingresso. Perciò nel programma seguente: Un programma che da' in eco il numero che l'utente digita alla tastiera. #include <iostream.h> void main() { double val ; cout << "Digita un numero: " ; cin >> val ; cout << "Hai battuto: " << val << "\n" ; } la libreria IOSTREAM fa entrare un double poiché riconosce che la variabile val nel quale il valore viene inserito è di tipo double. La concatenazione degli operatori << e >> è possibile perché tali operatori sono associativi a sinistra, ed inoltre perché restituiscono lo stream che hanno come primo argomento: cout << "Hai battuto: " << val << "\n" ; equivale a: ((cout << "Hai battuto: ") << val) << "\n" ; C

18 I puntatori Un puntatore è un dato che non contiene un'entità, ma un puntatore ad un'entità. Esso fornisce un altro meccanismo per accedere all'informazione contenuta in una variabile. Ciò introduce un nuovo termine: de-riferimento (de-referencing). Un puntatore è un riferimento a un dato. Quando usa un puntatore il programmatore deve de-riferire esplicitamente il puntatore per scoprire il valore del dato puntato. È spesso utile pensare in termini di "indirizzo" quando si tratta di puntatori: un puntatore è una variabile che contiene l'indirizzo dell'area di memoria che contiene effettivamente il dato puntato. I puntatori sono un tipo di dato primitivo. Qualunque sia il tipo di dato che è puntato, primitivo o definito dall'utente, un puntatore al dato è qualcosa di primitivo. Dichiarazione e definizione dei puntatori Si consideri il seguente esempio: #include <iostream.h> void main() { Dichiara una variabile int int varint = 46; Dichiara un puntatore e lo fa puntare alla variabile di lavoro. int * pint = &varint; cout << "variabileint = " << varint << "\n" ; *pint = 72 ; cout << "variabileint = " << varint << "\n" ; } La variabile varint è semplicemente una classica variabile intera inizializzata a 46. C

19 La variabile pint è un puntatore a un intero, e lo stabilisce l'* nella definizione. Il pint è inizializzato per puntare a varint, prendendo l'indirizzo a varint usando l'operatore unario &. L'operatore unario * ovunque tranne che in una dichiarazione è l'operatore di de-riferimento, e fa sì che *pint nell'istruzione di assegnazione stia a significare la variabile a cui punta pint. In questo caso, poiché *pint appare alla sinistra di un'assegnazione, la variabile varint ha il proprio valore cambiato. I simboli * e & sono usati qui come operatori unari, ed il compilatore può distinguere il loro uso dai simboli di * (moltiplicazione) e dall'& (and bit a bit) usati come operatori binari. Dopo l'esecuzione delle due definizioni del programma dato prima abbiamo la situazione; varint 46 pint L'istruzione di assegnazione porta al diagramma: varint 72 pint C

20 Il seguente codice: int * p1, p2 ; dichiara un puntatore a un intero, p1, ed un intero, p2. Se p2 doveva essere un puntatore, allora la dichiarazione avrebbe dovuto essere: int * p1, * p2 ; oppure: int * p1 ; int * p2 ; I tipi derivati del C++, oltre al tipo puntatore, sono: Vettori long vl [20] ; Riferimenti (... double & dd...) Tipi enumerati enum colori {rosso, blu, nero}; Tipi di classe class complex {... }; complex s, z; Costanti const int dimbuf = 512; Verranno tutti trattati nel seguito Occupazione di memoria dei tipi primitivi Il linguaggio C++ non prescrive lunghezza e modo di rappresentazione dei tipi primitivi. Esso prescrive solo alcuni vincoli relativi: 1 sizeof(char) sizeof(short) sizeof(int) sizeof(long) sizeof(float) sizeof(double) sizeof(long double) C

Introduzione alla programmazione in C

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

Dettagli

Corso Programmazione 1 Capitolo 01: Concetti Elementari

Corso Programmazione 1 Capitolo 01: Concetti Elementari Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it

Dettagli

Alfabeto ed elementi lessicali del linguaggio C

Alfabeto ed elementi lessicali del linguaggio C Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2015-2016 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - pietro.dilena@unibo.it s t a t i c s h o r t l e g s ; i n

Dettagli

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

Variabili e tipi di dato

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

Dettagli

Funzioni in C. Violetta Lonati

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

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

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

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

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

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

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

Dettagli

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

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

Dettagli

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

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

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

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione

Dettagli

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

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

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Le variabili. Olga Scotti

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

Dettagli

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

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

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

Dettagli

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

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

Dettagli

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

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

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

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Breve riepilogo della puntata precedente:

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

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

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

Java: Compilatore e Interprete

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

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Le stringhe. Le stringhe

Le stringhe. Le stringhe Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi Tipi di dato testuali Caratteri Stringhe Caratteri e stringhe 5 Tipi di dato testuali I programmi visti finora erano in grado di elaborare esclusivamente informazioni numeriche Numeri eri (), numeri reali

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) 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 Informatica 3 Lezione 7 -

Dettagli

INFORMATICA - I puntatori Roberta Gerboni

INFORMATICA - I puntatori Roberta Gerboni 1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un

Dettagli

Richiesta pagina PHP (es: index.php)

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

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Programmazione in Java Parte I: Fondamenti

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

Dettagli

Introduzione al MATLAB c Parte 2

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

Dettagli

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

11010010 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210 Il sistema BINARIO e quello ESADECIMALE. Il sistema di numerazione binario è particolarmente legato ai calcolatori in quanto essi possono riconoscere solo segnali aventi due valori: uno alto e uno basso;

Dettagli

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

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

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

Dettagli

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

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

Dettagli

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

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

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

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore. 1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Rappresentazione di numeri Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno Un numero e un entità teorica,

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

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

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

Dettagli

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

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

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

Corso di Informatica

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

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

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

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti Un ripasso di aritmetica: Rappresentazione binaria - operazioni A queste rappresentazioni si possono applicare le operazioni aritmetiche: riporti 1 1 0 + 1 0 = 1 0 0 24 Un ripasso di aritmetica: Rappresentazione

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

Informa(ca Appun% dal laboratorio 2

Informa(ca Appun% dal laboratorio 2 Informa(ca Appun% dal laboratorio 2 Conce- fondamentali Esistono programmi, come Microso8 Word oppure Acrobat Reader, che vengono usa% dagli uten% per far eseguire al computer determinate operazioni (come

Dettagli

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Definizione di nuovi tipi in C

Definizione di nuovi tipi in C Definizione di nuovi tipi in C typedef Ancora sui tipi di dato Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015 COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: [3 punto] Rappresentare i numeri 36 e 91 (in base 10) in notazione binaria

Dettagli

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

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

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

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

Tipi di dato-prima parte

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

Dettagli

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu

Dettagli