Introduzione alla programmazione di Andrea Vallinotto
Il design
La prima fase riguarda il cosiddetto 'design', cioè la costruzione a tavolino
della struttura logica del programma. Ovviamente per casi semplici (stampa i
calendari) non ci sarà da pensare molto, ma più l'obbiettivo diventa grande (il
programma di grafica 3D), più la parte di schematizzazione iniziale diventa
fondamentale. Questa è una lezione che si impara anche con l'esperienza,
basta guardarsi un pò in giro per accorgersi che facendo un'errata analisi
iniziale poi i guai sono grossi e rimediarvi è molto costoso; il Millenium Bug
è solo uno degli esponenti della lunga schiera di questi errori, altri esempi
abbondano.
Nel desing è indispensabile fare la scelta degli strumenti di
sviluppo che si utilizzeranno, perchè questi condizionano profondamente la
struttura finale del programma. Ad esempio, se si vuole pilotare un Word
Processor perchè impagini in un certo modo il testo, bisogna innanzitutto
decidere quale Word Processor utilizzare, perchè le funzionalità di uno non sono
identiche a quelle di un altro.
Gli algoritmi
Complementare al design c'è la scelta degli "algoritmi".
Il termine ALGORITMO si narra derivi dal nome di un matematico Uzbeco
medioevale (non è uno scherzo) e sta ad indicare un metodo ben preciso di compiere un ben determinato
compito, suddividendolo in passi successivi.
Un esempio da "magia nera"
potrebbe essere il calcolo delle luci incidenti su una superficie (sempre il
programma di 3D); qualcosa di più comprensibile sono invece gli algoritmi di
ordinamento, che mettono in ordine (di solito alfabetico) un elenco di nomi.
Dal più comprensibile al più complesso, gli algoritmi si basano sull'esecuzione
successiva di diversi passi: pensiamo di dover ordinare dei nomi (ad esempio per
un'agenda telefonica). Abbiamo in partenza un insieme di nomi e vogliamo uscita
l'elenco ordinato; si può procedere in questo modo:
- prendi un nome dall'insieme non ordinato
- scorri l'elenco ordinato fino a trovare un nome che sta dopo quello in esame
- inserisci in quel posto il nuovo nome (quelli che stanno dopo scorrono)
- ritorna al primo punto finchè ci sono nomi non ordinati
A pensarci bene, quest'algoritmo è quello che usiamo tutti i giorni proprio per
ordinare degli elementi simili, siano essi le carte da gioco o dei conti che
ordiniamo per data; quest'algoritmo è tecnicamente chiamato "Insertion Sort."
Il concetto di algoritmo quindi, è conosciuto da tutti; ciò che fa la differenza
è la conoscenza o meno di algoritmi per fare uno specifico compito, ma questo
non deve venire considerato limitante: essere ignoranti non equivale ad essere
stupidi: l'ignoranza è curabile, la stupidità no. Ci sono interi libri dedicati
all'illustrazione degli algoritmi più usati.
I più studiati sono proprio quelli di ordinamento, seguiti a ruota dagli
algoritmi di ricerca; questi risolvono problematiche molto comuni: avendo un
grande elenco già ordinato, come fare a trovare tutti gli elementi che hanno una
certa caratteristica comune. Se ad esempio abbiamo un elenco di fatture,
possiamo voler sapere quali sono intestate ad una certa società.
Per tutto il seguito di quest'articolo, per meglio illustrare i vari aspetti
della programmazione, possiamo immaginare di aver a disposizione un piccolo
robot, chiamato Robert, che è in grado di fare solo compiti molto semplici.
Immaginiamo di volergli spiegare come andare a fare la spesa, visto che da buoni
programmatori siamo molto pigri.
Bene, abbiamo davanti a noi il buon Robert.
Oggi abbiamo bisogno di comprare un po' di pane e della verdura; sappiamo però
che Robert non capisce ordini molto complessi (tipo: "vai a prendermi del pane e
della verdura"): dobbiamo quindi spiegargli tutto per filo e per segno,
utilizzando le parole (più avanti chiamate istruzioni) che lui può comprendere.
Le azioni che Robert è capace di fare sono di semplice movimento e qualche
calcolo aritmetico. Inoltre sa osservare e prendere semplici decisioni in base a
dati in suo possesso.
Abbiamo così l'insieme di base delle istruzioni che caratterizzano Robert; con
quelle dovremo costruire tutto il resto.
Un primo schema del programma potrebbe essere:
- prendi i soldi (una certa somma)
- recati dal panettiere
- prendi il pane che ti ho chiesto
- dai i soldi corrispondenti al panettiere
- recati dal verduriere
- prendi le verdure che ti ho chiesto
- paga il verduriere
- torna a casa
Questo però non è scritto in istruzioni-Robert, ma in semplice italiano.
|
|
|