Gli algoritmi: definizioni e proprietà



Documenti analoghi
Descrizione di un algoritmo

Lezione 8. La macchina universale

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira

Nozione di algoritmo. Gabriella Trucco

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Sistema operativo: Gestione della memoria

Linguaggio C - Stringhe

La programmazione. Sviluppo del software

Come ragiona il computer. Problemi e algoritmi

Algebra Booleana ed Espressioni Booleane

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Appunti di Sistemi Elettronici

Fasi di creazione di un programma

ALGEBRA DELLE PROPOSIZIONI

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Metodologie di programmazione in Fortran 90

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori.

Corso di Informatica

Introduzione al MATLAB c Parte 2

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

DAL DIAGRAMMA AL CODICE

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Algoritmi, dati e programmi

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Matematica in laboratorio

Automazione Industriale (scheduling+mms) scheduling+mms.

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

LINGUAGGI DI PROGRAMMAZIONE

Fogli Elettronici: MS Excel

Introduzione alla programmazione in C

INFORMATICA 1 L. Mezzalira

Le Macchine di Turing

FONDAMENTI di INFORMATICA L. Mezzalira

Laboratorio di Informatica

Alcune nozioni di base di Logica Matematica

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

GUIDA BASE DI PASCAL

Cosa è un foglio elettronico

(anno accademico )

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

LE FUNZIONI A DUE VARIABILI

Semantica operazionale dei linguaggi di Programmazione

Funzioni in C. Violetta Lonati

DISPENSE DI PROGRAMMAZIONE. Modulo 1 Risolvere problemi con l elaboratore: dal problema all algoritmo (Parte III)

Elementi di semantica operazionale

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Esempi di algoritmi. Lezione III

Sistemi di Numerazione

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Semantica Assiomatica

Sistema operativo: Gestione dei processi

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Convertitori numerici in Excel

Lezione 5. Fogli di calcolo

Calcolatori: Algebra Booleana e Reti Logiche

Algoritmi e diagrammi di flusso

la scienza della rappresentazione e della elaborazione dell informazione

Introduzione. Informatica B. Daniele Loiacono

Arduino: Programmazione

Linguaggi di programmazione

SCUOLA PRIMARIA SCIENZE NATURALI E SPERIMENTALI. Competenza: 1. Comunicazione efficace Indicatore: 1.1 Comprensione

Analizzatore lessicale o scanner

Variabili e tipi di dato

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Matlab: Strutture di Controllo. Informatica B

Funzionalità di un Algoritmo

Elementi di Informatica e Programmazione

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Sistemi Informativi. Introduzione. Processi fisici. Tipologie di processi. Processi informativi. Processi aziendali

La selezione binaria

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.

risulta (x) = 1 se x < 0.

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Informatica. Rappresentazione dei numeri Numerazione binaria

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Progettaz. e sviluppo Data Base

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Elementi di semantica denotazionale ed operazionale

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

10 - Programmare con gli Array

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Transcript:

Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da utilizzarsi ai soli fini didattici previa autorizzazione dell autore. E severamente vietata la riproduzione anche parziale e la vendita. 25/09/2008

Algoritmo 1/2 Dato un problema e un esecutore, l algoritmo è: una successione finita di passi elementari (operazioni e direttive) eseguibili senza ambiguità dall esecutore che risolve il problema dato Quindi l obiettivo è passare dal problema all algoritmo Sarà compito dell esecutore seguire le direttive dell algoritmo 2

Algoritmo 2/2 Un algoritmo non deve dipendere solo da valori predefiniti dei dati ma anche da dati inseriti dall utente Quindi un algoritmo deve avere una formulazione generale In un algoritmo devono essere previsti particolari passi di acquisizione delle informazioni 3

Proprietà di un algoritmo 1/2 Correttezza: perviene alla soluzione del problema dato Efficienza: perviene alla soluzione nel modo migliore possibile La velocità è solo uno dei criteri. Si parla in generale di qualità Finitezza: Il numero di istruzioni che fanno parte di un algoritmo è finito Le operazioni definite in esso vengono eseguite un numero finito di volte. 4

