Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno...

41
Algoritmi e Programmi

Transcript of Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno...

Page 1: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Algoritmi e Programmi

Page 2: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Algoritmi e Programmi

Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi.

Problema di elaborazione

Insieme dati di partenza Risultato ricerca

Page 3: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi.

Problema di elaborazione

Insieme dati di partenza Risultato ricercato

Competenze distinte:

- Conoscenza di come si risolve un problema

- Effettiva capacità di risolvere un problema

Algoritmi e Programmi

Page 4: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

I calcolatori sono esecutori di soluzioni che esseriumani hanno identificato e descritto

Le soluzioni dei problemi devono essere descritto inun linguaggio che il calcolatore è in grado diinterpretare ed eseguire

Algoritmi e Programmi

Page 5: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Calcolare la superficie S di un cerchio di raggio 2.

1. S= 𝝅𝒓𝟐

Algoritmi e Programmi

Page 6: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Calcolare la superficie S di un cerchio di raggio 2.

1. S= 𝝅𝒓𝟐

2. S=3,14*𝒓𝟐

Algoritmi e Programmi

Page 7: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Calcolare la superficie S di un cerchio di raggio 2.

1. S= 𝝅𝒓𝟐

2. S=3,14*𝒓𝟐

3. S=3,14*r*r

Scomposizione del problema in sotto-problemi

Scomposizione del sotto-problema in sotto-probemi

Algoritmi e Programmi

Page 8: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Caratteristiche dell’esecutore

A. Linguaggio che riesce ad interpretare

B. Azioni che è in grado di compiere

C. Regole che ad ogni costrutto linguistico sintatticamente corretto associano le relative azioni da compiere

Algoritmi e Programmi

Page 9: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Caratteristiche dell’esecutore

A. Linguaggio che riesce ad interpretare definito in termini formali – caratterizzazione sintattica

B. Azioni che è in grado di compiere definito da un insieme univoco

C. Regole che ad ogni costrutto linguisticosintatticamente corretto associano le relativeazioni da compiere definite da un insiemeunivoco – caratterizzazione semantica

Algoritmi e Programmi

Page 10: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Utilizzo di un computer

Come utente: Utilizzo di software applicativo esistente per

creare documenti e interfacce grafiche, effettuare calcoli, navigare in rete

Come sviluppatore: Creazione di nuovi programmi sullo strato del

software esistente Nuovi programmi applicativi Nuovi programmi di sistema (cioè che fanno

funzionare il calcolatore)

Page 11: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

È l'attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su una particolare tipologia di dati, allo scopo di risolvere un problema.

La programmazione

Page 12: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Alcune domande fondamentali: Quali istruzioni esegue (cosa può fare) un

elaboratore?

Quali problemi può risolvere un elaboratore?

Esistono problemi che un elaboratore non

può risolvere?

Che ruolo ha il linguaggio di

programmazione?

La programmazione

Page 13: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Trovare il maggiore fra due numeri Individuare il numero più piccolo di una sequenza Dato un elenco di nomi e numeri di telefono,

trovare il numero di una data persona Dati a e b, risolvere l'equazione ax+b=0 Stabilire se una parola precede alfabeticamente

un'altra Ordinare un elenco di nomi Calcolare il costo totale di un certo numero di

prodotti Trovare perimetro e area di una figura geometria …

I problemi - esempi

Page 14: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Scegliere il mezzo di trasporto più economico (o più veloce) per andare da Roma a Milano

… Creare, modificare e alterare suoni Analizzare, riconoscere e modificare

immagini …

I problemi - esempi

Page 15: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Problema: definizione e risoluzione

La descrizione del problema non indica direttamente (in genere) un modo per ottenere il risultato voluto

Differenza tra specifica di un problema e specifica del processo di risoluzione

Risoluzione di un problema dato un problema individuato un opportuno metodo risolutivo

(algoritmo) trasforma i dati iniziali nei corrispondenti risultati finali

Page 16: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Come si costruisce la soluzione a un problema? Qual è il giusto “punto di partenza” per pensare

la soluzione a un problema?

Quali metodologie e tecniche usare?

Risolvere un problema

Page 17: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Risolvere un problema

Interpretare l’enunciato Individuare i dati noti e quelli da trovare Costruire un modello Descrivere il procedimento risolutivo Eseguire le operazioni stabilite nel processo risolutivo Verificare se i risultati ottenuti corrispondono alla

soluzione del problema reale Problema

Interpretazione

Modello Procedimento risolutivo

Esecuzione

Verifica dei risultati

Page 18: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Individuazione di una sequenza di passi che, partendo dai dati noti, arrivi a dare la soluzione.

Definizione Algoritmo

Risolvere un problema: procedimento risolutivo

Page 19: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Risolvere un problema: procedimento risolutivo

Page 20: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Un algoritmo è una sequenza finita di operazioni elementari che porta alla risoluzione in un tempo finito una classe di problemi.

In generale un algoritmo può essere visto come una funzione da un dominio d’ingresso ad uno d’uscita

