Questo sito contribuisce alla audience di Il Messaggero
Salvatore Aranzulla Day
Evento di formazione SEO con Salvatore Aranzulla. Scopri il programma

Come creare un programma

di

È da qualche tempo che guardi affascinato il mondo dell’informatica e stai pensando seriamente di compiere un passo decisivo per quelle che sono le tue conoscenze: imparare a programmare. L’idea di costruire da solo un’applicazione che funzioni, per la sola soddisfazione di farlo o per intraprendere un progetto più grande, ormai ti affascina: il dado è tratto e la decisione è presa, tuttavia sei ancora un po’ titubante poiché non hai la più pallida idea di come creare un programma.

Forse non ci crederai, ma sei capitato nel posto giusto in un momento che non poteva essere migliore: di seguito, infatti, ti darò tutte le informazioni di cui necessiti per affacciarti al mondo della programmazione, capire come nasce un programma e, perché no, creare la tua prima applicazione da zero.

Prima di andare avanti, voglio però farti una premessa: il mondo della programmazione è a dir poco sconfinato, esistono migliaia di scenari e approcci differenti a esso e affrontarli tutti sarebbe pressoché impossibile. Tu, però, non scoraggiarti, perché in questa guida troverai tutto quanto è necessario sapere per muovere i primi passi: una volta terminata la lettura e assimilate le nozioni di base, saranno la fantasia e l’esperienza ad accompagnarti in questa avventura!

Indice

Cos’è un programma

Come creare un programma

Prima di entrare nel vivo della questione, voglio darti qualche informazione teorica che ti aiuterà a comprendere meglio i passaggi futuri di questa guida: all’atto pratico, un programma è un’entità informatica in grado elaborare dati e automatizzare delle operazioni. Ad esempio, esistono programmi in grado di elaborare testi (come Word), di eseguire calcoli (come la Calcolatrice di Windows), di permettere la navigazione su Internet (come i browser) e via discorrendo.

Un programma, a seconda del compito per cui viene progettato, può essere più o meno semplice: tanto per farti un esempio, anche i sistemi operativi, progettati per permettere all’utente di interagire con la “parte fisica” di un elaboratore tramite dei software dedicati, sono a loro volta dei programmi.

Il funzionamento di un programma è quasi sempre basato su un meccanismo ben preciso, che prende il nome di algoritmo: con quest’ultima definizione, si intendono i passi necessari che bisogna compiere per trasformare un dato o una serie di dati “in ingresso” in un dato o una serie di dati “in uscita”.

All’interno della programmazione, i succitati passi vengono espressi sotto forma di istruzioni, o statement, impartite tramite un linguaggio di programmazione: l’insieme completo delle istruzioni di un programma viene definito flusso di esecuzione, ed è ciò che si occupa di elaborare i dati in ingresso per trasformarli in ciò che si desidera ottenere.

Fasi di creazione di un programma

Ora che hai ben chiara la definizione di programma, è arrivato il momento di metterti al corrente di come quest’ultimo viene sviluppato nel tempo. Può sembrarti strano, ma anche un programma è dotato di un vero e proprio ciclo di vita, strutturato in almeno quattro fasi: progettazioneimplementazionetestingrilascio e e aggiornamento. Di seguito puoi trovare i dettagli di ciascuna fase di questo ciclo di vita.

Progettazione

La progettazione di un programma è la prima fase del suo ciclo di vita, nonché la più importante: è qui che vengono definiti gli obiettivi del programma, il tipo di dati che esso deve gestire e il modo in cui deve farlo. Se dovessi immaginare un programma come fosse una casa, la fase di progettazione è quella in cui l’architetto (o la squadra di architetti) ne disegna il progetto su carta, definendone forma, struttura e posizione.

