Schema a blocchi: esempi, elementi, costruzione. Diagrammi di flusso

17/04/2019

Questo articolo vedrà esempi di diagrammi di flusso che potresti incontrare nei libri di testo sull'informatica e altre pubblicazioni. Un diagramma di flusso è un algoritmo che risolve qualsiasi compito assegnato allo sviluppatore. Per prima cosa è necessario rispondere alla domanda su cosa sia un algoritmo, come viene rappresentato graficamente e, soprattutto, come risolverlo, conoscendo determinati parametri. Va notato immediatamente che esistono diversi tipi di algoritmi.

Cos'è un algoritmo?

Questa parola è stata messa in pratica dal matematico Mohammed al-Khorezmi, che visse nel periodo tra il 763 e gli 800 anni. È lui che è la persona che ha creato le regole per eseguire operazioni aritmetiche (ce ne sono solo quattro). Ma il GOST del 1974, che afferma che:

Un algoritmo è una prescrizione esatta che definisce un processo computazionale. Inoltre, ci sono diverse variabili con valori dati che portano a calcoli sul risultato desiderato.

L'algoritmo consente di specificare chiaramente l'esecutore per eseguire rigoroso sequenza di azioni per risolvere il problema e ottenere il risultato. Lo sviluppo di un algoritmo è la rottura di un grosso compito in una certa sequenza di passaggi. Inoltre, lo sviluppatore dell'algoritmo deve conoscere tutte le caratteristiche e le regole per la sua creazione.

Funzionalità dell'algoritmo

In totale, ci sono otto caratteristiche dell'algoritmo (indipendentemente dal suo tipo):

  1. C'è una funzione per inserire i dati iniziali.
  2. C'è una conclusione di un certo risultato dopo il completamento dell'algoritmo. È necessario ricordare che l'algoritmo è necessario per raggiungere un determinato obiettivo, ovvero ottenere un risultato direttamente correlato ai dati di origine.
  3. L'algoritmo deve avere una struttura di tipo discreta. Dovrebbe essere presentato in fasi sequenziali. Inoltre, ogni passo successivo può iniziare solo dopo il completamento del precedente.
  4. L'algoritmo deve essere non ambiguo. Ogni passaggio è chiaramente definito e non consente un'interpretazione arbitraria.
  5. L'algoritmo deve essere finito - è necessario che venga eseguito in un numero di passaggi strettamente definito.
  6. L'algoritmo deve essere corretto - per chiedere solo la soluzione giusta al problema.
  7. Community (o carattere di massa) - dovrebbe funzionare con diversi dati di origine.
  8. Il tempo necessario per risolvere l'algoritmo dovrebbe essere minimo. Questo determina l'efficacia del compito.

E ora, sapendo quali sono i diagrammi di flusso dell'algoritmo, puoi iniziare a considerare come scriverli. E non sono molti.

Record verbale

Questo modulo viene solitamente utilizzato quando si descrive la procedura per una persona: "Vai lì, non so dove. Porta qualcosa, non so cosa. "

Certo, questa è una forma comica, ma l'essenza è chiara. Ad esempio, per esempio, la solita annotazione sui finestrini degli autobus: "In caso di incidente, estrai il cavo, spreme il vetro".

Qui la condizione è chiaramente impostata in base alla quale devono essere eseguite due azioni in una sequenza rigorosa. Ma questi sono gli algoritmi più semplici, ce ne sono di più complessi. A volte si usano formule, designazioni speciali, ma con la condizione obbligatoria - l'esecutore deve capire tutto.

È consentito modificare l'ordine delle azioni se è necessario tornare, ad esempio, all'operazione precedente o ignorare un comando in una determinata condizione. Allo stesso tempo, è opportuno numerare le squadre e indicare il comando a cui si verifica la transizione: "Dopo aver completato tutte le manipolazioni, ripetere i punti da 3 a 5".

Registra in forma grafica

Questa voce include elementi di diagrammi di flusso. Tutti gli elementi sono standardizzati, ogni squadra ha un certo record grafico. Un comando specifico deve essere registrato all'interno di ciascuno dei blocchi nella lingua ordinaria o nelle formule matematiche. Tutti i blocchi devono essere collegati da linee - mostrano esattamente quale ordine nei comandi eseguiti. In realtà, questo tipo di algoritmo è più adatto per l'uso nel codice del programma, piuttosto che verbale.

