Lezione 1 - 04/03/2026: tipi di programmazione e variabili
Esistono due tipi di programmazione: strutturata e orientata ad oggetti. La differenza fondamentale tra la programmazione strutturata e quella orientata agli oggetti (OOP) risiede nel modo in cui il programmatore organizza la logica e i dati per risolvere un problema. In sintesi: la programmazione strutturata si concentra sulle funzioni (cosa deve fare il programma), mentre la OOP si concentra sui dati (quali entità compongono il sistema).
Affinché un linguaggio di programmazione possa essere definito veramente "Orientato agli Oggetti" (OOP), deve supportare nativamente alcuni concetti fondamentali; innanzitutto: la classe è il "progetto" o il modello astratto; definisce quali dati conterrà e quali azioni potrà compiere un elemento, ma non è l'elemento reale in sé (immagina il progetto su carta di un'automobile). L’oggetto è l'istanza concreta creata a partire dalla classe; esiste nella memoria del computer, occupa spazio e possiede valori specifici.
Concetti fondamentali della OOP
In particolare:
- Incapsulamento
È la capacità di racchiudere insieme i dati (variabili o attributi) e i metodi (funzioni) che li manipolano all'interno di una singola unità logica (l'oggetto). - Ereditarietà
È il meccanismo che permette a una nuova classe (chiamata classe figlia o sottoclasse) di acquisire automaticamente tutte le proprietà e i comportamenti di una classe esistente (chiamata classe madre o superclasse). - Polimorfismo
Dal greco "molte forme", è la capacità di oggetti di classi diverse di rispondere in modo specifico e personalizzato allo stesso comando o metodo.
Tipi fondamentali di dati
In linguaggi come C e C++, esistono quattro tipi fondamentali di dati: carattere, interi, float e double.
Il tipo più frequente è:
- Int
La variabile è dichiarata come intera: va da 0 a 9; in quasi tutti i linguaggi di programmazione si dichiarano intere le variabili di tipo indice. In un'area in memoria si salva e occupa 32 bit, pertanto, il compilatore va in memoria trova 4 byte adiacenti. La memoria è quella RAM (Random Access Memory), ciò implica che la posizione in memoria è casuale: non decido io dove deve essere memorizzata una variabile, essa viene memorizzata secondo alcune politiche di allocazione della memoria. Tuttavia, una volta che la dichiarazione ha avuto effetto, da quel momento in poi, so dove è stata memorizzata la variabile.
L’indirizzo di memoria della variabile i è 4, anche se è contenuta alla variabile 4, 5, 6 e 7; questo perché un int è vincolato ad essere di 4 byte. La dichiarazione della variabile i di tipo intero comporta che il compilatore vada in area di memoria, trovi 4 byte adiacenti in memoria, e decida che da quel momento in poi, quei 4 byte siano referenziabili con il nome i.
Si utilizza la logica in complemento a 2: ci dice come decodifica il compilatore. Su 32 bit si può rappresentare un range di valori, che possono essere positivi o negativi; è possibile codificare tutti i numeri che vanno da -231 alla (231)-1. Da -231 alla (231)-1 ci sono 232 numeri diversi? Sì, perché c’è lo zero di mezzo.
int i; è una dichiarazione. i=5; è un’assegnazione.
i=i+1; è un’assegnazione, trasforma una sequenza di 32 bit (i=5) in un’altra sempre di 32 bit.
- Char
È una variabile di tipo carattere. È possibile codificare una variabile di tipo carattere (con segno!) con un range che va da -27 alla (27)-1 (pertanto da -128 a 127).
- unsigned char p; è una dichiarazione, doppiamente specificata. Se non ci fosse la prima parte, è come se fosse sottinteso signed (è pleonastico, inutile), quindi col segno; automaticamente deduciamo di dover codificare qualcosa con un’escursione, che è appunto il segno, che può essere
-
Appunti lezione 3 Sistemi per la riabilitazione e la terapia assistita
-
Appunti lezione 2 Sistemi per la riabilitazione e la terapia assistita
-
Lezione 4 Sistemi per la riabilitazione e la terapia assistita
-
Lezione 6 Sistemi per la riabilitazione e la terapia assistita