Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Informatica CdL Scienze e Tecniche Psicologiche a.a. 2018-2019
Algoritmi
2
Problema Usualmente i problemi che ci troviamo ad affrontare nella quotidianità possono ricondursi all’elaborazione di una serie di informazioni. L’uomo compie una serie di azioni (fisiche o mentali) che alla fine “producono” la soluzione del problema Quindi un problema è caratterizzato da: un insieme di dati di partenza un risultato cercato una soluzione: procedura che genera il risultato a partire dai dati di partenza Esempi: calcolare l’area di un cerchio riconoscere il volto di una persona Informatica Andrea Frosini
3
La soluzione La conoscenza di come si risolve un problema e la capacità di risolverlo sono competenze distinte Esempio: ognuno è capace di riconoscere un volto, ma come avviene questo riconoscimento? Come descrivere la procedura per riconoscere uno specifico volto? Può capitare di trovarsi di fronte ad un problema la cui soluzione debba essere attuata non da noi, ma da una altro soggetto (anche un calcolatore). Il soggetto può non sapere come risolvere il problema, sebbene possa dichiarare la sua disponibilità ad attuare la soluzione nel momento in cui gli venisse insegnata Informatica Andrea Frosini
4
La procedura di soluzione
La procedura di soluzione deve allora essere realizzata in fasi distinte e successive: analisi del problema e identificazione di una soluzione da parte del primo soggetto descrizione della soluzione da parte del primo soggetto in termini comprensibili al secondo soggetto interpretazione della soluzione da parte del secondo soggetto attuazione della soluzione da parte del secondo soggetto Informatica Andrea Frosini
5
L’esecutore La procedura di soluzione deve essere descritta in una forma che l’esecutore sia in grado di interpretare in modo corretto La soluzione deve specificare delle azioni che l’esecutore è in grado di attuare Ogni esecutore è caratterizzato dalle sue capacità di interpretazione e di attuazione Informatica Andrea Frosini
6
L’esecutore calcolatore
I calcolatori sono degli esecutori di soluzioni che esseri umani hanno precedentemente identificato e descritto. I calcolatori hanno una notevole velocità di esecuzione e possono ripetere la stessa operazione producendo sempre lo stesso risultato un numero elevato di volte Il calcolatore in quanto esecutore è caratterizzato da: - un linguaggio che è in grado di interpretare, con il quale devono essere descritte le soluzioni che vuole che esso attui - l’insieme delle azioni che è in grado di compiere - l’insieme delle regole (istruzioni) che a ogni costrutto linguistico sintatticamente corretto associano le rispettive azioni da compiere Informatica Andrea Frosini
7
Problemi e algoritmi Se un problema è particolarmente semplice, l’esecutore potrebbe essere in grado di eseguire la soluzione direttamente Esempio: determinare la superficie di un cerchio di raggio r Se il risolutore non conosce la formula risolutiva la si deve indicare esplicitamente: s = r2 Tuttavia se l’esecutore non conosce come elevare un numero al quadrato, si ha che la soluzione contiene a sua volta un problema la cui soluzione deve essere descritta in modo esplicito Informatica Andrea Frosini
8
Gerarchia di problemi In generale per giungere alla descrizione della soluzione di un problema si scompone il problema in sotto-problemi, e questi in sotto-sottoproblemi Ci si ferma quando si giunge ad un problema elementare o primitivo la cui soluzione corrisponda ad una azione elementare che può essere direttamente compiuta dall’esecutore Risolvere un problema equivale a risolvere una opportuna successione di problemi più semplici Informatica Andrea Frosini
9
Procedura effettiva L’insieme dei sotto-problemi viene risolto da una procedura effettiva quando: tutti i problemi sono elementari è fissato l’ordine di soluzione dei problemi è specificato il modo in cui un problema utilizza i risultati dei problemi che lo precedono Informatica Andrea Frosini
10
Algoritmi e programmi Le soluzioni effettive (soluzioni che possono essere rese comprensibili all’esecutore) per esecutori caratterizzati formalmente sono chiamate algoritmi: Il termine algoritmo deriva dal nome di un matematico arabo Al-Khuwarizmi (IX sec d.C.) un algoritmo è una successione ordinata di istruzioni (o passi) che definiscono le operazioni da eseguire su dei dati per risolvere una classe di problemi Nel caso di calcolatori, - le soluzioni effettive sono tradotte in procedure effettive o programmi - il linguaggio formale per la loro descrizione è detto linguaggio di programmazione Informatica Andrea Frosini
11
Sviluppo di un programma
Il processo di sviluppo di un programma è organizzato in: Analisi del problema e identificazione di una soluzione Formalizzazione della soluzione e definizione dell’algoritmo risolutivo Programmazione, cioè scrittura dell’algoritmo in un linguaggio di programmazione ad “alto livello” Traduzione del programma in un “linguaggio macchina” direttamente interpretabile dalla macchina Informatica Andrea Frosini
12
Linguaggi di alto livello e linguaggio macchina
I linguaggi di alto livello sono più facilmente comprensibili dagli esseri umani ma sono sempre linguaggi formali Il linguaggio macchina è un linguaggio formale comprensibile direttamente da uno specifico calcolatore La traduzione da quello di alto livello a quello macchina può essere fatta automaticamente in virtù delle proprietà formali di entrambi Informatica Andrea Frosini
13
Proprietà degli algoritmi
Perché una sequenza di istruzioni sia un algoritmo devono essere soddisfatti i seguenti requisiti: Finitezza – Il numero di istruzioni è finito – Ogni istruzione è eseguita in un intervallo finito di tempo – Ogni istruzione è eseguita un numero finito di volte Informatica Andrea Frosini 13
14
Proprietà degli algoritmi
Perché una sequenza di istruzioni sia un algoritmo devono essere soddisfatti i seguenti requisiti: Generalità – un algoritmo deve fornire la soluzione ad una classe di problemi cioè: dato un insieme di definizione o dominio dato un insieme di arrivo o codominio l’algoritmo può operare su tutti i dati appartenenti al dominio per fornire una soluzione all’interno dei codominio Informatica Andrea Frosini 14
15
Proprietà degli algoritmi
Perché una sequenza di istruzioni sia un algoritmo devono essere soddisfatti i seguenti requisiti: Non ambiguità – le istruzioni sono definite in modo univoco – non ci sono paradossi, contraddizioni, ambiguità – il risultato dell’algoritmo è identico indipendentemente da chi lo sta eseguendo Informatica Andrea Frosini 15
16
Istruzioni Ma quali sono le istruzioni possibili
in un calcolatore moderno? Cosa riesce a fare direttamente? Quali sono i blocchi elementari che possiamo comporre per costruire espressioni sempre più complesse, programmi sempre più sofisticati ? Informatica Andrea Frosini 16
17
Istruzioni Le istruzioni possono essere divise in 6 categorie:
istruzioni operative istruzioni di salto istruzioni di inizio/fine esecuzione istruzioni di ingresso/uscita istruzioni condizionali istruzioni di loop o di ciclo Informatica Andrea Frosini 17
18
Istruzioni operative Istruzioni che producono un risultato se eseguite
Ne fanno parte le operazioni aritmetiche e le assegnazioni Es: l'istruzione: 5+3 l'istruzione: x 2 l'istruzione: 3 mod 2 (mod sta per modulo ovvero resto della divisione intera) Informatica Andrea Frosini 18
19
Istruzioni di salto Istruzioni che alterano il normale ordine di esecuzione delle istruzioni di un algoritmo, specificando esplicitamente quale sia la successiva istruzione da eseguire Si distinguono in istruzioni di salto condizionato e incondizionato a seconda che debba essere verificata una condizione per poter attuare il salto oppure no Nei linguaggi di programmazione “strutturati” (vedremo poi) non sono usate Informatica Andrea Frosini 19
20
Istruzioni di inizio/fine
Indicano quale istruzione dell’algoritmo debba essere eseguita inizialmente e quale determini la fine dell’esecuzione Istruzioni di ingresso/uscita Istruzioni che indicano una trasmissione di dati o messaggi fra l’algoritmo e tutto ciò che è esterno all’algoritmo Tali istruzioni si dicono di ingresso o lettura quando l’algoritmo riceve dati dall’esterno si dicono di uscita o scrittura quando i dati sono comunicati dall’algoritmo all’esterno Informatica Andrea Frosini 20
21
Istruzioni condizionali
Istruzioni che controllano il verificarsi di condizioni specificate e che in base al risultato determinano quale istruzione eseguire Nota: si altera il flusso del programma in funzione della condizione (se e' vera o falsa) Si presentano nella forma: se … allora … altrimenti if … then … else Informatica Andrea Frosini 21
22
Istruzioni di loop o di ciclo
Determinano il ripetersi di una stessa serie di istruzione fintanto che una condizione rimane verificata (vera) o non verificata (falsa). Tale condizione può essere testata sia prima che dopo l’esecuzione, per la prima volta, della serie di istruzioni. Si presentano nelle forme: fintanto che … esegui … for … do … oppure esegui … fintanto che … repeat … until … Informatica Andrea Frosini 22
23
I predicati nelle istruzioni di controllo
Le istruzioni di controllo devono determinare (calcolare) la verità o falsità di un enunciato Tale enunciato viene chiamato proposizione e si parla di valore di verità di tale proposizione Informatica Andrea Frosini 23
24
Proposizioni Un proposizione è un costrutto linguistico del quale si può dire se è vero o falso Il valore di verità di una proposizione è l’essere vera o falsa della proposizione Es: “3 è un numero pari” è una proposizione “incrementa x di 10” non è una proposizione Informatica Andrea Frosini 24
25
Predicati E’ un predicato una proposizione che contiene delle variabili e in cui il valore delle variabili determina il valore di verità del predicato Es. la variabile età è minore di 30 La composizione di un predicato avviene tramite i seguenti operatori relazionali = uguale ≠ diverso > maggiore ≥ maggiore o uguale < minore ≤ minore o uguale Informatica Andrea Frosini 25
26
Predicati semplici e composti
Un predicato che contiene un solo operatore relazionale è detto predicato semplice Gli operatori relazionali possono essere combinati con i seguenti operatori logici: NOT AND OR Un predicato che contiene più operatori relazionali combinati tramite uno o più operatori logici è detto composto Informatica Andrea Frosini 26
27
Operatori logici p V F V F p V F V V F V V V F V F F F F V F q q
NOT (): dato un predicato p, NOT p è vero quando p è falso e viceversa AND (): dati due predicati p e q, p AND q è vero solo quando entrambi p e q sono veri e falso altrimenti OR (): dati due predicati p e q, p OR q è falso solo quando entrambi p e q sono falsi e vero altrimenti p V F V F p V F V V F V V V F V F F F F V F q q q Informatica Andrea Frosini 27
28
Esercizi 1. Come esprimere il concetto: eta' compresa fra 18 e 60 anni
altezza superiore a 1.90m oppure peso superiore a 100Kg un anno multiplo di 4 ma non multiplo di 100 costo compreso tra 12 e 15 euro oppure costo maggiore di 20 euro oppure costo minore di 5 euro e spesa diversa da 4 euro Informatica Andrea Frosini 28
29
Esercizi 2. Scrivere due formule che coinvolgano ciascuna la variabili età, altezza e peso e tutti e tre i connettivi logici AND, OR NOT. Per ciascuna di esse indicare una valutazione delle variabili ed il corrispondente valore di verità della formula Esempio: formula: ((età=10 AND altezza=età-3) OR (peso < 20) ) AND NOT (peso=età) età = 20 altezza = 167 peso = 50 valore di verità = F NOT (peso>altezza – 8 OR NOT età=peso) OR (peso < 20 AND peso=45) età = 78 altezza = 74 peso = 78 valore di verità = F Informatica Andrea Frosini 29
30
Esercizi 3. Per ciascuna delle seguenti formule fornire un insieme di valori per le variabili che le rendano vere ((età = 20) AND (età >15)) OR (peso <50) età = peso = colore = ((peso > 0) AND (colore = 15)) OR (NOT (peso = 70)) NOT ( NOT ( età > 31) ) OR (colore = giallo) Informatica Andrea Frosini 30
31
Esercizi 4. Date le variabili età = 20, colore= rosso e y = 24, scrivere due formule, una vera ed una falsa, contenenti ciascuna tutte e tre le variabili e tutti e tre i connettivi AND OR e NOT. Informatica Andrea Frosini 31
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.