DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algoritmi e basi del C
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 24 Agosto 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Benvenuti nel
fantastico mondo del
C
2
Il primo programma: ciao mondo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
3
Ciao Mondo: stdio.h
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Come prima cosa,
dobbiamo includere le
librerie necessarie al
funzionamento del
nostro programma.
• La libreria stdio.h
 Standard Input Output
 Permette di utilizzare I
comandi necessari per
richiedere dati o
visualizzare dei
messaggi.
4
Ciao Mondo: main
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutti i programmi in C
contengono un
elemento principale:
 Il main
• main contiene le
istruzioni che verranno
eseguite all’avvio del
nostro programma
5
Ciao Mondo: main
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• La sequenza di istruzioni
che caratterizzano il main
sono racchiuse tra
parentesi graffe
• Tale blocco di istruzioni e’
anche noto come corpo
• Ogni istruzione deve
essere seguita da un punto
e virgola
6
Ciao Mondo: printf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
7
Ciao Mondo: printf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Stampa a video il
mesaggio “Ciao
Mondo!”
• printf e’ contenuta in
stdio.h
• Il messaggio da
stampare e’ contenuto
tra “”
8
Ciao Mondo: printf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• return e' un comando che ci
permette di comunicare con il
sistema ospite
• In questo caso viene
utilizzato per comunicare lo
stato di terminazione del
programma
• 0 indica una terminazione
corretta del nostro
programma
9
Struttura di un programma C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
parte dichiarativa globale
inclusione librerie / per poter invocare funzioni utili (i/o, ...) /
dichiarazione di variabili globali e funzioni
int main ( ) {
parte dichiarativa locale
dichiarazione di variabili locali
istruzione 1;
istruzione 2;
istruzione 3;
istruzione 4;
...
istruzione N;
/ tutti i tipi di operazioni, e cioè: /
/ istr. di assegnamento /
/ istr. di input / output /
/ istr. di controllo (condizionali, cicli) /
parte esecutiva
}
Ogni programma C deve contenere un modulo int main() {...}
10
Struttura di un programma C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Parte dichiarativa: contiene le dichiarazioni degli
elementi del programma
 Dati, ed eventualmente funzioni (ma solo nella parte globale)
• Parte esecutiva: contiene le istruzioni da eseguire,
che ricadono nelle categorie:
 Istruzioni di assegnamento ()
 Strutture di controllo:
• Condizionali (if-then-else e switch)
• Iterative, o cicli (while, do e for)
 Istruzioni di Input/Output (printf, scanf, ...)
11
Istruzioni semplici e composte
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Sequenze di istruzioni semplici
 Ogni istruzione semplice termina con ;
 ; è detto il “terminatore” dell’istruzione
• Si possono raggruppare più istruzioni in
sequenza tra { e } a costituire un blocco
 Il blocco costituisce una “super-istruzione”
• Non è necessario il ; dopo }, in quanto il
blocco è già una istruzione
 e non necessita del terminatore per diventarla
12
Mostra caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri a
video
13
Mostra caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri a
video
• Sotto-problema
 E dove lo salvo il carattere???
14
Variabili e assegnamenti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Le variabili non sono altro che dei contenitori (aree di memoria)
identificati da un nome univoco.
Le variabili vengono definite da un tipo e da un nome.
15
Mostra caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri a
video
16
Mostra caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri a
video
17
Tipo carattere e codifica ASCII
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
18
Attenti al “32”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
19
Attenti al “32”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
20
Un esempio di calcolo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
21
Variabili e loro valore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Come assegno un valore ad un
variabile???
22
Esecuzione degli assegnamenti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
valutazione dell’espressione che
compare a destra del simbolo =