Scrivere in linguaggi di programmazione

In tal caso, se l'algoritmo è necessario affinché l'attività venga risolta da un programma installato su un PC, è necessario scriverlo con un codice speciale. Per questo ci sono molti linguaggi di programmazione. E l'algoritmo in questo caso è chiamato un programma.

Diagrammi di flusso

Un diagramma a blocchi è una rappresentazione dell'algoritmo in forma grafica. Tutte le squadre e le azioni sono rappresentate da forme geometriche (blocchi). All'interno di ogni figura si adattano tutte le informazioni sulle azioni che devono essere eseguite. Le connessioni sono rappresentate come linee normali con frecce (se necessario).

Per la progettazione di diagrammi di flusso di algoritmi esiste un GOST 19.701-90. Descrive la procedura e le regole per crearli in forma grafica, nonché i metodi di base per la risoluzione. Questo articolo presenta gli elementi principali dei diagrammi di flusso utilizzati per risolvere i problemi, ad esempio, in informatica. E ora consideriamo le regole di costruzione.

Regole di base per la creazione di un diagramma di flusso

Ci sono tali caratteristiche che ogni diagramma di flusso dovrebbe avere:

  1. Devono essere presenti due blocchi: "Inizio" e "Fine". E in una sola copia.
  2. Dal blocco iniziale al collegamento finale dovrebbe essere disegnato.
  3. Di tutti i blocchi, tranne quello finale, le linee di flusso dovrebbero uscire.
  4. Ci deve essere una numerazione di tutti i blocchi: da cima a fondo, da sinistra a destra. Il numero di sequenza dovrebbe essere posizionato nell'angolo in alto a sinistra, facendo sì che il marchio si rompa.
  5. Tutti i blocchi devono essere collegati tra loro da linee. Dovrebbero determinare la sequenza con cui vengono eseguite le azioni. Se il flusso si sposta verso l'alto o da destra a sinistra (in altre parole, nell'ordine inverso), vengono disegnate le frecce.
  6. Le linee sono divise in uscita e in entrata. Va notato che una riga è per un blocco in uscita e per l'altra in entrata.
  7. Dal blocco iniziale nello schema, la linea di flusso esce solo perché è la prima.
  8. Ma il blocco finale ha solo un input. Questo è chiaramente mostrato negli esempi di diagrammi di flusso che sono disponibili nell'articolo.
  9. Per rendere più semplice la lettura dei diagrammi di flusso, le linee in entrata vengono disegnate dall'alto e le linee in uscita dal basso.
  10. La presenza di spazi vuoti nelle linee di flusso. Sono necessariamente contrassegnati con connettori speciali.
  11. Per facilitare il diagramma di flusso, è consentito scrivere tutte le informazioni nei commenti.

Gli elementi grafici dei diagrammi di flusso per la risoluzione degli algoritmi sono presentati nella tabella:

Algoritmi di tipo lineare

Questa è la forma più semplice, che consiste in una specifica sequenza di azioni, non dipendono da quali dati sono inizialmente inseriti. Vi sono diversi comandi che vengono eseguiti una sola volta e solo dopo aver completato quello precedente. Lo schema a blocchi lineare si presenta così:

Un esempio di un algoritmo lineare

Inoltre, i collegamenti possono andare sia dall'alto verso il basso che da sinistra verso destra. Tale diagramma di flusso viene utilizzato per scrivere gli algoritmi di calcolo utilizzando semplici formule che non hanno restrizioni sui valori delle variabili incluse nelle formule per il calcolo. Un algoritmo lineare è parte integrante di processi di calcolo complessi.

Algoritmi di ramificazione

I diagrammi di flusso basati su tali algoritmi sono più complessi di quelli lineari. Ma l'essenza non cambia. Un algoritmo di ramificazione è un processo in cui l'ulteriore azione dipende da come viene soddisfatta la condizione e da quale soluzione si ottiene. Ogni linea di azione è un ramo.

Varietà di cicli per la risoluzione di algoritmi

