340 likes | 456 Views
Algoritmi e basi del C. Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014. Lab e Feedback. Ho solo 7 gruppi… tutti al lunedì. Lab e Feedback. Ho solo 7 gruppi… tutti al lunedì. WAT. Lab e Feedback. Ho solo 7 gruppi… tutti al lunedì
E N D
Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014
Lab e Feedback • Ho solo 7 gruppi… tutti al lunedì
Lab e Feedback • Ho solo 7 gruppi… tutti al lunedì WAT
Lab e Feedback • Ho solo 7 gruppi… tutti al lunedì • Feedback 1ma lezione: • Hai trovato piu' utili gli esempi "descrittivi" o quelli in C? • Entrambi egualmente utili
Lab e Feedback • Ho solo 7 gruppi… tutti al lunedì • Feedback 1ma lezione: • Hai trovato piu' utili gli esempi "descrittivi" o quelli in C? • Entrambi egualmente utili WAT
Obiettivi • Algoritmi • Pseudocodice • Diagramma di flusso • Una prima introduzione al C • Un primo programma • Tipi di dato • Strutture di controllo
Algortimo e Programma • Algoritmo • Descrizione della soluzione di problema scritta in modo da poter essere eseguita da un esecutore (eventualmente diverso dall’autore dell’algoritmo) • Sequenza di istruzioni che operano su dati. • Programma • Algoritmoscritto in modo da poter essere eseguito da un calcolatore (esecutore automatico) 13
Come realizzare un algoritmo • Parte 0/4: La brutta notizia! how to solve it di Poyla G. - http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.pdf
Come realizzare un algoritmo • Parte 1/4: Capire il problema • Quale e’ il problema generale che si scerca di risolvere?
Come realizzare un algoritmo • Parte 2/4: Fare/creare un piano • Ci possono essere diverse strategie per risolvere lo stesso problema • Ipotizzare e verificare • Cercare dei pattern • Risolvere problemi più piccoli • Disegnare uno schema
Come realizzare un algoritmo • Parte 3/4: Portare avanti il piano • Mettere in azione il vostro piano! • Rimanere sul piano deciso a meno che non vi siano evidenti motivi per credere che esso non funzionerà più La pazienza è il vostro miglior alleato
Come realizzare un algoritmo • Parte 4/4: Ragionare e comprendere • Comprendere quello che si è fatto e dove l’algoritmo individuato possa essere applicato al meglio La pratica è fondamentale!
Testare il proprio lavoro!!! • Se vi è qualche cosa che non funziona nel vostro programma/algoritmo, gli utenti lo troveranno!
Acquisto DVD Novita’ Novita’ Azione Dove lo cerco? In quale settore? … Indicatori di settore Trovato il settore, come trovo il mio DVD? Ordine alfabetico
Alogoritmo per l’acquisto DVD • Acquisisci il nome del settore (s) del DVD (d) • Vai al settore (s) • Cerca (t) • Prendi il DVD (d) • Acquisisci e Cerca sono anche loro algoritmi
CERCA: contesto e problema • Contesto • Sei nel settore (s) corretto • Nel settore sono presenti diversi DVD • Il settore puo’ essere visto come un insieme di DVD: s={d0, d1, …, dn} • Problema • Devo trovare il DVD (dt) tra tutti i DVD presenti nel settore (s) • Aiuto: il settore e’ ordinato • I DVD sono ordinati alfabeticamente
Algoritmo CERCA • Noti • s={d0, d1, …, dn}, ord. alfabeticamente • DVD cercato = dt • Ci sono DVD? • Allora • Leggo il titolo del primo DVD in s • Se il titolo e’ il titolo cercato Allora concludo la ricerca con successo Altrimenti passo al DVD successivo • Altrimenti concludo la ricerca con esito negativo
CERCA: osservazioni • Cosa succede se il settore e’ vuoto? • Come funziona la mia ricerca? • Se in s vi sono 10000 DVD e io cerco Zorro? • Scenario ancora peggiore • Voglio cercare il numero del mio professore di IEIM (Santambrogio) nella rubrica telefonica di Milano.. • Esistono diversi modi per risolvere un problema
CERCA… migliorata • Noti • s={d0, d1, …, dn}, ord. alfabeticamente • DVD cercato = dt • Ci sono DVD? • Allora • Leggo il titolo del DVD (dx) nel mezzo di s • Se il titolo di dx e’ il titolo cercato • Allora concludo la ricerca con successo • Altrimenti se dx < dt • allora ricomincio da 1 considerando la meta’ superiore di s • Altrimenti ricomincio da 1 considerando la meta’ inferiore di s • Altrimenti concludo la ricerca con esito negativo
Graficamente: Noti dt s={d0, d1, …, d11} d7 d11 d3 d5 d6 d9 d10 d1 d2 d4 d8 d0
Leggo dx e lo confronto con dt d6 dt = ? dx=d6 NO d6 dt <
Ricomincio sulla meta’ superiore d7 d11 d6 d9 d10 d8 dt dx=d9
Leggo dx e lo confronto con dt d9 dt = ? dx=d9 d9 SI Termino con successo la mia ricerca comprando d9
Come si specifica un algoritmo? • Utilizzando dello pseudocodice • Utilizzando dei diagrammi di flusso (aka schemi a blocchi) Se A > B allora B = A altrimenti A = B Assegnamento Fine Inizio Test Scrivi Leggi
Massimo Comune Divisore • Definizione • Dicesi Massimo Comune Divisore (M.C.D.) il piu’ grande tra i divisori comuni a due o piu’ numeri • Esempi • Dati A=12, B=15 • Divisori comuni: 1, 3 - MCD=3 • Dati A=10, B=30 e C=20 • Divisori comuni: 1, 2, 5, 10 - MCD=10
MCD: pseudocodice • Leggi A e B • min= il minimo tra A e B • tmp = 1 • MCD = 1 • Finche’ tmp < min • tmp = tmp + 1 • Se tmp divide A e B • Allora MCD = tmp • Stampa MCD
MCD: diagramma di flusso min=minimo{A,B} tmp=1 MCD=1 tmp<min? no si tmp = tmp + 1 Inizio Fine no tmp divide A e B Stampa MCD Leggi A e B si MCD = tmp
Fonti per lo studio + Credits • 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