Come sviluppare un programma informatico

I passi fondamentali per imparare a programmare e sviluppare un programma informatico sono i seguenti:

L'analisi del problema

C'è un problema da risolvere.

Soltanto i problemi per cui è possibile una formalizzazione matematica possono essere risolti con la programmazione informatica.
l'analisi del problema

Nell'analisi del problema prendo in considerazione:

  • l'obiettivo
  • i dati disponibili

Nota. Un problema è risolvibile con un programma informatico soltanto se può essere espresso in forma logica-matematica.

La divisione del problema in sottoproblemi

E' utile suddividere il problema in una sequenza di sottoproblemi più piccoli.

La soluzione di tutti i sottoproblemi implica anche la soluzione del problema.

la divisione del problema in sottoproblemi

Perché è utile?

E' più facile risolvere un problema piccolo alla volta.

Per ciascun problema creo un algoritmo, dove indico le sequenze di operazioni e azioni da compiere per risolverlo.

L'algoritmo

Sviluppo un algoritmo per risolvere il problema, considerando i dati disponibili.

Cos'è un algoritmo? Un algoritmo è una procedura logico-matematica risolutiva, deterministica e non ambigua.

Può trattarsi di un diagramma di flusso o di una procedura scritta in linguaggio naturale.
un esempio di algoritmo

  • Dati in input. Sono i dati in ingresso di un algoritmo. Possono essere digitati dall'utente con la tastiera oppure letti da un file o ricevuti telematicamente via modem. Ad esempio, nell'algoritmo precedente le variabili A e B sono dati di input.
  • Dati di elaborazione. Sono i dati temporanei creati durante l'esecuzione del programma. Non sono dati né di input, né di output. Ad esempio, nell'algoritmo precedente la variabile somma è un dato temporaneo.
  • Dati in output. Sono i dati in uscita di un algoritmo, ossia il risultato dell'operazione. Possono essere stampati a video, su una stampante oppure salvati su un file o trasmessi via modem. Ad esempio, nell'algoritmo precedente la stampa della variabile Media è il dato di output.

Una volta individuato l'algoritmo, lo trasformo in pseudocodice.

Lo pseudocodice

Uno pseudocodice è un linguaggio non informatico a metà tra il linguaggio di programmazione e il linguaggio naturale.

Esempio

1] Input A
2] Input B
3] Somma = A+B
4] Quoziente = Somma per 2
5] Visualizza Quoziente sullo schermo

A cosa serve lo pseudocodice?

E' utile come schema sintetico di riferimento durante lo sviluppo del programma informatico ( development ).

Essendo scritto in linguaggio naturale, almeno in parte, è più agevole da comprendere.

L'implementazione

Il passo successivo è lo sviluppo del programma informatico.

In base al problema scelgo il linguaggio di programmazione più idoneo ( es. linguaggio C, Python, Visual Basic, Php, ecc. ).

Poi trasformo lo pseudocodice in un codice sorgente, rispettando le regole di sintassi del linguaggio.

un esempio di implementazione

Una volta scritto il codice sorgente, lo compilo per trasformarlo in un file eseguibile dal computer ( es. file .exe su Windows ).

esempio di compilazione del sorgente in oggetto

Nota. La compilazione del codice sorgente è necessaria soltanto sui linguaggi compilati ( es. il linguaggio C ). Nel caso dei linguaggi interpretati ( es. python, php, ecc. ) il codice sorgente è eseguito dal computer senza compilazione, tramite un apposito software interprete installato sulla macchina.

L'esecuzione, la verifica e il test

Dopo l'implementazione eseguo il programma sul computer con un'istanza.

Cos'è l'istanza? Un'istanza di un problema è un insieme di dati in input che soddisfano i vincoli imposti dalla definizione del problema. Ad esempio, i dati in input A=6 e B=3 sono un'istanza. I dati A=10 e B=5 sono un'altra istanza. E così via.
un esempio pratico di istanza
Per risolvere un problema è utile testare diversi algoritmi usando le stesse istanze. Se l'algoritmo risponde in modo corretto a ogni istanza, risolve il problema computazionale e si dice algoritmo corretto. In ogni caso la scelta dell'algoritmo più appropriato dipende da molti fattori, non solo dall'efficacia a risolvere il problema ma anche dall'architettura del calcolatore, dalla complessità spaziale (memoria) o temporale (tempo di esecuzione), ecc.

Questa fase è generalmente suddivisa in almeno due sottofasi:

  • Test. Verifico se il programma funziona ( alfa test, beta test ). Produco diverse istanze e verifico se il risultato del programma è corretto.
    • Alfa Test. Eseguo il programma appena creato e lo sottopongo a diverse istanze. Per ciascuna istanza in input verifico se il programma fornisce in output le soluzioni corrette. Lo eseguo in un ambiente operativo riservato ( es. offline, server di test, ecc. ) dove gli utenti finali non possono accedere. Se il programma supera l'alfa test passa in beta test.
    • Beta test. Pubblico il software in un ambiente operativo pubblico e lo rilascio per l'utilizzo a un gruppo di utenti ( group test ). Gli utenti usano il programma in beta version, consapevoli che il software è ancora imperfetto. Possono quindi verificarsi degli errori durante l'utilizzo.
      un esempio di beta test

      A cosa serve il beta test? Il beta test è molto utile nella fase di verifica, perché fa emergere errori di utilizzo altrimenti non facilmente individuabili dall'analista programmatore. Una volta corretti, il software può essere rilasciato in produzione.

  • Produzione. Se il programma supera la fase di beta test, lo installo sui computer server di produzione ( online ) per farlo usare a tutti gli utenti finali. A questo punto gli utenti possono eseguire il programma per risolvere il problema.
    un esempio di esecuzione del programma su un PC

Questi sono i passi principali per sviluppare un programma informatico.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base
  1. La programmazione
  2. Gli algoritmi
  3. Il linguaggio macchina
  4. Cos'è uno pseudocodice
  5. I programmi informatici
  6. Le variabili
  7. Gli array
  8. Le espressioni
  9. Le strutture di controllo
  10. Le routine
  11. Le funzioni