Proprietà di un algoritmo 2/2 Il determinismo: Le istruzioni presenti in un algoritmo devono essere definite senza ambiguità Un algoritmo eseguito più volte e da diversi esecutori, a parità di premesse, deve giungere a medesimi risultati Terminazione: L esecutore deve terminare in tempo finito per ogni insieme di valori in ingresso Realizzabilità pratica: L esecutore deve essere in grado di eseguire l algoritmo con le risorse a sua disposizione (informazioni + tecnologia) Generalità Un algoritmo, compatibilmente con i vincoli espressi dal problema, si occupa della risoluzione di famiglie di problemi 5

Elementi degli algoritmi Oggetti: le entità su cui opera l algoritmo Operazioni: interventi da effettuare sugli oggetti Strutture di controllo: sequenza, selezione, iterazione 6

Oggetti Possono essere: Costanti Variabili Possono rappresentare: Dati iniziali del problema Informazioni ausiliarie Risultati parziali Risultati finali 7

Costanti Rappresentano dei valori che non variano durante l esecuzione dell algoritmo Possono essere sia numeriche che alfanumeriche Nel caso di costanti alfanumeriche il valore deve essere racchiuso tra doppi apici Esempio 5 è una costante numerica (il numero 5) prova è una costante alfanumerica 5 è una costante alfanumerica (il carattere 5) 8

Variabili Sono dei contenitori di valori identificati da nomi simbolici x, y, somma, risultato, (il nome di una variabile deve sempre iniziare con un carattere non numerico) Il nome della variabile rappresenta una scatola Il valore della variabile il suo contenuto 5 x Valore della variabile Nome della variabile x = 5 9

Variabili 2/2 Le variabili devono avere un tipo che rappresenta: I valori ammissibili Le operazioni che possono essere compiute sui suoi valori Esempio: una variabile di tipo numerico può assumere solo valori numerici può apparire come operando in una espressione matematica (e.g., x/y è corretta se x e y sono variabili di tipo numerico) Esempio: una variabile di tipo alfanumerico (stringa) può assumere qualunque valore non ha senso applicare l operazione di divisione (e.g., se a= ciao e b= mamma cosa vuol dire a/b?) Attenzione! Tutte le variabili devono essere inizializzate 10

Assegnamento L assegnamento è l operazione che permette di modificare il valore di una variabile Si indica con il simbolo := x:=6 indica che ora la variabile x contiene il valore 6 Attenzione! x:=6 è diverso da x = 6 Il primo modifica il valore della variabile Il secondo predica sul valore corrente della variabile Regole fondamentali: A sinistra dell operatore di assegnamento deve esserci il nome di una e una sola variabile A destra dell operatore di assegnamento può esserci una costante, una variabile o anche un espressione complessa Il tipo di dato della variabile a sinistra deve essere compatibile con il tipo di dato ottenuto dall espressione a destra 11

Operazioni 1/2 Operatori aritmetici: +, -,, /,... agiscono sugli operandi (variabili o costanti) producono un valore numerico Operatori di confronto: >, =, <, agiscono sugli operandi (variabili o costanti) producono un valore logico (vero o falso) Funzioni: cos(x), log(x), agiscono su valori detti parametri (variabili oppure costanti) producono un valore 12

Operazioni 2/2 Procedure: Leggi(X), Scrivi(N), agiscono su valori detti parametri effettuano operazioni Espressione: 5+cos(Y),... composizione di operatori, funzioni, variabili e costanti ad essa è associato un valore 13

Regole sulle operazioni Una operazione deve terminare entro un intervallo finito di tempo (Es.: calcolare le cifre decimale di π, NO!) Una operazione deve produrre un effetto osservabile (Es.: pensare al numero 5, NO!) Un operazione deve produrre lo stesso effetto ogni volta che viene eseguita a a partire dalle stesse condizioni iniziali (Es. 5+10=15 deve valere sempre) 14

Strutture di controllo Sequenza: le operazioni sono eseguite una in seguito all altra Selezione: blocchi di operazioni sono eseguite in alternativa Iterazione: blocchi di operazioni sono eseguite diverse volte 15