I diagrammi rappresentano blocchi chiamati "Soluzione". Ha due uscite e una condizione logica è scritta all'interno. È su come verrà eseguito che l'ulteriore movimento nello schema dell'algoritmo dipende. È possibile dividere gli algoritmi di ramificazione in tre gruppi:

  1. "Bypass" - mentre uno dei rami non ha operatori. In altre parole, vengono ignorate diverse azioni di un altro ramo.
  2. "Branching": ogni ramo ha una serie specifica di azioni eseguite.
  3. Una "scelta multipla" è una forcella in cui ci sono diversi rami e ognuno contiene un insieme specifico di azioni da eseguire. E c'è una caratteristica: la scelta della direzione dipende direttamente da quali valori vengono dati per le espressioni incluse nell'algoritmo.

Questi sono semplici algoritmi risolti in modo molto semplice. Passiamo ora a quelli più complessi.

Algoritmo ciclico

Qui tutto è molto chiaro: il diagramma a blocchi ciclico rappresenta un algoritmo in cui i calcoli omogenei vengono ripetuti molte volte. Per definizione, un ciclo è una sequenza specifica di tutte le azioni eseguite più volte (più di una volta). E ci sono diversi tipi di cicli:

  1. Chi conosce il numero di ripetizioni di azioni (sono anche chiamate cicli con un contatore).
  2. In cui il numero di ripetizioni è sconosciuto - con postcondizione e presupposto.

Indipendentemente dal tipo di ciclo utilizzato per risolvere l'algoritmo, deve avere una variabile con cui si verifica l'output. Determina il numero di ripetizioni del ciclo. La parte operativa (corpo) di un ciclo è una sequenza specifica di azioni che viene eseguita in ogni fase. E ora daremo un'occhiata più da vicino a tutti i tipi di cicli che possono verificarsi quando si elaborano algoritmi e si risolvono problemi di informatica.

Contro cicli

La figura mostra un semplice schema a blocchi in cui è presente un ciclo con un contatore. Questo tipo di algoritmo mostra che il numero di ripetizioni di un determinato ciclo è noto in anticipo. E questo numero è fisso. In questo caso, la variabile che conta il numero di passi (ripetizioni) è chiamata contatore. A volte nei libri di testo si possono trovare altre definizioni: un parametro di ciclo, una variabile di controllo.

Ciclo immagine con contatore

Lo schema a blocchi illustra in modo molto vivido come funziona il ciclo con il contatore. Prima di procedere con il primo passo, è necessario assegnare un valore iniziale al contatore - può essere un qualsiasi numero, dipende dall'algoritmo specifico. Nel caso in cui il valore finale sia inferiore al valore del contatore, verrà eseguito un certo gruppo di comandi che costituiscono il corpo del loop.

Dopo che il corpo è stato eseguito, il contatore viene modificato dal valore di incremento del contatore, indicato dalla lettera h. Nel caso in cui il valore ottenuto sia inferiore a quello finale, il ciclo continuerà. E finirà solo quando il valore finale è inferiore al contatore del ciclo. Solo in questo caso verrà eseguita l'azione che segue il ciclo.

Come viene visualizzato il contatore del ciclo

In genere, un blocco chiamato "Preparazione" viene utilizzato nella notazione dello schema a blocchi. È scritto nel contatore e quindi indica i seguenti dati: i valori iniziale e finale, il cambio di passo. Nello schema a blocchi, questi sono i parametri I n, Ik e h, rispettivamente. Nel caso in cui h = 1, la dimensione del passo non viene registrata. In altri casi, questo deve essere fatto. È necessario rispettare una semplice regola: la linea di flusso deve entrare dall'alto. E lo streamline che va sotto (o sulla destra, a seconda dell'algoritmo specifico) dovrebbe mostrare la transizione all'operatore successivo.

Ora hai studiato a fondo la descrizione del diagramma di flusso mostrato nella figura. Puoi continuare a studiare ulteriormente. Quando viene utilizzato un ciclo con un contatore, devono essere soddisfatte determinate condizioni:

  1. Al corpo non è permesso cambiare (forzatamente) il valore del contatore.
  2. È vietato trasferire il controllo dall'esterno all'operatore del corpo. In altre parole, si può entrare nel ciclo solo dal suo inizio.

Cicli di precondizione

