Title: Presentazione di PowerPoint
1 Corso di Algoritmi e Strutture Dati
APPUNTI SUL LINGUAGGIO C Introduzione al
C Lezione I
2Prof. Massimo Simone
e-mail
a042simone_at_hotmail.com
sito Web
http//www.ascuoladi.eu
3Perché scriviamo programmi
- Abbiamo un problema da risolvere
- Dobbiamo progettare una soluzione progettiamo un
algoritmo - Vogliamo far eseguire tale algoritmo dal nostro
elaboratore scriviamo un programma
4Linguaggi macchina, assembley e di alto livello
- Linguaggi macchina lingua naturale di un
particolare computer, esso consiste di sequenze
di numeri (1 o 0) e dipende dalla macchina - 0000111101
- 1111110001
- 0011001111
- Linguaggi assembly abbreviazioni simili
allinglese, per rappresentare le operazioni
elementari del computer - LOAD N
- ADD X
- Linguaggi ad alto livello singole istruzioni
contenenti notazioni matematiche utilizzate
comunemente - x n 2
5Il linguaggio C
- Il C fu progettato ed implementato da Dennis
Ritchie ed è un linguaggio imperativo ad alto
livello, sviluppato nei laboratori della ATT
Bell Laboratories, adatto per lo sviluppo dei
sistemi operativi. -
- Benché implementato su un sistema operativo UNIX,
questo linguaggio non fu scritto per un
particolare sistema operativo ma può essere
utilizzato sotto sistemi operativi diversi come
UNIX, DOS/WINDOWS, OS, POWER PC, ecc
- Sistema operativo?
- Linguaggio imperativo?
6Paradigmi di programmazione
Esistono diversi approcci alla programmazione,
chiamati paradigmi di programmazione Programmazi
one imperativa un programma specifica le azioni
che devono essere eseguite in sequenza per
calcolare i risultati a partire dai dati in
ingresso. Programmazione orientata agli
oggetti un programma modella una realtà di
interesse come una collezione di oggetti software
che cooperano
7Il linguaggio C
Il C è un linguaggio di programmazione di tipo
imperativo
un programma è una lista di istruzioni che il
calcolatore deve eseguire.
Versione standard del C ANSI/ISO 9899
8Le librerie in C
- I programmi scritti in C consistono in moduli
chiamati funzioni esiste una ricca collezione di
funzioni già esistenti chiamata libreria standard
del C. - Obiettivo riusabilità del software approccio di
costruzione a blocchi per creare programmi
inutile ricostruire funzioni già esistenti, ma
riusare ciò che già esiste fondendolo con ciò che
viene costruito ex-novo. - Obiettivo efficienza utilizzare le funzioni
della libreria ANSI potrà migliorare lefficienza
del programma. - Obiettivo portabilità utilizzare le funzioni
ANSI invece di scrivere le proprie versioni.
9Il linguaggio C
- Il C è un tipico linguaggio di programmazione
strutturata scrittura di programmi chiari, dalla
correttezza dimostrabile e semplici da
modificare. - Il linguaggio C permette di scrivere programmi
molto compatti - Il linguaggio C permette di accedere e gestire
direttamente le risorse hardware dellelaboratore
(in maniera indipendente dallarchitettura)
10Lambiente C
Programma creato con leditor
Editor
Disk
Fase 1
11Un semplice programma C
/ Programma che stampa un saluto / include
ltstdio.hgt main() printf(Hello
World!\n)
12Un semplice programma C
/ Programma che stampa un saluto / include
ltstdio.hgt main() printf(Hello
World!\n)
Listruzione è chiamata direttiva di
compilazione e serve ad includere informazioni
relative a una libreria predefinita del C che
contiene le funzioni di input/output.
13Un semplice programma C
/ Programma che stampa un saluto /
include ltstdio.hgt include ltstdlib.hgt
main() printf(Hello World!\n) / si usa
la funzione system ("PAUSE") per bloccare
aperta la finestra dos e quindi la libreria
stdlib.h che la contiene / system ("PAUSE")
Anche listruzione stdlib.h è chiamata direttiva
di compilazione e serve ad includere
informazioni relative a una libreria predefinita
del C che contiene in tal caso la funzione
system( )
14Un semplice programma C
/ Programma che stampa un saluto / include
ltstdio.hgt main() printf(Hello
World!\n)
La parola main( ) identifica il programma
principale e rappresenta il punto di ingresso del
programma allinizio della sua esecuzione
15Un semplice programma C
/ Programma che stampa un saluto / include
ltstdio.hgt main() printf(Hello
World!\n)
Si possono specificare commenti racchiudendoli
tra i simboli / e /
Ogni istruzione è conclusa dal simbolo punto e
virgola ltlt gtgt
Le parentesi graffe delimitano un blocco
16Un semplice programma C
/ Programma che stampa un saluto / include
ltstdio.hgt main() printf(Hello
World!\n)
Per la stampa su video printf e tra doppi apici
la stringa costante
Esistono sequenze nelle stringhe che indicano
caratteri speciali per esempio \n indica il
carattere di new line che quando viene incontrato
sposta il carattere successivo alla riga seguente
17Caratteri speciali
18Variabili in C
/ Programma per il calcolo del fattoriale
/ include ltstdio.hgt main() int n,fat
printf(Calcolo del fattoriale di)
scanf(d,n) fat 1
Una variabile viene dichiarata scrivendo il tipo
seguito dal nome della variabile. Una variabile
può essere inizializzata allatto della sua
dichiarazione (int a1).
19Tipi di dato elementari
In C non esiste il tipo boolean Si usa la
convenzione che lo zero rappresenta il valore
falso e luno il valore vero (tutti i valori
diversi da zero rappresentano il vero)
20Input/Output
/ Programma per il calcolo del fattoriale
/ include ltstdio.hgt main() int n,fat
printf(Calcolo del fattoriale di)
scanf(d,n) fat 1
La lettura e la stampa di variabili richiede
spesso la specifica del loro formato le
istruzioni printf, scanf hanno in genere più
argomenti.
21Argomenti di printf e scanf
printf ( "ltstringagt" , ltelenco argomentigt )
scanf ( "ltstringagt" , ltelenco argomentigt )
22Input/Output
La lettura e la stampa di variabili richiede
spesso la specifica del loro formato le
istruzioni printf, scanf hanno in genere più
argomenti.
/ Programma per il calcolo del fattoriale
/ include ltstdio.hgt main() int n,fat
printf(Calcolo del fattoriale di)
scanf(d,n) fat 1 ----
printf(Risultato d\n,fat)
23Argomenti di printf e scanf
- Il primo è una stringa di caratteri (da stampare
per la printf) nella quale ogni indica il punto
in cui vanno sostituiti, nellordine, gli
argomenti che seguono - Il carattere che segue il simbolo indica il
tipo dellargomento (d indica un valore intero) - Gli altri argomenti specificano le variabili di
input/output (quelle di input sono precedute dal
simbolo speciale ).
24scanf ( d , n )
Assegna alla variabile n largomento inserito
Tipo di argomento da inserire
Stampa nel punto indicato il valore contenuto
dalla variabile fat
Tipo di argomento da stampare
printf ( Risultato d \n , fat )
25Argomenti di printf e scanf
26Assegnazione in C
/ Programma per il calcolo del fattoriale
/ include ltstdio.hgt main() int n,fat
printf(Calcolo del fattoriale di)
scanf(d,n) fat 1
Listruzione di assegnazione si indica con il
simbolo
27Blocchi di istruzioni in C
if (n1gtn2) maxn1 else maxn2
Unistruzione composta o blocco è quella
delimitata da una coppia
28Operatori ed espressioni in C
29Operatori ed espressioni in C
30Operatori ed espressioni in C
31Operatori ed espressioni in C
32Istruzioni di controllo condizionali
- Istruzione condizionale if
- if ( ltesprgt ) ltistr1gt
- else ltistr2gt
- Se ltesprgt è vera viene eseguito ltistr1gt
altrimenti verrà - eseguito ltistr2gt
- Es. if (agtb)
- printf(il maggiore è d, a)
- else
- printf(il maggiore è d, b)
-
33Istruzioni di controllo condizionali
- Istruzione condizionale switch
- switch ( ltesprgt )
- case ltcostante1gt ltistr1gt break
- case ltcostante2gt ltistr2gt break
- .
- default ltistrgt
-
- Se ltesprgt vale ltcostante ngt vera viene eseguito
ltistr ngt in tutti gli altri casi (caso di
default) verrà eseguito ltistrgt. - Per convenzione dopo listruzione che si vuole
eseguire si usa il comando break per uscire
dallistruzione condizionale. -
-
34Istruzioni di controllo condizionali
- Es.
- Vogliamo impostare il numero di giorni n di cui
è fatto ogni mese - switch ( mese )
- case 2 n28 break
- case 4 case 6
- case 9 case 11 n30 break
- default n31
-
-
-
35Istruzioni di controllo iterative
- Istruzione while
- while ( ltesprgt )
- ltistrgt
- oppure
- do ltistrgt
- while ( ltesprgt )
- Fino a che ltesprgt è vera viene eseguito ltistrgt.
-
Prima valuta espr e poi esegue istr
Prima esegue istr poi valuta espr
36Istruzioni di controllo iterative while e Do
While
- Es.
- Calcoliamo la somma di 10 numeri
-
-
37Istruzioni di controllo iterative
- Istruzione for
- for ( ltespr_initgt ltespr_testgt ltespr_incrgt
) - ltistrgt
- corrisponde a
- ltespr_initgt
- while ( ltespr_testgt )
- ltistrgt
- ltespr_incrgt
-
- Es. for ( in igt1 i-- ) fat i
-
38Costanti simboliche in C
- define ltnomegt ltvaloregt
- Si definiscono facendo uso della direttiva
define che va messa nellintestazione del
programma. - Es.
-
- define PIGRECO 3.14
- define N 100
- define TRUE 1
- define FALSE 0
- main()
- .
-
-
39Esempio di programma C
- Lettura ed analisi del problema deduzione dei
dati di input - Costruzione di un procedimento risolutivo
algoritmo - Traduzione delle istruzioni dellalgoritmo in
- linguaggio C
40Esempio di programma C
- Lettura ed analisi del problema deduzione dei
dati di input
Scrivere un programma C che calcoli le quattro
operazioni sui numeri interi. Input a op b ,
in cui a e b sono due interi e op è una
delle quattro operazioni ,-,,/
Oss. La divisione sui numeri interi emette anche
il resto