Introduzione al linguaggio C
Elementi di Informatica
A.A. 2004/05
13/10/2004
Hello World!
©2004 - Fabio Forno
#include <stdio.h>
Direttive
preprocessore
main()
{
printf(“hello world!\n”);
}
Programma
Politecnico di Torino
Hello World!
#include <stdio.h>
©2004 - Fabio Forno
Punto di ingresso
main()
{
printf(“hello world!\n”);
}
Politecnico di Torino
Hello World!
©2004 - Fabio Forno
#include <stdio.h>
main()
{
printf(“hello world!\n”);
}
Blocco di codice
Politecnico di Torino
Hello World!
©2004 - Fabio Forno
#include <stdio.h>
main()
{
printf(“hello world!\n”);
}
istruzione
Politecnico di Torino
Compilazione
header
librerie
©2004 - Fabio Forno
sorgente
Preprocessore
Linker
Compilatore
Sorgente
modificato
Politecnico di Torino
file
oggetto
applicazione
Variabili
©2004 - Fabio Forno
#include <stdio.h>
main()
Dichiarazione di una
variabile
{
int a;
int c,b=1;
}
Politecnico di Torino
Variabili
©2004 - Fabio Forno
#include <stdio.h>
main()
{
int a;
int c,b=1;
}
Tipo
Politecnico di Torino
Variabili
©2004 - Fabio Forno
#include <stdio.h>
main()
{
int a;
int c,b=1;
}
nome
Politecnico di Torino
Variabili
©2004 - Fabio Forno
#include <stdio.h>
main()
{
int a;
int c,b=1;
}
inizializzazione
Politecnico di Torino
Variabili: significato
©2004 - Fabio Forno
RAM
a
int a=10;
00000000
00001010
Politecnico di Torino
Tipi di variabili
 Interi
©2004 - Fabio Forno
 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
©2004 - Fabio Forno
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
©2004 - Fabio Forno
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
©2004 - Fabio Forno
 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 0 1 0 0 0 1 1
= -93 (signed)
1 0 1 0 0 0 1 1 = 163 (unsigned)
Politecnico di Torino
Costanti
#include <stdio.h>
©2004 - Fabio Forno
#define PI 3.14159
main()
{
int a;
int c,
float pi=PI;
}
definizione di una
costante
Politecnico di Torino
Costanti
#include <stdio.h>
©2004 - Fabio Forno
#define PI 3.14159
main()
{
int a;
int c,
float pi=PI;
}
Politecnico di Torino
Utilizzo di una
costante
Espressioni aritmetiche
©2004 - Fabio Forno
main()
{
int a,b,c;
a
b
c
c
c
=
=
=
=
=
10;
a+1;
a*(b-10);
b/a;
a/b;
}
Assegnamenti
Politecnico di Torino
Espressioni ed assegnamenti
©2004 - Fabio Forno
main()
{
int a,b,c;
a
b
c
c
c
}
=
=
=
=
=
10;
a+1;
a*(b-10);
b/a;
a/b;
Espressione
aritmetica
Politecnico di Torino
Assegnamenti
©2004 - Fabio Forno
 Cosa succede quando si assegnano fra di loro
variabili di tipo differente?
int a=10;
long b;
float c=23.5;
dim(dest) >
dim(orig)
b
b
a
b
C
dim(dest) <
dim(orig)
=
=
=
=
=
a; /* ok */
1000000;
b; /* troncamento! */
c; /* troncamento! */
a; /* ok */
Ok, nessun
problema
Troncamento!
Politecnico di Torino
Espressioni di confronto
©2004 - Fabio Forno
 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
printf
 La funzione printf stampa stringhe e
numeri sullo standard output
©2004 - Fabio Forno
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
©2004 - Fabio Forno
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
©2004 - Fabio Forno
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
©2004 - Fabio Forno
 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
Scarica

intro c