DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
C: miti e realtà
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 8 Marzo 2013
Sulla semantica…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Che giorno è oggi?
14 Marzo
o anche…
14.3
o anche…
3.14
2
Sulla codifica…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
3
Info di servizio
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Laboratori
http://tinyurl.com/IEIMlab2013
 Divisione in gruppi
• Lunedi’: 95 studenti
• Giovedi’: 80 studenti
 Oggetto del primo lab
• Cosa e’ e come funziona un compilatore
• Sistemazione degli ambienti di sviluppo
• Comandi base da linea di comando
• Per progetto sostitutivo
 Dove: NECST Lab
 Quando: Mercoledì 20 Marzo @ 8am
4
Maiuscolo: solo if
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
5
Condizione da verificare
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Il carattere inserito deve essere
 X: =>a
 Y: <= z
• X e Y devono essere entrambe vere
X Y X and Y
0 0
0
0 1
0
1 0
0
1 1
1
(prodotto logico)
6
Maiuscolo: AND
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
7
Maiuscolo: codice ottimizzato
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
8
Maiuscolo: esecuzione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
9
Tautologie e Contraddizioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tautologia
 Una espressione logica che è sempre vera, per
qualunque combinazione di valori delle variabili
• Esempio: principio del “terzo escluso”: A or not A (tertium
non datur, non si dà un terzo caso tra l’evento A e la sua
negazione)
• Contraddizione
 Una espressione logica che è sempre falsa, per
qualunque combinazione di valori delle variabili
• Esempio: principio di “non contraddizione”: A and not A
(l’evento A e la sua negazione non possono essere
entrambi veri)
10
Equivalenza tra espressioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Due espressioni logiche si dicono equivalenti (e si
indica con ) se hanno la medesima tabella di
verità. La verifica è algoritmica. Per esempio:
AB
not A and not B  not (A or B)
00
1 and 1 = 1
not 0 = 1
01
1 and 0 = 0
not 1 = 0
10
0 and 1 = 0
not 1 = 0
11
0 and 0 = 0
not 1 = 0
• Espressioni logiche equivalenti modellano gli stessi
stati di verità a fronte delle medesime variabili
11
Proprietà dell’algebra di Boole
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• L’algebra di Boole gode di svariate proprietà,
formulabili sotto specie di identità
 cioè formulabili come equivalenze tra espressioni
logiche, valide per qualunque combinazione di valori
delle variabili
12
Algebra Booleana a due valori: Assiomi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
Gli operatori descritti godono delle proprietà definite dai
seguenti assiomi (postulati di Huntington):
 Le operazioni di disgiunzione (+) e congiunzione (·) sono
commutative, cioè per ogni elemento a,b  B
a+b = b+a
a·b = b·a
 Esiste un elemento neutro (o identità) rispetto a + (indicato
con 0) e un elemento neutro rispetto a · (indicato con 1), cioè:
a+0=a
a·1=a
 Le due operazioni sono distributive rispetto all’altra, cioè per
ogni a,b,c  B, risulta:
a+(b·c)=(a+b)·(a+c)
a·(b+c)=(a·b)+(a·c)
 Per ogni a  B esiste l’elemento a’ B, detto negazione
logica o complemento di a, tale che:
a+a’=1
a·a’=0
13
Algebra di Commutazione: Proprietà 1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
1: associativa
a+(b+c)=(a+b)+c
a*(b*c)=(a*b)*c
2: idempotenza
a+a=a
a*a=a
3: elemento nullo
a+1=1
a*0=0
4: unicità elemento inverso:
il complemento di a, a’, è unico
5: assorbimento
a+(a*b)=a
a*(a+b)=a
14
Algebra di Commutazione: Proprietà 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
6: Semplificazione
a+a’b = a+b
a*(a’+b) = a*b
7: involuzione
((a)’)’ =
a
8: Leggi di De Morgan
(a+b)’ = a’*b’
(a*b)’ = a’+b’
9: consenso
a*b+a’*c+b*c = a*b + a’*c
(a+b)*(a’+c)*(b+c)=(a+b)*(a’+c)
15
Fine, domande?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Pausa 10’
16
Obiettivi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• La struttura di un programma C
• Teorema di Böhm e Jacopini
• La calcolatrice
17
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() {...}
18
Teorema di Böhm e Jacopini
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Tutti i programmi possono essere scritti in
termini di tre strutture di controllo:
 Sequenza: istruzioni eseguite in ordine
 Selezione: istruzioni che permettono di
prendere strade diverse in base a una condizione
(costrutto di tipo se-allora)
 Iterazione: istruzioni che permettono di
eseguire ripetutamente un certo insieme di altre
istruzioni (costrutti di tipo fintantoché)
19
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;
20
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
21
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.
22
La calcolatrice?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Umh….
Meglio!
23
La calcolatrice!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Problema
 Si scriva un programma in C che, dati due
numeri, permette all’utente di calcolarne la
somma, sottrazione, moltiplicazione, e la
divisione tra essi
• L’utente, per ogni coppia di numeri inseriti, potrà
eseguire una e una sola operazione
 La calcolatrice potrà essere utilizzata più volte
e…
• ammettere l’operazione
di sommatoria per un
numero variabile, deciso
dall’utente, di valori
24
Problemi di fine giornata…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Si scriva un programma in C che
richiede l’inserimento di un numero
intero positivo, se l’inserimento e’ errato
ritorna un messaggio di errore
• Si scriva un programma in C che, dati
due caratteri, li ordina in ordine
alfabetico “inverso”
25
Fonti per lo studio + Credits
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Fonti per lo studio
 Informatica arte e mestiere, S. Ceri, D.
Mandrioli, L. Sbattella, McGrawHill
• Capitolo 6

• Credits
 Daniele Braga - http://home.dei.polimi.it/braga/