• Non ci sono risultati.

Introduzione agli Algoritmi

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione agli Algoritmi"

Copied!
25
0
0

Testo completo

(1)

Introduzione agli Algoritmi

Informatica Sara Zuppiroli

A.A. 2012-2013

(2)

Risoluzione dei problemi

Dalla descrizione del problema all’individuazione di una soluzione

I Definizione e proprietà di un Algoritmo

I Descrizione di un algoritmo

I Diagrammi di flusso

Dalla descrizione di una soluzione alla stesura del programma

I Definizione di uno pseudo codice

I Stesura del programma

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 2 / 25

(3)

Risoluzione di un problema

È un processo che dato un problema e individuato un opportuno metodo risolutivo trasforma i dati iniziali nei corrispondenti

risultati finali.

Osserviamo che:

Dalla descrizione del problema non si ha (generalmente) la descrizione di uno dei possibili metodi per risolverlo.

Se si usa un elaboratore questo processo deve poter

essere descritto in una sequenza di operazioni elementari interpretabili.

(4)

Definizione di Algoritmo

È una sequenza finita di passi per risolvere in un tempo finito una classe di problemi

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 4 / 25

(5)

Schema generale

(6)

Proprietà di un algoritmo

finito: il numero di operazioni dell’algoritmo da eseguire deve essere finito

non ambiguo: ogni operazione presente nell’algoritmo deve essere univocamente interpretata

eseguibile: ogni operazione presente nell’algoritmo deve essere eseguibile

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 6 / 25

(7)

Esempi di algoritmi

Trovare la soluzione dell’equazione: ax + b = 0

Definire un algoritmo che calcoli l’operazione addizione

add : N × N → N definita come add(x, y) = x + y avendo a disposizione solo l’operazione successore: s : N → N

definita come s(x ) = x + 1

(8)

Esempio 1

Trovare la soluzione dell’equazione: ax + b = 0

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 8 / 25

(9)

Algoritmo 1

Leggi i valori a, b Se a <> 0 allora

I Calcola −b

I Calcola x = −b/a

I Stampa x

Altrimenti

I Se b <> 0 allora

F Stampa (l’equazione è impossibile)

I Altrimenti

I Stampa (l’equazione è indeterminata)

(10)

Esempio 2

Definire un algoritmo che calcoli l’operazione addizione

add : N × N → N definita come add(x, y) = x + y avendo a disposizione solo l’operazione successore: s : N → N definita come s(x ) = x + 1

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 10 / 25

(11)

Algoritmo 2

Leggi i valori x , y Poni a = 0

Finchè a < y esegui

I x= s(x)

I a=s(a)

Stampa x

(12)

I diagrammi di flusso

Per rappresentare in modo efficace un algoritmo sono stati definiti dei modelli grafici come ad esempio i diagrammi di flusso per il paradigma della programmazione procedurale.

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 12 / 25

(13)

I diagrammi di flusso

(14)

Esempio 2

Descrivere mediante un diagramma di flusso l’algoritmo che calcoli l’operazione addizione add : N × N → N definita come add (x , y ) = x + y avendo a disposizione solo l’operazione successore: s : N → N definita come s(x) = x + 1

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 14 / 25

(15)

Diagramma di flusso Esempio 2

(16)

La programmazione

Un programma è un testo scritto in accordo alla sintassi e alla semantica del linguaggio di programmazione L

interpretato da una determinata macchina astratta

Un programma è la trascrizione di un algoritmo in un certo linguaggio di programmazione

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 16 / 25

(17)

La programmazione strutturata

Le strutture di controllo della programmazione strutturata sono:

Sequenza: permette di eseguire le istruzioni secondo l’ordine in cui sono state scritte

Selezione: permette di scegliere l’esecuzione di un blocco di istruzioni tra due possibili in base a una condizione

Iterazione: permette di ripetere l’esecuzione di un blocco di istruzioni in base al valore di una condizione

(18)

