Introduzione al linguaggio C

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione al linguaggio C"

Transcript

1 Introduzione al linguaggio C Qualche nota storica C sviluppato da Dennis M. Ritchie agli AT&T Bell Labs fra il 1969 e il 1973 Nato come linguaggio di programmazione per lo sviluppo di Unix e per sopperire alle limitazioni del linguaggio B Ritchie e Brian Kernighan nel 1978 pubblicano il libro "The C Programming Language". Il dialetto descritto nel libro è noto come K&R-Style Grazie alla portabilità, il linguaggio iniziò subito ad essere apprezzato. Ma è mancata una versione standard del linguaggio fino ANSI 1989 (ANSI-C) Ultime revisioni dello Standard risalgono al 1999 e al 2011 e sono dette Standard C99 e Standard C11 1

2 Linguaggio C Linguaggio C Software che forse avete usato e che sono scritti in C: Java virtual machine Linux (ma una piccola parte è in assembly) Kernel di Mac OS X Windows (in C e in C++) Oracle DBMS (in C e in C++) Firmware dei router Cisco 2

3 Caratteristiche di base Linguaggio imperativo, procedurale Linguaggio compilato, ovvero, il codice sorgente viene tradotto interamente da un compilatore in codice eseguibile Variabili 3

4 variabili Per ogni variabile esistono due operazioni fondamentali: Dichiarazione: il compilatore deve sapere quanto spazio riservare per la variabile e come interpretare i bit contenuti in questa area di memoria Assegnamento (modifica) di un valore: calcolo di un nuovo valore e modifica del valore corrente di una variabile. Il valore contenuto in una variabile è l ultimo assegnatole e resta inalterato finché un successivo assegnamento non modifica il valore stesso Una variabile può essere usata (in un espressione, per modificarne il valore) solo dopo essere stata dichiarata variabili Dichiarazione: int fattoriale; Assegnamento: fattoriale = 1; Dichiarazione e inizializzazione: int fattoriale = 1; Il valore assegnato deve essere coerente con il tipo della variabile Il C, come altri linguaggi di programmazione, è fortemente tipato, cioè per ogni espressione utilizzata nel programma il compilatore deve sempre essere in grado di determinarne il tipo 4

5 Dichiarazione di costanti Sintassi const <tipo> <identificatore> = <espr>; Es.: const int N = 100; const float PIGRECO = F; const char SIM = 'A'; Le costanti sono variabili alle quali non è permesso cambiare valore: non possono cioè trovarsi a sinistra dell operatore di assegnamento Convenzione: il nome di costante si scrive interamente con caratteri maiuscoli Dichiarazione di costanti simboliche Per definire una costante simbolica si scrive: Es.: #define <nome> <valore> #define PIGR #define MSG "ciao mondo!" Convenzione: come le costanti, devono essere scritte interamente in maiuscolo Differenza tra #define e const: Una costante definita con const occupa memoria come una variabile, ma non può essere modificata Una costante definita con #define non occupa memoria: il preprocessore del C, prima di compilare il codice, sostituisce ogni simbolo con il suo corrispondente valore (come se fosse un sostituisci tutti in un editor di testo). 5

6 Variabili Una variabile non può essere vuota : a una variabile è sempre associata una locazione di memoria e quindi un valore, che corrisponde al valore dei bit contenuti nella zona di memoria Se, ad esempio, il compilatore associa a una variabile la locazione di memoria con indirizzo 2341, allora la variabile assumerà come valore il valore casuale dei bit all indirizzo 2341 (ad esempio 42) Se non provvedete voi, inizialmente la variabile fattoriale conterrà quindi spazzatura Regola d oro in C: Inizializzare sempre le variabili! Variabili Ogni variabile è caratterizzata da: Nome: nome simbolico con cui si fa riferimento alla variabile all interno di un programma Tipo: definisce l'insieme dei valori che la variabile può assumere Indirizzo: identifica un'area di memoria che mantiene il valore corrente della variabile Valore: valore corrente della variabile Ad esempio: nome: fattoriale tipo: int indirizzo: 2341 valore: 42 6