Questo tipo di cicli viene utilizzato nei casi in cui il numero di ripetizioni non è noto in anticipo. Un ciclo con una precondizione è un tipo di algoritmo in cui, immediatamente prima che il corpo inizi a eseguire, controlla la condizione in base alla quale è consentita la transizione all'azione successiva. Si noti come vengono raffigurati gli elementi del diagramma a blocchi.

Nel caso in cui la condizione sia soddisfatta (l'affermazione è vera), si verifica una transizione all'inizio del corpo del ciclo. Cambia direttamente il valore di almeno una variabile che influenza il valore della serie di condizioni. Se non rispetti questa regola, otteniamo un "loop". Nel caso in cui dopo la verifica successiva della condizione di esecuzione del corpo del loop, si scopre che è falso, quindi si verifica un'uscita.

Nei diagrammi di flusso degli algoritmi è consentito verificare non la verità, ma la falsità della condizione iniziale. In questo caso, il ciclo uscirà solo se il valore della condizione è vero. Entrambe le opzioni sono corrette, il loro utilizzo dipende da ciò che specificamente è più comodo da usare per risolvere un particolare problema. Questo tipo di ciclo ha una caratteristica: il corpo può non essere eseguito quando la condizione è falsa o vera (a seconda della variante usata per risolvere l'algoritmo).

Di seguito è riportato un diagramma di flusso che descrive tutte queste azioni:

Immagine del ciclo con precondizione

Cos'è un ciclo con la post-condizione?

Se guardi da vicino, allora questo tipo di cicli è in qualche modo simile al precedente. Cercheremo di costruire un diagramma di flusso che descriva questo ciclo da soli. La particolarità è che il numero di ripetizioni non è noto in anticipo. E la condizione è impostata dopo il ritiro dal corpo. Questo dimostra che il corpo, indipendentemente dalla decisione, verrà eseguito almeno una volta. Per maggiore chiarezza, dai un'occhiata al diagramma di flusso che descrive la condizione e le affermazioni:

Ciclo immagine con post-condizione

Non c'è nulla di difficile nella costruzione di algoritmi con cicli, è sufficiente capirli solo una volta. E ora passiamo a strutture più complesse.

Cicli complessi

Complesso sono quelle costruzioni all'interno delle quali esistono uno o più cicli semplici. A volte sono chiamati nidificati. Allo stesso tempo, quelle strutture che coprono altri cicli sono chiamate "esterne". E quelli che sono inclusi nella progettazione di esterni - interni. Quando viene eseguita ogni fase del ciclo esterno, il ciclo interno viene completamente scostato, come mostrato nella figura:

Un esempio di un ciclo complesso

Questo è tutto, hai rivisto le caratteristiche principali della costruzione di diagrammi di flusso per la risoluzione di algoritmi, conosci i principi e le regole. Ora puoi considerare esempi specifici di diagrammi di flusso dalla vita. Ad esempio, in psicologia, tali costruzioni vengono utilizzate affinché una persona possa decidere una domanda:

Un esempio dalla vita dell'algoritmo della soluzione

O un esempio di biologia per risolvere il problema:

Il secondo esempio di risoluzione dell'algoritmo in base al diagramma di flusso

Risoluzione dei problemi con i diagrammi di flusso

E ora vedremo esempi di problemi con i diagrammi di flusso che possono essere trovati nei libri di testo di informatica. Ad esempio, viene fornito un diagramma a blocchi, in base al quale viene risolto un algoritmo:

Soluzione del problema di matematica

In questo caso, l'utente inserisce autonomamente i valori delle variabili. Supponiamo che x = 16 e y = 2. Il processo di fare questo:

  1. I valori di xey vengono inseriti.
  2. L'operazione di conversione viene eseguita: x = √16 = 4.
  3. La condizione è soddisfatta: y = y 2 = 4.
  4. Il calcolo viene eseguito: x = (x + 1) = (4 + 1) = 5.
  5. La variabile successiva viene calcolata ulteriormente: y = (y + x) = (5 + 4) = 9.
  6. Viene visualizzata la soluzione: y = 9.

In questo esempio, i diagrammi di flusso per l'informatica mostrano chiaramente come l'algoritmo è risolto. È necessario prestare attenzione al fatto che i valori di x e y sono impostati nella fase iniziale e possono essere qualsiasi cosa.