Introduzione al linguaggio C Elementi di Informatica A.A. 2004/05 13/10/2004
Direttive preprocessore Hello World! Direttive preprocessore #include <stdio.h> main() { printf(“hello world!\n”); } Programma Politecnico di Torino
Hello World! #include <stdio.h> main() { printf(“hello world!\n”); } Punto di ingresso Politecnico di Torino
Hello World! #include <stdio.h> main() { printf(“hello world!\n”); } Blocco di codice Politecnico di Torino
Hello World! #include <stdio.h> main() { printf(“hello world!\n”); } istruzione Politecnico di Torino
Compilazione Pre- Compilatore Linker processore header librerie sorgente Pre- processore Compilatore Linker Sorgente modificato file oggetto applicazione Politecnico di Torino
Dichiarazione di una variabile Variabili #include <stdio.h> main() { int a; int c,b=1; } Dichiarazione di una variabile Politecnico di Torino
Variabili #include <stdio.h> main() { int a; int c,b=1; } Tipo Politecnico di Torino
Variabili #include <stdio.h> main() { int a; int c,b=1; } nome Politecnico di Torino
Variabili #include <stdio.h> main() { int a; int c,b=1; } inizializzazione Politecnico di Torino
Variabili: significato RAM a int a=10; 00000000 00001010 Politecnico di Torino
Tipi di variabili Interi Numeri in virgola mobile Caratteri int: dimensione variabile (2 byte su PC a 16bit, 4 byte su PC a 32) long: 4 byte Numeri in virgola mobile float: 4 byte double: 8 byte Caratteri char: 1 byte (in realtà possono essere utilizzati come numeri) Politecnico di Torino
Esercizio Sapendo che gli interi sono rappresentati in modulo e segno, calcolare il valore massimo e minimo che può essere contenuto in ciascun tipo di variabile Verificare le condizioni di overflow mediante un programma in C Verficare le condizioni di underflow mediante un programma C Politecnico di Torino
Tabella riassuntiva tipi char Intero, 1 Byte char i = 10; short Intero, 2 Byte short i = 2321; int Intero, 2-4 Byte int i = -2322; long Intero, 4 Byte long i = 2345678; float Numero con virgola, 4 Byte float i = 2.34; double Numero con virgola, 8 byte double i = -1.2e-20; Politecnico di Torino
Modificatore unsigned La parola chiave unsigned indica che il tipo intero deve essere senza segno Esempi char i; /* range (-27, 27-1) */ unsigned char i; /* range (0, 28-1) */ 1 = -93 (signed) 1 = 163 (unsigned) Politecnico di Torino
definizione di una costante Costanti #include <stdio.h> #define PI 3.14159 main() { int a; int c, float pi=PI; } definizione di una costante Politecnico di Torino
Utilizzo di una costante Costanti #include <stdio.h> #define PI 3.14159 main() { int a; int c, float pi=PI; } Utilizzo di una costante Politecnico di Torino
Espressioni aritmetiche main() { int a,b,c; a = 10; b = a+1; c = a*(b-10); c = b/a; c = a/b; } Assegnamenti Politecnico di Torino
Espressioni ed assegnamenti main() { int a,b,c; a = 10; b = a+1; c = a*(b-10); c = b/a; c = a/b; } Espressione aritmetica Politecnico di Torino
Assegnamenti Cosa succede quando si assegnano fra di loro variabili di tipo differente? int a=10; long b; float c=23.5; b = a; /* ok */ b = 1000000; a = b; /* troncamento! */ b = c; /* troncamento! */ C = a; /* ok */ dim(dest) > dim(orig) Ok, nessun problema dim(dest) < dim(orig) Troncamento! Politecnico di Torino
Espressioni di confronto Operatori aritmetici di confronto: < > == != Se il confronto è vero il risultato è 1 Se è falso il risultato è 0 int r,a=10; int b=2; float c=23.5; r = a < b; /* r vale 0*/ r = a != b; /* r vale 1 */ r = a < c < b; /* r vale 1 */ Politecnico di Torino
Esercizio Discutere i risultati dell’esempio precedente Scrivere il codice C che esegue la media aritmetica di 4 variabili intere e discutere il risultato Fare un programma in cui si assegna 18,000,000 ad un float, lo si incrementa di uno e discutere del risultato Politecnico di Torino
printf(“I valori sono %d e %f\n”, 10, 2.3); La funzione printf stampa stringhe e numeri sullo standard output printf(“formato”, …); Esempio: printf(“I valori sono %d e %f\n”, 10, 2.3); Risultato: I valori sono 10 e 2.30000 Politecnico di Torino
printf Il primo parametro è la stringa di formato Ogni %d e %f deve avere un parametro corrispondente di seguito %c vuole un carattere (char) %d vuole un intero (int) %ld vuole un intero (long) %f vuole un numero con virgola (float o double) Politecnico di Torino
scanf La funzione scanf permettere di leggere dati da tastiera eseguendo le corrette conversioni scanf(“formato”, …); Esempio: scanf(“%d”, &a); Risultato Il programma si blocca in attesa che venga inserito da tastiera un intero Appena premuto invio il valore inserito viene copiato dentro a Politecnico di Torino
scanf Il primo parametro è sempre una stringa di formato I parametri successivi sono determinati dagli indicatori di tipo %c legge un char %d legge un intero %f legge un float %lf legge un double Ogni parametro deve essere preceduto dal simbolo “&” Questo indica “l’indirizzo” della variabile, perché scanf deve sapere dove andare a scrivere il valore letto Politecnico di Torino