Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi...

12
1 Maurizio Palesi 1 Algoritmi Algoritmi Maurizio Palesi Maurizio Palesi 2 Cos’è Cos’è Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Un algoritmo è un metodo per la soluzione di un problema adatto ad essere implementato sotto forma di programma

Transcript of Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi...

Page 1: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

1

Maurizio Palesi 1

AlgoritmiAlgoritmi

Maurizio Palesi

Maurizio Palesi 2

Cos’èCos’èRisolvere un problema significa individuareun procedimento che permetta di arrivare alrisultato partendo dai dati

Un algoritmo è un metodo per la soluzionedi un problema adatto ad essereimplementato sotto forma di programma

Page 2: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

2

Maurizio Palesi 3

Altre Definizioni di AlgoritmoAltre Definizioni di AlgoritmoUn algoritmo si puo` definire come unprocedimento che consente di ottenere unrisultato atteso eseguendo, in undeterminato ordine, un insieme di passisemplici corrispondenti ad azioni sceltesolitamente da un insieme finito

Maurizio Palesi 4

Derivazione del TermineDerivazione del TermineIl termine deriva dal nome del matematicopersiano Muhammad ibn Musa Al-Khwarizmi

Uno dei primi autori ad aver fatto riferimentoesplicitamente a questo concetto

Tuttavia gli algoritmi erano presenti anchenelle antiche tradizioni matematiche

Es., la matematica babilonese, quella cinese o delKerala trasmettevano le conoscenze in formaalgoritmica

Page 3: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

3

Maurizio Palesi 5

Semplicita vs. AmbiguitaSemplicita vs. AmbiguitaAffermando che i passi costituenti di unalgoritmo debbano essere “semplici”, siintende soprattutto che essi siano specificatiin modo non ambiguo,

Immediatamente evidenti a chi sarà chiamatoad applicare l'algoritmo, cioè il suo esecutore

Maurizio Palesi 6

Semplicita vs. AmbiguitaSemplicita vs. Ambiguita“Rompete le uova” può essere un passo legittimo di unalgoritmo di cucina, e potrebbe esserlo anche “Aggiungetesale quanto basta” se possiamo assumere che l'esecutoresia in grado di risolvere da solo l'ambiguità di questa frase“Preparate un pentolino di crema pasticciera” non puòprobabilmente considerarsi semplice

Potrebbe però essere associato a un opportuno rimando a un'altrasezione del ricettario, che fornisca un algoritmo apposito per questaspecifica operazione

Infine, una ricetta che preveda la cottura a microonde nonpuò essere preparata da chi è sprovvisto dell'appositoelettrodomestico!

Page 4: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

4

Maurizio Palesi 7

Esempi di AlgoritmiEsempi di AlgoritmiRicetta per cucinare gli spaghetti

Metti l’acqua nella pentolaFai bollire l’acquaMetti la pasta nell’acquaAggiungi un pò di saleAttendi 6 minutiScola la pasta

Maurizio Palesi 8

Esempi di AlgoritmiEsempi di AlgoritmiVerifica se un numero è pari o dispari

Prendi il numeroCalcola il resto della divisione intera delnumero per 2Se il resto è zero

Allora il numero è pariAltrimenti il numero è dispari

Page 5: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

5

Maurizio Palesi 9

Esempi di AlgoritmiEsempi di AlgoritmiRicerca utente in un elenco telefonico

DatiUn insieme ordinato di coppie <nome, numero>Un nome X da ricercare

1) Leggi la prima coppia <nome, numero>2) Se non hai oltrepassato l'ultima coppia Allora:

Se nome = X allora il numero di telefono di X è quello letto;Altrimenti leggi la prossima coppia e vai al passo 2)

AltrimentiIl nome X cercato non è nell'elenco

Maurizio Palesi 10

Esempi di AlgoritmiEsempi di AlgoritmiRicerca di un utente X in un elenco telefonico(alternativa)

1) Leggi la prima coppia <nome, numero>2) Se non hai oltrepassato l'ultima coppia E nomeprecede X (secondo l'ordine alfabetico) Allora osservala prossima coppia e ripeti il passo 2)3) Se hai oltrepassato l'ultima coppia OPPURE nomesegue X Allora X non è presente nell'elenco4) Altrimenti il numero telefonico di X è l'ultimo letto

Page 6: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

6

Maurizio Palesi 11

Proprietà degli AlgoritmiProprietà degli AlgoritmiL'algoritmo è caratterizzato da

Finitezza: Composto da un numero finito di passielementari. Le operazioni sono eseguite un numerofinito di volte

Non ambiguità: I risultati non variano in funzione dellamacchina/persona che esegue l'algoritmo(deterministico)

Realizzabilità: Deve essere eseguibile con le risorse adisposizione

Maurizio Palesi 12

Proprietà degli AlgoritmiProprietà degli Algoritmi… ma gli esempi precedenti possiedonoqueste proprietà?

Problemi presentiAmbiguitàIpotesi implicite sulle capacità dell’esecutoreUso del linguaggio naturale

Page 7: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

7

Maurizio Palesi 13

Definire un AlgoritmoDefinire un AlgoritmoPer definire un algoritmo è necessario

Condurre un'attenta analisi del problemaIndividuare i possibili ingressiPrecisare le usciteDefinire completamente e dettagliatamente lasequenza dei passi che portano alla soluzione

E’ conveniente suddividere il problema in piccolisottoproblemi

Maurizio Palesi 14

Rappresentare un AlgoritmoRappresentare un AlgoritmoE’ necessario far riferimento a dei formalismi che

Non introducano ambiguitàSiano universalmente riconosciuti ed interpretati allostesso modo da un generico esecutorePermettano di rappresentare in modo efficace unalgoritmoCostituiscano un utile strumento per poi poter passarealla fase di codifica in un linguaggio di programmazione

Page 8: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

8

Maurizio Palesi 15

Rappresentare un AlgoritmoRappresentare un AlgoritmoRappresentazione grafica

Diagramma di flusso (noto anche comediagramma a blocchi o flow-chart)

Rappresentazione testualeNotazione Lineare Strutturata (opseudocode)

Maurizio Palesi 16

Operazioni di BaseOperazioni di BaseLe operazioni primarie sono

Trasferimento di informazioni (istruzioni di I/O)Lettura dati, scrittura risultati, visualizzazione datiintermedi

Esecuzione di calcoli (valutazione espressioni)Istruzioni di assegnamentoStrutture di controllo (che modificano il flussosequenziale di esecuzione delle operazioni)

Page 9: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

9

Maurizio Palesi 17

ingresso/uscita

Elaborazione

elab. predefinita

decisione

inizializzazione

inizio/fine

connessioni

documento

input manuale

disco

mem. sequenziale

Simboli ConvenzionaliSimboli Convenzionali

Maurizio Palesi 18

leggi A

scrivi B

Pseudocodice

leggi A

scrivi B

Diagramma a blocchi

Istruzioni di I/OIstruzioni di I/OLettura di dati in ingresso (input) Scrittura dei risultati in uscita (output)

Page 10: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

10

Maurizio Palesi 19

A = 5Alla variabile Aviene assegnato ilvalore 5

Istruzione di AssegnamentoIstruzione di AssegnamentoConcetto di variabile

Identificata da un’etichetta/identificatore simbolicoPuò essere comodo pensare alla variabile come ad uncontenitore in cui possiamo memorizzare o reperire deidati utilizzati durante il calcoloL’istruzione di assegnamento permette di assegnare unvalore ad una variabile

Maurizio Palesi 20

A = B + 3

START

ERROREB non è inizializzata

B = 0

START

A = B + 3

START

A = B + 3

leggi B

CORRETTO CORRETTO

Istruzione di AssegnamentoIstruzione di AssegnamentoInizializzazione

All’inizio di un algoritmo una variabile non ha alcun valoreNon ha quindi senso utilizzarla in una espressione (è un errore!)Essa deve essere inizializzata

O esplicitamente mediante un assegnamentoOppure mediante una operazione di lettura

Page 11: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

11

Maurizio Palesi 21

Istruzione di AssegnamentoIstruzione di AssegnamentoE’ stato usato il simbolo = per indicare l’istruzione di assegnamentoAlcuni testi/autori indicano invece il simbolo ← (per evitare confusionecon l’operatore di uguaglianza)Dato il seguente frammento di codice

L’esecutore esegue i seguenti passiPrima valuta l’espressione a destra, cioè calcola il valore di A+1 che vale 6Dopo assegna tale valore alla variabile a sinistra, cioè ad AAlla fine dell’esecuzione di quella istruzione quindi, A vale 6

Cosa fa quell’istruzione?

…A = 5A = A + 1

Maurizio Palesi 22

B = 5*(82-35)/7

A = (B+34)/B*2

Diagramma a blocchi Pseudo-codice

B = 5*(82-35)/7

A = (B+34)/B*2

Valutazione delle EspressioniValutazione delle EspressioniL’esecutore è in grado di valutareespressioni aritmetiche

Page 12: Algoritmi - diit.unict.it · PDF file6 Maurizio Palesi 11 Proprietà degli Algoritmi L'algoritmo è caratterizzato da ÎFinitezza: Composto da un numero finito di passi elementari.

12

Maurizio Palesi 23

Rappresentazione degli AlgoritmiRappresentazione degli AlgoritmiI diagrammi di flusso possono presentarsi

Ad un livello generaleAd un livello particolare

A seconda del livello di dettaglio con cuispecificano le operazioni da compiereE’ opportuno procedere per fasi successive

Un diagramma globale (di massima) per focalizzare leoperazioni essenziali da compiereUn diagramma di flusso più particolareggiato, che tengaconto di operazioni più semplici e più elementari

Maurizio Palesi 24

Tecniche di ProgrammazioneTecniche di ProgrammazioneProgrammazione top-down

Scomposizione iterativa del problema insottoproblemiI sottoproblemi devono essere indipendenti edavere interfacce ben definiteVisibilità dei dettagli di ogni sottoproblema

Programmazione bottom-up