Rappresentazione di un algoritmo I linguaggi per descrivere gli algoritmi devono essere noti all uomo che progetta gli algoritmi e al calcolatore che deve eseguirli Fasi iniziali di progetto: struttura generale dell algoritmo descrizione rigorosa (non necessariamente formale) del flusso di controllo descrizione semplificata delle direttive, per es. mediante l uso di linguaggio naturale 16

Requisiti dei linguaggi Lessico (vocabolario): insieme di elementi per la descrizione di oggetti, operazioni e flusso di controllo Sintassi: insieme di regole di composizione degli elementi in frasi eseguibili e costrutti di controllo Semantica: insieme di regole per l interpretazione degli elementi e delle istruzioni sintatticamente corrette 17

Rappresentazione del flusso di controllo schemi a blocchi (o diagrammi di flusso) elementi grafici per indicare il flusso di controllo e i tipi di operazioni elementi testuali per descrivere le operazioni e gli oggetti pseudo-codice completamente testuale costrutti di controllo descritti con la forma e le parole chiave dei linguaggi di programmazione le operazioni possono essere descritte in modo informale 18

Dipartimento di Elettronica ed Informazione Politecnico di Milano Schemi a blocchi

Schemi a blocchi: lessico Inizio Fine operazione vera Condizione falsa Operazione di ingresso Operazione di uscita 20

Sintassi: alcune regole di base Per il flusso di controllo Un solo blocco di inizio Almeno un blocco di terminazione Dal blocco di inizio e da ogni blocco esecutivo deve uscire una sola freccia Da ogni blocco condizionato devono uscire due frecce contrassegnate dalle indicazioni vero (si) e falso (no) Per il flusso di esecuzione In tutti i casi, è unica la scelta del blocco successivo da eseguire 21

Esempio: prodotto tra due numeri Inizio Leggi(X) Leggi(Y) Acquisizione dall utente dei particolari valori da considerare per i due fattori del prodotto e da assegnare alle variabili W e Y W = X * Y Operazioni di elaborazione, valide per qualsiasi valore dei dati Scrivi (W) Emissione all utente del risultato dell elaborazione Fine 22

Sequenza Le frecce tra blocchi indicano una sequenza di operazioni Una operazione non inizia finché quella precedente non termina Non possono esserci due operazioni svolte contemporaneamente Inizio Leggi(X) Leggi(Y) W = X * Y Scrivi (W) Fine 23

Selezione 1/2 Si basa sulla valutazione di una condizione espressa all interno del simbolo romboidale Due blocchi di operazioni sono svolti in alternativa no Inizio Leggi(X) Leggi(X) X <> 0 AND Y <> 0 si W = 0 W = X * Y Scrivi (W) Fine 24

Selezione 2/2 Il blocco sul ramo si deve essere sempre presente Il blocco sul ramo no è opzionale Inizio Leggi(X) Leggi(X) W = 0 no X <> 0 AND Y <> 0 si W = X * Y X <> 0 AND Y <> 0 Scrivi (W) Fine 25

Iterazione Esprime la possibilità di ripetere un blocco di istruzioni un numero finito di volte Elementi: condizione di permanenza: funzione della variabile di controllo corpo del ciclo: contiene la modifica della variabile di controllo La ripetizione è controllata dalla valutazione della condizione di permanenza del ciclo Se la condizione è vera viene ripetuto il ciclo Se la condizione è falsa si procede con la prima operazione successiva al ciclo La condizione di permanenza può essere verificata all inizio dell iterazione (pre-condizione) alla fine dell iterazione (post-condizione) 26

Esempio: post-condizione Inizio Leggi(X) Leggi(Y) SP:=0 Schema a Blocchi con ciclo a condizione finale (l algoritmo è corretto se Y>0) Acquisizione dei dati in ingresso e attribuzione dei loro valori a X e Y Inizializzazione delle variabili ausiliarie SP:=SP+X Y:=Y-1 Corpo del ciclo Y>0 no W:=SP si Valutazione della condizione di uscita dal ciclo Scrivi (W) Emissione del risultato Fine 27

