Panoramica del linguaggio C

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Panoramica del linguaggio C"

Transcript

1 2 Panoramica del linguaggio C Obiettivi del capitolo Prendere confidenza con la struttura generale di un programma C e con i suoi elementi fondamentali Valorizzare la pratica di mettere commenti in un programma Capire l uso dei tipi di dato e le differenze tra i tipi int, double e char Imparare a dichiarare le variabili Capire come scrivere un costrutto di assegnamento per cambiare valore alle variabili Imparare il modo in cui il linguaggio C valuta le espressioni aritmetiche Imparare come acquisire i dati e visualizzare i risultati Imparare come scrivere stringhe di formato per l acquisizione dati e la visualizzazione dei risultati Imparare come utilizzare la redirezione per poter consentire l uso di file per l acquisizione dati e la visualizzazione dei risultati Capire le differenze tra errori di sintassi, errori di esecuzione ed errori logici, e imparare a evitarli e correggerli

2 32 Capitolo 2 Questo capitolo presenta C, un linguaggio di alto livello sviluppato nel 1972 da Dennis Ritchie presso gli AT&T Bell Laboratories. Poiché il linguaggio è stato pensato per la realizzazione del sistema operativo UNIX, inizialmente è stato impiegato per la programmazione di sistemi. Tuttavia, negli anni, la potenza e flessibilità del linguaggio, uniti alla ampia disponibilità di ottimi compilatori per sistemi di calcolo di qualsiasi livello e dimensione, hanno reso C un linguaggio popolare per una grande varietà di applicazioni. Questo capitolo presenta gli elementi di un programma C, i tipi di dato che possono essere gestiti e manipolati e i costrutti per acquisire dati, effettuare calcoli e visualizzare i risultati. 2.1 Gli elementi del linguaggio C Un vantaggio del linguaggio C è consentire di scrivere programmi che assomigliano al linguaggio quotidiano. Sebbene non sappiate ancora scrivere un programma, probabilmente siete in grado di comprendere il programma della Figura La Figura 2.1 riporta lo stesso programma con evidenziate le caratteristiche di base di C, identificate qui nel seguito e poi illustrate in dettaglio dalla Sezione 2.2 alla Sezione 2.4. I numeri di riga riportati in tutte le figure che illustrano il codice non fanno parte del programma. Direttiva al preprocessore Macro costante Variabile Identificatore standard /* * Converti la distanza da miglia a chilometri. */ File header standard Commento #include <stdio.h> /* definizioni di printf, scanf */ #define KMS_PER_MILE /* costante di conversione */ int Riservato main(void) { double miles, /* distanza in miglia */ kms; /* distanza equivalente in chilometri */ /* Acquisisci la distanza in miglia */ printf("enter the distance in miles> "); scanf("%lf", &miles); Commento Riservato } /* Converti la distanza in chilometri */ kms = KMS_PER_MILE * miles; Simbolo speciale /* Visualizza la distanza in chilometri */ printf("that equals %f kilometers.\n", kms); return (0); Punteggiatura Simbolo speciale Figura 2.1 Gli elementi del linguaggio C nel programma di conversione Miles-to-Kilometers.

3 Panoramica del linguaggio C 33 Direttive al preprocessore Il programma C della Figura 2.1 ha due parti: le direttive al preprocessore e il sottoprogramma principale. Le direttive al preprocessore danno istruzioni al preprocessore di C, un programma il cui compito è modificare il codice C prima che venga compilato. La direttiva al preprocessore inizia con il simbolo # come primo carattere della riga. Le due direttive più comuni sono presenti nella Figura 2.1: #include e #define. Il linguaggio C definisce esplicitamente solo un numero limitato di operazioni, mentre la maggior parte delle attività richieste da un programma non è definita direttamente. Ogni implementazione C contiene però una collezione di sottoprogrammi e simboli utili chiamate librerie. Lo standard ANSI (American National Standards Institute) C richiede che determinate librerie standard vengano fornite in ogni implementazione ANSI C. Un sistema C può ampliare il numero di operazioni disponibili fornendo librerie addizionali; un programmatore, inoltre, può creare ulteriori librerie di sottoprogrammi. Ogni libreria ha un file header (di intestazione) il cui nome ha estensione.h. La direttiva #include permette a un programma di accedere a una libreria: essa fa in modo che il preprocessore inserisca le definizioni presenti in un file di intestazione nel programma prima che questo venga compilato. La direttiva #include <stdio.h> /* definizioni printf, scanf */ notifica al preprocessore che alcuni nomi utilizzati nel programma (per esempio scanf e printf) sono presenti nel file di intestazione standard <stdio.h>. L altra direttiva al preprocessore presente nella Figura 2.1 #define KMS_PER_MILE /* costante di conversione */ associa la macro costante KMS_PER_MILE al valore Questa direttiva indica al preprocessore che ogni occorrenza di KMS_PER_MILE presente nel codice del programma C deve essere sostituita con prima che la compilazione inizi. Ciò che si ottiene è che la riga kms = KMS_PER_MILE * miles; venga vista come kms = * miles; nel momento in cui arriva al compilatore C. L uso della direttiva #define dovrebbe essere riservato a quegli aspetti che non cambiano mai (o raramente), perché durante l esecuzione di un programma non è possibile modificare il valore di una macro costante. D altra parte, l uso della macro costante KMS_PER_MILE nel codice del programma al posto del valore rende più comprensibile e più facilmente manutenibile il programma. Il testo alla destra di ogni direttiva al preprocessore, che inizia con i caratteri /* e termina con i caratteri */, è un commento. I commenti offrono informazioni addizionali per una più facile comprensione del programma, e vengono ignorati sia dal preprocessore sia dal compilatore. Riquadro della sintassi per le direttive al preprocessore Per ogni nuovo costrutto C, proponiamo un riquadro che descrive e spiega la sintassi del costrutto, riportando esempi d uso. I riquadri seguenti descrivono i due tipi di direttive

