DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi...

35
DIAGRAMMI A DIAGRAMMI A BLOCCHI BLOCCHI 1 BLOCCHI BLOCCHI TEORIA ED ESERCIZI TEORIA ED ESERCIZI 1

Transcript of DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi...

Page 1: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

DIAGRAMMI A DIAGRAMMI A BLOCCHIBLOCCHI

1

BLOCCHIBLOCCHI

TEORIA ED ESERCIZITEORIA ED ESERCIZI1

Page 2: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Il linguaggio dei diagrammidiagrammi aa blocchiblocchi è un possibileformalismo per la descrizione di algoritmi

Il diagramma a blocchi, o flowchartflowchart, è una rappresentazionegrafica dell’algoritmo

2

Un diagramma a blocchi descrive il flussoflusso delle operazioni daeseguire per realizzare la trasformazione, definitanell’algoritmo, dai dati iniziali ai risultati

Ogni istruzione dell’algoritmo viene rappresentata all’internodi un bloccoblocco elementareelementare, la cui forma grafica è determinatadal tipo di istruzione

I blocchi sono collegati tra loro da lineelinee didi flussoflusso, munite difrecce, che indicano il susseguirsi di azioni elementari

Page 3: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

XX

leggi/scrivileggi/scrivibeginbeginAA

Blocco iniziale Blocco azione

3Blocchi elementari

endend

Blocco finale

Blocco di scrittura

CCscriviscrivi XX

Blocco di controllo

Blocco di lettura/scrittura Blocco azione

falsofalsoverovero

Page 4: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Un diagrammadiagramma aa blocchiblocchi è un insieme di blocchielementari composto da:

a) un blocco inizialeb) un blocco finale

4

b) un blocco finalec) un numero finito n (n≥1) di blocchi di azione e/o di

blocchi di lettura/scritturad) un numero finito m (m≥0) di blocchi di controllo

Page 5: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

L’insieme dei blocchi elementari che descrivono un algoritmo devesoddisfare le seguenti condizioni:

ciascun blocco di azione o di lettura/scrittura ha una sola frecciaentrante ed una sola freccia uscenteciascun blocco di controllo ha una sola freccia entrante e duefrecce uscenti

5

ciascun blocco di controllo ha una sola freccia entrante e duefrecce uscenticiascuna freccia entra in un blocco oppure si innesta in un’altrafrecciaciascun blocco è raggiungibileraggiungibile dal blocco inizialeil blocco finale è raggiungibileraggiungibile da qualsiasi altro blocco

Un blocco B è raggiungibileraggiungibile a partire da un blocco A se esiste unasequenza di blocchi X1,X2,…,Xn, tali che A=X1, B=Xn, e ∀ X

i,

i=1,…,n−1, Xiè connesso con una freccia a X

i+1

Page 6: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

I programmatori inesperti tendono ad “aggrovigliare” ilprogramma introducendo numerosi salti privi di regole(spaghettispaghetti programmingprogramming)L’analisianalisi strutturatastrutturata favorisce, viceversa, la descrizione dialgoritmi facilmente documentabili e comprensibili

6

algoritmi facilmente documentabili e comprensibiliI blocchi di un diagramma a blocchi strutturato sono collegatisecondo i seguenti schemi di flusso:

SchemaSchema didi sequenzasequenza – più schemi di flusso sono eseguitiin sequenzaSchemaSchema didi selezioneselezione – un blocco di controllo subordinal’esecuzione di due possibili schemi di flusso al verificarsidi una condizioneSchemaSchema didi iterazioneiterazione – si itera l’esecuzione di un datoschema di flusso

Page 7: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Ovvero: un diagrammadiagramma aa blocchiblocchi strutturatostrutturato è undiagramma a blocchi nel quale gli schemi di flusso sonostrutturatistrutturatiUno schema di flusso è strutturato quando soddisfa unadelle seguenti proprietà…1) …è uno schema elementare o uno schema di sequenza

7

1) …è uno schema elementare o uno schema di sequenza

end

A

begin

S1, S2,…, Sn schemidi flusso strutturati

Page 8: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

2) …è uno schema di selezione

8

Nel primo caso, lo schema S viene eseguito solo se lacondizione C è vera; se C è falsa, non viene eseguitaalcuna azioneNel secondo caso, viene eseguito solo uno dei due schemiSv o Sf, in dipendenza del valore di verità della condizione