La fase di progettazione, di solito, è quella gestita dagli ingegneri del team di sviluppo: tanto per farti qualche esempio, c’è chi si occupa di definire la tipologia di dati da elaborare, chi si occupa di sviluppare l’algoritmo con cui gestire i dati stessi, chi si occupa di studiare le condizioni critiche (cioè eventi che non dovrebbero verificarsi, ma che potrebbero farlo) e, perché no, anche chi si occupa di progettare l’aspetto grafico ideale del programma.

Tutte queste “idee”, al momento prettamente astratte, vengono di solito riportate su dei diagrammi o dei grafici sviluppati tramite degli standard convenzionali (ad esempio utilizzando il linguaggio UML) e devono essere approvati dalla figura dell’ingegnere capo. In questa fase, viene inoltre scelto il linguaggio di programmazione da utilizzare per sviluppare il software. Una volta ricevuta l’approvazione, tutto il materiale viene passato ai programmatori, che si occupano della fase di implementazione.

Implementazione

Creare un programma - Implementazione

La fase di implementazione è quella in cui, di fatto, il programma vero e proprio prende vita: in essa partecipano uno o più programmatori (in quest’ultimo caso, la squadra è coordinata da un programmatore capo), incaricati di scrivere in uno o più file l’insieme delle istruzioni che forma il flusso di esecuzione del programma.

Le istruzioni vengono scritte all’interno di uno o più file di testo semplice, se necessario racchiusi all’interno di un editor specifico o di un intero ambiente di sviluppo integrato (in gergo IDE): questi elementi forniscono al programmatore degli strumenti utili per semplificare il lavoro, ad esempio la possibilità di completare automaticamente le istruzioni, di suggerire delle variabili o, ancora, di definire pezzi di codice da richiamare con precise combinazioni da tastiera.

L’insieme dei file che contengono le istruzioni scritte in linguaggio di programmazione viene definito codice sorgente del programma. Nell’arco dell’implementazione, le parti “intermedie” del codice sorgente vengono compilate per essere “tradotte” in linguaggio macchina ed essere eseguite: in questo modo, il programmatore è in grado di testare la bontà del suo lavoro e di verificare che il programma si comporti correttamente.

Una volta completata la stesura dell’intero codice sorgente, esso viene compilato per essere eseguito tramite il sistema operativo, diventando così un programma vero e proprio (come quelli che sei abituato a usare sul tuo computer): completata la fase di implementazione, il risultato può subire un’ulteriore fase di testing o essere direttamente rilasciato al pubblico.

Testing

Come creare un programma - Testing

La fase di testing, per certi aspetti, può essere considerata la fase più “divertente” del ciclo di vita di un programma: in essa, infatti, le apposite figure del team (i cosiddetti tester) hanno il compito di provocare volontariamente dei malfunzionamenti o delle condizioni critiche non gestite all’interno del programma, così da poterne rivelare i bug (cioè gli errori di programmazione) e permettere agli sviluppatori di porvi rimedio.

Le categorie di test a cui è possibile sottoporre un programma sono davvero numerose e possono metterne alla prova diversi aspetti: anche se potrebbe sembrarti strano, la fase di testing è estremamente importante per la qualità di un programma, poiché è in questa che si evidenziano gli eventuali errori risultanti dalle fasi precedenti. Se sei interessato a saperne di più, ti rimando all’esaustiva voce su Wikipedia che tratta nel dettaglio questo argomento.

In alcuni casi, la software house può decidere di chiedere “aiuto” agli utenti finali a cui è dedicato il programma, rilasciandone una versione incompleta per fini di testing: in questo caso si parla di versione alphaversione beta del software. All’utente finale viene chiesto di provare il programma e segnalare eventuali problemi riscontrati alla casa produttrice: in gergo, questa procedura viene chiamata feedback.

Al termine della fase di test, possono succedere due cose: se il programma presenta problemi, questi vengono segnalati al team di sviluppo, che si occupa di risolverli modificando e aggiornando il codice sorgente. Se, invece, il programma non presenta problemi, esso ottiene l’OK per la fase di rilascio.

Rilascio/Aggiornamento