4 34 Capitolo 2 al preprocessore. Gli elementi in corsivo presenti in ogni costrutto vengono discussi nella parte di interpretazione. Direttiva #include per definire identificatori da librerie standard SINTASSI: ESEMPI: #include <file di intestazione standard> #include <stdio.h> #include <math.h> INTERPRETAZIONE: la direttiva #include dice al preprocessore dove trovare il significato di identificatori standard utilizzati nel programma, collezionati in file chiamati file di intestazione standard. Il file di intestazione stdio.h contiene informazioni sui sottoprogrammi stardard di ingresso e uscita quali scanf e printf. Le descrizioni di sottoprogrammi matematici sono disponibili nel file di intestazione math.h. File di intestazione associati ad altre librerie standard saranno illustrati in capitoli successivi. Direttiva #define per creare macro costanti SINTASSI: #define NOME valore ESEMPI: #define MILES_PER_KM #define PI #define MAX_LENGTH 100 INTERPRETAZIONE: la direttiva #include dice al preprocessore di sostituire l identificatore NOME con valore. Le istruzioni del programma non possono modificare il valore associato a NOME. Sottoprogramma main L intestazione su due righe int main(void) individua l inizio del sottoprogramma principale chiamato sottoprogramma main (o semplicemente main) da cui inizia l esecuzione del programma. Ogni programma C ha un sottoprogramma main. Le rimanenti righe formano il corpo del sottoprogramma, che è delimitato dalle parentesi { e }. Il corpo di un sottoprogramma ha due parti: dichiarazioni e istruzioni eseguibili. Le dichiarazioni specificano al compilatore quante celle di memoria sono necessarie (per esempio miles e kms nella Figura 2.1). Per creare questa parte del sottoprogramma il programmatore utilizza i requisiti relativi ai dati del problema identificati durante la fase di analisi. Le istruzioni eseguibili (derivate dall algoritmo) vengono tradotte in linguaggio macchina e successivamente eseguite. Il corpo del sottoprogramma contiene punteggiatura e simboli speciali (*, =). Le virgole separano gli elementi di una lista, il punto e virgola compare al termine delle righe di codice e le parentesi graffe ({ }) individuano l inizio e la fine del corpo del sottoprogramma main.

5 Panoramica del linguaggio C 35 Definizione del sottoprogramma main SINTASSI: int main(void) { corpo } ESEMPIO: int main(void) { printf("hello world\n"); return (0); } INTERPRETAZIONE: l esecuzione del programma inizia dal sottoprogramma principale, main. Le parentesi racchiudono il corpo del sottoprogramma, che contiene dichiarazioni e istruzioni eseguibili. La riga int indica che il sottoprogramma restituisce un valore intero (0) al sistema operativo quando termina l esecuzione in modo normale. Il simbolo (void) indica che il sottoprogramma main non riceve alcun dato d ingresso dal sistema operativo nel momento in cui viene mandato in esecuzione. Termini riservati Ogni riga della Figura 2.1 contiene un certo numero di vocaboli classificati come termini riservati, identificatori di librerie standard e nomi di celle di memoria. Tutti i termini riservati sono scritti in minuscolo, hanno un significato speciale in C e non possono essere utilizzati per altri scopi. L Appendice E riporta una lista completa dei termini riservati del ANSI C, mentre in Tabella 2.1 sono riportati quelli usati nella Figura 2.1. Tabella 2.1 Termini riservati usati nella Figura 2.1. Termine riservato int void double return Significato Intero: indica che il sottoprogramma restituisce un dato di tipo intero. Indica che il sottoprogramma non riceve alcun dato dal sistema operativo. Indica che la cella di memoria contiene numeri reali. Il sottoprogramma restituisce il controllo del flusso d esecuzione al sistema operativo. Identificatori standard I rimanenti termini usati nella Figura 2.1 possono essere classificati in identificatori standard e identificatori definiti dall utente. Come per i termini riservati, gli identificatori standard hanno un significato speciale in C. Gli identificatori standard printf e scanf nella Figura 2.1 corrispondono ai nomi di operazioni definite nella libreria standard di sottoprogrammi di acquisizione/visualizzazione. A differenza dei termini riservati, gli identificatori standard possono essere ridefiniti dal programmatore e poi utilizzati per scopi diversi da quelli originali. Tuttavia la cosa è fortemente sconsigliata: se un identificatore standard viene ridefinito, non sarà più possibile utilizzarlo per il suo scopo originale nell ambito del programma.

