prof. Nunzio Brugaletta
LinPROG

EnneBi - Programmazione
Avanti - Indietro - Inizio

La programmazione strutturata

Fra i 3GL un linguaggio che ebbe una notevole diffusione (famoso in senso positivo e negativo) e che continua, anche questo, ad essere utilizzato anche se in forme diverse rispetto alle caratteristiche originali, è il BASIC (Beginner's All purpose Symbolic Instruction Code). Sviluppato dal 1963, nasce per essere un linguaggio semplice da imparare e per poter essere utilizzato, come evidenziato anche dal nome, dai principianti per la scrittura di programmi generici. Il BASIC comprende istruzioni, derivate dal Fortran, per calcoli scientifici e istruzioni, anche se non specializzate come nel COBOL, per il trattamento di dati residenti su memorie di massa. Gli strumenti resi disponibili dal linguaggio possono essere utilizzati anche da chi non ha buone basi di programmazione. Anche se nasce compilato le sue implementazioni più comuni sono interpretate, anche in ragione del fatto che un linguaggio interpretato si adatta maggiormente, rispetto ad uno compilato, ad essere usato da un principiante.

La diffusione del BASIC con il suo permissivismo e, principalmente, la mancanza di regole di buona programmazione portò ben presto a quello che fu chiamato spaghetti code, termine dispregiativo per indicare quei programmi in cui è difficile seguire il flusso delle istruzioni che le compongono. Le istruzioni sono intrecciate come gli spaghetti in un piatto.

20 i = 0
30 i = i + 1
40 if i <> 10 then goto 70
50 print "Programma terminato."
60 end
70 print i,  " al quadrato = ",  i * i
80 goto 30

Il programma dell'esempio, scritto in BASIC, calcola e visualizza i quadrati dei numeri da 1 a 9, solo che, il continuo rimando ad altre righe contenenti codice (le istruzioni goto), rende incomprensibile, e difficile da seguire logicamente, la sequenza delle istruzioni. La manutenzione di programmi che usavano in maniera intensiva l'istruzione di modifica sequenza goto diventavano quasi impossibili da mantenere.

Lungo il cammino verso la definizione di regole di buona programmazione, si incontrano due tappe fondamentali:

Fra gli anni '60 e '70 vengono sviluppati i concetti della programmazione strutturata, paradigma di programmazione nato per applicare le nuove regole. Il prof. Niklaus Wirth pubblica l'articolo Program Development by Stepwise Refinement sulla metodologia top down per costruire soluzioni a problemi complessi, e il libro Algoritmi + Strutture di Dati = Programmi, testo fondamentale di programmazione.

Nel paradigma della programmazione strutturata si possono utilizzare solo le tre strutture previste dal teorema di Böhm-Jacopini. Ogni struttura deve avere un solo punto di ingresso e un solo punto di uscita (non è più ammesso saltare in qualsiasi punto del programma) e, inoltre, ogni struttura può avere al suo interno solo strutture di controllo del tipo delle tre ammesse.

Il nuovo paradigma poteva essere applicato anche utilizzando gli strumenti resi disponibili dai linguaggi di programmazione esistenti, che consentivano tale paradigma ma ne rendevano l'uso difficoltoso. Occorrevano quindi nuovi linguaggi che supportassero il paradigma rendendo facile la sua applicazione. Wirth progetta, a tale scopo, nel 1970, il Pascal: linguaggio sviluppato per la didattica della programmazione.

Alla programmazione strutturata si affianca, come estensione, la programmazione modulare basata sullo sviluppo di un programma in singoli moduli indipendenti fra di loro, ognuno con interazione minima con il mondo esterno e con gli altri moduli, e sull'utilizzo di interfacce semplificate per la comunicazione fra i moduli. Wirth estende gli strumenti, resi disponibili dal Pascal, progettando il Modula-2 che supporta pienamente, come si evince anche dal nome scelto, il paradigma modulare.

Il paradigma della programmazione modulare consente lo sviluppo di linguaggi di programmazione che, anche se rientrano nella famiglia dei linguaggi procedurali, hanno caratteristiche diverse rispetto a quelli esistenti fino a quel momento:

#include <stdio.h>
#include <string.h>	/*1*/

main()
{
  char parola[50];
  int l;

  printf("Calcola lunghezza di una parola \n");
  printf("Introdurre parola ");
  gets(parola);
  l=strlen(parola);	/*2*/
  
  printf("Introdotta parola di %d caratteri \n",l);
}

Il programma in linguaggio C, riportato come esempio, calcola e visualizza la lunghezza di una parola introdotta da input. Per il calcolo della quantità di caratteri viene utilizzata una funzione (2) contenuta nel modulo string di cui si include l'interfaccia, per l'utilizzo delle funzioni contenute nella libreria, nella 1. In questo modo si aggiungono al C le funzioni per il trattamento di stringhe. Aggiungendo moduli diversi si specializza il linguaggio. Si potrebbero così avere moduli per la gestione della grafica, dei database e così via.

Il linguaggio C viene creato nel 1979 da Kernighan e Ritchie. Pensato per scrivere sistemi operativi e software di sistema, si tratta di un linguaggio ad alto livello e, tuttavia, comprende caratteristiche del linguaggio Assembly che lo fanno apprezzare per la sua efficienza e lo fanno definire come linguaggio di medio livello.



Avanti - Indietro - Inizio

http://ennebi.solira.org
ennebi@solira.org