7 Tipi primitivi Un tipo di dato è caratterizzato da: la rappresentazione in memoria dei dati di quel particolare tipo (es. quanti bit si usano) l insieme di operazioni ammissibili su dati di quel tipo A cosa servono i tipi di dati? Per permettere di effettuare controlli statici (cioè al momento della compilazione e non in fase di esecuzione) sulla correttezza sintattica del programma e quindi prevenire errori di programmazione Tipi primitivi Tipi primitivi del C: char, int, short, long, float, double I tipi char, int, short, long contengono numeri interi, float e double numeri in virgola mobile Specificatori opzionali: signed, unsigned 7

8 Tipi primitivi Lo standard C, che è pensato per una grande varietà di architetture diverse, non specifica esattamente quanto siano grandi i tipi primitivi Per sapere quanti byte occupa un determinato tipo su una macchina specifica, si usa a tempo di esecuzione l operatore sizeof. Ad es. printf("%d", sizeof(int)); Tipo char short int long float double Dimensione di solito 1 byte di solito 2 byte di solito 4 byte di solito 8 byte Singola precisione (di solito 4 byte) Precisione doppia (di solito 8 byte) Tipi interi I tipi int, short e long permettono di rappresentare numeri interi positivi e negativi su un numero di bit che dipende dalla macchina Le operazioni possibili su variabili di tipo intero sono le operazioni aritmetiche +, -, *, / e l operatore % (modulo) Attenzione: la divisione tra due interi è un intero Es.: 16/5 dà come risultato 3 Per avere il resto di questa divisione occorre utilizzare l operatore % (modulo) 16%5 dà come risultato 1 8

9 Tipi interi Si può specificare se si rappresentano interi con segno o senza segno: signed int e unsigned int Per default i tipi int hanno segno (cioè scrivere semplicemente int è equivalente a scrivere signed int) una variabile unsigned è normalmente rappresentata con lo stesso numero di byte della variabile signed, tuttavia i valori memorizzati sono privi di segno (e quindi rappresenta esclusivamente numeri positivi) il numero di bit usato per rappresentare un int varia tra le diverse architetture. Lo standard specifica soltanto che vengano usati almeno 16 bit Nel file header limits.h sono indicati con costanti simboliche il valore minimo e massimo che possono assumere le variabili di un determinato tipo (ad es. INT_MIN, INT_MAX, UINT_MAX) Tipo char Rappresenta un numero; di solito occupa 8 bit Prevede quindi come operatori quelli aritmetici Usato di solito per contenere il codice ASCII di un carattere Nelle operazioni, bisogna inoltre considerare che le tabelle ASCII dei caratteri occidentali rispettano il seguente ordinamento: '0'<'1'<'2'<...<'9'<... <'A'<'B'<'C'<...<'Z'<... <'a'<'b'<'c'<...<'z' 9

10 Tipi interi Tipo Dimensione in byte su x86 a 64 bit Intervallo rappresentabile signed char unsigned char signed short unsigned short signed int unsigned int signed long (9 miliardi di miliardi) unsigned long (18 miliardi di miliardi) Tipi interi Si consideri il seguente programma su una macchina x86 a 64 bit #include <stdio.h> #define BIG //2 miliardi int main(void) { int a, b = BIG, c = BIG; a = b + c; printf("%d\n", a); } Nonostante i due addendi siano rappresentabili con int, la loro somma è superiore al valore massimo rappresentabile da un int. Si ha overflow Il compilatore e il runtime del C non segnalano errori e l esecuzione prosegue con risultati scorretti (in questo caso ) È compito del programmatore assicurarsi che i valori non escano dagli intervalli appropriati 10

11 Tipi float e double Rappresentano (a precisione singola i float e a precisione doppia i double) i numeri reali In realtà sono solo una approssimazione (per precisione e intervallo dei valori rappresentabili) dei numeri reali Le operazioni aritmetiche sui numeri in virgola mobile non sono necessariamente esatte ma sono approssimate Le operazioni possibili sui tipi float e double sono le operazioni aritmetiche Espressioni 11

