1 / 23

Fondamenti di Informatica Algoritmi

Fondamenti di Informatica Algoritmi. Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi. Elaborazione dell’Informazione. Risolvere un problema comporta: Avere dei dati in ingresso Elaborare questi dati Produrre dei dati in uscita Bisogna quindi: Descrivere i dati

hamal
Download Presentation

Fondamenti di Informatica Algoritmi

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. Fondamenti di InformaticaAlgoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi Fond. Informatica - Ing. Civile

  2. Elaborazione dell’Informazione Risolvere un problema comporta: • Avere dei dati in ingresso • Elaborare questi dati • Produrre dei dati in uscita Bisogna quindi: • Descrivere i dati • Specificare come trattarli Fond. Informatica - Ing. Civile

  3. Processi • Un processo trasforma un insieme di dati iniziali nei risultati finali mediante una successione di azioni elementari. • Per descrivere un processo e’ necessario utilizzare un linguaggio. Il linguaggio deve far corrispondere a una frase ben precisa o istruzione ad ogni azione elementare e deve indicare come le aziono elementari si succedono nel processo. Fond. Informatica - Ing. Civile

  4. Programma, esecutore, algoritmo • L’insieme delle istruzioni che descrivono un processo espresse in un qualche linguaggio prende il nome di programma. • Il programma e’ espresso in termini di azioni elementari che un esecutore, uomo o macchina, deve essere in grado di mettere in atto. • La descrizione rigorosamente definita di un processo (eseguibile in un tempo finito) e’ un algoritmo. Fond. Informatica - Ing. Civile

  5. Requisiti degli algoritmi • Ogni istruzione deve essere ben definita nei suoi effetti (rigorosamente e senza ambiguita`). • Ogni istruzione rappresenta una azione elementare che che l’esecutore puo` portare a termine in un tempo finito. • Il processo dall’algoritmo deve terminare dopo un numero finito di passi. ( un passo = esecuzione di una azione elementare) Fond. Informatica - Ing. Civile

  6. Algoritmo di Euclide • Calcola il massimo comun divisore fra due interi positivi m ed n (supponiamo che n ≥ m, altrimenti li possiamo scambiare). • L’ algoritmo si compone di 3 passi ripetuti ciclicamente fino ad una condizione di arresto: Fond. Informatica - Ing. Civile

  7. Algoritmo di Euclide • Passo E1 {ricerca del resto} : Sia m ≥ n. Si divide m per n. Sia r il resto. Allora 0 ≤ r <n. • Passo E2 {r = 0?} : Se r = 0 l’ algoritmo e’ terminato e n e’ la risposta finale. • Passo E3 {scambio} : Se r ≠ 0 si operano gli scambi m← n e n ←r. Si torni al passo E1. Fond. Informatica - Ing. Civile

  8. Algoritmo di Euclide: esempio Si voglia l’ MCD fra 30 e 45 (I due numeri vanno scambiati) Poiche’ il resto r = o, l’ultimo valore per n e’ l’ MCD Fond. Informatica - Ing. Civile

  9. Algoritmo di Euclide: finitezza • Poiche’ al passo E1 {ricerca del resto} si ha senpre 0 ≤ r <n, ad ogni scambio il valore di n decresce. • Dopo un numero finito di passi si raggiungera` la condizione r = 0, e la terminazione dell’ algoritmo. Fond. Informatica - Ing. Civile

  10. Algoritmo di Euclide: correttezza • Ad ogni passo abbiamo che m = q n + r (con q intero). • Se r ≠0 ogni divisore di m,n divide anche r=m-qn. D’altra parte anche ogni divisore di n,r divide m=qn+r. • In pratica la coppia m,n primo e dopo lo scambio m← n e n ←r hanno lo stesso MCD. • Se r=0 l’ algoritmo termina e n e’ l’MCD. Fond. Informatica - Ing. Civile

  11. Il crivello di Eratostene • Si vogliono trovare tutti i numeri primi compresi fra 2 e n (In modo efficiente). 1) Si costruisca una sequenza ordinata dei numeri fra 2 e n. 2) Si estragga il primo numero dalla sequenza. E’ necessariamente un numero primo. 3) Si eliminino dalla sequenza tutti i multipli del numero estratto al passo 2). 4) se la sequenza non e’ vuota si torna la passo 2) altrimenti si termina. Fond. Informatica - Ing. Civile

  12. Il crivello di Eratostene: esempio • Sequenza iniziale (da 2 a 20): 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20 2 e’ primo lo elimino con tutti i suoi multipli: 3,5,7,9,11,13,15,17,19 3 e’ primo lo elimino con tutti i suoi multipli: 5,7,11,13,17,19 5 e’ primo lo elimino con tutti i suoi multipli: … 19 e’ primo, la sequenza e’ vuota, termino. Fond. Informatica - Ing. Civile

  13. Diagrammi di flusso • Sono un linguaggio grafico per la rappresentazione di algoritmi • Le operazioni su cui si basa un diagramma di flusso • Ingresso/Uscita dati • Trasferimento di informazione (Assegnamenti) • Calcolo di espressioni aritmetiche e logiche • Assunzione di decisioni • Esecuzione di iterazioni (Cicli) • Possono contenere costanti e variabili Fond. Informatica - Ing. Civile

  14. Simboli Start Var Var = Expr Linea di flusso Elaborazione Assegnamenro Inizio diagramma Lettura dati Stop Var Fine diagramma Scrittura dati Si No Condizione Condizioni Expr1 = Expr2 Expr1 ≠ Expr2 Expr1 < Expr2 Expr1 > Expr2 Expr1 ≤ Expr2 Expr1 ≥ Expr2 Decisione Fond. Informatica - Ing. Civile

  15. Programmazione Strutturata • Si compone di sequenze, decisioni (if then, if then else) e cicli (while-do, repeat until). • Ogni diagramma ha esattamente un ingresso ed una uscita. • Ogni azione puo essere • una azione semplice • una azione composta da altri diagrammi strutturati Fond. Informatica - Ing. Civile

  16. Somma di tre numeri Start X1 Somma←X1+X2+X3 X2 Somma X3 Fine Fond. Informatica - Ing. Civile

  17. Somma di N numeri Start I < N N N Si Somma=0 I=0 X Somma X3 Fine Somma←Soma+X I=I+1 Fond. Informatica - Ing. Civile

  18. Strutture per il controllo di flusso • Sequenza I I O O Fond. Informatica - Ing. Civile

  19. Strutture per il controllo di flusso • Decisione If then I I Vero Cond Azione Falso O O Fond. Informatica - Ing. Civile

  20. Strutture per il controllo di flusso • Decisione If Then Else I I Vero Falso Cond Azione1 Azione2 O O Fond. Informatica - Ing. Civile

  21. Strutture per il controllo di flusso • Ciclo While-Do I I Falso Cond Vero O O Azione Fond. Informatica - Ing. Civile

  22. Strutture per il controllo di flusso • Ciclo Repeat Until I I Azione Falso Vero O Cond O Fond. Informatica - Ing. Civile

  23. Tecniche di programmazione • Programmazione top-down: • scomposizione iterativa del problema in sottoproblemi • i sottoproblemi devono essere indipendenti ed avere interfacce ben definite • visibilità dei dettagli di ogni sottoproblema solo all’interno del sottoproblema stesso Fond. Informatica - Ing. Civile

More Related