caricato da Utente9936

lezione1

LP1
Lezione 1: Il linguaggio C
Costanti, Variabili, Parole Chiave, Operatori
Maurizio Tucci
[email protected]
1
Introduzione al C
• Breve Storia del C
– Linguaggio general purpose progettato da Dennis Ritchie (Bell Laboratories) nel
1972 su elaboratore PDP11
– Inizialmente fu utilizzato per la programmazione del sistema operativo UNIX
– Negli anni ’80 fu utilizzato anche nelle scuole e nelle università per la didattica (C
tradizionale)
– Alla fine degli anni ’80 nasce ANSI C o C standard che supera alcuni limiti del C
tradizionale
– La standardizzazione ha reso il C indipendente dal processore (hardware)
2
Introduzione al C
• La Standardizzazione
– Esistevano molte sottili differenze tra le diverse
implementazioni del C. Ciò dava problemi di
incompatibilità
– Fu creato un comitato che si preoccupò di fornire
una definizione “non ambigua e indipendente dalla
macchina”
– Fu creato uno Standard nel 1989, aggiornato nel
1999
3
Introduzione al C
• Perché ANSI C (d’ora in poi solo C)?
– Rispetto ad altri linguaggi (ad esempio il Pascal) ha meno parole chiave ma è più
potente per la presenza di strutture di controllo e tipi di dati più adeguati
– _ il linguaggio nativo di UNIX, un sistema operativo interattivo molto utilizzato su
server, mainframe e workstation
– Molti programmi per la gestione di basi di dati e per applicazioni grafiche sono
scritti in C
– Ha operatori che consentono di accedere alla macchina a livello di bit, e che sono in
grado in modo pulito, elegante e compatto di realizzare operazioni complesse
– _ modulare ed è alla base di C++
4
Introduzione al C
La libreria standard del C
•
I programmi C consistono di pezzi/moduli detti funzioni
•
Un programmatore può creare le sue proprie funzioni
- Vantaggio: il programmatore sa esattamente come lavora
- Svantaggio: si spreca tempo
•
I programmatori spesso usano le funzioni di libreria del C. Usano queste
come building blocks. Se esiste una funzione precostituita, è generalmente
meglio usarla che scrivere la propria
• Le funzioni di libreria sono scritte attentamente, sono efficienti e portabili
5
Semplici Programmi in C
•
•
3
4
5
6
7
/* Stampa una riga di testo ver. 1*/
#include <stdio.h>
int main(void)
{
printf("Welcome to C!\n");
return 0;
}
Welcome to C!
Commenti
Il testo racchiuso tra /* e */ è ignorato dal
computer
In blu le parole chiave
#include <stdio.h>
Sono direttive per il preprocessore: carica
il contenuto di un certo file <stdio.h> che
consente operazioni di input/output
int main(void)
I programmi C contengono uno o più
funzioni, esattamente una di queste deve
essere main. La parentesi è usata per
indicare una funzione
int significa che il main “restituisce” un
valore intero
void significa che il main non prende
input
6
Semplici Programmi in C (cont.)
Commenti
1
•
3
4
5
6
•
/* Stampa una riga di testo ver. 1 */
#include <stdio.h>
int main(void)
{
printf("Welcome to C!\n");
return 0;
}
Le parentesi graffe { } indicano un blocco. I
corpi di tutte le funzioni devono essere
contenuti in parentesi graffe.
printf("Welcome to C!\n");
La funzione printf() è inclusa nella libreria
stdio.h ed esegue la stampa della stringa di
caratteri all’interno delle virgolette. L’intera
linea è detta una istruzione (statement). Tutte le
istruzioni devono terminare con un punto e
virgola.
Welcome to C!
\ Carattere di escape (fuga): toglie l’usuale
significato al carattere che lo segue
\n è una sequenza di escape, ed indica il
carattere di newline
return 0: Un modo di uscire da una funzione in
questo caso, significa che il programma termina
normalmente
7
Semplici Programmi in C (cont.)
#include <stdio.h> int main(void){printf("Welcome to C!\n");return 0;}
Welcome to C!
Alcuni Suggerimenti su come scrivere un programma
– Inserire i commenti
– Indentare (far rientrare) il corpo della funzione di un livello (3 spazi)
– Mettere una sola istruzione per ogni linea
8
Le Parole Chiave
Alcune parole sono dette
parole chiave e non
possono essere utilizzate
dal programmatore come
nomi di variabili.
Rispetto ad altri linguaggi il
C possiede un numero
ridotto di parole chiave.
9
Uso di Printf
/* Stampa a video il valore di una variabile*/
#include <stdio.h>
int main(void)
{
int i;
/* dichiarazione */
i = 3;
/* inizializzazione */
printf(”Il valore della variabile è %d\n”, i); /* stampa */
return 0;
}
• int i;
• Variabile:
Dichiarazione di variabile
contenitore in cui un valore può essere memorizzato
Il valore della variabile è 3
10
Uso di Printf (cont)
•
int significa che la variabile può avere i valori interi (-1, 3, 0,47)
•
i
•
Identificatori: consistono di lettere, numeri (non possono iniziare con un
numero), e underscore ‘_’, sono case sensitive, max 31 caratteri in ANSI C
Le dichiarazioni appaiono prima degli statement eseguibili, altrimenti si ha
un errore di sintassi (in fase di compilazione)
•
nome di variabile (identificatore)
•
printf(”Il valore della variabile è %d\n”, i);
•
Questa printf prende due argomenti (separati da virgola) Nel primo
argomento appare la specifica di formattazione: %d indica che dovrà essere
stampato un valore di tipo intero decimale, quindi indica il tipo della variabile
che segue.Nel secondo appare il nome della variabile
11
Esempi su Printf
/*Stampa una riga di testo vers. 2 */
#include <stdio.h>
int main()
{
printf("Welcome to C!\n");
return 0;
}
/* Stampa una riga di testo vers. 3*/
#include <stdio.h>
main()
{
printf("Welcome to C!\n");
}
Welcome to C!
Welcome to C!
12
Esempi su Printf (cont.)
/* Stampa una riga di testo vers. 4*/
#include <stdio.h>
int main(void)
{
printf("Welcome ");
printf("to C!\n");
return 0;
}
/* Stampa tre righe di testo vers. 1*/
#include <stdio.h>
main()
{
printf("Welcome \nto \nC!\n" );
}
Welcome to C!
Welcome
To
C!
13
Esercizio
Scrivere un programma C che stampi a video il testo organizzato nel modo
seguente:
Tabella
”
’
”
’
\
a
/* Stampa tabella */
#include <stdio.h>
int main(void)
{
printf(“Tabella \n\”\t\’\t\\\n\”\t\’\ta\n”);
return 0;
}
14
Dichiarazioni, Espressioni e
Assegnamento
• Oggetti manipolati da un programma
– Costanti
• Interi (tipicamente [-231, 231+1]), Reali (floating point), Stringhe
– Variabili (devono essere dichiarate prima di essere utilizzate)
• Nome (identificatore: No parole chiave)
• Tipo
• Valore
• Utilità della dichiarazione di variabili
– Definizione dello spazio di memoria da parte del compilatore
– Controllo sulle operazioni appropriate per il tipo indicato
15
Dichiarazioni, Espressioni e
Assegnamento (cont.)
• Espressione
– Combinazione di costanti, variabili, operatori e
chiamate a funzione
• tot=n1+n2;
• user=GetLine();
• tot=GetInteger()+1;
• Assegnamento
– Operatore di Assegnamento =
• Associatività: da destra a sinistra
– tot=138
– tot=n1+n2
16
Variabili e Memoria
17
Variabili e Memoria:
La funzione scanf
/* Prendere in input un
valore e stamparlo a
video */
#include <stdio.h>
int main(void)
{
int i;
/* dichiarazione */
printf(”Inserisci un intero:"); /* prompt */
scanf(”%d”, &i);
/* legge un intero */
printf(”Il valore inserito è %d\n”, i);
/*stampa */
return 0;
}
Inserisci un intero:-33
Il valore inserito è -33
18
Variabili e Memoria:
La funzione scanf (cont)
•
scanf("%d", &i);
Ottiene un valore dall’utente
•
scanf usa l’input standard (di solito la tastiera)
Questa scanf ha due argomenti
%d la specifica di conversione indica che il dato dovrebbe
essere un intero decimale,
&i indica la locazione in memoria per memorizzare la
variabile
•
& (ampersand) può confondere all’inizio - per ora ricordate solo di
inserirlo con il nome della variabile nel comando scanf
•
L’utente risponde a scanf digitando il numero, quindi premendo il
tasto enter (return)
19
Memoria: Lettura e Scrittura
/* lettura e scrittura di variabili */
#include <stdio.h>
int main(void)
{
int i, j, sum;
i = 3;
printf(”Inserisci un intero:");
scanf(”%d”, &j);
sum = i + j;
printf(”i = %d\tj = %d\tsomma = %d\n”, i, j, sum);
j = i;
sum = i +j;
printf(”i = %d\tj = %d\tsomma = %d\n”, i, j, sum);
return 0;
}
Inserisci un intero: -5
i=3
j=-5
somma=-2
i=3
j=3
somma=6
20
Memoria: Lettura e Scrittura
• La lettura delle variabili non cambia il loro
valore
• La scrittura è distruttiva: Quando un valore
è scritto in una locazione di memoria esso
si sostituisce al valore contenuto in
precedenza in quella locazione
21
Operatori e Precedenze
• Operatori
– Caratteri speciali a cui è assegnato un particolare
significato:
+
*
/
%
addizione
sottrazione
moltiplicazione
divisione
modulo (a%b equivale al resto di a/b)
22
Operatori e Precedenze (cont.)
• Precedenze (priorità) e Associatività
– Alcuni operatori aritmetici agiscono prima di altri
(es. La moltiplicazione prima dell’addizione)
Trova la media delle tre variabili a, b e c
NO:
a+b+c/3
SI:
(a + b + c ) / 3
23
Operatori e Precedenze (cont.)
24