Algoritmi su Tipi Semplici

Slides:



Advertisements
Presentazioni simili
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Advertisements

Esercizio Usate il ciclo repeat until (controllo post condizionale) per simulare il prodotto N x M con M somme di N. Esempio: 5 x 3 equivale a fare 5 +5.
Informatica 22/03/2012.
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Procedure e funzioni ricorsive
LS Tron Classe 4TC – as 2006/07 LORGANIZZAZIONE DEI PROGRAMMI UD. 8 p. 282.
PROGRAMMARE IN PASCAL (le basi)
Le funzioni UD. 8 – Lorganizzazione dei programmi p. 309 LS Tron 4TC 06/07.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Fondamenti di Informatica
numero rette n numero parti piano f(n) f(n -1)n -1 f(n -1) + nn numero parti piano f(n) numero rette n.
INFORMATICA Strutture iterative
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Tail recursion: esempio
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Primo esercizio Scrivere un programma che legge da input
INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Introduzione alla programmazione lll
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Gli algoritmi AA 2003/04 © Alberti Programmazione 2. Algoritmi.
Esercitazioni sui File Nicola Fanizzi - DIB Corso (B) di Programmazione CdL in Informatica – I livello A.A. 2003/2004.
Organizzazione del corso
Istruzioni Decisionali
Puntatori - Cenni Nicola Fanizzi Corso di Programmazione C.d.L. in Informatica DIB - Università degli Studi di Bari.
Istruzioni Iterative Nicola Fanizzi
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Introduzione alla Ricorsione
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
OPERAZIONI CON STRINGHE Le operazioni più interessanti da fare, per ora, con le stringhe sono: determinare la lunghezza della stringa, cioè quanti caratteri.
CAPITOLO 7.
CAPITOLO 6.
Fondamenti di Informatica Algoritmi
ELEMENTI DI PROGRAMMAZIONE
Calcolo del Massimo Comun Divisore
Metodo della moltiplicazione
PROGRAMMAZIONE: linguaggi
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
Massimo Comun Divisore
Lordinamento di tre numeri interi. acquisisci a,b,c (a > b) AND (a > c)(b > a) AND (b > c) (c > a) AND (c > b) Scrivi c,b,aScrivi b,c,aScrivi c,a,bScrivi.
I numeri di Fibonacci.
matematico greco del III° secolo a.c.,
Problema: come dividere due numeri
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Programmazione Strutturata
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
RISOLUZIONE DI EQUAZIONI
Il linguaggio Fortran 90: 3. Procedure e Funzioni
ESERCIZIO Assegnata una lista L di caratteri ed un carattere k, scrivere una procedura che cancelli tutte le occorrenze di k in L. PROGRAM Liste(output,input);
Top STACK Top Le operazioni fondamentali che si fanno sugli stack sono: riempimento e svuotamento. Questo implica che durante lo svolgimento del programma.
PROVA INTERCORSO MOD.B a.a RICORSIONE ESERCIZI A1.1-A1.6.
Algoritmi e Strutture Dati
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Interpreti e compilatori
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 11 Distanza genomica.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Procedure - Funzioni. Procedure e funzioni Parti di programma a cui è associato un nome e che può essere attivata mediante una chiamata. Le funzioni a.
Samuele Marino. Cos’è il Repeat Until?  In Pascal, il Repeat Until è un ciclo che consiste nel ripetere (Repeat) una o più istruzioni fino a quando (Until)
MASSIMO COMUNE DENOMINATORE (M.C.D)
Algoritmo per il calcolo del maggiore tra tre numeri qualsiasi Francesco PUCILLO matr
Transcript della presentazione:

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

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

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

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.

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

Calcolo del Massimo Comun Divisore Algoritmo Euclideo x p segmenti di dimensione x q segmenti di dimensione x n m A B C 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 Strategia: dividere il n per m se il resto è nullo allora m è il MCD cercato altrimenti ripetere la procedura su m e n-m

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.

Generazione Numeri Pseudo-Casuali problema: utilizzare il metodo delle congruenze per produrre un insieme uniforme di numeri pseudo-casuali successione lineare congruente: xn+1 = (axn + b) mod m parametri: m modulo 1. modulo senza arrotondamenti 2. maggiore della lunghezza della sequenza x0 seme 0  x0  m a moltiplicatore sqrt(m)  a  m - sqrt(m) b incremento dispari, non multiplo di 5 primo rispetto a m

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.