Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cenni
Linguaggio C:
storici
Identificatori
Tipi di dati
Costanti
Operatori
Precedenze
Strutture di controllo
2
Introduzione al linguaggio C
Cenni storici
v Il
Evoluzione
Cenni storici
v LAlgol presentava
v
v
v
le seguenti caratteristiche:
Fregolarit della sintassi,
Fstruttura in moduli,
Fma era particolarmente complesso.
v Il CPL (Combined Programming Language) ed il
BCPL
migliorarono
molte
caratteristiche
dellAlgol senza per riuscire ad eliminare la
complessit.
v Il linguaggio B (Thompson) era molto alla struttura
dellhardware.
v Ritchie seppe riassumere le migliori caratteristiche
di questi linguaggi.
6
Perch programmare in C
un linguaggio
un algebra
una religione
Struttura
dei
Programmi
Commenti
/* */
main()
Nome di funzione
Inizio di un blocco funzionale
Un solo main per programma
corpo
10
Compilazione ed Esecuzione
v
v
v
v
intestazione dichiarativa
corpo
v Lintestazione
Identificatori
v Gli
v
v
Classi di memoria
v
v
Punto e Virgola
v
v
Esempio:
main()
{
int c;
c = 100;
printf( Questo esempio mostra\n);
printf(quando usare il punto e virgola\n);
}
16
v
v
Libreria standard
Esaminiamo listruzione
printf( programma C);
printf il nome di una funzione il cui codice gi
scritto ed inserito nell standard C library
La Standard C library viene inclusa durante la fase
di linking del programma attraverso la direttiva del
preprocessore #include .
Altre funzioni appartenenti alla standard C library
sono:
printf(), fprintf(), sprintf(), scanf(), fscanf(),
sscanf(), getc(), gets(), getchar(), putc(), puts(),
fgetc(), fgets(), fputs(), fwrite(), fread(), etc. ..
18
Tipi di dati
Esempio
v
#include <stdio.h>
v
main()
{
printf(Hello World\n);
}
#include <stdio.h>
main()
{
printf(Hello );
printf(World\n);
}
19
10
Interi
Variabili di programma
v La
v
11
Caratteri
v
vI
12
Costanti intere
Costanti
v
25
13
Costanti long
v
main()
{
long numero;
numero = 0L;
}
27
Costanti Carattere
14
Costanti Stringa
v
v
v
Esempio:
stringa
ciao
29
rappresentazione interna
c i a o \0
30
15
Operatore sizeof
Loperatore sizeof serve per trovare la dimensione
di un dato, infatti questi dipendono dalla
macchina che utilizziamo.
v Per conoscere la dimensione in byte di una
espressione possiamo utilizzare la:
sizeof ( espressione)
Esempio:
main()
{
int mesi,scorte,i;
char anno;
i = sizeof( mesi);
i = sizeof(mesi)*sizeof(scorte);
i = sizeof (char);
}
v
31
Esercizio
Utilizzando loperatore sizeof(...) determinare e
stampare la dimensione occupata dai seguenti tipi:
int, char, float, double, short int, long int.
32
16
#include <stdio.h>
Parole riservate
main()
{
int a;
float b;
char c;
double d;
short e;
long f;
17
Operatori
v
v
v
Consideriamo lespressione:
a = a + 1;
che significa: prendere il valore corrente di a,
sommargli 1 e memorizzare il risultato in a.
Nellespressione sono presenti due operatori
+ e = che implicano lesecuzione
delloperazione in due passi.
Lordine di esecuzione : somma delle due
costanti e quindi assegnamento.
36
18
Operatori di incremento e
decremento
Operatore Modulo
v
v
Esempio:
5%3
3%5
3%3
9%3
=
=
=
=
2
3
0
0
37
a=5
a=6
b=5
38
19
20
Conversioni implicite
v
int
double
float
long
short int
unsigned
int
long int
Come int
float
double
41
char, short
42
21
Esempi
int y;
char x;
x=A;
y=x; /* y vale 65 */
Operatori Relazionali
43
22
Operatori logici
v
Esercizio
46
23
Precedenze
int x,y,z;
printf("TABELLA BOOLEANA DELL'AND\n\n");
x = 1;
y = 1;
z = (x && y);
printf("Se x = 1 ed y = 1 allora x && y =\t %d\n",z);
.....
.....
printf("\nTABELLA BOOLEANA DELL'OR\n\n");
x = 1;
y = 1;
z = (x || y);
printf("Se x = 1 ed y = 1 allora x || y =\t %d\n",z);
47
24
Alcune domande
Strutture di controllo
v
v
v
SEQUENZIALI
F
Statement semplice
F
Statement composto
CONDIZIONALI
F
if (< expr.>) { } else { }
F
switch(<expr.>) { case < cost> : .. }
ITERATIVE
F
while(<expr.>) { }
F
for (..) { }
F
do { } while(< expr.>)
50
25
Statement Semplici
Statement Composti
51
26
Esempio
Istruzione IF - ELSE
v
Esempio:
if ( x > 0 ) {
if ( k == m)
y = m;
}
else {
y = 0;
k = 100;
}
oppure
if ( espressione )
{
istruzione_1;
istruzione_2;
}
else
istruzione_3;
53
54
27
Esempio
v
Istruzione else-if
if ( x ) {
/* if ( x!=0) */
printf(X diverso da zero);
}
else {
printf(X uguale a zero\n);
}
55
28
Esempio
Esercizi
29
Operatore Ternario
v
Esercizi
60
30
Istruzione switch
v
Istruzione switch
v
v
31
Esempio
c = getchar();
switch ( c ) {
case '0' :
case '1' :
.....
case '9' :
printf("E' una cifra\n");
case 'a' :
......
case 'z' :
printf("E' una lettera minuscola\n");
case 'A' :
......
case 'Z' :
printf("E' una lettera maiuscola\n");
default :
printf("E' un simbolo\n");
}
63
ATTENZIONE
v
v
32
Istruzione while
v
Esempio
a = 1;
while ( a <= 100) {
total += a*a;
a += 1;
}
{
statement;
a = 1;
while ( a++ <= 100)
total += a*a;
65
66
33
Esempio
Istruzione for
v
Listruzione
precedente.
for
molto
simile
al while
main()
{
int sum , i;
Sintassi:
for ( < inizializza var>; <expr>; <upd var>) {
statement;
}
vEquivalente
sum =0;
}
67
68
34
Esempio
Istruzione do-while
sum = 0;
i = 1;
for( ; i<= 10; ) {
sum= sum + i++;
}
sum = 0;
i = 1;
for ( ; ; ) {
if ( i > 10 ) break;
sum = sum + i++;
}
69
35
Esercizi
Esempio
c = getchar ();
do {
if (c == \n)
lines++;
else {
if (c == )
words++;
}
}while (( c=getchar())!=EOF);
71
36
Esercizi
1. Utilizzando un ciclo for scrivere un
programma che riceve in input due interi
rappresentanti rispettivamente base ed
esponente e ne calcola la potenza.
2. Scrivere lo stesso programma dellesercizio 2
precedente utilizzando per un ciclo for.
73
74
37
int p,base,n;
Esempio:
main()
{
int c,oldc =EOF;
while (( c = getchar()) != EOF) {
if ( c == oldc)
continue;
oldc = c;
putchar(c);
}
}
76
38