12 Espressioni numeriche Come abbiamo già visto: 4 è un espressione il cui valore corrisponde alla costante stessa x è una variabile, ma è anche un espressione il cui valore corrisponde al valore assunto dalla variabile (x+y)*3-z è un espressione aritmetica in cui valgono le normali precedenze tra operatori Espressioni con operatori di confronto Uguaglianza espr1 == espr2 è un espressione che assume il valore: 0 quando la valutazione di espr1 restituisce un valore diverso dalla valutazione di espr2 1 altrimenti. Es: int x=5, y=7; l espressione x == y vale 0 (falso) mentre x+2 == y vale 1 (vero) Disuguaglianza espr1!= espr2 è un espressione che vale 1 quando espr1 è diverso da espr2, 0 altrimenti Es.: int x=5, y=7; x!= y vale 1 (vero) x+2!= y vale 0 (falso) 12

13 Espressioni con operatori di confronto Maggiore (minore) espr1 > espr2 vale 1 (vero) quando espr1 è maggiore di espr2, 0 (falso) altrimenti [analogo ma opposto per il minore] Es.: int x=5, y=7; x > y è falsa (0) x+2 > y è ancora falsa (0) x+5 > y è vera (1) Maggiore o uguale (minore o uguale) espr1 >= espr2 vale 1 quando espr1 è maggiore o uguale di espr2, 0 viceversa. Es.: int x=5, y=7; x >= y è falsa (0) x+2 >= y è vera (1) x+5 >= y è vera (1) Espressioni con operatori di confronto Negazione!(x==y) è vera quando x è diverso da y!(x>=3) è vera quando x è minore di 3, ovvero quando l espressione x>=3 è falsa!(!x) doppia negazione afferma: l espressione è vera quando è vera x 13

14 Valori logici In C non esiste un tipo booleano. Quando si valuta un espressione logica (ad esempio in una istruzione if), si assume che sia falso un valore uguale a 0 e vero qualsiasi valore diverso da 0 Quindi in un espressione logica scrivere diverso da zero è opzionale if (trovato) equivale a if (trovato!= 0) È comunque meglio scrivere!=0 se facilita la comprensione del codice L espressione di assegnamento Anche l assegnamento è un espressione x = espr è un espressione il cui valore corrisponde al valore dell espressione espr. In quanto espressione potrebbe essere usata per discriminare una condizione vera da una condizione falsa, infatti: x = 0 è un espressione falsa perché vale 0 x = 8 è un espressione vera perché vale 8, diverso da 0 ATTENZIONE! Questa caratteristica è una potenziale fonte d errore, spesso difficile da scoprire: if (eta=18) { } Una disattenzione di questo tipo non causa alcun tipo di errore di compilazione, ma il comportamento del codice non è quello atteso 14

15 Espressioni complesse Due espressioni possono essere congiunte per mezzo dell operatore && (AND logico) Se x rappresenta l età di un individuo, diremo che è minorenne se: x >= 0 && x < 18 L espressione è vera quando valgono entrambe le condizioni su x Due espressioni possono essere disgiunte per mezzo dell operatore (OR logico) Se x rappresenta il peso di un individuo adulto, diremo che non è normale se: x < 45 x > 180 L espressione è vera quando vale almeno una delle condizioni su x Cast Cambiamenti di tipo impliciti ed espliciti 15

16 Esempio Scriviamo un programma che converte temperature Fahrenheit in temperature Celsius La formula è cels = (fahr - 32) * 5 * 1/9 Sfruttando la proprietà associativa del prodotto possiamo scrivere la formula in due modi equivalenti: cels = ((fahr - 32) * 5) / 9 cels = (fahr - 32) * (5 / 9) Esempio #include <stdio.h> int main(void) { /* stampa la tabella Fahrenheit-Celsius per fahr=0, 40,..., 320 */ int fahr, cels1, cels2, inf, sup, incr; inf = 0; /* estremo inferiore della tabella */ sup = 320; /* estremo superiore della tabella */ incr = 40; /* incremento */ fahr = inf; printf("fahr\tcels1\tcels2\n"); while (fahr <= sup) { cels1 = ((fahr - 32) * 5) / 9; cels2 = (fahr 32) * (5/9); printf("%d\t%d\t%d\n", fahr, cels1, cels2); fahr = fahr + incr; } return 0; } 16

