Come abbiamo accennato con il primo articolo di questo sito, “Da dove cominciare?“, è importante per chiunque voglia avvicinarsi al mondo della programmazione innanzitutto capire quali sono le diverse tecniche di programmazione, o se vogliamo i diversi paradigmi di programmazione. In parole povere i diversi stili di programmazione con cui i programmatori concepiscono e percepiscono un programma.
Di queste tecniche ne esistono diverse, ma concentreremo la nostra attenzione solo su tre di queste:
- Programmazione non strutturata
- Programmazione strutturata (procedurale)
- Programmazione orientata agli oggetti
PROGRAMMAZIONE NON STRUTTURATA
Questo paradigma di programmazione, in pratica il primo, concepiva un programma come un unico blocco di codice, detto “main”, dove era possibile saltare da un punto ad un altro del programma tramite la famosissima istruzione “GOTO”. Non esistevano porzioni di codice riutilizzabili e quell’unico blocco di codice doveva essere completo di tutto. Questo portava alla creazione di codice spesso troppo lungo, incomprensibile e difficile da mantenere. Altro aspetto negativo è che questo tipo di tecnica portava spesso ad uno spreco di risorse hardware che come conseguenza diventava uno spreco inutile di denaro.
Il Basic (non strutturato) è forse il più famoso esempio di linguaggio di programmazione non strutturata. Ecco una porzione di codice:
10 INPUT “What is your name: “, U$
20 PRINT “Hello “; U$
30 INPUT “How many stars do you want: “, N
40 S$ = “”
50 FOR I = 1 TO N
60 S$ = S$ + “*”
70 NEXT I
80 PRINT S$
90 INPUT “Do you want more stars? “, A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = “Y” OR A$ = “y” THEN GOTO 30
130 PRINT “Goodbye “; U$
140 END
Come potete vedere da questo esempio, ogni riga inizia con un numero che identifica ogni istruzione del programma. In questo tipo di software vengono eseguite tutte le istruzioni in sequenza, una dopo l’altra, fino al raggiungimento dell’istruzione GOTO che rimanda istantaneamente l’esecuzione ad un altro punto indicato dall’indice numerico. E’ facile intuire come sia facile che un programma diventi sempre meno leggibile man mano che questo cresce di funzionalità, fino a diventare completamente ingestibile.
Per questa ragione sono nate successivamente altre tecniche di programmazione strutturate.
PROGRAMMAZIONE STRUTTURATA (PROCEDURALE)
Questa tecnica di programmazione introduce un nuovo concetto molto importante, ovvero la divisione e riusabilità del codice. Il programma non è più quindi tutto in un unico blocco di codice ma diviso in più parti, chiamate procedure o funzioni, in base al linguaggio, ben distinte e riutilizzabili. Sparisce inoltre l’uso dell’istruzione GOTO. Si capisce facilmente come il programma in questo modo risulti più semplice da progettare, gestire e mantenere, infatti se una funzione o procedura che sia, funziona correttamente, questa si comporterà allo stesso modo in ogni punto in cui viene chiamata. Linguaggi strutturati sono ad esempio il C, come anche il Visual Basic e molti altri.
Di seguito uno spezzone di un programma in C che calcola il quadrato di un numero tramite una funzione:
#include < stdio.h >
/* Questo è il prototipo della funzione, ovvero una dichiarazione */
int square(int x);/* Codice del programma */
int main() {
printf (“Quadrato di 4: %d\n”,square(4));
return 0;
}/* Questa è la nostra funzione utilizzata nel programma principale */
int square(int x) {
return x*x;
}
Senza entrare nel dettaglio di ogni istruzione, potete notare come anche in questo caso il programma principale sia all’interno di un “main” (una funziona particolare) e che le funzioni siano una porzioni di codice riutilizzabile e separato dal corpo del programma stesso. Le varie funzioni possono inoltre essere salvate in file esterni, poi inclusi in quello principale grazie ad alcuni semplici comandi.
Nonostante i grossi vantaggi portati con questa tecnica di programmazione, utilizzata per molti anni e usata ancora oggi in molti campi, sono diversi gli aspetti negativi che si incontrano nella stesura di programmi di enormi dimensioni e che coinvolgono grandi team di sviluppo. Per questo nasce una nuova concezione, quella della programmazione orientata agli oggetti che illustrerò qui di seguito.
PROGRAMMAZIONE ORIENTATA AGLI OGGETTI
Ultimo paradigma di programmazione che illustreremo è quello della Programmazione Orientata agli Oggetti, anche conosciuto come OOP (Object Oriented Programming). Questo è il metodo che più fa avvicinare la programmazione alla realtà in cui viviamo. Tutto si basa sugli oggetti, componenti completi che comprendono dati, metodi e procedure i quali comunicano e condividono informazioni tra loro. Iniziamo a capire cos’è un oggetto con un esempio pratico.
Immaginate un’automobile. Ebbene l’automobile è un oggetto che ha delle sue proprietà (tipo il colore, la cilindrata o la potenza) e delle azioni che puo’ compiere, (come andare avanti, girare, fermarsi, accendersi o spegnersi). Non è importante conoscere tutti i meccanismi interni ad un’automobile per poterne scegliere una e utilizzarla, ma basta conoscere le sue caratteristiche e le azioni che puo’ compiere. Nella programmazione ad oggetti, le caratteristiche di un oggetto vengono denominate proprietà e le azioni sono dette metodi.
Immaginate la potenza che possono avere quindi questi oggetti se combinati secondo particolari schemi tipici della programmaizone OOP (incapsulamento, polimorfismo, ereditarietà).
Torniamo alla macchina e prediamo in esame il cambio. Anche questo puo’ essere considerato un oggetto in tutto e per tutto, con le sue proprietà e i suoi metodi. Esistono diversi tipi di cambio, manuale, sequenziale, automatico ma fanno tutti parte della stessa categoria, sono lo stesso oggetto, differenziano l’uno dall’altro solo per le alcune proprietà ed azioni che li contraddistinguono. Inoltre avrete notato come un oggetto puo’ essere combinato con un altro senza alterare le caratteristiche dei due presi singolarmente. Le possibilità e la potenza di questo nuovo schema di programmazione sono praticamente infinite. Linguaggi come il C++, Java, ma soprattutto Objective-C che andremo ad approfondire durante questo corso sono basati su questo paradigma.
Non posterò, in quanto al momento non sarebbe di facile comprensione, un esempio di codice OOP, semplicemente consiglio un eventuale approfondimento tramite questa ottima guida pubblicata da Html.it.











No Responses to “L#003 – Tecniche di programmazione”