230 likes | 365 Views
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
E N D
Fondamenti di InformaticaAlgoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi Fond. Informatica - Ing. Civile
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Somma di tre numeri Start X1 Somma←X1+X2+X3 X2 Somma X3 Fine Fond. Informatica - Ing. Civile
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
Strutture per il controllo di flusso • Sequenza I I O O Fond. Informatica - Ing. Civile
Strutture per il controllo di flusso • Decisione If then I I Vero Cond Azione Falso O O Fond. Informatica - Ing. Civile
Strutture per il controllo di flusso • Decisione If Then Else I I Vero Falso Cond Azione1 Azione2 O O Fond. Informatica - Ing. Civile
Strutture per il controllo di flusso • Ciclo While-Do I I Falso Cond Vero O O Azione Fond. Informatica - Ing. Civile
Strutture per il controllo di flusso • Ciclo Repeat Until I I Azione Falso Vero O Cond O Fond. Informatica - Ing. Civile
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