17 Esempio L output del programma è: fahr cels1 cels Osservazione Nel nostro programma che differenza c è tra: cels1 = ((fahr - 32) * 5) / 9; e cels2 = (fahr - 32) * (5 / 9); 17

18 Osservazione Supponiamo fahr = 120 e valutiamo le due espressioni cels1 = ((fahr - 32) * 5) / 9; cels1 = ((120-32) * 5) / 9; cels1 = (88 * 5) / 9; cels1 = 440 / 9; cels1 = 48; cels2 = (fahr - 32) * (5 / 9); cels2 = (120-32) * (5 / 9); cels2 = 88 * (5 / 9); cels2 = 88 * 0; cels2 = 0; Overloading In C (come in molti altri linguaggi) operazioni primitive (+,-,*,/,%) sono definite per tipi omogenei (operandi tutti int, o tutti float, o tutti double, ) Overloading di significati: lo stesso simbolo (/) è utilizzato in contesti diversi e può dare risultati diversi. int x, y; Se x=10 e y=4; x/y vale 2 double x, y; Se x=10 e y=4.0; x/y vale 2.5 /* divisione tra float, il risultato è di tipo float*/ /* divisione tra interi, il risultato è ancora un valore di tipo intero*/ /* divisione tra double, il risultato è ancora di tipo double*/ float x, y; Se x=10.0f e y=4.0f; x/y vale

19 Espressioni con tipi non omogenei Se gli operatori di base sono definiti tra tipi primitivi omogenei, cosa accade quando si scrive un espressione non omogenea? int x = 5; double y = 2.0; Qual è il tipo dell'espressione x/y? Viene eseguita la divisione tra reali o quella tra interi? Conversioni di tipo implicite In C sono possibili operazioni solo tra operandi omogenei, quindi il tipo degli operandi è temporaneamente forzato in modo che l'espressione x/y diventi omogenea Il linguaggio promuove automaticamente, quando necessario, i tipi più piccoli in tipi più grandi seguendo la gerarchia char < short < int < long < float < double Cioè un valore di tipo char può essere visto come un valore di tipo short oppure int oppure long ecc. Analogamente un valore di tipo int può essere visto come di tipo long, float o double Nel nostro esempio, il valore assunto dalla variabile x viene promosso al tipo double. In questo modo l'espressione x/y diventa omogenea di tipo double e la divisione diventa in virgola mobile 19

20 Esempio int x = 5; char y = 7; double r = 5.0; double k =(x+y)/ r; Passo 1: (x+y) y viene convertito da char all intero corrispondente viene effettuata la somma tra interi risultato intero tmp = 12 Passo 2 (tmp / r) tmp viene convertito nel double corrispondente (12.0) viene applicata la divisione tra double risultato double k=2.4 Compatibilità nell assegnamento In generale, sono implicite le conversioni di tipo che non provocano perdita di informazione Tuttavia, le espressioni che possono provocare perdita di informazioni non sono illegali: il compilatore genera un warning. Per tacitare il warning si può fare un cast esplicito Esempio int i=5; float f=2.71f; double d=3.1415; f = f+i; /* int convertito in float */ i = d/f; /* double convertito in int! */ f = d; /* arrotondamento o troncamento */ Al momento della compilazione verrà visualizzato il messaggio: Possible warning: conversion may lose significant digits che avvisa che l assegnamento di un valore float a una variabile intera può causare la perdita di informazioni e che, di per sé, non è un errore 20