6 36 Capitolo 2 Identificatori definiti dall utente Abbiamo scelto gli identificatori (chiamati identificatori definiti dall utente) per dare un nome alle celle di memoria che conterranno i dati e i risultati del programma e per dare un nome alle operazioni che vengono definite (come verrà spiegato nel Capitolo 3). Il primo identificatore definito nella Figura 2.1, KMS_PER_MILE, è il nome di una macro costante. C è un certo margine di libertà nella scelta degli identificatori: qui di seguito sono riportate le regole di sintassi e alcuni identificatori validi d esempio. La Tabella 2.2 mostra invece alcuni identificatori non validi. 1. Un identificatore consiste esclusivamente di lettere, cifre e _ (underscore, in italiano trattino basso ). 2. Un identificatore non può iniziare con una cifra. 3. Un termine riservato di C non può essere utilizzato come identificatore. 4. Un identificatore definito all interno di una libreria C standard non dovrebbe essere ridefinito. 1 Tabella 2.2 Identificatori non validi. Identificatore non valido 1Letter double int TWO*FOUR joe's Motivo Inizia con una cifra. Termine riservato. Termine riservato. Carattere * non ammesso. Carattere ' non ammesso. Identificatori validi letter_1, letter_2, inches, cent, CENT_PER_INCH, Hello, variable Sebbene le regole di sintassi non impongano un limite alla lunghezza, alcuni compilatori ANSI C non rilevano la differenza tra due identificatori se non c è una variazione nei primi 31 caratteri. Per esempio, i due identificatori r_capita_meat_consumption_in_1980 r_capita_meat_consumption_in_1995 verrebbero considerati identici da un compilatore C che ritiene significativi solo i primi 31 caratteri. La Tabella 2.3 elenca la categoria cui appartiene ogni identificatore utilizzato nel sottoprogramma della Figura 2.1. Tabella 2.3 Termini riservati e identificatori usati nella Figura 2.1. Termine riservato Identificatore standard Identificatore definito dall utente int, void, printf, scanf KMS_PER_MILE, main, double, miles, kms return 1 La regola 4 è piuttosto un suggerimento degli autori che non una regola di sintassi ANSI C.

7 Panoramica del linguaggio C 37 Lettere maiuscole e minuscole Chi scrive codice C deve prestare molta attenzione all uso di lettere maiuscole e minuscole poiché il compilatore le considera diversamente. I nomi Frequenza, frequenza, e FREQUENZA vengono considerati tre identificatori diversi. Per evitare di compiere errori è opportuno adottare uno schema coerente nell uso di lettere maiuscole e minuscole. In particolare, tutti i nomi dei sottoprogrammi di libreria standard utilizzano solamente lettere minuscole; uno stile largamente diffuso consiste nell usare per i nomi delle costanti macro solo lettere maiuscole. In questo libro adottiamo lo stesso schema e per gli altri identificatori useremo solo lettere minuscole. Stile di programmazione La scelta dei nomi degli identificatori In tutto il volume discuteremo di stile di programmazione in paragrafi specifici. Un bel programma è più leggibile e comprensibile rispetto a un programma trascurato. Si dice che, di solito, un programma viene scritto una volta sola e letto tantissime volte, frequentemente da persone diverse da chi l ha scritto, e spesso i programmatori passano più tempo a manutenere programmi (ossia ad aggiornarli e/o modificarli) che non a progettarli e a scriverli. Quindi, un programma scritto in modo pulito e chiaro semplifica il lavoro di tutti. Scegliete un nome significativo per gli identificatori introdotti, in modo tale che il loro scopo sia facilmente intuibile. Per esempio, un identificatore salario sarebbe ideale per memorizzare il salario percepito da una persona, mentre l identificatore s oppure sacco sarebbero scelte poco ragionevoli. Se un identificatore è costituito da due o più parole, l impiego del carattere underscore (_) tra le parole aumenta la leggibilità del nome scelto (euro_ora rispetto a euroora). Scegliete nomi lunghi a sufficienza da rendere il senso del valore memorizzato, ma cercate di non esagerare, perché più è lungo il nome più è possibile fare errori nello scriverlo. Per esempio, l identificatore kg_per_m2 è sufficientemente espressivo e più compatto di kg_per_metro_quadro. Quando si commette un errore di battitura e l identificatore scritto è identico al nome di un altro identificatore, il compilatore non può essere d aiuto. Per questo motivo è bene scegliere nomi di identificatori molto diversi tra loro, e soprattutto non usare identificatori che differiscono solo per l uso di lettere maiuscole e minuscole, come per esempio LARGO e largo. Infine, evitate di definire identificatori che differiscono solo per la presenza o assenza del carattere underscore (per esempio xcoord e x_coord). Esercizi per la Sezione 2.1 Autovalutazione 1. Quali identificatori tra quelli elencati sono (a) termini riservati di C, (b) identificatori standard, (c) utilizzati convenzionalmente come nomi di macro costanti, (d) identificatori validi generici, oppure (e) identificatori non validi? void MAX_ENTRIES double time G Sue's return printf xyz123 part#2 "char" #insert this_is_a_long_one 2. Perché è bene definire E ( ) come una macro costante?