•
il valore delle variabili che vi compaiono
si trova memorizzato nelle celle
corrispondenti, e da lì è letto
memorizzazione del risultato
dell'espressione nella variabile a
sinistra del simbolo =
23
Esempi di assegnamento
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
x = 23;
w = 'a';
y = z;
alfa = x + y;
r3 = ( alfa * 43 – xgg ) * ( delta – 32 * j );
x = x + 1;
Abbreviazioni (operatori di assegnamento):
a = a + 7;
a += 7;
a = a * 5;
a *= 5;
a = a + 1;
++a;
a = a - 1;
--a;
Istruzioni della forma
variabile = variabile operatore espressione;
si possono scrivere come: variabile operatore = espressione;
24
Aritmetica (1/2)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Operatori aritmetici in C:
 * per la moltiplicazione e / per la divisione
 La divisione tra interi elimina il resto (quoziente):
13 / 5 è uguale a 2
 L’operatore modulo calcola il resto della divisione:
13 % 5 è uguale a 3
• Precedenza degli operatori:
 Come in aritmetica, moltiplicazione e divisione hanno
priorità su addizione e sottrazione
• si usano le parentesi quando c’è ambiguità
 Per esempio: la media aritmetica di a, b, c:
a + b + c / 3
NO !!!!
(a + b + c ) / 3
SI
25
Aritmetica (2/2)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazione
Operatore C
Espressione Espressione C
aritmetica
Addizione
+
f+7
f + 7
Sottrazione
-
p-c
p – c
Moltiplicazione
*
bm
b * m
Divisione
/
x/y
x / y
Modulo
%
r mod s
r % s
Operatori C Operazioni
Precedenza
( )
Parentesi
Valutate per prime. Se ci sono degli annidamenti, si
valuta prima la coppia più interna. Se ci sono più
coppie allo stesso livello, si valuta da sinistra a destra.
* , / , %
Moltiplicazione,
Divisione, Modulo
Valutate per seconde. Se ce ne sono diverse, si
valutano da sinistra a destra.
+ , –
Addizione,
Sottrazione
Valutate per ultime. Se ce ne sono diverse, si valutano
da sinistra a destra.
26
Come interagiamo con “l’esterno”?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Input - Output
27
Come interagiamo con “l’esterno”?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Input - Output
 printf viene utiizzata per fornire un output
del programma a video
28
Come interagiamo con “l’esterno”?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Input - Output
 printf viene utiizzata per fornire un output
del programma a video
 scanf viene utilizzato per fornire degli input,
e.g. da tastiera, al nostro programma
29
Inserimento dati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Richiedi all’utente la sua altezza in
centrimentri e mostrala a video in metri
• Pseudocodice
1.Scrivi “quanto sei alto?”
2.Leggi altezzacm
3.Altezzam = alteccacm/100
4.Scrivi “sei alto: altezzam”
30
Pseudocodice vs Codice C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Pseudocodice
1.
2.
3.
4.
Scrivi “quanto sei alto?”
Leggi altezzacm
Altezzam = alteccacm/100
Scrivi “sei alto: altezzam”
31
Un primo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
32
Un secondo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
33
Un terzo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
34
Soluzione corretta
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
35
Tipi di dato in C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• In C esistono diversi tipi di dato built-in, tra cui




int: numeri interi
float: numeri con virgola (singola precisione)
double: numeri con virgola (doppia precisione)
char: caratteri (sono interi che possono variare tra
0-255)
• Inoltre il C fornisce anche la possibilità di
definire dei nuovi tipi di dato
36
Problemi di fine lezione…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Scrivere un programma che, letti due
numeri, individua quello maggiore
• Rappresentare in pseudocodice
l’agoritmo che, letti 3 numeri, ne calcola
il minimo comune multiplo
37
Fonti per lo studio + Credits
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Fonti per lo studio
 how to solve it, Poyla G
• http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.p
df
 Informatica arte e mestiere, S. Ceri, D. Mandrioli, L.
Sbattella, McGrawHill
• Capitolo 3
 Introduzione ai sistemi informatici, D. Sciuto, G.
Buonanno, L. Mari, 4a Ed, McGrawHill
• Capitolo 3, 4
 The Art & Craft of Computing, S. Ceri, D. Mandrioli, L.
Sbattella, Addison-Wesley
• Capitolo 3
Scarica

PPT - V1