Sequenze e blocchi, la base di un programma software

Questo è il post #5 di 12 nella serie “Fondamenti di Programmazione 101

Quando si parla di programmazione, il concetto fondamentale più importante è quello della sequenza.

Inoltre useremo questo concetto per decidere quali passi un programma dovrà effettuare per completare il task richiesto.

Quando stiamo imparando come programmare, uno dei problemi che diverse persone riscontrano è quello di trasformare un idea in qualcosa di concreto.

L’importanza delle sequenze

Ma coso sono queste sequenze? Le usiamo ogni giorno, ovunque e perfino in cucina!

Analogia con un ricetta di cucina

Prendiamo per esempio una ricetta di cucina. Una ricetta è costituita da una serie di passi che vanno seguiti sequenzialmente per ottenere il risultato che ci eravamo prefissati.

Il prossimo concetto è molto importante e probabilmente uno dei più difficoltosi da imparare!

L’attività di scrivere software è basata sulla capacità di risolvere problemi, o comunemente chiamato problem-solving e l’arte di spezzare dei problemi in pezzi più piccoli.

Questo sarà fatto in iterazioni dove, all’inizio tu avrai una soluzione generica riguardo il problema che poi verrà spezzettata in parti più piccole fino a quando arriverai a un livello di complessità tale che sarai in grado di capire quali sono i passi necessari che devono essere eseguiti.

L’abilità_ essenziale_ necessaria è quella di avere un overview generale del problema che stai tentando di risolvere ed, allo stesso tempo, un attenzione particolare ai dettagli di uno o più sotto-problemi che devono essere risolti.

Questo significa che avrai bisogno di zoomare dentro e fuori sui dettagli e nel frattempo dovrai mantenere una vista sul problema nella sua interezza.

Le Dichiarazioni

In molti linguaggi, la sequenza di codice che noi scriviamo è costituita da quelle che sono chiamate delle dichiarazioni o comunemente conosciute come statements. Uno statement esprime delle azioni che devono essere eseguite ed è composto da diversi componenti interni.

ESPRESSIONI

Uno statement è costituito da espressioni ed espressioni sono a loro volta costituiti da parti più piccole.

20 + 15

La precedente espressione è costituita da 3 parti. Due costanti e un operando.

sum = 20 + 15

Questa invece, è costituita da 2 parti. Una somma e un assegnamento.

Inoltre, nella precedente espressione abbiamo la nostra espressione (20 + 15) e il risultato viene assegnato a sum che prende il nome di variabile.

In generale, possiamo pensare a una variabile come un contenitore nel quale salviamo delle informazioni.

Concetto di variabile come un contenitore

ORDINI DELLE OPERAZIONI

Nel precedente esempio, abbiamo la necessità di rispettare un ordine nelle operazioni quindi:

  • prima, dobbiamo calcolare la somma di 20 + 15 che ci darà un risultato di 35
  • successivamente, possiamo procedere con l’assegnamento del risultato (35) alla nostra variabile sum (sum = 35)

L’ordine delle operazioni è un aspetto molto importante che può pregiudicare un risultato corretto delle operazioni. Vediamo un esempio con delle operazioni aritmetiche.

Supponiamo di eseguire programmaticamente il seguente calcolo aritmetico:

result = 1 + 4 * 2 —> result = 9

ma se cambiamo l’ordine degli operatori abbiamo:

result = 1 * 4 + 2 —> result = 6

Da questo semplice esempio vediamo come l’ordine delle operazioni può completamente cambiare il risultato delle operazioni.

Dichiarazioni Composte

Una dichiarazione composta, o anche chiamata compound statement, è una dichiarazione che occupa diverse linee. Questi compound statements sono composti da una o più statement “normali” di una linea.

Separare le dichiarazioni

Un linguaggio di programmazione separerà le varie dichiarazioni, specificando dove una dichiarazione finisce.

Vari linguaggi di programmazione hanno diversi modi di specificare come una dichiarazione finisce, alcuni semplicemente andando a capo, altri usando un punto e virgola o un punto, ecc. Tutti questi sono modi per definire dove una dichiarazione finisce.

Quando si parla di compound statements, invece, quindi di dichiarazione che spaziano su più di una linea e che sono in qualche modo legati logicamente, abbiamo bisogno di un modo diverso per esprime questo.

Uno dei modi più utilizzati e condivisi da moltissimi linguaggi di programmazione (anche se non da tutti), è quello di racchiudere un compound statement all’interno di un blocco rappresentato da parentesi graffe aperte e chiuse ({ } )

Rendere il codice leggibile

