ALGORITMI Luglio 2004 Luglio 2004 Algoritmi.

Slides:



Advertisements
Presentazioni simili
Sottoprogrammi: funzioni e procedure
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Linguaggi algoritmici
Selezione A. Ferrari.
Evoluzione dei linguaggi di programmazione
Procedure e funzioni A. Ferrari.
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
ALGORITMI Un algoritmo (detto anche procedura, prescrizione, processo, routine, metodo) è un insieme di regole (dette anche direttive o istruzioni) che,
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Fondamenti di Informatica
Esempio 1: Calcolo del M.C.D.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Master Bioinformatica 2002: Progetto di Algoritmi1 Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Introduzione alla programmazione lll
Introduzione alla programmazione l
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Modelli simulativi per le Scienze Cognitive
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Gli algoritmi AA 2003/04 © Alberti Programmazione 2. Algoritmi.
Unità Didattica 1 Algoritmi
Algoritmi su Tipi Semplici
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Gli algoritmi.
Elementi di Informatica
Elementi di Informatica
Dall’algoritmo al programma.
ELEMENTI DI PROGRAMMAZIONE
EQUAZIONI DI SECONDO GRADO
Metodo della moltiplicazione
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
PROGRAMMAZIONE: linguaggi
Linguaggio C++ Fondamenti Un primo semplice esempio:
Massimo Comun Divisore
Problema: come dividere due numeri
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
ECDL Patente europea del computer
Programmazione Strutturata
Rappresentazione degli algoritmi
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Algoritmi.
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
ALGORITMI Dal problema al programma Definizione di algoritmo
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
Università degli Studi di Perugia 20/09/2015Informatica applicata all’educazione a.a Informatica applicata all’educazione a.a Corso.
Dal problema al programma
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Transcript della presentazione:

ALGORITMI Luglio 2004 Luglio 2004 Algoritmi

L’algoritmo più antico Algoritmo di Euclide [Elementi, libro VII, proposizioni I e II, 330-320 a.C.] Dati due interi positivi m e n, trovare il loro massimo comune divisore, cioè il massimo intero positivo che divide senza resto sia m che n E1. [trovare il resto]: dividere m per n e chiamare r il resto E2. [è zero?]: se r=0 l’algoritmo termina e n è la risposta E3. [scambiare]: porre mn, nr e tornare indietro al passo E1 (1) m e n sono dati d’ingresso, presi dall’insieme degli interi positivi (2) n, dato d’uscita, è il massimo comune divisore dei dati d’ingresso (3) r decresce dopo ogni applicazione del passo E1, e una sequenza decrescente di interi positivi deve necessariamente finire con 0 (4)-(5) la divisione e il resto sono definiti matematica-mente e sono eseguibili in un tempo finito Luglio 2004 Algoritmi

CONOSCENZE SUL PROBLEMA NECESSARIE A COSTRUIRE l’ALGORITMO Proprietà del MCD (1) MCD(m,n) = MCD(n,m) (2) se m = n allora MCD(m,n) = n = m (3) se m > n e n = 0 allora MCD(m,0) = m (4) se m > n e n > 0 allora MCD(m,n) = MCD(m-n,n) = MCD(m-2*n,n) = ….. = MCD(m-q*n,n) = MCD(r,n) = MCD(n,r) CONOSCENZE SUL PROBLEMA NECESSARIE A COSTRUIRE l’ALGORITMO E1. [trovare il resto]: dividere m per n e chiamare r il resto E2. [è zero?]: se r=0 l’algoritmo termina e n è la risposta E3. [scambiare]: porre mn, nr e tornare indietro al passo E1 Luglio 2004 Algoritmi

Il concetto di algoritmo [Da Al-Kowarizmi, matematico arabo del IX secolo] Algoritmo: metodo generale, astratto ed effettivo di risoluzione di problemi formulati esplicitamente Generale: sommare 3+4 (particolare) sommare x+y (generale, per ogni coppia x,y) Astratto: indipendente dal metodo di rappresentazione Effettivo: soddisfa condizioni di definitezza ed eseguibilità Formulazione esplicita/implicita di problemi Luglio 2004 Algoritmi

Diverse rappresentazioni di uno stesso algoritmo Flowchart INIZIO input m,n m m+1 n n - 1 n=0 vero output m in italiano in pseudocodice 1. Acquisisci in ingresso begin i valori di m,n read m,n 2. Incrementa m di 1 repeat e decrementa n di 1 mm+1 3. Se n0 torna a 2 nn-1 4. Produci in uscita il until n=0 valore di m write m end falso FINE Luglio 2004 Algoritmi

Effettività Condizioni di definitezza ed eseguibilità di un algoritmo: (1) ha zero o più dati in ingresso (quantità assegnate prima dell’inizio) (2) ha uno o più dati d’uscita (quantità ottenute alla fine, che hanno una relazione specificata con gli ingressi) (3) deve poter terminare dopo un numero finito e discreto di passi (4) ogni passo deve essere definito in modo preciso e non ambiguo per ogni caso possibile (5) le azioni (operazioni) devono potere essere eseguite da un esecutore, che le sa interpretare, in una quantità finita di tempo [una ricetta di cucina non è un algoritmo] Luglio 2004 Algoritmi