21 Casting In qualunque espressione è possibile forzare una particolare conversione utilizzando l operatore di cast Sintassi Esempi ( <tipo> ) <espressione> int i=5; double x=7.77; double y=7.1; i = (int) sqrt(384); //sqrt(384)== x = y*y; i = (int) x % (int) y; Esempio Ricordate. Come il valore 9 rappresenta una costante intera, il valore 9.0 rappresenta una costante in virgola mobile, quindi la divisione i/9 è diversa dalla divisione i/9.0. Infatti la prima è intera e la seconda è in virgola mobile Supponiamo di volere effettuare la divisione in virgola mobile nell espressione double cels3 = ((fahr - 32) * 5) / 9; Non basta dichiarare cels3 di tipo double Infatti la divisione sarebbe pur sempre quella intera e solo successivamente il risultato verrebbe promosso a double: Con fahr = 120, l espressione cels3 = ((fahr - 32) * 5) / 9; assume il valore 48, che verrebbe promosso al tipo double e cioè al valore 48.0 Perché la divisione sia in virgola mobile occorre forzare uno dei due operandi a essere di tipo float o double Esistono diversi modi per ottenere questo risultato. 21

22 Esempio Un primo modo è quello di usare costanti in virgola mobile invece che intere cels3 = ((fahr - 32) * 5) / 9.0; Un secondo modo è quello di forzare il tipo di un espressione con un cast cels3 = (double)((fahr - 32) * 5) / 9; Il cast forza al tipo double il valore dell espressione ((fahr - 32) * 5) Sempre con fahr = 120 l espressione ((fahr - 32) * 5) assume il valore 440, il quale viene forzato al tipo double, quindi 440.0, e successivamente viene valutata l'espressione 440.0/9 Per quanto detto prima, i tipi dei due operandi vengono resi omogenei: 9 viene promosso a double e si ha 440.0/ divisione in virgola mobile! Cast: osservazione sulle precedenze Poiché l operatore di cast ha precedenza rispetto agli operatori aritmetici, nell espressione (double)((fahr - 32) * 5) / 9 solo ((fahr - 32) * 5) è soggetta al cast Attenzione! Nella seguente espressione la divisione non è in virgola mobile: perché? (double)(((fahr - 32) * 5) / 9) 22

23 Overflow Si riconsideri il programma su una macchina x86 a 64 bit #include <stdio.h> #define BIG //2 miliardi int main(void) { int b = BIG, c = BIG; long a; a = b + c; printf("%ld\n", a); return 0; } Rispetto alla versione vista in precedenza, abbiamo cambiato il tipo della variabile a da int a long. In questo caso si ha ancora overflow? Perché? Overflow Si ha overflow anche in questo caso: la somma è tra tipi int e dà un risultato int errato perché in overflow. Solo dopo avviene la promozione a long Una possibile soluzione consiste nel forzare la somma tra long: #include <stdio.h> #define BIG //2 miliardi int main(void) { int b = BIG, c = BIG; long a; a = b + (long) c; printf("%ld\n", a); return 0; } 23