8 38 Capitolo 2 3. Quale parte di un sistema per la realizzazione di programmi in C cambia il testo di un programma C prima che venga compilato? Nominate due direttive che specificano tali modifiche. 4. Perché non si dovrebbe utilizzare un identificatore standard come nome di una cella di memoria generica in un programma? È possibile utilizzare per questo scopo un termine riservato? 2.2 Le dichiarazioni di variabile e i tipi di dato Dichiarazione di variabile In un programma, le celle di memoria utilizzate per memorizzare i dati di ingresso e i risultati del calcolo prendono il nome di variabili, poiché il valore in esse memorizzato può essere modificato (e solitamente lo è) durante l esecuzione. Le dichiarazioni di variabile in un programma C specificano al compilatore i nomi di tutte le variabili utilizzate e il tipo di informazione che vi verrà memorizzata e come essa sarà rappresentata in memoria. Le dichiarazioni di variabile double miles; /* input - distanza in miglia */ double kms; /* output - distanza in chilometri */ definiscono i nomi delle due variabili (miles e kms) utilizzate per memorizzare valori reali. Si noti che il compilatore C ignora i commenti posti a destra di ogni riga per spiegare lo scopo della variabile. La dichiarazione di variabile inizia con un identificatore (per esempio double) che specifica al compilatore C il tipo di dato (nello specifico un numero reale) memorizzato in una particolare variabile. È possibile dichiarare variabili di qualsiasi tipo. Il linguaggio C richiede che ogni variabile utilizzata nel programma venga prima dichiarata. Sintassi per le dichiarazioni SINTASSI: int lista_variabili; double lista_variabili; char lista_variabili; ESEMPI: int count, large; double x, y, z; char first_initial; char answer; INTERPRETAZIONE: per ogni nome nella lista_variabili viene allocata una cella di memoria. Il tipo di dato che verrà memorizzato (double, int, char) è specificato all inizio dell istruzione. Un istruzione può occupare più di una riga di codice. Lo stesso tipo di dato può apparire in più dichiarazioni: le due sezioni di dichiarazioni sottostanti sono di fatto ugualmente valide per la dichiarazione delle variabili frequency, time e years. double frequency, time; int years; double frequency; int years; double time;

9 Panoramica del linguaggio C 39 I tipi di dati Un tipo di dato definisce un insieme di valori e un insieme di operazioni a essi applicabili. Conoscendo il tipo di dato di un elemento (variabile o valore) il compilatore individua le operazioni che possono essere utilizzate. Ci sono tipi di dati standard, ossia predefiniti, quali per esempio char, double e int. I tipi standard double e int sono utilizzati come astrazioni per rappresentare e manipolare numeri reali e interi. I tipi di dati si applicano a variabili e costanti. Una costante numerica (o un numero) positiva in un programma C può essere scritta preceduta dal segno + o senza, indifferentemente, e una costante numerica non può contenere una virgola. (Nota: nel mondo anglosassone il simbolo separatore delle cifre decimali è il punto.) In C, i valori costanti sono interpretati sempre come numeri non negativi: quando in un programma viene scritto il numero 10500, il compilatore interpreta il segno meno come l operatore valore opposto, applicato alla costante positiva 10500, e non come parte integrante della costante. Il tipo di dato int Il tipo di dato int si usa per rappresentare i numeri interi relativi o, in breve, interi. Poiché lo spazio di memoria riservato è comunque finito, non è possibile rappresentare qualsiasi valore: lo standard ANSI C specifica che la finestra dei valori rappresentabili dal tipo di dato int deve includere almeno tutti i valori compresi tra e Dichiarata una variabile di tipo int, è possibile effettuare le comuni operazioni aritmetiche (somma, sottrazione, moltiplicazione e divisione) e il confronto tra due valori. Esempi di valori memorizzabili sono Il tipo di dato double Un numero reale è costituito da una parte intera e una parte frazionaria, separate dal punto decimale. Nel linguaggio C, il tipo di dato double si usa per rappresentare i numeri reali (per esempio , , 150.0). Dichiarata una variabile di tipo double, è possibile effettuare le comuni operazioni aritmetiche (somma, sottrazione, moltiplicazione e divisione) e il confronto tra due valori. È possibile utilizzare la notazione scientifica per rappresentare i numeri reali (tipicamente adottata per valori molto piccoli o molto grandi): il numero reale rappresentato in notazione scientifica equivale a , dove il valore 5 all esponente indica uno spostamento a destra di 5 posizioni. In C la notazione scientifica viene scritta come 1.23e5 oppure 1.23E5: la lettera e (oppure E) va interpretata come per 10 elevato a, quindi 1.23e5 significa 1.23 per 10 elevato a 5. Nel caso in cui l esponente sia negativo, il punto decimale va spostato a sinistra (per esempio, 0.34e-4 equivale a ). La Tabella 2.4 elenca qualche valore reale e indica quali di questi possono essere memorizzati utilizzati nel tipo di dato double. L ultima riga illustra come sia possibile utilizzare una costante double in notazione scientifica senza dover esplicitare il separatore decimale.

