INNOVATORE

Programmazione


Il programma

Un programma è una serie ordinata di istruzioni il cui significato deve essere chiaro sia a chi le prepara, sia a chi le riceve. Nella vita comune si hanno molti esempi di programmi: una ricetta di cucina è un programma, le istruzioni per far funzionare un qualsiasi apparecchio sono un programma, la lavatrice funziona seguendo un programma. Nel caso dei calcolatori, chi riceve le istruzioni è una macchina predisposta a fare solo una serie ben definita di operazioni, solo che si ha la libertà di impartire al calcolatore infinite sequenze delle istruzioni che esso può eseguire, combinandole in modi diversi, da questo dipende la grande versatilità di queste macchine.

Strutture basi della programmazione

Durante lo studio di una qualsiasi procedura risolutiva si vede che emergono tre possibili situazioni logiche:

  • a) sequenza
  • b) diramazione
  • c) iterazione

Nella situazione logica SEQUENZA dopo l'operazione A esegue l'operazione B.
Nella situazione logica DIRAMAZIONE se la condizione P è vera allora esegue l'operazione A, altrimenti (condizione P falsa) esegue l'operazione B . Nella situazione logica ITERAZIONE esegue l'operazione A fino a quando la condizione P rimane vera.
Si può riuscire a schematizzare ogni procedura operativa in una combinazione delle tre situazioni logiche sopra descritte.
Queste 3 situazioni possono essere considerate le strutture base della programmazione. Esse hanno una caratteristica comune: un solo punto di entrata ed un solo punto di uscita.

La pratica della programmazione

Una antico proverbio cinese dice:
Ascolto e dimentico
Vedo e ricordo
Faccio e capisco
La programmazione è una disciplina che deve essere studiata, ma che soprattutto deve essere praticata. Si faranno molti errori, e più il programma sarà complesso più sarà difficile trovare i "bug" ma è proprio facendo errori che si impara.

Memorizzazione dei dati

Una parte consistente della programmazione è rappresentata dall'organizzazione dei dati (numeri, parole o altro) che devono essere memorizzati e richiamati. Un metodo valido è quello di avere uno schema mentale che rappresenti delle "scatole", interne al computer, in cui i dati possono essere immagazzinati.
E' necessario che sappiate quali grandezze porre nelle scatole, in modo da potere scegliere dei nomi attinenti. Se desiderate memorizzare il numero 3, che rappresenta la lunghezza in metri di una stoffa, potete decidere di chiamare la scatola interna corrispondente lunghezzaStoffa. Ad una scatola viene assegnato il nome solo nel momento in cui ponete qualcosa al suo interno; in tal modo eseguite due operazioni contemporaneamente:

  • date un nome alla scatola
  • ponete all'interno un numero
Nell'esemio la riga sarà: lunghezzaStoffa = 3

Proviamo ora a calcolare il prezzo dell'intera stoffa considerando che un metro costa € 4.50, quindi il programma sarà:

lunghezzaStoffa = 3
prezzoAlMetro = 4.50
totaleCosto = lunghezzaStoffa * prezzoAlMetro
print (totaleCosto)

Abbiamo scritto il nostro primo programma, che utilizza la prima (e più semplice) situazione logica tra quelle descritte in precedenza: la SEQUENZA.

Linguaggi di programmazione

Un linguaggio di programmazione deve possedere le caratteristiche di base di tutti i linguaggi: deve avere strutture diversificate per poter rappresentare cose diverse, con delle apposite regole di costruzione, in più non deve permettere ambiguità od equivoci, come nel linguaggio umano.
In questo infatti ci sono spesso parole o costrutti che assumono significato diverso a seconda del contesto in cui sono inseriti. Per un linguaggio di programmazione il significato delle istruzioni che scriviamo deve essere univoco: ad una certa frase deve corrispondere per forza un'azione del computer.
Per la scrittura in senso stretto ci sono linguaggi che prevedono regole rigide (ad esempio le istruzioni debbono per forza partire da una certa colonna, deve esserci una sola istruzione per riga, ecc.) ed altri che invece prevedono un formato libero.
Ogni linguaggio ha un "set di caratteri", ossia un insieme di caratteri utilizzabili nella scrittura del programma: cifre da 0 a 9, caratteri alfabetici da A a Z (maiuscoli, minuscoli o tutti e due) e caratteri speciali ($, *, %, e...).

Il programma di cui sopra è scritto in LUA (linguaggio che useremo spesso in queste pagine per la sua semplicità), se avessimo voluto farlo in PHP avremmo scritto:

$lunghezzaStoffa = 3;
$prezzoAlMetro = 4.50;
$totaleCosto = $lunghezzaStoffa * $prezzoAlMetro;
print $totaleCosto;

Come potete notare PHP richiede necessariamente il segno del punto e virgola ad ogni fine istruzione e il segno del dollaro immediatamente prima di una variabile, d'ora in poi le "scatole" del computer le chiameremo con il suo nome corretto, variabili.

Variabili, costanti e array

Come abbiamo visto un programma è una successione ordinata di istruzioni che agiscono su un certo numero di grandezze il cui valore è noto al programma (dati) per ricavare i valori di altre grandezze (risultati) che il programmatore vuole conoscere. Le grandezze che possono essere elaborate da un programma si suddivono in costanti e variabili: sono costanti le grandezze non soggette a variare durante l'esecuzione, mentre si dicono variabili le grandezze che possono assumere valori diversi nel corso dell'esecuzione.
Un particolare tipo di variabili e di costanti è chiamato array (vettore, matrice). Un array è un insieme di variabili o costanti omogenee al quale si può fare riferimento con un nome simbolico unico.
Gli array possono avere più di una dimensione. Nel caso di array monodimensionale (vettore) la tabella creata in memoria si può immaginare come una semplice successione di caselle. Un array bidimensionale (matrice) si può considerare come una tabella avente le caselle ripartite su più righe e colonne; per specificare una determinata casella serviranno due indici, il primo per la riga, il secondo per la colonna.
Un array a tre dimensioni può pensarsi costituito da più matrici impaginate l'una dopo l'altra in modo da costruire tante pagine di un libro. Per individuare una casella serviranno in questo caso tre indici, uno per indicare la riga, uno per la colonna e uno per la pagina.
Esempio di vettore:
colori={"rosso","giallo","blu"}
print (colori[2])

Esempio di matrice:
caselle={ {"A1","B1","C1"},{"A2","B2","C2"} }
print (caselle[2][3])

Nel primo caso il programma stamperà giallo, ovvero il secondo elemento dell'array (in LUA, a differenza di altri linguaggi, l'indice degli array parte da uno e non da zero).
Nel secondo caso stamperà C2, ovvero il terzo elemento (o colonna) della seconda riga.

continua ...