Page 9: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

3) …è uno schema di iterazione

9

Nel primo caso, S può non venire mai eseguito, se la condizione Cè subito falsa; nel secondo caso, S viene eseguito almeno una voltaQuando lo schema S viene eseguito finché la condizione C simantiene vera si parla di iterazioneiterazione perper verovero; si ha un’iterazioneiterazioneperper falsofalso quando S viene eseguito finché C è falsa

Page 10: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Gli schemi di flusso sono apertiaperti quando consentono una solaesecuzione di una sequenza di blocchi elementari, sono chiusichiusiquando permettono più di un’esecuzione della sequenza diblocchiGliGli schemischemi didi sequenzasequenza ee didi selezioneselezione sonosono aperti,aperti, lolo schemaschemadidi iterazioneiterazione èè chiusochiuso

10

didi iterazioneiterazione èè chiusochiusoOgniOgni diagrammadiagramma aa blocchiblocchi nonnon strutturatostrutturato èè trasformabiletrasformabile ininunun diagrammadiagramma aa blocchiblocchi strutturatostrutturato equivalenteequivalenteDue diagrammi a blocchi sono equivalentiequivalenti se, operando suglistessi dati, producono gli stessi risultatiL’uso dell’analisi strutturata garantisce:

facilità di comprensione e modifica dei diagrammi a blocchimaggiore uniformità nella descrizione degli algoritmi

Page 11: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Inoltre...È stato dimostrato (teorema fondamentale dellaprogrammazione di Bohm−Jacopini, 1966) che ogni programmapuò essere codificato riferendosi esclusivamente ad unalgoritmo strutturato e quindi attenendosi alle tre strutture

11

algoritmo strutturato e quindi attenendosi alle tre strutturefondamentali:

Sequenziale Iterativa Condizionale

Page 12: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Il teorema di Bohm−Jacopini ha un interesse soprattuttoteorico, in quanto i linguaggi di programmazione tendono adotarsi di più tipi di istruzioni, non sempre “rispettose” delteorema, ma utili per la realizzazione di programmi di facilescrittura e comprensione

12