Esecuzione e terminazione somma (m,n) INIZIO m,n n=0 m n n=0 m n n=0 inizio 3 2 inizio 3 -1 1o giro 4 1 falso 1o giro 4 -2 falso 2o giro 5 0 vero 2o giro 5 -3 falso ……… … …. n-esimo falso giro non termina per n0! mm+1 n n-1 falso vero FINE Luglio 2004 Algoritmi

Algoritmi che usano altri algoritmi prodotto (x,y) INIZIO x,y yy-1 z somma(z,x) y=0 vero FINE x y z somma (z,x) y=0 inizio 3 2 0 1o giro 3 1 3 somma (0,3) falso 2o giro 3 0 6 somma (3,3) vero z0 falso Luglio 2004 Algoritmi

Soluzione di problemi formulati implicitamente A deve determinare l'età dei tre figli di B (1) B dice ad A che il prodotto delle età dei figli è 36 A chiede un altro dato (2) B dice ad A la somma delle età dei figli A chiede ancora un altro dato (3) B dice ad A che il figlio maggiore suona il pianoforte A dice a B l'età dei tre figli Che età hanno i tre figli? Ragionamento: (1) triple il cui prodotto è 36 <1,1,36> <1,4,9> <2,3,6> <1,2,18> <1,6,6> <3,3,4> <1,3,12> <2,2,9> (2) somma delle triple precedenti 1+1+36=38 1+4+9=14 2+3+6=11 1+2+18=21 1+6+6=13 3+3+4=10 1+3+12=16 2+2+9=13 Poiché A chiede un altro dato, la somma è 13, in quanto ci sono 2 triple con quella somma (3) il pianoforte è irrilevante, l’informazione è che uno dei 3 figli è il maggiore: in 1+6+6 non c’è un maggiore, mentre c’è in 2+2+9, che è la soluzione Luglio 2004 Algoritmi

STORIA DEGLI ALGORITMI Donald E. Knuth (1970) americano “La teoria degli algoritmi… si occupa principalmente della esistenza o non esistenza di algoritmi effettivi per calcolare particolari quantità… L’analisi degli algoritmi… è invece intesa a significare la teoria delle proprietà di particolari algoritmi per calcolatori.” Edsger W. Dijkstra (1976) olandese “Un algoritmo definito in modo formale consente di farne oggetto di studio matematico e di poterlo eseguire in modo automatico” Niklaus Wirth (1977) svizzero Algoritmi trattati con sistemi multiprocessore. Luglio 2004 Algoritmi

Agente segreto L’agente segreto 89 sta cercando di scoprire tra quanti giorni un certo leader mondiale sarà assassinato. Il suo contatto gli dice che questa informazione si trova disseminata in una serie di 10 scatole dell’ufficio postale, per evitare che altri ne vengano a conoscenza, e gli dà 10 chiavi, con le seguenti istruzioni: 1. l’informazione in ogni scatola è scritta in codice; 2. aprire prima la scatola 1 ed eseguire l’istruzione che vi si trova; 3. continuare attraverso le altre scatole in sequenza, a meno che le istruzioni non indichino diversamente; 4. una delle scatole è predisposta per esplodere se aperta . L’agente 89 prende le 10 chiavi e va all’ufficio postale, con il libro del codice in mano. Luglio 2004 Algoritmi

Agente segreto Scatole postali : memoria, contenente istruzioni- scatole da 1) a 6) e dati - scatole da 8) a 10) I numeri delle scatole sono indirizzi di memoria Nelle scatole da 1) a 6) ci sono tre classi di istruzioni; in 1), 2), 3) e 5) istruzioni che riguardano operazioni aritmetiche in 4) un’istruzione di decisione, che dipende dal risultato della precedente istruzione aritmetica in 6) istruzione di controllo (STOP) che non richiede dati nè rimanda ad altri indirizzi Luglio 2004 Algoritmi

Le istruzioni di lettura di scrittura di assegnamento di controllo sono presenti in tutti i linguaggi per esprimere algoritmi Luglio 2004 Algoritmi

Istruzioni di lettura LEGGI a, b, c Assegna alle variabili di nome a, b, c i valori forniti dall’esterno, nell’ordine LEGGI I VALORI DI a, b, c 11 a b c 3 2 11 a 2 b 3 c 11 3 2 Luglio 2004 Algoritmi

Istruzioni di scrittura STAMPA x1, x2 Stampa i valori delle variabili di nome x1 e x2 STAMPA “nessuna soluzione” Stampa (senza alcuna elaborazione) la sequenza di caratteri contenuta tra virgolette Luglio 2004 Algoritmi

Variabili e assegnamenti Una variabile: ha un nome denota un valore Istruzione di Assegnamento Esempio: A  B + C calcola il valore dell’espressione B + C (sommando il valore della variabile B con il valore della variabile C) e lo assegna come (nuovo) valore della variabile A il valore di A viene modificato i valori di B e C sono usati, ma non modificati Luglio 2004 Algoritmi

Esempio di assegnamento X  X + 1 prima della esecuzione dopo l’esecuzione X 2 X 3 Luglio 2004 Algoritmi