10 40 Capitolo 2 Tabella 2.4 Costanti di tipo double (numeri reali). Costanti di tipo double valide Costanti di tipo double non ammesse (manca il separatore decimale) e (manca l esponente) e-0.3 (0.3 non è un esponente valido) 15.0e-04 (equivale a ) 2.345e2 (equivale a 234.5) 12.5e.3 (.3 non è un esponente valido) 1.15e-3 (equivale a ) 34, (la virgola non è ammessa) 12e+5 (equivale a ) Il tipo di dato double è un astrazione per la rappresentazione dei numeri reali, visto che non li include tutti: alcuni valori sono troppo grandi, altri troppo piccoli, altri infine non possono essere rappresentati in modo preciso a causa del numero finito di celle di memoria utilizzate. Tuttavia, l astrazione è sufficiente per permettere di rappresentare la maggior parte dei valori ed effettuare i calcoli necessari con una accuratezza adeguata. Tabella 2.5 Tipi di dati interi in C. Tipo Intervallo di valori in un calcolatore tradizionale short 32, ,767 unsigned short ,535 int 2,147,483, ,147,483,647 unsigned 0.. 4,294,967,295 long 2,147,483, ,147,483,647 unsigned long 0.. 4,294,967,295 Le differenze tra tipi di dati numerici Potreste chiedervi perché sia necessario avere più di un tipo numerico. Non si potrebbe utilizzare il tipo double per qualsiasi valore numerico? In generale sì, ma su alcuni calcolatori, le operazioni su numeri interi vengono svolte più velocemente di quelle che manipolano numeri di tipo double. Inoltre, è necessaria una quantità di memoria minore per memorizzare dati di tipo int. Infine, le operazioni svolte su numeri interi calcolano il risultato preciso, mentre quando si utilizzano valori di tipo double può verificarsi un problema di accuratezza o un errore di arrotondamento. Questo dipende dal modo diverso utilizzato per rappresentare i valori numerici di tipo differente nella memoria del calcolatore: tutti i valori sono rappresentati in memoria mediante una sequenza binaria, ossia una sequenza di 0 e 1. Tuttavia, la sequenza binaria utilizzata per rappresentare il valore 13 di tipo int è diversa da quella utilizzata per rappresentare lo stesso valore di tipo double, ossia Di fatto la rappresentazione interna dipende dall architettura del calcolatore e, in generale, i valori numerici double richiedono una quantità di memoria superiore rispetto ai valori numerici di tipo int. Nella Figura 2.2 è possibile confrontare i formati per i tipi int e double.

11 Panoramica del linguaggio C 41 Formato tipo int Formato tipo double Numero binario Segno Esponente Mantissa Figura 2.2 Formato interno per il tipo int e il tipo double. I numeri interi positivi vengono rappresentati nel sistema binario: il valore intero 13 viene rappresentato con il valore binario La notazione utilizzata per il tipo double (chiamata virgola mobile, o floating point) è simile alla notazione scientifica. La rappresentazione è costituita da tre sezioni: il segno (0 per valori positivi, 1 per quelli negativi), la mantissa e l esponente. La mantissa è una frazione binaria compresa tra 0.5 e 1.0. L esponente è un valore intero. Il valore di mantissa ed esponente sono tali per cui vale la seguente formula: numero reale = mantissa 2 esponente Se si utilizzano complessivamente 64 bit per rappresentare un valore di tipo double, 1 bit viene usato per il segno, 11 bit per l esponente e i rimanenti 52 per la mantissa. Poiché il numero di bit utilizzati è finito, non è possibile rappresentare in modo preciso qualsiasi valore di tipo double, come verrà discusso in seguito. I valori di tipo double possono avere una parte frazionaria, cosa non consentita ai valori di tipo int. Inoltre, il formato di tipo double consente di rappresentare una finestra di valori più ampia rispetto al formato di tipo int. Tale finestra dipende in realtà dalla specifica implementazione, ma lo standard ANSI per il linguaggio C specifica che per il tipo int deve essere possibile rappresentare almeno i valori positivi da 1 a (approssimativamente ). Per i valori positivi di tipo double la finestra minima va da a Lo standard ANSI C mette a disposizione alcuni tipi per rappresentare i valori interi, oltre al tipo int. La Tabella 2.5 elenca i tipi di dati per la rappresentazione dei valori interi, specificando anche le finestre di valori rappresentabili con riferimento a un calcolatore tipico (short <= int <= long). Vale la pena notare che il valore più grande rappresentabile con un tipo unsigned integer è quasi il doppio del valore rappresentabile con il tipo signed. Questo dipende dal fatto che nel primo caso si dispone di un bit di più per rappresentare il valore, quello del segno, non utilizzato. Anche per rappresentare valori reali lo standard ANSI C definisce tre tipi, ciascuno dei quali richiede una diversa quantità di memoria: float, double e long double. I valori di tipo float devono avere una precisione di almeno 6 cifre (le prime 6 cifre della parte frazionaria devono essere corrette); la precisione per valori di entrambi i tipi double e long double deve essere di almeno 10 cifre decimali. La Tabella 2.6 elenca le finestre di valori positivi rappresentabili da ciascuno di questi tipi di dati, con riferimento a un calcolatore tipico. Il tipo di dato char Il tipo di dato char consente di rappresentare un singolo carattere: una lettera, una cifra o un simbolo speciale. Ogni valore di tipo char viene delimitato da apici (o apostrofi) singoli, come mostrato di seguito. 'A' 'z' '2' '9' '*' ':' '"' ' '

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese

Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese 03-10-2003 Il linguaggio C Linguaggio general-purpose Il linguaggio C Creato nel 1972 nei Bell Labs da Dennis Ritchie su PDP11 Usato per il Sistema Operativo Unix da Ken Thompson Negli anni 80 nasce ANSI

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C Introduzione 2 Introduzione al C Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

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

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di