La fase di rilascio di un programma è quella in cui quest’ultimo viene distribuito al pubblico, in forma gratuita, oppure reso disponibile per l’acquisto, se il software è progettato per il funzionamento previa l’acquisto di una licenza.

Per esigenze di mercato, oppure per il semplice evolversi dei tempi, la software house può decidere di aggiungere nuove funzionalità al programma, di modificarne l’aspetto grafico o di cambiarne le dinamiche per intero o in parte: in questo caso, una nuova versione del programma viene passata al vaglio e ri-attraversa l’intera trafila del ciclo di vita.

Quando il codice sorgente aggiornato passa la fase di testing, esso viene reso pubblico o messo in commercio come aggiornamento del software originale.

Un programma termina il suo ciclo di vita quando l’azienda alle sue spalle smette definitivamente di aggiornarlo, abbandonandolo di fatto a sé stesso: una volta interrotto lo sviluppo, si dice che il programma non è più supportato (discontinued in inglese).

Linguaggi di programmazione

Come ti ho già accennato poc’anzi, il linguaggio di programmazione è l’insieme di regole sintattiche e logiche utilizzate per strutturare le istruzioni all’interno del codice sorgente di un programma.

L’utente finale del software, cioè chi lo utilizza tutti i giorni per la produzione, può non aver idea del linguaggio di programmazione utilizzato per sviluppare il software stesso, ma devi sapere che non tutti i linguaggi sono uguali: alcuni sono più adatti a costruire programmi che funzionano da linea di comando, altri sono migliori per la gestione delle interfacce grafiche, altri ancora sono dedicati esclusivamente all’elaborazione dei calcoli, alla progettazione dei giochi e altro ancora.

Ti fornisco, di seguito, un elenco (molto limitato, considerando che ne esistono a centinaia) dei più diffusi e conosciuti linguaggi di programmazione disponibili attualmente.

  • Java – è un linguaggio di programmazione a oggetti estremamente noto, che si presta a un grandissimo numero di utilizzi. La sua forza risiede proprio nella flessibilità: i programmi in Java possono essere eseguiti, semplicemente installando un software aggiuntivo (chiamato Java Runtime EnvironmentJRE), da qualsiasi sistema operativo desktop. Una cosa, inoltre, potrebbe sorprenderti: gran parte del sistema operativo Android è scritta in Java. Ti ho già parlato di come programmare in Java nella mia guida dedicata.
  • C – altro linguaggio estremamente conosciuto. Il C è un linguaggio di programmazione che risale al 1972, è di tipo procedurale ed è applicabile praticamente in qualsiasi tipo di scenario. Non è un linguaggio a oggetti (sebbene il suo successore, il C++, lo sia) e questo lo rende leggermente più ostico rispetto a Java, tuttavia questo aspetto lo rende adattabile a un immenso numero di applicazioni pratiche. Ti basti sapere che il kernel di Linux, così come quello di Android, sono scritti completamente in C.
  • C# – nonostante le similitudine sintattiche con C, esso è invece specifico per l’interfaccia grafica di Windows, i relativi programmi e gli applicativi basati sul framework .NET. Sebbene sia di proprietà di Microsoft, C# è diventato open source nello scorso 2014.
  • Visual Basic – si tratta di un altro linguaggio di programmazione di proprietà Microsoft, utilizzato per la creazione di software dotati di interfaccia grafica e dedicati ai sistemi operativi Windows. Ad oggi, Visual Basic è stato inglobato nel framework .NET.
  • Delphi – successore del Pascal, questo linguaggio di programmazione viene adottato principalmente per lo sviluppo di software gestionali dediti a gestire grossi volumi di dati, ma che non necessitano di interfacce grafiche complesse.
  • Objective C/Swift – si tratta dei linguaggi di programmazione con cui sono create le app per i sistemi operativi Apple macOSiOSwatchOStvOS.
  • R – è un linguaggio di programmazione utilizzato per elaborare dati complessi, principalmente di per il calcolo statistico o per le operazioni di computazione grafica.
  • MATLAB – altro linguaggio di programmazione dedicato al calcolo matematico, esso è largamente impiegato nella gestione di operazioni basate sulle matrici.
  • Assembly – è un linguaggio di programmazione di basso livello che si avvicina al vero e proprio codice macchina (quello che il processore è in grado di “capire”). Solitamente è impiegato per la progettazione di controller e driver di periferica.

