DIAGRAMMI A DIAGRAMMI A BLOCCHIBLOCCHI
1
BLOCCHIBLOCCHI
TEORIA ED ESERCIZITEORIA ED ESERCIZI1
Il linguaggio dei diagrammidiagrammi aa blocchiblocchi un possibileformalismo per la descrizione di algoritmi
Il diagramma a blocchi, o flowchartflowchart, una rappresentazionegrafica dellalgoritmo
2
Un diagramma a blocchi descrive il flussoflusso delle operazioni daeseguire per realizzare la trasformazione, definitanellalgoritmo, dai dati iniziali ai risultati
Ogni istruzione dellalgoritmo viene rappresentata allinternodi 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
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
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 (n1) di blocchi di azione e/o di
blocchi di lettura/scritturad) un numero finito m (m0) di blocchi di controllo
Linsieme 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 unaltrafrecciaciascun 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 Xi,i=1,,n1, Xi connesso con una freccia a Xi+1
I programmatori inesperti tendono ad aggrovigliare ilprogramma introducendo numerosi salti privi di regole(spaghettispaghetti programmingprogramming)Lanalisianalisi 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 subordinalesecuzione di due possibili schemi di flusso al verificarsidi una condizioneSchemaSchema didi iterazioneiterazione si itera lesecuzione di un datoschema di flusso
Ovvero: un diagrammadiagramma aa blocchiblocchi strutturatostrutturato undiagramma a blocchi nel quale gli schemi di flusso sonostrutturatistrutturatiUno schema di flusso strutturato quando soddisfa unadelle seguenti propriet1) 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
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
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 uniterazioneiterazioneperper falsofalso quando S viene eseguito finch C falsa
Gli schemi di flusso sono apertiaperti quando consentono una solaesecuzione di una sequenza di blocchi elementari, sono chiusichiusiquando permettono pi di unesecuzione 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 risultatiLuso dellanalisi strutturata garantisce:
facilit di comprensione e modifica dei diagrammi a blocchimaggiore uniformit nella descrizione degli algoritmi
Inoltre... stato dimostrato (teorema fondamentale dellaprogrammazione di BohmJacopini, 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
Il teorema di BohmJacopini 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 delluso sconsideratodelle istruzioni gogo toto e alla definizione delle linee guida dellaprogrammazione strutturata, sviluppate negli anni `70
In un diagramma strutturato non apparir mai una istruzione disalto incondizionatoI tre schemi fondamentali possono essere concatenaticoncatenati, uno diseguito allaltro, o nidificatinidificati, uno dentro laltro; non possono innessun caso essere intrecciati o accavallati
13
Corretto
Sbagliato
Diagramma a blocchi per laselezione, in un mazzo dichiavi, di quella che apreun lucchetto
14
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
loperazione 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
PROBLEMADati due numeri effettuare il loro prodotto usando solo loperazione prodotto usando solo loperazione somma.
SOLUZIONEProvate a trovare una soluzione al problema descrivendola con diagrammi di flusso
Usando solo loperazione sommaSOLUZIONE:
PROBLEMADati 3 numeri stabilire quale sia il valore maggioremaggiore
SOLUZIONEProvate a trovare una soluzione al problema descrivendola con diagrammi di flusso
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
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 puessere verificata prima o dopolesecuzione delliterazioneLe 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
ProblemaProblema: Calcolare la somma ditre interi consecutivi
25
NoteNote:La fase di inizializzazione riguardala somma e lindice del cicloIl controllo di fine ciclo vieneeffettuato in coda
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)
Un ciclo indefinitoindefinito quando non possibile conoscere apriori quante volte verr eseguito
La condizione di fine ciclo controlla il valore di una o pivariabili modificate da istruzioni che fanno parte
28
variabili modificate da istruzioni che fanno partedelliterazione
Comunque, un ciclo deve essere eseguito un numero finitodi volte, cio si deve sempre verificare la terminazioneterminazionedellesecuzione del ciclo
ProblemaProblema: Calcolare la somma dei primi N numeri.
29
NoteNote:Leggo un numero N e sommo tutti i numeridellintervallo [0,N] oppure [N,0] se N negativoAttenzione al segno del risultato
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 dellinsieme
31
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
Completa il diagrammaVerifica se Verifica se impossibile (divisore=0) o indeterminata (dividendo=0 e divisore=0)
Scrivere un algoritmo, e rappresentarlo tramite diagramma a blocchi, per la soluzione dei seguenti problemi:
calcolare larea del triangolotrovare il max di due numeri
35
Formalizzare, tramite diagramma a blocchi, lalgoritmo percalcolare le radici reali di equazioni di 2 gradocalcolare il M.C.D. di due numeri con il metodo di Euclide
Top Related