[an error occurred while processing this directive]
diff logo Informatica e sistemi alternativi
su questo sito sul Web
    Home   Chi siamo    Contattaci    Scrivi per diff    Proponi un argomento 26/03/19
    Cos'è diff    Come accedere    F.A.Q.    Promuovi    Dicono di diff    Amici di diff    
AmigaOS
Linux
FreeBSD
BeOS
OpenSource
Java
Database
Informatica
Hardware
E-Commerce
Narrativa

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:

  1. prendi i soldi (una certa somma)
  2. recati dal panettiere
  3. prendi il pane che ti ho chiesto
  4. dai i soldi corrispondenti al panettiere
  5. recati dal verduriere
  6. prendi le verdure che ti ho chiesto
  7. paga il verduriere
  8. torna a casa
Questo però non è scritto in istruzioni-Robert, ma in semplice italiano.
INFORMATICA


Andrea Vallinotto
Studente di Informatica all'Universtità degli Studi di Torino.
Utente e sviluppatore Amiga, programma, quando ha tempo, in C e ARexx.
Collabora come free-lance (senza sapere dove poi atterra) alla rivista francese AmigaNews.
Altri hobby: subacquea e viaggi.

Puoi contattare l'autore scrivendo a:
avallino@diff.org


Articoli dello stesso autore:
Annuncio AmigaOS 5 (DevCon '98)
Reportage dalla fiera di Colonia '98
Clickboom
Signorina, mi scusi lo SCSI
Introduzione alla programmazione
AmigaOS 3.5 è realtà
Utility ed inutilities per la rete e per Internet
I Love You: cronache del dopobomba
I Love You ed i sistemi nostrani


 


Indice articolo:


© 1999,2000,2001,2002 NonSoLoSoft di Ferruccio Zamuner (Italia)- tutti i diritti sono riservati