Capitolo 8 - ANALISI DEI PROBLEMI ED ALGORITMI

 

 

 

            8.1. - Analisi strutturale come premessa al programma

 

                Nelle fasi iniziali dell'apprendimento di un linguaggio i programmi sono testi molto semplici, che tendono più alla familiarizzazione con il video, la tastiera ed il processo di compilazione che alla effettiva soluzione di un problema; ad esempio, è molto probabile che l'effettiva esperienza di macchina inizi con un programma C come:

 

            /*  T E S T . C - prima prova in  linguaggio C  */

 

            #include <stdio.h>

            main ( )

            {

                        int a, b ;

                        a = 7 ;  b = -2

                        printf ( "\n la somma di %d e %d é %d \n", a, b, a + b ) ;

            }

 

o con il suo equivalente Fortran:

 

            *   T E S T . F O R  -  prima prova in linguaggio Fortran

           

                        program                        T E S T

 

                        implicit  NONE

                        integer*2  a, b

 

                        write ( *, 100 )   a, b, a + b

            100       format ( / 5x, 'la somma di ', i6, '  e ', i6, '  è ', i6 / )

                        stop

                        end

 

                Pure senza conoscere l'uno o l'altro linguaggio, la logica delle operazioni è sufficientemente elementare da non richiedere alcuna discussione sulle intenzioni che hanno condotto a questi programmi; è invece importante collocare al giusto posto alcuni elementi, come le righe di commento, quelle di definizione dei dati ed eventuali altre accessorie, di cui in un primo tempo è forse difficile cogliere la reale necessità.

 

                Procedendo con esperimenti di complessità crescente, si tende spesso a scrivere 'di getto' direttamente nel linguaggio, abitudine facilitata dal fatto che tipici problemi da esercitazione, come semplici sequenze di calcolo numerico, la determinazione del massimo comun divisore o la scrittura ordinata di una tavola pitagorica non richiedono certo analisi molto sofisticate.

 

                Questa è una cattiva premessa per la programmazione. Sarebbe invece necessario costringersi fin dall'inizio a non scrivere mai nemmeno una riga di programma prima di avere analizzato completamente il problema che si intende risolvere, ignorando quasi completamente il linguaggio in cui si intende scrivere il testo del programma, e mettendo invece in risalto tutti gli elementi logici della struttura dei dati e delle sequenze operative: per tale motivo l'analisi viene detta strutturale.

 

                Come proveremo in questo capitolo, l'analisi strutturale è indipendente dal linguaggio di programmazione; essa è un modo di pensare ed affrontare il problema, ed la sua formulazione non richiede nulla di più di un ordinato impiego del linguaggio naturale, con il solo rispetto delle regole logiche.

 

                E' invece solo la presenza di certi elementi che riguardano i dati o le procedure a consigliare o escludere l'impiego di particolare linguaggio di programmazione. Ad esempio, l'oppurtunità dell'impiego esplicito degli indirizzi consiglia certamente il C, per il modo in cui esso tratta i puntatori; oppure la presenza di procedure ricorsive consiglia il C o il Pascal, escludendo invece il Fortran.