Dettagli

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin Linguaggio C Tipi predefiniti Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Il concetto di tipo (reprise) Nome che indica

Dettagli

Somma di numeri binari

Somma di numeri binari Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di

Dettagli

Linguaggio C Struttura dei programmi

Linguaggio C Struttura dei programmi FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Struttura dei programmi 2001 Pier Luca Montessoro - Davide

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

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

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Input/Output di numeri

Input/Output di numeri Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso

Dettagli

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

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento Linguaggio C Gli Operatori Gli Operatori Gli operatori sono simboli (sia singoli caratteri che loro combinazioni) specificano come devono essere manipolati gli operandi dell espressione Operatori aritmetici

Dettagli

Variabili. Tipi di dati di base. Variabili. Variabili

Variabili. Tipi di dati di base. Variabili. Variabili Variabili 2 Tipi di dati di base Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Porzioni di memoria RAM usate per mantenere dati variabili nel tempo La definizione di una variabile riserva

Dettagli

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale Analogico vs. Digitale LEZIONE II La codifica binaria Analogico Segnale che può assumere infiniti valori con continuità Digitale Segnale che può assumere solo valori discreti Analogico vs digitale Il computer

Dettagli

Informatica (A-K) 7. Linguaggio C - 1

Informatica (A-K) 7. Linguaggio C - 1 Storia del linguaggio C Informatica (A-K) 7. Linguaggio C - 1 Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Linguaggio C 1972, nato come evoluzione

Dettagli

I.4 Rappresentazione dell informazione

I.4 Rappresentazione dell informazione I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Sintassi: Per la dichiarazione di variabili dei tipi fondamentali:

Sintassi: Per la dichiarazione di variabili dei tipi fondamentali: Sintassi: Per la dichiarazione di variabili dei tipi fondamentali: declaration ::= type declarator list ; declarator list ::= declarator {, declarator} opt declarator ::= identif ier identif ier = initializer

Dettagli

La programmazione nel linguaggio C

La programmazione nel linguaggio C 3 La programmazione nel linguaggio C 3.0 La programmazione nel linguaggio C c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 3.0 0 Introduzione ai programmi

Dettagli

Elementi di C++ di base

Elementi di C++ di base Elementi di C++ di base Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 10 ottobre, 2001 Gino Perna Esempi di semplici programmi in C++ Il programma più semplice consiste

Dettagli

La codifica. dell informazione

La codifica. dell informazione 00010010101001110101010100010110101000011100010111 00010010101001110101010100010110101000011100010111 La codifica 00010010101001110101010100010110101000011100010111 dell informazione 00010010101001110101010100010110101000011100010111

Dettagli

Rappresentazione binaria delle variabili (int e char)

Rappresentazione binaria delle variabili (int e char) Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati

Dettagli

Le direttive del Preprocessore

Le direttive del Preprocessore Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII. Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned

Dettagli

Laboratorio di informatica Ingegneria meccanica

Laboratorio di informatica Ingegneria meccanica Interi in complemento a 2 () Laboratorio di informatica Ingegneria meccanica Lezione 5 29 ottobre 2007 Con N bit sono rappresentabili tutti gli interi nell'intervallo [-2^(N-), 2^(N-)-] Esempio: 6 bit,

Dettagli

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola. Tipi di dato Le variabili in C KP Cap.3 pp.95-129 Cap.5 pp.190-193 DD Cap. 9 pp.352-355 Abbiamo già parlato delle variabili, ed abbiamo fin ora usato il tipo int, ma abbiamo molte altre possibiltà I tipi

Dettagli

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi

Dettagli

Introduzione al linguaggio C

Introduzione al linguaggio C INFORMATICA B Ingegneria Elettrica Introduzione al linguaggio C Introduzione Linguaggio di programmazione ad alto livello Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro

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

STORIA E CARATTERISTICHE