Nella sezione seguente, ti insegnerò a progettare una semplice calcolatrice in linguaggio C, che potrai utilizzare dal Prompt dei comandi o dal Terminale di macOS/Linux.

Creare un programma

Come creare un programma

Se sei arrivato fin qui, vuol dire che hai appreso tutte le nozioni teoriche su quello che riguarda la programmazione e che, finalmente, sei pronto a metterti a lavoro. Chiaramente, in questa sezione, ti insegnerò a creare un programma molto semplice, non pensato per la distribuzione “globale”, e che dunque non necessita di superare tutte le fasi che ti ho spiegato in precedenza. Il tutto si limiterà a costruire un piccolo file di codice sorgente e compilarlo utilizzando il compilatore più adatto.

In poche parole, in questa fase imparerai a creare una semplice calcolatrice in C, che potrai usare a tuo piacimento tramite il Prompt dei comandi di Windows o il Terminale di macOS/Linux. Questi ultimi sistemi operativi sono già predisposti per la gestione dei file in C; per quel che riguarda Windows, invece, c’è bisogno di installare il componente Visual Studio Community.

Per procedere, collegati al sito Web dedicato, clicca sul pulsante Download gratuito collocato all’interno del riquadro Visual Studio Community. Apri successivamente il file scaricato (ad es. vs_Community.exe), pigia sul pulsante Continua, apponi il segno di spunta accanto alla voce Sviluppo di applicazioni desktop con C++ nella finestra che compare, poi nella casella Supporto C++/Cli collocata a destra e, infine, clicca sul pulsante Installa. A procedura completata, chiudi la finestra del file di setup.

Ora che hai tutti gli strumenti necessari, è arrivato il momento di sviluppare il codice sorgente del tuo programma seguendo le istruzioni più consone per il tuo sistema operativo. Tanto per iniziare, crea il file che conterrà il sorgente in uno dei modi seguenti.

  • Windows – avvia il Blocco note richiamandolo dalla cartella Accessori Windows residente nel menu Start (accessibile cliccando sul pulsante a forma di bandierina collocato nell’angolo in basso a destra dello schermo). Clicca quindi sul menu File che si trova in alto a sinistra, seleziona la voce Salva con nome… da quest’ultimo, scegli la voce Tutti i file dal menu a tendina Salva come, digita nella casella Nome file il nome calc.c e salva il file sul desktop di Windows, lasciando aperto il Blocco Note.
  • macOS – avvia il Terminale richiamandolo dal Launchpad (l’icona a forma di razzo collocata nel Dock), dopodiché digita il comando cd ~/Desktop seguito da Invio e, ancora, il comando touch calc.c, seguito sempre da Invio. Senza chiudere il Terminale, apri con un doppio clic il file così creato sulla Scrivania.
  • Linux – avvia il Terminale richiamandolo dalla Visuale attività o dal menu principale della tua distribuzione, digita il comando cd ~/Scrivania seguito da Invio e, ancora, il comando touch calc.c seguito dalla pressione del tasto Invio. Senza chiudere il Terminale, fai doppio clic sul file creato sulla Scrivania per aprirlo.

Una volta aperto l’editor di testi più consono al tuo sistema operativo (es. Blocco Note per Windows, XCode per macOS o Gedit per Linux), digita al suo interno il seguente codice (esattamente come riportato qui sotto). Ho deciso di includere nel sorgente una breve descrizione di ciascuno statement: le descrizioni non verranno lette dal compilatore, poiché sono precedute dai simboli // (in gergo, si tratta di commenti).