Sequenza

Le istruzioni sono eseguite nel modo in cui compaiono sul programma. Ad esempio:

Read (x1, · · · , xn): Legge il/i valore/ii in input e lo assegna alla variabile x1, · · · , xn

x:=3: Assegna a x il valore 3 s(x): Calcola il successore di x

Write (x1, · · · , xn): Scrive il/i valore/i assegnati a x1, · · · , xn in output

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 18 / 25

(19)

Selezione

Sintassi:

IF condizione THEN

I bloccoT

ELSE

I bloccoF

ENDIF Semantica:

Si valuta la condizione:

I se è vera si esegue il bloccoT

I se è falsa si esegue il bloccoF

(20)

Iterazione

Sintassi:

WHILE condizione DO

I bloccoW

ENDWHILE Semantica:

Si valuta la condizione

I fino a quando la condizione è vera si esegue il bloccoW

I quando la condizione è falsa si esegue l’istruzione che segue ENDWHILE senza eseguire il bloccoW

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 20 / 25

(21)

Programmazione strutturata Esempio 2

Descrivere le strutture di controllo della programmazione strutturata l’algoritmo che calcoli l’operazione addizione

add : N × N → N definita come add(x, y) = x + y avendo a disposizione solo l’operazione successore: s : N → N definita come s(x ) = x + 1

(22)

Programmazione strutturata Esempio 2

Read(x , y) a:=0

WHILE a<y DO

I x:=s(x)

I a:=s(a)

ENDWHILE Write (x)

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 22 / 25

(23)

Riassumendo: dal problema alla programmazione

I passi per la risoluzione di un problema:

Capire e scomporre il problema trovando il procedimento risolutivo (ANALISI)

Descrizione il procedimento risolutivo in un insieme di operazioni (ALGORITMO)

Rappresentazione grafica dell’algoritmo (DIAGRAMMA DI FLUSSO)

Rappresentazione dei dati e dell’algoritmo attraverso un formalismo comprensibile da un elaboratore

(PROGRAMMA)

(24)

Esercizio

Scrivere l’algoritmo, il diagramma di flusso e il programma in pseudo codice che risolva il seguente problema:

Alice distribuisce i suoi dadi colorati in un numero n di

scatole. Alice li distribuisce in modo tale che in ogni scatola ci sia un numero diverso di dadi colorati. Quanti dadi

colorati possiede Alice?

Informatica () Introduzione agli Algoritmi A.A. 2012-2013 24 / 25

(25)

Esercizio

Scrivere l’algoritmo, il diagramma di flusso e il programma in pseudo codice che risolva il seguente problema:

In quanti modi è possibile che n (dato di input) studenti prendano posto su n banchi?

Scrivere l’algoritmo, il diagramma di flusso e il programma in pseudo codice che risolva il seguente problema:

Dati in input n voti calcolare la media aritmetica.

Riferimenti

Documenti correlati

Come abbiamo già detto in precedenza ogni volta che viene costruito un nuovo algoritmo per la risoluzione di un determinato problema, è indi- spensabile dimostrare che tale

 ricerca di un indirizzo in un archivio dato il nome leggi nome della prima scheda. if è il nome cercato

 ricerca di un indirizzo in un archivio dato il nome leggi nome della prima scheda. if è il nome cercato estrai

Risulta essere consistente, e quindi convergente, del

[r]

Si lavora tramite reti residue: dato un flusso f per G, si ottiene una nuova rete residua G f “sottraendo” il flusso alla rete originale G, e si cerca un nuovo flusso g nella

Si consideri lo stesso sistema del punto precedente, ma nelle incognite x, y, z, e si rappresenti l’insieme delle soluzioni nello spazio.. Sotto quali condizioni su a, b, c il

Per gli stessi motivi esemplificati sopra, non si pu` o neanche definire un grafo dei cam- mini minimi in presenza di un massimo numero di hop. Infatti, il grafo dei cammini min-