Algoritmo, diagrammi di flusso e logica.

Algoritmo

Un algoritmo è un processo logico-matematico atto a risolvere un problema o a svolgere un compito. Esso è una sequenza di operazioni univoche, anche di tipo ciclico, che in un numero finito di passi portano alla risoluzione di un problema. Per descrivere graficamente l’algoritmo utilizziamo i diagrammi di flusso o Flow -chart, cioè una rappresentazione grafica delle operazioni da eseguire per l’esecuzione di un programma. Ogni singolo passo è visualizzato tramite una serie di simboli standard, che sono comprensibili dal punto di vista logico sia al programmatore che per la macchina.
Un algoritmo può essere considerato un insieme di regole per svolgere un dato compito progettato.

Potremmo definirlo così:

Un algoritmo è un insieme ben ordinato di operazioni non ambigue ed effettivamente calcolabili che eseguito , produce un risultato e termina in unaquantità finita di tempo.

Si ritiene che il nome deriva dal matematico persiano Muhammad ibn M ūsa ‘l-Khwārizmī (780-850).
Per chiarire meglio il concetto di algoritmo è bene fare riferimento a queste proprietà accennate che ora chiariremo meglio. Ecco un insieme di istruzioni che deve possedere affinché possa chiamarsi algoritmo:

  • La finitezza. Il numero di istruzioni, che fanno parte di un algoritmo, è finito. Le operazioni definite in esso vengono eseguite un numero finito di volte.
  • Il determinismo. Le istruzioni presenti in un algoritmo devono essere definite senza ambiguità. Un algoritmo eseguito più volte e da diversi esecutori, a parità di
    premesse, deve giungere a medesimi risultati. L’effetto prodotto dalle azioni descritte nell’algoritmo non deve dipendere dall’esecutore o dal tempo.
  • La realizzabilità pratica. Tutte le azioni descritte devono essere eseguibili con i mezzi di cui si dispone.
  • La generalità. Proprietà già messa in evidenza nella definizione che si è data: un algoritmo si occupa della risoluzione di famiglie di problemi.

Esecuzione di un algoritmo

Vengono eseguite in sequenza le operazioni che lo costituiscono; ed esistono algoritmi che prevedono:

  • una sequenza di esecuzione unica
  • sequenze di esecuzione multiple

Esempio: sequenza di esecuzione unica

Considerato il valore di X, calcolare: Y = 2 X + 7
Sequenza di esecuzione:

  1. ricevo il valore di X
  2. moltiplico X per 2 (sia Z il risultato)
  3.  sommo 7 a Z ( sia Y il risultato)
  4. visualizzo Y

Esempio: sequenze di esecuzione multiple

Dato il valore di X, calcolare la radice quadrata di X+8.
Sequenza di esecuzione:

  1.  ricevo il valore di X
  2.  sommo 8 a X (sia Y il risultato)
  3.  se Y è positivo o nullo, calcolo la sua radice quadrata e la visualizzo
  4.  se Y è negativo, indico che è impossibile calcolare la sua radice quadrata

Formalizzazione di una soluzione

  • pseudo-linguaggio (o pseudo-codice)
    • vantaggi: immediato
    • svantaggi: descrizione dell’algoritmo poco astratta, interpretazione più complicata
  • diagrammi di flusso
    • vantaggi: più intuitivi perché usano un formalismo grafico, descrizione dell’algoritmo più astratta
    • svantaggi: richiedono l’apprendimento della funzione dei vari tipi di blocco

Modo dei Diagrammi di flusso (flow-chart)

Le operazioni da compiere, rappresentate mediante sagome convenzionali (rettangoli, rombi, esagoni, parallelogrammi, rettangoli smussati…), ciascuna con un preciso significato logico e all’interno delle quali un’indicazione testuale descrive l’attività da svolgere. La sequenza nella quale devono essere compiute, è rappresentata con frecce di collegamento.

Una combinazione di blocchi elementari descrive un algoritmo se:

  • viene usato un numero finito di blocchi
  • lo schema inizia con un blocco iniziale e termina con un blocco finale
  • ogni blocco soddisfa delle condizioni di validità

Condizioni di validità

  • condizioni sui blocchi:
    • blocco azione e blocco lettura/scrittura: ogni blocco di questi due tipi ha una sola freccia entrante e una sola freccia uscente
    • blocco di controllo: ogni blocco di questo genere ha una sola freccia entrante e due frecce uscenti
  • condizioni sulle frecce:
    • ogni freccia deve entrare in un blocco
  • condizioni sui percorsi:
    • daogni blocco deve essere possibile raggiungere ogni blocco

    ecco i simboli grafici:

inizio algoritmo

blocco_controlloblocco_azione

fine algoritmo

Per questa loro connotazione topologica i diagrammi di flusso possono essere ricondotti alla classe più ampia dei diagrammi a blocchi, che a loro volta rientrano nell’ancora più vasta categoria delle mappe concettuali, utilizzate soprattutto per la descrizione e la rappresentazione delle informazioni e della conoscenza.
I diagrammi di flusso trovano la loro applicazione in vari ambiti, ma quello in cui storicamente si sono maggiormente affermati è stato quello informatico dove, solo in tempi più recenti, sono stati affiancati da altri strumenti metodologici quali lo pseudocodice e l’UML.