24 Conversioni nei cast Quando si effettua un cast da un tipo a un altro (o quando si assegna un valore di un tipo a una variabile di un altro tipo), viene effettuata una conversione del valore Se la conversione avviene tra tipi per i quali ci può essere perdita di informazione, il compilatore può emettere un warning (per abilitare questo warning su gcc si può usare il flag Wconversion) Se la conversione è voluta, si può tacitare il warning rendendo il cast esplicito Conversioni nei cast Es. (su architettura x86 a 64 bit) int main(void) { int i1, i2 = 12; long l= ; //3 miliardi double d1, d2 = 7.0, d3 = 2.275; i1 = d2; //warning: implicit conversion turns floatingpoint number into integer e assegna 7 i1 = (int) d2; //assegna 7 i1 = (int) d3; //assegna 2 d1 = i2; //assegna 12.0 i1 = l; //warning: implicit conversion loses integer precision e assegna i1 = (int) l; //assegna return 0; } 24

25 Note sulla scrittura di codice Leggibilità del codice sorgente Un aspetto importante nella scrittura dei programmi consiste non solo nella correttezza e nell efficienza del codice, ma anche nella sua leggibilità Un codice sorgente facilmente leggibile è più facile da capire, permette di coglierne la struttura velocemente ed è più semplice da modificare in un secondo tempo, quando si fa la manutenzione del codice Quindi è importante usare nomi di variabile che rispecchino il loro uso e indentare il codice 25

26 L indentazione del codice sorgente Indentare il codice sorgente significa fare iniziare una linea a una certa distanza dal margine Ha lo scopo di mettere in evidenza blocchi di codice Si fa iniziare la linea con un certo numero di spazi (di solito multiplo di 3 o di 4) o di TAB L indentazione viene ignorata dal compilatore C: è utile esclusivamente agli esseri umani che metteranno mano al sorgente del programma Va aumentato il livello di indentazione per il corpo delle funzioni, dei cicli, delle istruzioni if else Il codice va indentato mentre si scrive il codice e non in un secondo momento L indentazione del codice sorgente Si confronti la leggibilità di queste due versioni (il compilatore C genera il medesimo eseguibile): #include <stdio.h> #define SIZE 1000 #define DASTAMPARE 1 #define DANONSTAMPARE 0 #include <stdio.h> #define SIZE 1000 #define DASTAMPARE 1 #define DANONSTAMPARE 0 int main(void) { unsigned int array[size]; unsigned int i, j; for (i = 0; i < SIZE; i++) array[i] = DASTAMPARE; for (i = 2; i < SIZE; i++) if (array[i] == DASTAMPARE) for (j = i + 1; j < SIZE; j++) if (j % i == 0) array[j] = DANONSTAMPARE; int main(void) { unsigned int array[size]; unsigned int i, j; for (i = 0; i < SIZE; i++) array[i] = DASTAMPARE; for (i = 2; i < SIZE; i++) if (array[i] == DASTAMPARE) for (j = i + 1; j < SIZE; j++) if (j % i == 0) array[j] = DANONSTAMPARE; } for (i = 2; i < SIZE; i++) if (array[i] == DASTAMPARE) printf( "%u\n", i); for (i = 2; i < SIZE; i++) if (array[i] == DASTAMPARE) printf( "%u\n", i); } 26

27 Utilizzo di costanti Nel codice sorgente bisogna cercare di non utilizzare valori numerici ma utilizzare delle costanti simboliche. In questo modo si hanno due vantaggi: Se fosse necessario cambiarne il valore, sarebbe più facile farlo perché si evita di modificare il codice sorgente in più punti È più facile comprendere il loro scopo Utilizzo di costanti Si confrontino queste due versioni #include <stdio.h> #define SIZE 1000 #define DASTAMPARE 1 #define DANONSTAMPARE 0 int main(void) { unsigned int array[size]; unsigned int i, j; } for (i = 0; i < SIZE; i++) array[i] = DASTAMPARE; for (i = 2; i < SIZE; i++) if (array[i] == DASTAMPARE) for (j = i + 1; j < SIZE; j++) if (j % i == 0) array[j] = DANONSTAMPARE; for (i = 2; i < SIZE; i++) if (array[i] == DASTAMPARE) printf("%u\n", i); #include <stdio.h> int main(void) { unsigned int array[1000]; unsigned int i, j; } for (i = 0; i < 1000; i++) array[i] = 1; for (i = 2; i < 1000; i++) if (array[i] == 1) for (j = i + 1; j < 1000; j++) if (j % i == 0) array[j] = 0; for (i = 2; i < 1000; i++) if (array[i] == 1) printf("%u\n", i); 27

28 Compilazione gcc produce due tipi principali di messaggio: warning ed errori I warning sono avvertimenti che indicano possibili problemi nel codice ma non pregiudicano la compilazione Non tutti i warning vengono visualizzati, quindi è preferibile utilizzare il flag -Wall: gcc -Wall sorgente.c -o eseguibile Per un warning, gcc riporta il nome del file sorgente, il numero di linea e colonna in cui è stato rilevato il warning e un messaggio Ad es., se nel file sorgente.c alla linea 5 ho un istruzione if (a=0), gcc stampa il messaggio: sorgente:5:8: warning: using the result of an assignment as a condition without parentheses È buona norma correggere il sorgente in modo da eliminare tutti i problemi segnalati dai warning Compilazione Gli errori, invece, interrompono la compilazione e l eseguibile non verrà generato Anche per gli errori, gcc riporta il nome del file sorgente, il numero di linea e colonna in cui è stato rilevato il problema e un messaggio Può succedere che l errore non sia nella linea segnalata ma nelle linee precedenti 28

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

Espressioni ed operatori in C

Espressioni ed operatori in C Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere

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

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

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura tt fisica i di ogni elaboratore è intrinsecamente capace di trattare vari domini i di dati, detti tipi i primitivi iti

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

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

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

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

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

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

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

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

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

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

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

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

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

Conversioni fra Tipi di Dati. Luca Abeni

Conversioni fra Tipi di Dati. Luca Abeni Conversioni fra Tipi di Dati Luca Abeni Tipi di Dato e Conversioni In C, ogni variabile è caratterizzata da un tipo I valori che la variabile può assumere dipendono dal tipo È possibile mescolare variabili

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

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Tipi e Valori 2 Ringraziamenti prof. Mirko Viroli,

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

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

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

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

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

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

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

IL PROBLEMA DEL PROGETTO

IL PROBLEMA DEL PROGETTO IL PROBLEMA DEL PROGETTO La descrizione del problema, in genere, non indica direttamente il modo per ottenere il risultato voluto (il procedimento risolutivo) Occorrono metodologie per affrontare il problema

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

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento

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

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni

Dettagli

$QDOLVLGHOSURJUDPPDTXDGUDWR

$QDOLVLGHOSURJUDPPDTXDGUDWR $QDOLVLGHOSURJUDPPDTXDGUDWR /* */ calcolare l area del quadrato #include main(){ int lato, area; printf("lato "); scanf("%d", &lato); if(lato < 0) printf("errore nei dati \n"); else { area =

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

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

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

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

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

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

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

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)

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

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

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

