DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algoritmi e basi del C
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 3 Ottobre 2013
Installation Party
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Dove: L.06
• Quando:
 Sabato 12 Ottobre
 9.00am - 12.00pm
2
WAT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il docente ha messo in risalto l'utilità delle slide
per lo studio individuale, affermando che il
prendere appunti possa far diminuire l'attenzione.
A tal fine, le slide dovrebbero essere più
complete, esplicando i passaggi logici del
ragionamento, poiché, nella forma attuale, esse
risultano poco chiare se non si ha buona memoria
della lezione
3
WAT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
4
WAT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nastro di Mobius? Sono d'accordo sul
fatto di dover scremare, ma così le
terrorizziamo queste matricole...
5
WAT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
6
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() {...}
7
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, ...)
8
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
9
Mostra caratteri
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Si scriva un programma che richieda
l’inserimento di un carattere e lo mostri a
video
10
Tipo carattere e codifica ASCII
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
11
Ricordate il “-32”
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
12
Un esempio di calcolo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
13
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.
14
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 =
15
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;
16
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
17
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.
18
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
19
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”
20
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”
21
Un primo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
22
Un secondo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
23
Un terzo errore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
24
Soluzione corretta
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
25
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
26
Problemi di fine giornata…
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
27
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 - Dipartimento di Elettronica ed informazione