#include <stdio.h>
#include <stdlib.h> //comunica al compilatore le librerie da usare
int main(void){ //il metodo principale, la vera e propria calcolatrice
char scelta; int t1,t2; //dichiarazione delle variabili
printf("Inserisci il primo termine dell'operazione: ");
scanf("%d", &t1);
printf("Inserisci il secondo termine dell'operazione: ");
scanf("%d", &t2); 
printf("Quale operazione vuoi eseguire? Digita\n + per addizione\n - per sottrazione\n * per prodotto\n : per divisione\nOperazione: ");
scanf("%c",&scelta);
scelta = getchar(); //richieste e scansioni dei comandi da tastiera
switch(scelta){ //ciclo che si occupa di eseguire i calcoli veri e propri
case '+': t1 = t1 + t2;
 break;
case '-': t1 = t1 - t2;
 break;
case '*': t1 = t1 * t2;
 break;
case ':': t1 = t1 / t2;
 break;}
printf("Il risultato dell'operazione è: %d\n",t1); //il risultato viene mostrato a video
system("PAUSE"); //si attende la pressione di un tasto per la terminazione del programma
return(0); //il programma termina senza errori
}

Una volta incollato tutto il testo, salva il file creato in precedenza, dopodiché chiudi tranquillamente l’editor.

A questo punto, puoi procede con la compilazione del programma usando le istruzioni più adatte al tuo sistema operativo.

  • Windows – richiama il Prompt dei comandi per sviluppatori dalla cartella Visual Studio collocata nel menu Start. Al suo interno, digita in sequenza i comandi cd %USERPROFILE%\Desktop cl calc.c, entrambi seguiti dal pulsante Invio. Al termine di quest’operazione, puoi eseguire il programma semplicemente digitando il comando calc e pigiando Invio, oppure facendo doppio clic sul file calc.exe generato sul desktop.
  • macOS/Linux – dal Terminale precedentemente aperto, digita il comando gcc calc.c -o calcolatrice seguito da Invio, dopodiché avvia la tua calcolatrice impartendo il comando ./calcolatrice, sempre seguito dalla pressione del tasto Invio.

In questo capitolo del tutorial ti ho spiegato come creare un programma molto semplice e senza interfaccia grafica, tuttavia la potenza dei vari linguaggi di programmazione è a dir poco sconfinata e possono essere creati anche software completi di interfaccia grafica: tutto sta nell’abilità e nella fantasia di progettisti e programmatori.

Per approfondimenti

Approfondimenti su come creare un programma

Come hai potuto ben notare, creare un programma non è un’operazione infattibile, a patto però di conoscere almeno un linguaggio di programmazione: il codice sorgente della nostra calcolatrice è stato molto, molto semplice, ma sono sicuro che ti ha aiutato a capire a grandi linee come sono strutturate le istruzioni (statement) di un linguaggio di programmazione.

Aspetta, mi stai dicendo che la cosa ti affascina alquanto e che intendi proseguire i tuoi studi per diventare un programmatore? Perfetto! Sono ben felice di aiutarti, suggerendoti delle risorse disponibili su Internet che potranno esserti davvero molto, molto utili.

  • Come imparare Java – la mia guida dedicata ai passi fondamentali da compiere per imparare a programmare in Java.
  • Sezione guide di HTML.it – qui puoi trovare un gran numero di guide dedicate ai più celebri linguaggi di programmazione, tra cui C, C++, Objective-C, Java e molti altri.
  • Microsoft, Introduzione a Visual Basic – una guida introduttiva al linguaggio Visual Basic .NET e al framework Visual Studio.
  • Eclipse – una intera IDE in grado di gestire svariati linguaggi di programmazione, tra cui Java, C/C++ e altri, utilizzabile anche per le operazioni di testing e di sviluppo dei grafici UML.
  • Notepad++ – un editor minimale ma completo per la scrittura (e la formattazione) del codice sorgente su Windows. Supporta numerosi linguaggi di programmazione.
  • Programmi per programmare – la mia guida contenente una lista dettagliata di software utili per la programmazione in generale.