La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi su Tipi Semplici Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.

Presentazioni simili


Presentazione sul tema: "Algoritmi su Tipi Semplici Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari."— Transcript della presentazione:

1 Algoritmi su Tipi Semplici Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari

2 2 Successione di Fibonacci n problema: generare e stampare i primi n termini della successione di Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13,... n soluzione: nuovo = precedente + precedente del precedente c b a n a:= 0; b:= 1; c:= a+b; n … poi gestire lo scambio dei ruoli: –il nuovo termine diventa quello corrente –il precedente diventa il precedente del precedente

3 3 Successione di Fibonacci (2) a := 0; b := 1; i := 2; while i < n do begin i := i + 1; c := a + b; a := b; b := c; end

4 4 Successione di Fibonacci (3) program Fibonacci (input,output); var a,b,i,n: integer; begin a := 0; b := 1; i := 2; write('Quanti termini della serie devo stampare ?: '); readln(n); while i < n do begin write(a,',',b,','); a := a + b; b := a + b; i := i + 2; end; if i = n then writeln(a,',',b) else writeln(a) end.

5 5 Calcolo del Massimo Comun Divisore n problema: dati due interi positivi, n e m, calcolare il loro massimo comun divisore n supponiamo n > m n soluzione banale: –scomporre i due numeri separatamente nei loro fattori –nelle due liste di fattori trovare il massimo elemento comune

6 6 Calcolo del Massimo Comun Divisore Algoritmo Euclideo n Osservazioni: –un divisore esatto spezza un intero in parti uguali –il MCD di n e m non è maggiore di m –il MCD di n e m è anche MCD di m e n-m n Strategia: –dividere il n per m –se il resto è nullo allora m è il MCD cercato altrimenti ripetere la procedura su m e n-m xxx p segmenti di dimensione x q segmenti di dimensione x n m ABC

7 7 Implementazione Algoritmo Euclideo program mcd (input,output); var n,m,r: integer; begin writeln('Massimo Comun Divisore'); write('Immettere l''intero maggiore: '); readln(n); write('Immettere l''intero minore: '); readln(m); repeat r := n mod m; n := m; m := r; until r = 0; writeln('MCD = ',n) end.

8 8 Generazione Numeri Pseudo-Casuali n problema: utilizzare il metodo delle congruenze per produrre un insieme uniforme di numeri pseudo- casuali n successione lineare congruente: x n+1 = (ax n + b) mod m n parametri: –m modulo1. modulo senza arrotondamenti 2. maggiore della lunghezza della sequenza –x 0 seme 0 x 0 m –a moltiplicatoresqrt(m) a m - sqrt(m) –b incrementodispari, non multiplo di 5 primo rispetto a m

9 9 Implementazione Generazione Numeri Pseudo-Casuali program random (input,output); var x,a,b,m: integer; c: char begin m := 4096; b := 853; a := 109; write('Immettere il numero seme x_0: '); readln(x); repeat x := (a * x + b) mod m; writeln(x); write('continua [S/n] ?'); readln(c) until c = 'n' end.


Scaricare ppt "Algoritmi su Tipi Semplici Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari."

Presentazioni simili


Annunci Google