1 / 34

Algoritmi e basi del C

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ì

whitby
Download Presentation

Algoritmi e basi del C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

  2. Lab e Feedback • Ho solo 7 gruppi… tutti al lunedì

  3. Lab e Feedback • Ho solo 7 gruppi… tutti al lunedì WAT

  4. 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

  5. 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

  6. Linguaggio naturale

  7. Linguaggio naturale: ambiguo!

  8. What it’s all about!

  9. What it’s all about!

  10. What it’s all about!

  11. Obiettivi • Algoritmi • Pseudocodice • Diagramma di flusso • Una prima introduzione al C • Un primo programma • Tipi di dato • Strutture di controllo

  12. Algoritmi

  13. 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

  14. 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

  15. Come realizzare un algoritmo • Parte 1/4: Capire il problema • Quale e’ il problema generale che si scerca di risolvere?

  16. 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

  17. 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

  18. 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!

  19. Testare il proprio lavoro!!! • Se vi è qualche cosa che non funziona nel vostro programma/algoritmo, gli utenti lo troveranno!

  20. Acquisto DVD Novita’ Novita’ Azione Dove lo cerco? In quale settore? … Indicatori di settore Trovato il settore, come trovo il mio DVD? Ordine alfabetico

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. Graficamente: Noti dt s={d0, d1, …, d11} d7 d11 d3 d5 d6 d9 d10 d1 d2 d4 d8 d0

  27. Leggo dx e lo confronto con dt d6 dt = ? dx=d6 NO d6 dt <

  28. Ricomincio sulla meta’ superiore d7 d11 d6 d9 d10 d8 dt dx=d9

  29. Leggo dx e lo confronto con dt d9 dt = ? dx=d9 d9 SI Termino con successo la mia ricerca comprando d9

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

More Related