Algoritmo Dati(INPUT)

X

Risultati(OUTPUT)

f(X)

Algoritmi

Page 21: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Algoritmi - esempi

Istruzioni di montaggio Preparazione del caffè Prelievo bancomat Preparazione di un ricetta Calcolo del massimo comun divisore

tra due interi …

Page 22: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Algoritmi: proprietà fondamentali

Eseguibilità: ogni azione deve essere eseguibile da parte dell’esecutore dell’algoritmo in un tempo finito

Non-ambiguità: ogni azione deve essere univocamente interpretabile dall'esecutore

Finitezza: il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito.

Page 23: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Algoritmi: proprietà fondamentali

applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell’algoritmo

costituito da operazioni appartenenti ad un determinato insieme di operazioni fondamentali

costituito da regole non ambigue, cioè interpretabili in modo univoco qualunque sia l’esecutore (persona o “macchina”) che le legge

Altre proprieta’ desiderabili generalita’ determinismo efficienza

Page 24: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Esecuzione

Page 25: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Algoritmi e programmi

Algoritmo Sequenza finita di passi che risolve in tempo finito un problema.

CodificaFase di scrittura di un algoritmo attraverso un insieme ordinato di frasi (“istruzioni”), scritte in un qualche linguaggio di programmazione, che specificano le azioni da compiere.

ProgrammaTesto scritto in accordo con la sintassi e

la semantica di un linguaggio di programmazione.

PROBLEMA ALGORITMO PROGRAMMA

Page 26: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Linguaggi di Programmazione

Linguaggi per esprimere in maniera rigorosa un algoritmo

Linguaggio macchina (seq. Istruzioni) Linguaggi ad alto livello (vicini al ling.

naturale) Esempi:

Pascal C e C++ Java Basic

Page 27: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Esempio di programma

Sub SOMMA( )Dim A, B as IntegerA = InputBox("Immetti un

numero")B = InputBox(“Immetti un

secondo numero”)Print “Somma:”; A+B

End Sub

Page 28: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Esempio: potenza Problema: Calcolare a elevato alla n (a^n) Utilizziamo le variabili N, Ris Inizialmente Ris=1 e N=n Algoritmo: Fino a che N>0

Calcola Ris × a e memorizzalo in RisDecrementa N

Correttezza: Al termine Ris=a^n

Page 29: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Esempio in Pseudo Pascal

Program potenza;Integer Ris,N,A;Read(N);Read(A);Ris=1;While (N>0) do

Ris=Ris*A;N=N-1;

Print(Ris);

Page 30: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Ogni elaboratore è una macchina in grado di eseguire azioni elementari su dati

L'esecuzione delle azioni elementari è richiestaall'elaboratore tramite comandi chiamati istruzioni

Le istruzioni sono espresse attraverso frasi di un opportuno linguaggio di programmazione

Un programma è la formulazione testuale di un algoritmo in un linguaggio di programmazione

Un algoritmo è il processo risolutivo di un problema

Riassumendo…

Page 31: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Esistono problemi che un elaboratore non può risolvere?

Sì. Ci sono problemi non calcolabili da nessun modello di calcolo reale o astratto

Esempio: data una funzione f : N→ N, stabilire se f(x) è costante

per ogni valore di x

Page 32: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Esistono problemi che un elaboratore non può risolvere?

Esempio. Dato un insieme di immagini di paesaggi, determinare quello più rilassante.

Più in generale, quando il problema presenta infinite soluzioni, o non è stato trovato per esso un metodo risolutivo o è dimostrato che non esiste un metodo risolutivo

Page 33: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Diagramma di flusso odiagrammi a blocchi

È uno metodi più comuni usati per la rappresentazione di algoritmi.

Si presenta come un insieme di figure geometriche collegate da frecce.

Page 34: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Problema della chiave

Trovare in un mazzo di chiavi quella che apre il lucchetto

Assunzioni: • una tra le chiavi apre la porta• al buio, si prende una chiave a caso per volta

Page 35: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Inizio

Tutti i diagrammi a blocchi cominciano con un’ellisse che contiene la parola inizioInizio

Page 36: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Dati in ingresso

I dati in ingresso sono i dati noti del problema, quelli che devono essere elaborati per arrivare alla soluzione

Dati iningresso

Page 37: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Operazioni

Le operazioni da svolgere sui dati sono racchiuse in rettangoli

Operazioni

Page 38: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Scelta

Quando si deve fare una scelta tra due possibilità si usa il rombo

Vero o falso?

Page 39: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Dati in uscita

I dati in uscita sono quelli che si vuole conoscere e costituiscono il risultato dell’elaborazione

Dati inuscita

Page 40: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Fine

Ogni diagramma di flusso si conclude con un’ellisse che contiene la parola finefine

Page 41: Algoritmi e Programmi - · PDF fileAlgoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. ... eseguire azioni elementari su dati

Problema della stazione

Come si arriva alla stazione?

Operazioni elementari possibili:• Andare avanti fino a un punto di incrocio• Girare