Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di...

23
Dario Bianchi - 20 03 Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi

Transcript of Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di...

Page 1: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Fondamenti di InformaticaAlgoritmi

Corso di Laurea in

Ingegneria Civile

Prof. Dario Bianchi

Page 2: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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

Page 3: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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.

Page 4: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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.

Page 5: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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)

Page 6: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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:

Page 7: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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.

Page 8: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Algoritmo di Euclide: esempio

m n r

45 30 15

30 15 0

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

Page 9: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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.

Page 10: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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.

Page 11: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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.

Page 12: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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,202 e’ primo lo elimino con tutti i suoi multipli:3,5,7,9,11,13,15,17,193 e’ primo lo elimino con tutti i suoi multipli: 5,7,11,13,17,195 e’ primo lo elimino con tutti i suoi multipli: …19 e’ primo, la sequenza e’ vuota, termino.

Page 13: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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

Page 14: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Simboli

Start

Stop

Fine diagramma

ElaborazioneAssegnamenro

Inizio diagramma Lettura dati

Scrittura dati

Var

Var

Var = Expr

Si NoCondizione

Decisione

CondizioniExpr1 = Expr2 Expr1 ≠ Expr2Expr1 < Expr2 Expr1 > Expr2Expr1 ≤ Expr2 Expr1 ≥ Expr2

Linea di flusso

Page 15: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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

Page 16: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Somma di tre numeriStart

X1

X2

X3

Somma←X1+X2+X3

Somma

Fine

Page 17: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Somma di N numeri

Somma

Fine

Start

N

X3Somma=0

I=0

I < N

Somma←Soma+XI=I+1

Si

X

N

Page 18: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Strutture per il controllo di flusso

• Sequenza

I

O

I

O

Page 19: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Strutture per il controllo di flusso

• Decisione If then

I

O

I

O

Vero

Falso

Cond

Azione

Page 20: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Strutture per il controllo di flusso

• Decisione If Then Else

I

O

I

O

Vero FalsoCond

Azione1 Azione2

Page 21: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Strutture per il controllo di flusso

• Ciclo While-Do

I

O

I

O

Cond

Vero

Falso

Azione

Page 22: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 Fond. Informatica - Ing. Civile

Strutture per il controllo di flusso

• Ciclo Repeat Until

I

O

I

O

Azione

Cond

Falso

Vero

Page 23: Dario Bianchi - 2003Fond. Informatica - Ing. Civile Fondamenti di Informatica Algoritmi Corso di Laurea in Ingegneria Civile Prof. Dario Bianchi.

Dario Bianchi - 2003 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