Libro 1 – Capitolo 7 – Lo sviluppo con i sotto programmi

Introduzione

La scrittura di programmi molto complessi non può essere realizzata con un solo programma ma deve necessariamente prevedere l’uso di sotto programmi. L’argomento dei sotto programmi è molto complesso perché prevede l’uso di un paradigma di programmazione che non deve più riguardare il problema specifico che si sta risolvendo ma una classi di problemi più generici.
L’obiettivo dei sotto programmi in generale ha come vantaggio il riuso del codice e la portabilità del codice in altri programmi ove siano previste le medesime funzionalità.
Per raggiungere tale scopo i sotto programmi devono essere scritti in modo generico come si dice in gergo in “forma parametrica” ovvero con dati che sono completamente separati dal problema. All’occorrenza quando nello specifico problema occorre seguire quel particolare sotto programma i dati generici utilizzati nel sotto programma detti “parametri formali” saranno sostituiti dai dati reali “parametri attuali”.

Argomenti

Definizione di sotto programma

Un sotto programma è:
Un’unità logica indipendente composta di istruzioni, che assolve ad un compito specifico. Un sottoprogramma può essere pensato come un compito specifico o funzione specifico, nell’ambito di un programma con molteplici funzionalità o funzioni.
Il sotto programma risolve una funzionalità specifica di un problema composto da più attività o task da risolvere la cui soluzione come singolo programma non è vantaggiosa oltre che complessa.
I sotto programmi consentono se scritti in modo corretto il riciclo della medesima funzionalità in altri parti di programma o in programma diversi.
Immaginiamo ad esempio un programma in cui è richiesto fra le tante funzioni il calcolo della media di 10 numeri. Invece di scrivere il codice per il caso specifico ovvero “media di 10 numeri” conviene generalizzare per un numero qualsiasi di numeri e questo consente al sotto programma di essere riutilizzare tale funzionalità ogni volta che è richiesta la media dei numeri.

Metodologia Top – Down

Scrivere un programma utilizzando i sotto programmi significa dire che è stata adottata per la risoluzione del problema la metodologia top-down.
Tale metodologia prevede:
Scomposizione del problema in sotto problemi per:

  • Semplificazione programma. Suddividere un problema complesso in più sotto problemi permette di risolvere in autonomia ogni funzionalità del problema. Una volta risolti i sotto problemi che sono dei veri e propri algoritmi si assemblano i sotto problemi richiamandoli nell’algoritmo principale quando sono necessarie le particolari funzionalità dello specifico sotto problema o sotto algoritmo. Tale metodologia aumenta il livello di astrazione del codice e della soluzione algoritmica adottata.
  • Riuso di codice riprodurre senza ripetere il codice nello stesso programma. Tale caratteristica permette di richiamare quel particolare sotto programma ogni volta che è necessario nel programma senza dover riscrivere il codice.
  • Portabilità riuso stesso codice in altri programmi. Questa caratteristica forse è la meno evidente ma la più importante in quanto attraverso questa possibilità le stesse funzioni possono essere utilizzate in programmi diversi. Nel linguaggio C++ nel dichiarare #include <iostream> il programmatore sta indicando al compilatore che sono utilizzati dei sotto programmi presenti nella libreria esterna.

Link di affiliazione

Link di affiliazione

Link di affiliazione

Link di affiliazione

Link di affiliazione

Per gli ultimi due punti è necessario l’utilizzo di scomposizione in sottoprogrammi con parametri. La scrittura in forma parametrica è la più interessante., scrivere sotto programmi indipendenti dal contesto e anche dal tipo di dati (questo argomento è legato all’uso dei Template in C++) permette di avere uno sviluppo molto astratto e generico dei programmi.
Per risolvere un problema con tale metodologia è possibile creare un semplice diagramma dei sotto problemi da risolvere come ad esempio mostrato in figura.

Diagramma delle funzionalità nella programmazione secondo la metodologia top-down.

Chiamata a sotto programma

Avviene quando nel programma principale richiama una serie di istruzioni locate in altro punto della codifica per assolvere ad una funzione specifica del programma.
All’atto della chiamata possono essere scambiati fra programma principale e sottoprogramma valori o variabili.
La chiamata a sotto programma produce come effetto che l’esecuzione del programma passa ad un altro frammento di codice appunto il sotto programma. Quando l’esecuzione del sotto programma termina il controllo ritorna al programma principale. Durante la chiamata a sotto programma possono essere scambiati dati e aree di memoria fra il programma chiamante e il chiamato (il sotto programma).
Schematicamente la chiaamta può essere rappresentata come nell’immagine sotto stante.

Rappresentazione schematica di chiamata a sotto programma.

Tipi di chiamata a sotto programma

L’invocazione di un sotto programma è definita “chiamata” come citato sopra, tale invocazione può prevedere o meno il passaggio di valori o di indirizzi di memoria di variabili e strutture dati. Sono definite quindi due tipologie di chiamate:

Non parametriche ovvero non vi è scambio dati diretto fra programma chiamante e sottoprogramma ma solo dati in comune fra tutte le unità di programma
Parametriche sono passati dati in valore o per variabili dal programma chiamante al sottoprogramma.
La pratica migliore è quella di utilizzare quanto più è possibile le chiamate paraemtriche, questo implica che i sotto programmi sono scritti in modo generico indipendenti dai dati del particolare programma ove essi sono eventualmente richiamati.
Come passo iniziale è possibile dividere un programma in sotto programmi non parametrici per acquisire dimestichezza con la definizione e dichiarazione dei sotto programmi e con la metodologia top-down.

Tipologia di dati

  • Nella scrittura di sotto programmi sono definite varie entità di dati secondo questa classificazione che ha una valenza generale non è specifica solo del C++:
  • Variabili e costanti globali: Visibili nel programma e nei sottoprogrammi in  C++ si dichiarano dopo la direttiva #include.
  • Variabili locali: Visibili solo nei sottoprogrammi ove sono dichiarati in C++  si dichiarano all’interno delle funzioni.
  • Parametri formali variabili e costanti simboliche utilizzate nei sottoprogrammi per la scrittura di codice che sia indipendente dal programma principale contesto;
  • Parametri attuali valori o variabili e/o  costanti globali che si sostituiscono all’atto della chiamata nel sottoprogramma ove sono utilizzati;


Per continuare a leggere questo articolo devi sottoscrivere un abbonamento
Puoi abbonarti al link al menù principale o cliccando sul link Abbonati Ora!