Estratto del documento

Quindi: -​ il pseudocodice è molto più vicino ad agevolare il passaggio da algoritmo a

programma

-​ il diagramma di flusso è molto più comprensibile se dobbiamo invece spiegare

l’algoritmo a qualcuno che di programmazione non ne capisce nulla

PSEUDOCODICE DIAGRAMMA DI FLUSSO(flow chart)

• è quasi una traduzione testuale dei concetti • Rappresentazione grafica della sequenza di

utilizzati nello sviluppo di un programma. operazioni necessarie alla risoluzione di un

problema

• è possibile il libero inserimento di parti testuali, • Sono facilmente intuibili e comprensibili, anche

mentre il successivo utilizzo di primitive e simboli per chi non ha competenze informatiche

consente di dare una forma completa

all'algoritmo

DIAGRAMMA DI FLUSSO(flow chart)

Nel diagramma di flusso abbiamo dei blocchi fondamentali che sono:

• Blocchi di inizio e fine→ Questi

rappresentano rispettivamente in che

punto inizia e in che punto finisce

l’algoritmo. Notiamo ,quindi, che il blocco

di inizio è dotato di una freccia uscente e

nessuna freccia entrante e il blocco di

fine invece è dotato di una freccia entrante e nessuna freccia uscente.

• Blocchi di elaborazione→ In genere vengono rappresentati con dei

rettangoli, hanno una freccia entrante e una freccia uscente(il ché vuol

dire che è un passo generico del mio algoritmo) dove ci saranno delle

istruzioni con operazioni tendenzialmente aritmetico-logiche come ad

esempio: la somma, la differenza…

o anche la descrizione di un’operazione un po’ complicata

• Blocchi di Input/output→ In questo caso vengono rappresentati con

questi parallelogrammi e vengono utilizzati proprio per far risaltare agli

occhi immediatamente quali sono i punti dell’algoritmo in cui è richiesta

un’interazione con l’utente. Anche qui possiamo avere sia frecce entranti che uscenti. Il fatto che

siano storte serve proprio a definire che in questo punto c’è un’interazione con l’utente e viene chiesto

o di leggere qualcosa (quindi input) o di scrivere qualcosa (quindi output)

• Blocco di decisione→ In questo caso abbiamo un

rombo in cui entra una freccia entro nel rombo dove

io devo scrivere qual è la condizione cui escono

→da

due frecce: VERA e FALSA

Notiamo che a parte i blocchi di inizio e fine, gli altri rappresentano le primitive (vedi sopra):

in/out read/write; Istruzioni→ assign; Condizione→ if…then…else

Notiamo però che non vediamo la primitiva di ripetizione, quindi il ciclo while. (Dopo vedremo il

perché)

RICERCA DI UN ALGORITMO

Esistono diverse strategie per ricercare un algoritmo:

• Strategie elementari (trial-&-error, generate-&-test, guess-&-check): Considerare/costruire una

possibile soluzione e verificare solo a posteriori se rispetta tutti i vincoli→ significa che io posso

generare più o meno casualmente delle soluzioni e poi verificare se la soluzione è corretta o meno.

Questo, quindi, è un modo con cui un algoritmo potrebbe essere creato (non progettato ma creato)

[detto in parole semplici: faccio tante prove fino a quando non riesco a generare delle soluzioni che

effettivamente risultano corrette] Questa strategia in realtà non è molto considerata dagli

informatici

• Strategie top-down: Scomposizione in sottoproblemi buona leggibilità Questa è una strategia

→ →

di progettazione Ho un problema molto complicato ma viene comodo pensare di risolverlo come

se fossero tanti sottoproblemi→ da questo il nome top-down. Quando approccio la progettazione di

un algoritmo in strategia top-down in genere l’algoritmo che ne risulta è ben leggibile perché

tendenzialmente io ho la visione d’insieme del mio problema generale e poi la definizione dei vari

sottoblocchi

• Strategie bottom-up: Opposte a quelle top-down, pongono una maggiore attenzione ai dati e a

funzioni che operino su di essi, per poi combinarle al fine di risolvere il problema di più "alto" livello →

In questo caso si parte dai dati e si da una maggiore rilevanza alle operazioni di base che lavorano su

quei dati e a come comporle per arrivare ad un problema generale.

ESEMPIO TRIAL-&-ERROR

Problema: Ordinare alfabeticamente i tre cognomi: "ROSSI", "BIANCHI" e "VERDI"

COME FACCIO A REALIZZARE UN ALGORITMO CHE RISOLVA QUESTO PROBLEMA?

Drunk man sort! (aka stupid sort, …) {L’ordinamento dell’ubriaco→perché in realtà sta cercando di

ordinare queste cose senza la minima logica , ci prova fino a quando qualcuno gli dice ok! li hai

messi in ordine }→ Questo algoritmo genera casualmente una permutazione dei 3 cognomi fino a

quando la permutazione non risulti ordinata correttamente .

Il problema è che non si sa quando terminerà→ perché finché il verificatore non gli dice okay hai

generato la soluzione corretta non finirà mai, o meglio potrebbe non finire in tempo ragionevole.

Anteprima
Vedrai una selezione di 1 pagina su 5
Primitive pseudocodice e flow chart Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ibty_05 di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Candellieri Antonio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community