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!
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.
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 di35
- 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
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.