La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo.

Presentazioni simili


Presentazione sul tema: "Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo."— Transcript della presentazione:

1 Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo.

2 - 2 - Premessa Programmi provati sul compilatore Borland C Altri compilatori: lievi differenze Istruzioni per luso: Cercate di capire gli algoritmi Provate i programmi!!! Errori di sintassi Errori a run-time Modificate i programmi!!! Cosa succede se cambio/scambio/tolgo/aggiungo istruzioni? … e se volessi che facesse anche questaltra cosa?

3 - 3 - Le variabili Nome simbolico Rappresenta un dato in memoria Occupa una certa quantità di celle di memoria Lettura e scrittura Es.: a = 3; a = b; 3 = a; NO!!! Ha un tipo.

4 - 4 - I tipi ed il linguaggio C Un tipo influenza: Linterpretazione dei bit (carattere? intero? reale? …) Lo spazio occupato (allocato) in memoria Lintervallo dei valori che possono essere memorizzati Le operazioni permesse sulla variabile e la semantica associata Il C possiede le seguenti categorie (tipi semplici): Caratteri Numeri naturali Numeri interi Numeri in virgola mobile.

5 - 5 - Dichiarazione variabili Dichiarazione: tipo nome; Dichiarazione con inizializzazione: tipo nome = espressione; Valore non definito (ovvero, casuale) se non inizializzo Più variabili dello stesso tipo: tipo nome 1, nome 2, …, nome n ; tipo nome 1 =espr 1,nome 2 =espr 2,…, nome n =espr n ; Esempio: int x = 24, y, z = 34;

6 - 6 - Dichiarazione costanti Assegno un valore permanentemente Dichiarazione: const tipo nome = espressione; Più costanti: const tipo nome 1 = espressione 1, nome 2 = espressione 2, …, nome n = espressione n ; Esempio const int x = 24, y = 55; A cosa servono?.

7 - 7 - Caratteri NomeSignificatoOccupazione* e Range char carattere ASCII8 bittabella ASCII * Valore indicativo Operazioni consentite: assegnamento (=) relazionali (==, !=,, =) logici (&&, ||, !) operazioni aritmetiche (+, -, *, /(intera), %) ??? Costante esplicita: char pluto; pluto = 'a'; 'a' è detta literal o costante esplicita.

8 - 8 - Naturali e interi NomeSignificatoOccupazione* e Range short int intero corto16 bit[-32768, ] int intero16 bit[-32768, ] long int intero lungo32 bit[-2 31, 2 31 –1] * Valore indicativo unsigned short int naturale corto16 bit[0, 65535] unsigned int naturale16 bit[0, 65535] unsigned long int naturale lungo32 bit[0, ]

9 - 9 - Naturali e interi I valori espressi per Occupazione e Range sono indicativi Lo standard C stabilisce però le seguenti regole: Occupazione short occupazione int occupazione long Occupazione unsigned short occupazione unsigned int occupazione unsigned long Inoltre, vale anche: Occupazione int = occupazione unsigned int.

10 Naturali e interi Operazioni consentite: assegnamento ( = ) operazioni aritmetiche ( +, -, *, / (intera), % ) relazionali ( ==, !=,, = ) logici ( &&, ||, ! ) Costante esplicita (literal): int pippo; pippo = 10;

11 Numeri in virgola mobile NomeSignificatoOccupazione* e Range float singola precisione32 bit[ , ] double doppia precisione64 bit[ , ] long double precisione estesa80 bit [ , ] La precisione massima che posso ottenere è circa : float : double : long double : Questa precisione si ottiene nellintorno dello zero. * Valore indicativo

12 Numeri in virgola mobile I valori espressi per Occupazione e Range sono indicativi Vale però: Occupazione float occupazione double occupazione long double Operazioni consentite: assegnamento ( = ) operazioni aritmetiche ( +, -, *, / ) relazionali ( ==, !=,, = ) attenzione: (x/y)*y == x in generale non è vera! Costante esplicita (literal): float : pippo = f; double : pippo = 15.0; oppure pippo = 15.0d; Notazione esponenziale: pippo = -10.0E+23;

13 Regole di conversione implicita Espressioni miste del tipo: x operatore y char, short int se lespressione è ancora eterogenea: int long unsigned int unsigned long float double long double il risultato dellespressione sarà uguale a quello del più alto livello gerarchico 5.0 / (23 / 9) 5.0 / / double d1 = 3.4E+100, d2 = 6.8E-100; float f = f; d1= f; la f viene convertita a double f = d2; le cifre frazionarie di d2 sono troncate f = d1; la d1 provoca un overflow Esiste anche la conversione esplicita (type cast).

14 Politecnico di Milano Primi esempi in quasi C Una versione semplificata del linguaggio C

15 Il mio primo programma! /* Il mio primo programma in quasi C */ main() { printf ("Hello world!!!"); printf ("Ovvero: ciao mondo!!!"); } Il punto dingresso del programma I blocchi Lordine di esecuzione delle istruzioni I commenti La sintassi colorata.

16 Somma /* Non è proprio C… */ main() { unsigned int operando1, operando2, somma; operando1 = 10; operando2 = 15; somma = operando1 + operando2; printf (somma); } Le keyword (parole chiave) predefinite: if, while, else, unsigned, int, … Il vocabolario del C I comandi definiti usando il linguaggio stesso: printf(), scanf(), …Funzioni di libreria operando1, operando2, …

17 Area cerchio /* non è proprio C… */ main() { const float PI = f; float raggio, area; scanf (raggio); area = raggio * raggio * PI; printf (area); }.

18 Politecnico di Milano Esempi in C: tipi semplici Variabili, costanti, tipi semplici, specificatori di formato, cast implicito.

19 Il mio primo programma! #include /* Il mio primo programma in C!!! */ void main() { printf ("Hello world!!!"); printf ("Ovvero: ciao mondo!!!"); } La printf() è una funzione di libreria #include specifica dove andare a cercare la definizione void main() lo vedremo più avanti…

20 Area cerchio e quadrato #include void main() { const float PI = f; float x, area; scanf ("%f", &x); area = x * x * PI; printf ("Area cerchio: %f", area); x = 2 * x; /* cambia significato */ area = x * x; printf ("Area quadrato: %f", area); }. x

21 Cast implicito #include void main() { int x = 3, y = 4; float k = 4.0, z, w; z = x / k;/* z: 0.75 */ w = 75.0 / z; /* w: 100 */ printf ("%f", w); z = x / y;/* z: 0 */ w = 75.0 / z; /* Divisione per zero */ printf ("%f", w); }.

22 Alcuni specificatori di formato Per la scanf() e la printf() : " %u " indica un unsigned int " %lu " indica un unsigned long int " %d " indica un int " %ld " indica un long int " %c " indica un char " %f " indica un float.

23 Minuscolo maiuscolo #include void main() { char carattere; printf ("Inserisci un carattere minuscolo: "); scanf ("%c", &carattere); carattere = carattere - 32; printf ("Carattere maiuscolo: %c\n", carattere); }.

Scaricare ppt "Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo."

Presentazioni simili


Annunci Google