Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Enumerazioni C


Enumerazioni Strutture Unioni

Enumerazioni in Linguaggio C

Le enumerazioni permettono di definire un nuovo tipo di dato con nomi simbolici associati a valori interi.


enum MesiAnno {
    GENNAIO = 1,
    FEBBRAIO,
    MARZO,
    APRILE,
    MAGGIO,
    GIUGNO,
    LUGLIO,
    AGOSTO,
    SETTEMBRE,
    OTTOBRE,
    NOVEMBRE,
    DICEMBRE
};

enum MesiAnno meseCorrente = GIUGNO;


In questo esempio, `MesiAnno` è l'identificativo della enumerazione, e i valori assegnati iniziano da 1. `meseCorrente` è una variabile di tipo `MesiAnno` con il valore corrispondente a GIUGNO.

Strutture in Linguaggio C

Le strutture consentono di creare un tipo di dato che raggruppa diversi tipi di dati sotto un unico nome. Ecco un esempio:

struct Punto {
    int x;
    int y;
};

struct Punto puntoA = {3, 7}; // Inizializzazione diretta

// Metodo designation
struct Punto puntoB = {
    .x = 5,
    .y = 10
};

Qui, `Punto` è l'identificativo della struttura, e `puntoA` e `puntoB` sono variabili di tipo `struct Punto` inizializzate in modo diverso.

Uso di Strutture con Array e Strutture Nidificate

Puoi utilizzare strutture con array o definire strutture nidificate. Esempi:


struct Rettangolo {
    struct Punto verticeSuperioreSinistro;
    struct Punto verticeInferioreDestro;
};

struct Rettangolo arrayRettangoli[3]; // Array di strutture

// Accesso ai membri di strutture nidificate
arrayRettangoli[0].verticeSuperioreSinistro.x = 2;
arrayRettangoli[0].verticeSuperioreSinistro.y = 5;


Qui, abbiamo una struttura `Rettangolo` che contiene due membri di tipo `struct Punto`. L'array `arrayRettangoli` è un array di queste strutture.

Unioni in Linguaggio C


Le unioni consentono di memorizzare diversi tipi di dati nello stesso spazio di memoria. Esempio:

union Dato {
    int intero;
    float decimale;
    char carattere;
};

union Dato valore;
valore.intero = 42;

// Puoi accedere allo stesso spazio di memoria come float o char
printf("%f\n", valore.decimale);
printf("%c\n", valore.carattere);

Le unioni sono utili quando si desidera risparmiare spazio di memoria, poiché occupano solo la quantità di memoria necessaria per il membro più grande.