Ricordate nei primi post, quando abbiamo parlato dei vari paradigmi di programmazione, e delle parti che compongono un programma?
Abbiamo detto che un programma è diviso in dati e algoritmi.
Ad esempio in un programma che somma due numeri, i dati sono i numeri da sommare ed il risultato della somma, mentre l'algoritmo è la parte di codice che esegue la somma.
Oppure, per riprendere l'esempio del nostro videogioco, i dati sono i nostri nemici, i tesori da recuperare, i proiettili delle armi; mentre gli algoritmi sono i blocchi di codice che gestiscono il comportamento e le interazioni fra i dati.
Così ci sarà l'algoritmo che gestisce il movimento dei nemici, quello che gestisce la vita del nostro personaggio, quello che gestisce l'impatto fra i vari oggetti e così via.
Per gestire dati e algoritmi, un linguaggio di programmazione fornisce vari strumenti.
Ad esempio per gestire i dati fornisce variabili, array e puntatori.
Per ora ci siamo occupati solo di questo, abbiamo imparato ad utilizzare le variabili ed i tipi di base forniti dal linguaggio C++ (int, float, char, bool ecc..).
Abbiamo imparato ad utilizzare gli array per dichiarare una serie di elementi dello stesso tipo.
Con le strutture abbiamo imparato a creare dei nuovi tipi composti.
Abbiamo imparato come funziona la gestione della memoria, cosa sono gli indirizzi di memoria e come funzionano i puntatori.
Infine abbiamo imparato come allocare dinamicamente la memoria e come gestirla tramite i puntatori.
Tutto questo ha a che fare con i dati, la loro gestione, il loro salvataggio in memoria.
All'inizio abbiamo detto che il C++ è un linguaggio procedurale e strutturato, e fornisce cioè la possibilità di creare delle procedure, chiamate funzioni, e di utilizzare delle strutture di controllo (da non confondere con le strutture struct), di cui parleremo in questa sezione.
Le strutture di controllo si dividono in tre tipi: di sequenza, di iterazione e di alternativa.
Le strutture di controllo di sequenza sono ereditate dal linguaggio macchina e dai linguaggi imperativi, ed il loro utilizzo è sconsigliato in quanto risulta nel cosiddetto spaghetti code, e cioè in un codice ingarbugliato come gli spaghetti, e quindi difficile da leggere e da capire.
Nel C++ il controllo di sequenza avviene tramite l'istruzione goto che rende possibile saltare da un pezzo all'altro del codice in base a delle condizioni.
In pseudocodice può essere descritta come segue:
SE Si verifica CONDIZIONE 1
GOTO (VAI A) ETICHETTA1
ALTRIMENTI
GOTO ETICHETTA2
ETICHETTA1: (...codice...)
ETICHETTA2: (...codice...)
Tuttavia è davvero difficile che venga utilizzata, tranne in rari casi a scopi di debug.
Perciò noi ci concentreremo sugli altri due costrutti, le istruzioni di controllo di iterazione, e le istruzioni di controllo di alternativa.
Nessun commento:
Posta un commento