Il linguaggio C. Caratteristiche generali

Il linguaggio C. Caratteristiche generali Il linguaggio C Caratteristiche generali Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I 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 Lez. 8 - Introduzione all ambiente

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

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)

Dettagli

Concetti base programmazione. Antonio Gallo

Concetti base programmazione. Antonio Gallo Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Ingegneria Meccanica Lezione 3, 8 ottobre 2007 versione 9 ottobre 2007 Renato Menicocci Interi in complemento a 2 (I) Con N bit

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=

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

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

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

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

Riprendiamo l esercizio calcolatrice

Riprendiamo l esercizio calcolatrice Riprendiamo l esercizio calcolatrice Scrivere un programma calcolatrice che legga da tastiera due variabili intere a e b, poi Stampi un menu con un valore numerico associato a quattro operazioni possibili:

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

Tipi di dato in C. Ogni variabile in C ha associato un tipo, questo permette di:

Tipi di dato in C. Ogni variabile in C ha associato un tipo, questo permette di: Tipi di dato Tipi di dato in C Ogni variabile in C ha associato un tipo, questo permette di: Riservare memoria per la codifica dei valori che può assumere Rilevare errori legati all uso di operatori non

Dettagli

Il linguaggio C - Introduzione

Il linguaggio C - Introduzione Il linguaggio C - Introduzione Il C è un linguaggio imperativo legato a Unix, adatto all implementazione di compilatori e sistemi operativi. È stato progettato da D. Ritchie per il PDP-11 (all inizio degli

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

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

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Operazioni numeriche - Input

Operazioni numeriche - Input Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java

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

Istruzioni iterative (o cicliche)

Istruzioni iterative (o cicliche) Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

Introduzione alla programmazione in C(++)

Introduzione alla programmazione in C(++) Testi Testi Consigliati: Introduzione alla programmazione in C(++) A. Kelley & I. Pohl C didattica e programmazione A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. D. M. M. Ritchie

Dettagli

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

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

Dettagli

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

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione

Dettagli

direttive del preprocessore simboli speciali parole chiave identificatori costanti

direttive del preprocessore simboli speciali parole chiave identificatori costanti 5) Elementi di C #include #define TF2TC main() { double tc, tf, offset, conv; offset = 32.; direttive del preprocessore simboli speciali parole chiave identificatori costanti #ifdef TF2TC conv

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

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi). Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,