Esempio: pre-condizione Inizio Leggi(X) Leggi(Y) È a condizione iniziale ed l algoritmo è corretto per Y >=0 SP:=0 SP:=SP+X no Y>0 Y:=Y-1 Y>0 no W:=SP si si SP:=SP+X Y:=Y-1 Scrivi (W) Fine 28

Pre- e post-condizioni nei cicli 1/3 Nell esempio la verifica della condizione è stata spostata dalla fine all inizio del ciclo Nell esempio abbiamo migliorato l algoritmo ma in realtà i due algoritmi NON sono funzionalmente equivalenti: Il primo è corretto per y > 0 Il secondo è corretto per y >= 0 Se voglio due algoritmi equivalenti non basta quindi semplicemente spostare la condizione ma vanno verificati i casi limite 29

Pre- e post-condizioni nei cicli 2/3 Se volessi una versione con pre-condizione funzionalmente equivalente (valida per y>0) a quella con post-condizione SP:=SP+X Y:=Y-1 SP:=SP+X Y>0 no Y:=Y-1 si Y>0 no W:=SP Post-condizione si Sposto la condizione all inizio del ciclo e replico le istruzioni del ciclo prima che il ciclo inizi SP:=SP+X Y:=Y-1 W:=SP Pre-condizione 30

Pre- e post-condizioni nei cicli 3/3 Se volessi una versione con post-condizione funzionalmente equivalente (valida per y>=0) a quella con pre-condizione Y>0 si SP:=SP+X no si Y=0 no SP:=SP+X Y:=Y-1 Y:=Y-1 W:=SP Pre-condizione Sposto la condizione alla fine del ciclo e inserisco una selezione all inizio del ciclo per evitare la prima iterazione Y>0 no W:=SP Post-condizione si 31

Dipartimento di Elettronica ed Informazione Politecnico di Milano Pseudo-codice

Pseudo codice Ha le stesse finalità dello schema a blocchi senza gli stessi simboli Viene adottato un linguaggio a metà tra il linguaggio naturale e quello di programmazione Utilizza gli stessi operatori ed espressioni visti per lo schema a blocchi Le strutture di controllo sono identificate da opportune parole chiave 33

Sequenza Sequenza: istruzioni su righe successive indicano una sequenza di esecuzione Leggi(X) Leggi(Y) SP:=0 leggi(x) leggi(y) sp := 0 34

Selezione È definita dal costrutto if-then-else no W = 0 X = 0 AND Y = 0 si W = X * Y if (x<>0 AND y<>0) then w := x * y else w := 0 end if Scrivi (W) scrivi(w) X = 0 AND Y = 0 no si if (x<>0 AND y<>0) then Scrivi (W) W = X * Y w := x * y end if scrivi(w) 35

Iterazione (post-condizione) È definita dal costrutto do-while SP:=0 SP:=SP+X Y:=Y-1 Y>0 no W:=SP si sp:=0 do sp:=sp+x y:=y-1 while (y>0) w:=sp 36

Iterazione (post-condizione) È definita dal costrutto while-do SP:=0 no Y>0 si SP:=SP+X Y:=Y-1 sp:=0 while (y>0) sp:=sp+x y:=y-1 do w:=sp W:=SP 37

Flusso di esecuzione Il flusso di controllo: definisce tutti i cammini possibili di esecuzione si basa su ipotesi relative ai valori assumibili dalle variabili Il flusso di esecuzione: definisce un particolare cammino di esecuzione si basa su valori precisi date alle variabili ottenute anche dai dati in ingresso dall utente Il tracing è il meccanismo che permette di controllare il funzionamento di un algoritmo analizzando il valore delle variabili durante l esecuzione 38

Tracing In una griglia vanno messe tutte le variabili definite nell algoritmo In ogni riga va indicato il valore della variabile per ogni operazione eseguita Ipotesi di valore inserito dall utente Contenuto della variabile non definito leggi (x) leggi (y) sp:=0 while (y>0) sp:=sp+x y:=y-1 do w:=sp scrivi(w) X Y SP W 5 # # # 5 2 # # 5 2 0 # 5 2 5 # 5 1 5 # 5 1 10 # 5 0 10 # 5 0 10 10 39