scrittura e comprensioneIl suo valore consiste nella capacità di fornire indicazionigenerali per le attività di progettazione di nuovi linguaggi e distrategie di programmazioneIn effetti, esso ha contribuito alla critica dell’uso sconsideratodelle istruzioni gogo toto e alla definizione delle linee guida dellaprogrammazione strutturata, sviluppate negli anni `70

Page 13: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

In un diagramma strutturato non apparirà mai una istruzione disalto incondizionatoI tre schemi fondamentali possono essere concatenaticoncatenati, uno diseguito all’altro, o nidificatinidificati, uno dentro l’altro; non possono innessun caso essere “intrecciati” o “accavallati”

13

Corretto

Sbagliato

Page 14: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Diagramma a blocchi per laselezione, in un mazzo dichiavi, di quella che apreun lucchetto

14

Page 15: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

1. Dato un numero dire se è positivo o negativo2. … e se il numero fosse nullo?3. Eseguire il prodotto tra due numeri positivi usando solo

l’operazione di somma... E se i numero non fossero solo positivi?4. ... E se i numero non fossero solo positivi?

5. Trovare il maggiore tra tre numeri6. Somma di 3 interi consecutivi7. Somma dei primi N numeri8. Media di N numeri9. Acquisto di prodotti con tetto massimo di spesa10. Divisione tra due numeri

Page 16: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.
Page 17: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.
Page 18: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

PROBLEMADati due numeri effettuare il loro prodotto usando solo l’operazione prodotto usando solo l’operazione somma.

SOLUZIONEProvate a trovare una soluzione al problema descrivendola con diagrammi di flusso

Page 19: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Usando solo l’operazione sommaSOLUZIONE:

Page 20: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

PROBLEMADati 3 numeri stabilire quale sia il valore maggioremaggiore

SOLUZIONEProvate a trovare una soluzione al problema descrivendola con diagrammi di flusso

Page 21: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.
Page 22: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.
Page 23: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

•• ProblemaProblema: Calcolare la somma ditre interi consecutivi

23

NoteNote:La variabile sommasomma è uncontenitore di somme parziali,finché non si ottiene la sommatotale richiestaLa soluzione del problema vieneraggiunta eseguendo azionisimili per un numero opportunodi volte

Page 24: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Il ciclociclo o looploop è uno schema di flusso per descrivere, in modo conciso,situazioni in cui un gruppo di operazioni deve essere ripetuto più volteLa condizionecondizione didi finefine ciclociclo vieneverificata ogni volta che siesegue il ciclo; se la condizioneassume valore vero (falso), le

24

assume valore vero (falso), leistruzioni vengono reiterate,altrimenti si esceesce daldal ciclocicloLa condizione di fine ciclo puòessere verificata prima o dopol’esecuzione dell’iterazioneLe istruzioniistruzioni didi inizializzazioneinizializzazioneassegnano valori iniziali adalcune variabili (almeno a quellache controlla la condizione di fineciclo) Ciclo con controllo in codaCiclo con controllo in codaCiclo con controllo in testaCiclo con controllo in testa

Page 25: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

•• ProblemaProblema: Calcolare la somma ditre interi consecutivi

25

NoteNote:La fase di inizializzazione riguardala somma e l’indice del cicloIl controllo di fine ciclo vieneeffettuato in coda

Page 26: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.
Page 27: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Un ciclo è definitodefinito quando è noto a priori quante volte deveessere eseguito; un ciclo definito è detto anche enumerativoenumerativo

Un contatorecontatore deldel ciclociclo tiene memoria di quante iterazionisono state effettuate; può essere utilizzato in due modi:

27

sono state effettuate; può essere utilizzato in due modi:incrementoincremento deldel contatorecontatore: il contatore viene inizializzato ad unvalore minimo (ad es. 0 o 1) e incrementato ad ogniesecuzione del ciclo; si esce dal ciclo quando il valore delcontatore eguaglia il numero di iterazioni richiestedecrementodecremento deldel contatorecontatore: il contatore viene inizializzato alnumero di iterazioni richiesto e decrementato di uno ad ogniiterazione; si esce dal ciclo quando il valore del contatoreraggiunge 0 (o 1)

Page 28: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Un ciclo è indefinitoindefinito quando non è possibile conoscere apriori quante volte verrà eseguito

La condizione di fine ciclo controlla il valore di una o piùvariabili modificate da istruzioni che fanno parte

28

variabili modificate da istruzioni che fanno partedell’iterazione

Comunque, un ciclo deve essere eseguito un numero finitodi volte, cioè si deve sempre verificare la terminazioneterminazionedell’esecuzione del ciclo

Page 29: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

•• ProblemaProblema: Calcolare la somma dei primi N numeri.

29

NoteNote:Leggo un numero N e sommo tutti i numeridell’intervallo [0,N] oppure [N,0] se N è negativoAttenzione al segno del risultato

Page 30: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

•• ProblemaProblema: Calcolo della mediadi un insieme di numeri; nonè noto a priori quanti sono inumeri di cui deve essere

30

numeri di cui deve esserecalcolata la media� I numeri vengono letti uno

alla volta fino a che non siincontra un x=0, che segnalala fine dell’insieme

Page 31: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

31

Page 32: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

PROBLEMASi progetti un terminare per automatizzare la spesa in un supermercato. Il terminale deve contare il numero di prodotti messi nel carrello contare il numero di prodotti messi nel carrello per una spesa massima di 100€.

SOLUZIONEAnalizzare il problema e descrivere la soluzione con diagrammi di flusso

Page 33: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.
Page 34: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Completa il diagrammaVerifica se è Verifica se è impossibile (divisore=0) o indeterminata (dividendo=0 e divisore=0)

Page 35: DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI · Il linguaggio dei diagrammidiagrammi aa blocchi blocchi è un possibile ... Si progetti un terminare per automatizzare la spesa in un supermercato.

Scrivere un algoritmo, e rappresentarlo tramite diagramma a blocchi, per la soluzione dei seguenti problemi:

calcolare l’area del triangolotrovare il max di due numeri

35

Formalizzare, tramite diagramma a blocchi, l’algoritmo per……calcolare le radici reali di equazioni di 2° grado…calcolare il M.C.D. di due numeri con il metodo di Euclide