É stato già messo in evidenza che la motivazione principale per avere linguaggi di alto livello è stata quella di fornire un modo più efficiente e “human-friendly” nello scrivere codice. Alla fine dei conti, noi programmatori, ci sforziamo o almeno dovremmo sforzarci di scrivere codice chiaro, elegante e ordinato tenendo sempre in mente che scriviamo codice per gli altri programmatori in quanto i computers sono in grado d’interpretare ed eseguire anche codice mal scritto basta che sia sintatticamente corretto.

L’INDENTAZIONE

Importanza dell’indentazione

L’indentazione è una tecnica che usiamo per visualizzare (visivamente) che certe linee di codice appartengono a un dato blocco. Questo, di solito, è fatto per compound statements.

Considerato che un compound statement può essere costituito da altri statements o altri compound statements, l’indentazione diventa essenziale per aiutare a “vedere” a quale blocco appartiene.

In molti linguaggi di programmazione, ma non in tutti, l’indentazione aiuta gli sviluppatori a comprendere in maniera visuale come il codice è logicamente strutturato, il compilatore o l’interprete li ignoreranno.

LINEE BIANCHE

Come in un libro, le linee bianche aiutano a separare i paragrafi…la stessa cosa accade nel codice. Allo stesso modo che con l’indentazione, le linee bianche aiutano gli sviluppatori and non i computers che le ignorano.

Il loro scopo principale è quello di migliorare la leggibilità del codice.

Commentare? Si o No?!

Alle volte può essere utile aggiungere dei commenti al nostro codice per chiarire certi aspetti del codice scritto.

Commenti sono una parte importante ma non dobbiamo abusarne.

LINEE DI COMMENTO

Una linea di commento ha dei simboli che indicano l’inizio del commento e continua per il resto della linea.

BLOCCHI DI COMMENTO

Blocchi di commento hanno un simbolo che indica l’inizio del commento ed un altro simbolo che ne indica la fine.

TAGS

Alle volte, un programmatore vuole marcare una sezione del codice usando un tag in modo che sia più facile trovare la sua location. I seguenti tags sono informali e ognuno dovrebbe utilizzare quelli che più gli si addicono ma alcuni sono veramente comunemente utilizzati:

  • BUG: un bug nel codice che deve essere fixato
  • FIXME: Sia un bug o qualcos’altro che deve essere corretto
  • HACK: Marca una sezione di codice che non è strutturata o scritta in maniera ottimale e dovrebbe essere riscritto
  • TODO: Questo tag marca una porzione di codice nel quale qualcosa dovrebbe essere inserito

Un altro vantaggio nell’usare tags è che diversi IDEs integrano funzioni che permettono di operare ricerche basate sul nome del tag.

COME USARE I COMMENTI

I commenti posso essere usati per vari scopi, vediamone alcuni:

  • Pianificare e Rivedere I commenti possono essere usati per pianificare la struttura del codice prima di
    scriverlo. Quando scriviamo una parte intricata di un applicazione, certe persone preferiscono scrivere una bozza
    della logica usando commenti prima di focalizzarsi sulla scrittura del codice reale.
  • Descrizione del codice Commenti spesso vengono utilizzati per scrivere un breve sommario riguardo l’intento di una data porzione di codice. Non si dovrebbero utilizzare i commenti per descrivere quello che può essere compreso dalla lettura del codice e se vi dovreste mai trovare in quella situazione, molto probabilmente
    questo significa che il codice è troppo, non scritto bene e probabilmente c’è margine di migliorando riscrivendo il codice nella sua interezza o in parte.
  • Descrizione di Algoritmi Alle volte dobbiamo implementare degli algoritmi molto complessi e dei commenti possono aiutare a capire il perché delle decisioni che sono state prese e le considerazioni fatte durante il processo di valutazione.

Controversie dei commenti

C’è una discussione, che probabilmente non finirà mai, riguardo il fatto di come e quando i commenti dovrebbero essere utilizzati. Alcune persone sostengono che il codice dovrebbe essere scritto con meno commenti possibile e
sostenendo questa idea con le argomentazioni che il codice dovrebbe essere scritto in una maniera auto-descrittiva.

La motivazione per questa posizione è che se uno conosce un linguaggio di programmazione allora si dovrebbe essere in grado di comprendere l’intento semplicemente leggendolo. Se non si riesce, molto probabilmente il codice dovrebbe essere riscritto.

Personalmente, io sono uno di quelli che condivide questa idea e che si dovrebbero scrivere meno commenti possibili ma non sono un sostenitore del non scriverne alcuno.