STORIA E CARATTERISTICHE IL LINGUAGGIO C STORIA E CARATTERISTICHE STORIA E VERSIONI Sviluppato da Dennis Ritchie ai Bell Labs nel 1972 per realizzare il sistema operativo UNIX K&R C: 1978 (prima versione, K&R dal nome degli autori

Dettagli

Rappresentazione dei numeri reali in un calcolatore

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

Dettagli

Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse

Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse Una classe Borsellino Tipi numerici di base - Interi e decimali Definizione di costanti /** Realizza un borsellino per le monete. Registra il numero di monete e calcola il valore totale public class Purse

Dettagli

La sintassi del C APPENDICE H

La sintassi del C APPENDICE H APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i

Dettagli

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 LA CODIFICA DELL INFORMAZIONE Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 Codifica dati e istruzioni Per scrivere un programma è necessario rappresentare istruzioni

Dettagli

Linguaggio C. Appunti per il corso di Laboratorio di Algoritmi e Strutture Dati. Stefano Aguzzoli

Linguaggio C. Appunti per il corso di Laboratorio di Algoritmi e Strutture Dati. Stefano Aguzzoli Linguaggio C Appunti per il corso di Laboratorio di Algoritmi e Strutture Dati Stefano Aguzzoli Alcune note introduttive Orario lezioni: Lunedì: 11:40 13:10, Giovedì: 10:40-11:25 sempre in Aula V3, Via

Dettagli

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

Dettagli

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti

Funzioni di I/O per numeri. Input e output di valori numerici. Input formattato scanf. Stream preesistenti Funzioni di I/O per numeri 2 Input e output di valori numerici Ver. 2.4.2 2012 - Claudio Fornaro - Corso di programmazione in C Per utilizzare le funzioni di Input/Output bisogna includere il file di intestazione

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

Espressione di chiamata di funzione

Espressione di chiamata di funzione Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è

Dettagli

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale Lezione 6 Notazione posizionale Ci sono solo 10 tipi di persone al mondo: quelle che conoscono la rappresentazione dei numeri in base 2, e quelle che non la conoscono... Programmazione I Paolo Valente

Dettagli

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base Cambiamenti di base Tecniche Informatiche di Base TIB 1 Il sistema posizionale decimale L idea del sistema posizionale: ogni cifra ha un peso Esempio: 132 = 100 + 30 + 2 = 1 10 2 + 3 10 1 + 2 10 0 Un numero

Dettagli

La "macchina" da calcolo

La macchina da calcolo La "macchina" da calcolo Abbiamo detto che gli algoritmi devono essere scritti in un linguaggio "comprensibile all'esecutore" Se il nostro esecutore è il "calcolatore", questo che linguaggio capisce? che

Dettagli

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

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

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Linguaggio C Variabili e tipi di dato

Linguaggio C Variabili e tipi di dato FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Variabili e tipi di dato 2001 Pier Luca Montessoro - Davide

Dettagli

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari Lezione 4 L artimetica binaria: I numeri relativi e frazionari Sommario I numeri relativi I numeri frazionari I numeri in virgola fissa I numeri in virgola mobile 1 Cosa sono inumeri relativi? I numeri

Dettagli

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

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

Dettagli

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO 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

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

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

Sommario. Note alla traduzione... xix

Sommario. Note alla traduzione... xix Sommario Prefazione... xv L utilizzo del linguaggio C per insegnare a sviluppare programmi...xv Puntatori e organizzazione del testo...xvi Concetti di ingegneria del software...xvi Aspetti pedagogici...xvii

Dettagli

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2009/2010 Lab 02 Tipi semplici in C Lab02 1 Obiettivo dell esercitazione Acquistare

Dettagli

Il Modello di von Neumann (2) Prevede 3 entità logiche:

Il Modello di von Neumann (2) Prevede 3 entità logiche: Introduzione all Architettura degli Elaboratori Sommario Macchina di von Neumann Esecuzione dei programmi Rappresentazione dei dati Dati numerici Dati alfabetici 1 2 Il Modello di von Neumann (1) L architettura

Dettagli

Calcolo numerico e programmazione Rappresentazione dei numeri

Calcolo numerico e programmazione Rappresentazione dei numeri Calcolo numerico e programmazione Rappresentazione dei numeri Tullio Facchinetti 16 marzo 2012 10:54 http://robot.unipv.it/toolleeo Rappresentazione dei numeri nei calcolatori

Dettagli

Le funzioni, e le istruzioni di input/output

Le funzioni, e le istruzioni di input/output Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali

Dettagli

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali Un numero reale è una grandezza continua Può assumere infiniti valori In una rappresentazione di lunghezza limitata, deve di solito essere approssimato. Esistono due forme

Dettagli

Mini-dispensa sui puntatori in C

Mini-dispensa sui puntatori in C Mini-dispensa sui puntatori in C P. Zavarise Versione 1 ottobre 013 1 Valore e indirizzo di una variabile Ripassiamo il significato di dal punto di vista del programmatore. int a=; Viene creata una variabile

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

Dettagli

Codifica. Rappresentazione di numeri in memoria

Codifica. Rappresentazione di numeri in memoria Codifica Rappresentazione di numeri in memoria Rappresentazione polinomiale dei numeri Un numero decimale si rappresenta in notazione polinomiale moltiplicando ciascuna cifra a sinistra della virgola per

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono La codifica binaria Fondamenti di Informatica Introduzione q Il calcolatore usa internamente una codifica binaria (0 e 1) per rappresentare: i dati da elaborare (numeri, testi, immagini, suoni, ) le istruzioni

Dettagli

Lezione 10. L arte della programmazione

Lezione 10. L arte della programmazione Lezione 10 Linguaggi di programmazione: il C Le variabili e le costanti L assegnazione Gli operatori La documentazione L input/output L arte della programmazione La soluzione di un problema tramite un

Dettagli

Corso sul linguaggio C Modulo Tipi di dato

Corso sul linguaggio C Modulo Tipi di dato Corso sul linguaggio C Modulo 1 1.3 - Tipi di dato 1 Prerequisiti Concetto di espressione Cenni sulla struttura del calcolatore 2 1 Introduzione In questa lezione si esaminano i tipi di dato. I tipi di

Dettagli

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due Conversione di base Dato N>0 intero convertirlo in base b dividiamo N per b, otteniamo un quoto Q 0 ed un resto R 0 dividiamo Q 0 per b, otteniamo un quoto Q 1 ed un resto R 1 ripetiamo finché Q n < b

Dettagli

Lezione 3. I numeri relativi

Lezione 3. I numeri relativi Lezione 3 L artimetcia binaria: i numeri relativi i numeri frazionari I numeri relativi Si possono rappresentare i numeri negativi in due modi con modulo e segno in complemento a 2 1 Modulo e segno Si

Dettagli

Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche.

Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche. Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche. APPUNTI SUL LINGUAGGIO C I computer elaborano i dati sotto il controllo

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Le variabili in C KP Cap. 3, pp. 95-129 Cap. 5, pp. 190-193 DD Cap. 9, pp.352-355 Tipi di dato Abbiamo già parlato delle variabili, ed

Dettagli

La programmazione in linguaggio C

La programmazione in linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1 I sistemi di numerazione Informatica - Classe 3ª, Modulo 1 1 La rappresentazione interna delle informazioni ELABORATORE = macchina binaria Informazione esterna Sequenza di bit Spett. Ditta Rossi Via Roma

Dettagli

Capitolo 4: Tabelle. y(x) = x 3 ì 2x. Capitolo 4: Tabelle 67. Nota: le tabelle non sono disponibili nel modo di rappresentazione grafica 3D.

Capitolo 4: Tabelle. y(x) = x 3 ì 2x. Capitolo 4: Tabelle 67. Nota: le tabelle non sono disponibili nel modo di rappresentazione grafica 3D. Capitolo 4: Tabelle 4 Definizione di tabelle...68 Panoramica della procedura per generare una tabella...69 Impostazione dei parametri di tabella...70 Visualizzazione di una tabella in modo automatico...72

Dettagli

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere Tipi elementari, costanti 1 Tipi di dati VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori Tipi Semplici intero reale carattere Strutturati 2 1 Tipo intero Gli interi servono

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. 2016-2017 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

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa lezione 1. Alcune considerazioni sulla differenza tra warnings ed errors 2. Tipi i semplici i 3. Input e output in linguaggio C 4. Espressioni

Dettagli

Preprocessore, linker e libreria standard

Preprocessore, linker e libreria standard Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente

Dettagli

La codifica binaria. Informatica B. Daniele Loiacono

La codifica binaria. Informatica B. Daniele Loiacono La codifica binaria Informatica B Introduzione Il calcolatore usa internamente una codifica binaria ( e ) per rappresentare: i dati da elaborare le istruzioni dei programmi eseguibili Fondamenti di codifica

Dettagli

EXCEL software Excel .xlxs, La cella intestazione della colonna intestazione di righe l indirizzo della cella testo numeri formule

EXCEL software Excel .xlxs, La cella intestazione della colonna intestazione di righe l indirizzo della cella testo numeri formule EXCEL Il software Excel appartiene alla categoria dei fogli elettronici. Ogni foglio è composto da 1.048.576 righe per 16.384 colonne suddivise in celle che è possibile collegare tra loro: in tal modo

Dettagli

Aritmetica dei Calcolatori

Aritmetica dei Calcolatori Aritmetica dei Calcolatori Nicu Sebe March 14, 2016 Informatica Nicu Sebe 1 / 34 Operazioni su Bit Bit Scienza della rappresentazione e dell elaborazione dell informazione Abbiamo visto come i computer

Dettagli

Sistemi di numerazione

Sistemi di numerazione Sistemi di numerazione Introduzione Un sistema di numerazione è un sistema utilizzato per esprimere i numeri e possibilmente alcune operazioni che si possono effettuare su di essi. Storicamente i sistemi

Dettagli

Rappresentazione dei Numeri

Rappresentazione dei Numeri Rappresentazione dei Numeri Rappresentazione dei Numeri Il sistema numerico binario è quello che meglio si adatta alle caratteristiche del calcolatore Il problema della rappresentazione consiste nel trovare

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli