Unità Didattica 1 Algoritmi
Analisi e Programmazione Insieme delle attività necessarie per la risoluzione dei problemi per mezzo di un elaboratore: dalla formulazione del problema alla predisposizione dell’elaboratore. Analisi e Programmazione Problema Risultati Scopo dell’analisi è definire un algoritmo: elenco finito di istruzioni necessarie per risolvere una classe di problemi; in generale non può essere eseguito da un elaboratore; Scopo della programmazione è definire un programma. Un programma è la descrizione comprensibile ed eseguibile di un algoritmo da parte di un elaboratore
Algoritmi e Programmi Problema Analisi Diagramma a blocchi Algoritmo Programmazione Linguaggio programmativo Programma Risultati
Algoritmi Un elenco di istruzioni è un algoritmo se sono soddisfatte le seguenti proprietà: Finitezza: ogni istruzione deve essere eseguita in un tempo finito e un numero finito di volte; Generalità: ogni algoritmo deve fornire la soluzione per i problemi appartenenti ad una determinata classe. Non ambiguità: devono essere definiti in modo univoco tutti i passi; devono essere evitati paradossi, contraddizioni ed ambiguità.
Descrizione degli Algoritmi Uso di un linguaggio generalizzato costituito da strutture linguistiche prive di ambiguità e ridondanze; Uso di proposizioni (espressioni) composte da due parti: Descrizioni delle operazioni (istruzioni); Descrizione dei dati su cui eseguire le istruzioni.
Dati e Istruzioni Dati: Istruzioni: Costanti (valore invariabile all’interno dell’algoritmo); Variabili scalari: <nome, valore> Variabili vettoriali: <nome, insieme di valori> (il valore delle variabili è indeterminato all’inizio di un algoritmo). Istruzioni: Istruzioni operative (producono risultati se eseguite); Istruzioni di controllo (in funzione del verificarsi di condizioni determinano l’esecuzione di alcune istruzioni piuttosto che di altre); Istruzioni di salto (alterano l’ordine di esecuzione delle istruzioni); Istruzioni di inizio e fine; Istruzioni di I/O (trasmissione dati o messaggi fra l’ambiente esterno e l’algoritmo).
Proposizioni e predicati Come sono espresse le condizioni nelle istruzioni di controllo? Le istruzioni di controllo verificano se una condizione è vera o falsa. Il controllo viene espresso per mezzo di predicati. Proposizione: Costrutto del quale si può dire se è vero o falso. Predicato: Una proposizione è un predicato se in essa appaiono delle variabili e il valore di verità delle variabili determina il valore di verità della proposizione. I predicati si esprimono con operatori logici e relazionali. Predicati Semplici: predicati di un solo operatore (NOT) e una sola variabile; Predicati Composti: predicati con operatori logici (AND, OR, NOT).
Tavole di Verità Tavole di Verità: Esempi: descrivono i valori di verità dei predicati in funzione dei valori di verità delle singole parti. Esprimono le modalità con cui operano gli operatori relazionali. Esempi: A B A and B 1 A B A or B 1 A not A 1
Diagrammi a Blocchi Esempio di un linguaggio generalizzato per la descrizione degli algoritmi; I blocchi contengono istruzioni elementari, la forma del blocco indica il tipo di istruzioni; Inizio Fine Lettura Scrittura Azioni Controllo V F
Condizione di fine ciclo Analisi Strutturata Procedimento che permette di ottenere descrizioni di algoritmi che siano facilmente documentabili e comprensibili; Schemi di flusso: Schema di sequenza; Schema di selezione; Schema di iterazione: Condizione di fine ciclo Inizializzazione F Iterazione V Iterazione per falso con controllo in coda Iterazione per vero con controllo in testa
Diagramma a Blocchi Strutturati Uno schema di flusso è strutturato se i suoi blocchi sono collegati con gli schemi di flusso precedenti; Un diagramma a blocco è strutturato se sono strutturati tutti gli schemi di flusso che lo compongono; In un diagramma a blocchi strutturato non compare mai alcuna istruzione di salto;
Principio di Induzione Sia Pn una proposizione di cui si può dire se è vera o falsa Hp) Sia P0 vera; Supponendo Pn-1 vera, si dimostra che Pn è vera; Ts) Pn è vera n.
Algoritmi Ricorsivi Un algoritmo si dice ricorsivo quando è definito nei termini di se stesso; È costituito da due parti: Passo base (stabilisce il risultato per valori precisi dei dati iniziali); Passo di induzione (risultato per n in funzione del risultato per n-1).
Esempi di algoritmi ricorsivi Potenza (definizione iterativa): Potenza (definizione ricorsiva):
Esempi di algoritmi ricorsivi Fattoriale (definizione iterativa): Fattoriale (definizione ricorsiva):
Diagramma di Flusso del Fattoriale Ricorsivo Inizio V F Fine
Sviluppo del Fattoriale Ricorsivo Passo base