Fondamenti di programmazione informatica

Quando si parla, in informatica, di fondamenti di programmazione si fa riferimento alle conoscenze basilari che dovrebbero essere possedute da un programmatore per qualsiasi tipo di linguaggio di programmazione.

Un normale elaboratore testi è sufficiente per scrivere righe di codice, ma in alternativa si può optare per un editor, un programma ad hoc che in molti casi fa parte di un ambiente di sviluppo integrato: questo programma, per altro, permette di individuare gli errori di sintassi e altri errori, rilevandoli in modo automatico.

Lo sviluppo di un programma prevede l’applicazione di fasi specifiche e, soprattutto, la progettazione di un algoritmo. Le istruzioni devono essere il più possibile precise e chiare, ma soprattutto non ambigue, in modo tale che possano essere interpretate in maniera univoca. Fondamentale è la codifica del programma, con la scelta del paradigma di programmazione da cui dipende il linguaggio di programmazione relativo. Queste sono le basi dei fondamenti di programmazione.

Secondo il Teorema di Bohm-Jacopini, un teorema dell’informatica teorica, per codificare l’algoritmo nel codice sorgente di un linguaggio specifico c’è bisogno solo di tre strutture di controllo del flusso di esecuzione, vale a dire sequenza di istruzioni, selezione e iterazione. Servono, ovviamente, anche le strutture dati, le variabili, i parametri, le costanti, le funzioni, i puntatori, gli operatori logici e gli operatori aritmetici.

Sono numerose le tecniche di programmazione che possono essere impiegate: una delle più usate è la cosiddetta programmazione non strutturata, in virtù della quale il programma si basa su un main, cioè un blocco di istruzioni unico (le istruzioni sono eseguite in modo sequenziale). Vi è, poi, la programmazione procedurale, che invece prevede la presenza di blocchi di istruzioni che agiscono come sottoprogrammi, ognuno dei quali dedicato a funzioni specifiche.

Con la programmazione orientata agli oggetti, invece, si procede alla creazione di oggetti, in grado di interagire tra loro o di funzionare in modo autonomo: tutti gli oggetti, infatti, hanno delle funzioni precise e delle proprietà specifiche. Infine, vale la pena di menzionare la programmazione modulare, che permette di sfruttare le procedure offerte da altri programmi e, viceversa, consente ad altri programmi di sfruttare le sue.

Nell’ambito della conoscenza dei fondamenti di programmazione è opportuno saper padroneggiare anche diramazioni e cicli, che sono strumenti grazie ai quali i programmi possono assumere una struttura più complessa. Le prime fanno in modo che il codice abbia delle funzioni in grado di modificare lo svolgimento dell’algoritmo in base al risultato della condizione, mentre le secondo sono delle sequenze di istruzioni che vengono iterate, cioè ripetute, fino a che una specifica condizione non viene soddisfatta.

In genere l’operazione di codifica può presentare errori di natura sintattica o logica. Proprio perché i bug sono frequenti, è necessario che il programma venga analizzato per individuarli.

Ecco che, quando il programma è completato, bisogna effettuare la verifica del risultato: si parla di debugging proprio per indicare la fase di verifica, nel corso della quale vengono ricercati e corretti eventuali errori. Si tratta di un passaggio molto delicato, anche perché dalla correzione di un bug potrebbe derivare la comparsa di un altro bug. Se si ha a che fare con un programma molto articolato e complesso, che renderebbe il debugging difficile e lungo, si può pensare di realizzare un prototipo che garantisca una velocità di correzione migliore poiché privo di alcune delle funzioni che fanno parte del progetto originale.

Condividi