Top Banner

of 35

2 Flowchart

Mar 29, 2016

Download

Documents

taurusfe1968

algoritmi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 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