Dettagli

Istruzioni Condizionali in C

Istruzioni Condizionali in C Concetti chiave Istruzioni Condizionali in C Tipi di Istruzioni Condizionali Espressioni Blocchi d istruzioni Istruzioni Condizionali: if-else Istruzioni Condizionali: switch-case Istruzione break Istruzioni

Dettagli

Informatica Generale Andrea Corradini I linguaggi di programmazione

Informatica Generale Andrea Corradini I linguaggi di programmazione Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

LABORATORIO DI INFORMATICA 1

LABORATORIO DI INFORMATICA 1 UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA Luca Bernardinello LABORATORIO DI INFORMATICA 1 Corso di laurea in fisica Anno accademico 2015/2016 1 CHE COS È UN PROGRAMMA? Programma = oggetto multiforme. Distinguiamo

Dettagli

Classificazione Tipi semplici predefiniti Definizione di nuovi tipi Tipi strutturati

Classificazione Tipi semplici predefiniti Definizione di nuovi tipi Tipi strutturati Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

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

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI SULL USO DEI CARATTERI Ricordiamo che: int x; si legge con ( %d,&x) e si stampa con ( %d,x) float x; si legge con ( %f,&x) e si stampa con ( %f,x) double x;si legge con ( %lf,&x) e si stampa con ( %f,x)

Dettagli

Algoritmi e basi del C Struttura di un programma

Algoritmi e basi del C Struttura di un programma Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Programmare in C 1 Calcolare l area di un rettangolo /* Calcolo area rettangolo */ int base; int altezza; int area; Conosciamo base = 3; altezza = 7; area = base*altezza; printf("%d",

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Linguaggio C Espressioni e operatori

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

Dettagli

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali AMBIENTE LOCALE E GLOBALE In C, ogni funzione ha il suo ambiente locale che comprende i parametri e le variabili definite localmente alla funzione Esiste però anche un ambiente globale: quello dove tutte

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

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

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

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

APPUNTI DI INFORMATICA APPUNTI DI INFORMATICA Per il biennio di liceo scientifico scienze applicate Sommario Il calcolo binario... 2 Numerazione Decimale... 2 Numerazione Binaria... 2 Conversione Binario -> Decimale... 2 Conversione

Dettagli

Sviluppare un programma in FORTRAN

Sviluppare un programma in FORTRAN Sviluppare un programma in FORTRAN Scrivere il file sorgente Editor di testo (emacs, vi, notepad, etc) Compilare Compilatore (ifort, gfortran, etc) Eseguire il programma Riga di comando, doppio click,

Dettagli

Informatica A. Il linguaggio C. A.a. 2006/2007. Allievi Ingegneria Gestionale

Informatica A. Il linguaggio C. A.a. 2006/2007. Allievi Ingegneria Gestionale Informatica A A.a. 2006/2007 Allievi Ingegneria Gestionale Il linguaggio C Tecnologia Software Il SW come Interfaccia Tra Utente e Macchina Fisica Programma dell utente (software applicativo) Gestione

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

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

Fondamenti di Programmazione. Sistemi di rappresentazione

Fondamenti di Programmazione. Sistemi di rappresentazione Fondamenti di Programmazione Sistemi di rappresentazione Numeri e numerali Il numero cinque 5 V _ Π 五 Arabo Romano Maya Greco Cinese Il sistema decimale Sistemi posizionali 1 10 3 + 4 10 2 + 9 10 1 + 2

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

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli