Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Fondamenti di Informatica Algoritmi
Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi 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 Dario Bianchi Fond. Informatica - Ing. Civile
3
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. Dario Bianchi 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. Dario Bianchi 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) Dario Bianchi Fond. Informatica - Ing. Civile
6
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: Dario Bianchi Fond. Informatica - Ing. Civile
7
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. Dario Bianchi Fond. Informatica - Ing. Civile
8
Algoritmo di Euclide: esempio
Si voglia l’ MCD fra 30 e 45 (I due numeri vanno scambiati) m n r 45 30 15 Poiche’ il resto r = o, l’ultimo valore per n e’ l’ MCD Dario Bianchi 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. Dario Bianchi 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. Dario Bianchi 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. Dario Bianchi 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. Dario Bianchi Fond. Informatica - Ing. Civile
13
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 Dario Bianchi Fond. Informatica - Ing. Civile
14
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 Dario Bianchi 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 Dario Bianchi Fond. Informatica - Ing. Civile
16
Fond. Informatica - Ing. Civile
Somma di tre numeri Start X1 Somma←X1+X2+X3 X2 Somma X3 Fine Dario Bianchi Fond. Informatica - Ing. Civile
17
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 Dario Bianchi Fond. Informatica - Ing. Civile
18
Strutture per il controllo di flusso
Sequenza I I O O Dario Bianchi Fond. Informatica - Ing. Civile
19
Strutture per il controllo di flusso
Decisione If then I I Vero Cond Azione Falso O O Dario Bianchi Fond. Informatica - Ing. Civile
20
Strutture per il controllo di flusso
Decisione If Then Else I I Vero Falso Cond Azione1 Azione2 O O Dario Bianchi Fond. Informatica - Ing. Civile
21
Strutture per il controllo di flusso
Ciclo While-Do I I Falso Cond Vero O O Azione Dario Bianchi Fond. Informatica - Ing. Civile
22
Strutture per il controllo di flusso
Ciclo Repeat Until I I Azione Falso Vero O Cond O Dario Bianchi 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 Dario Bianchi Fond. Informatica - Ing. Civile
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.