28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del Algoritmi e basi del C C Marco D. Santambrogio – [email protected] Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – [email protected] Ver. aggiornata al 3 Ottobre 2013

Embed Size (px)

Citation preview

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Algoritmi e basi del CAlgoritmi e basi del C

Marco D. Santambrogio – [email protected]. aggiornata al 3 Ottobre 2013

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Installation PartyInstallation Party

• Dove: L.06 • Quando:

Sabato 12 Ottobre 9.00am - 12.00pm

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

WATWAT

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

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

WATWAT

4

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

WATWAT

Nastro di Mobius? Sono d'accordo sul fatto di dover scremare, ma così le terrorizziamo queste matricole...

5

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

WATWAT

6

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

7

Struttura di un Struttura di un programma Cprogramma C

inclusione librerie / per poter invocare funzioni utili (i/o, ...) /dichiarazione di variabili globali e funzioni

int main ( ) {

dichiarazione di variabili locali

istruzione 1; / tutti i tipi di operazioni, e cioè: /istruzione 2; / istr. di assegnamento / istruzione 3; / istr. di input / output /istruzione 4; / istr. di controllo (condizionali, cicli) /...istruzione N;

}

parte esecutiva

parte dichiarativa locale

parte dichiarativa globale

Ogni programma C deve contenere un modulo int main() {...}

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

8

• 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, ...)

Struttura di un Struttura di un programma Cprogramma C

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

9

Istruzioni semplici e Istruzioni semplici e compostecomposte

• 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

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Mostra caratteriMostra caratteri

• Problema Si scriva un programma che richieda

l’inserimento di un carattere e lo mostri a video

10

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo carattere e codifica ASCIITipo carattere e codifica ASCII

11

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ricordate il Ricordate il ““-32-32””

12

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di calcolo Un esempio di calcolo

13

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili e assegnamentiVariabili e assegnamenti

14

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.

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

15

Esecuzione degli Esecuzione degli assegnamentiassegnamenti

• 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 =

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

16

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 = a * 5; a = a + 1; a = a - 1;a += 7; a *= 5; ++a; --a;

Esempi di assegnamentoEsempi di assegnamento

Istruzioni della forma variabile = variabile operatore espressione;si possono scrivere come: variabile operatore = espressione;

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

17

• 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

Aritmetica (1/2)Aritmetica (1/2)

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

18

Aritmetica (2/2)Aritmetica (2/2)Operazione Operatore C Espressione

aritmeticaEspressione C

Addizione + f+7 f + 7Sottrazione - p-c p – cMoltiplicazione * bm b * mDivisione / x/y x / yModulo % 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.

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come interagiamo con Come interagiamo con ““l’esternol’esterno”?”?

• 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

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inserimento datiInserimento dati

• Problema Richiedi all’utente la sua altezza in

centrimentri e mostrala a video in metri

• Pseudocodice1.Scrivi “quanto sei alto?”2.Leggi altezzacm3.Altezzam = alteccacm/1004.Scrivi “sei alto: altezzam”

20

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Pseudocodice vs Codice CPseudocodice vs Codice C

• Pseudocodice

1. Scrivi “quanto sei alto?”2. Leggi altezzacm3. Altezzam = alteccacm/1004. Scrivi “sei alto: altezzam”

21

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un primo errore Un primo errore

22

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un secondo erroreUn secondo errore

23

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un terzo erroreUn terzo errore

24

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione correttaSoluzione corretta

25

L ’importanza dei tipi di dato

Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipi di dato in CTipi di dato in C

• 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

Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problemi di fine giornata…Problemi di fine giornata…

• 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

Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 3 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio

how to solve it, Poyla G• http://math.hawaii.edu/home/pdf/putnam/

PolyaHowToSolveIt.pdf 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