Scopriamo cos’è una struct e come utilizzarla per ottimizzare il nostro codice.
Proviamo a scrivere un programma che trova il punto medio di un segmento in un piano cartesiano.
#include <stdio.h>
int main(){
//PRIMO PUNTO
double x1 = 10;
double y1 = 10;
//SECONDO PUNTO
double x2 = 20;
double y2 = 5;
//PUNTO MEDIO
double xMedio = ( x1 + x2 ) / 2;
double yMedio = ( y1 + y2 ) / 2;
//OUTPUT
printf("Coordinate punto medio: X = %lf , Y = %lf ",xMedio,yMedio);
return 0;
}
Il programma che abbiamo scritto è perfettamente funzionante, infatti il risultato è:
Coordinate punto Medio: X = 15.00 , Y = 7.50
Esiste però un modo migliore per scrivere questo programma ed è il seguente.
#include <stdio.h>
//DEFINIZIONE STRUCT
struct punto {
double x;
double y;
};
int main(){
//PRIMO PUNTO
struct punto p1;
p1.x = 10;
p1.y = 10;
//SECONDO PUNTO
struct punto p2;
p2.x = 20;
p2.y = 5;
//PUNTO MEDIO
struct punto medio;
medio.x = ( p1.x + p2.x ) / 2;
medio.y = ( p1.y + p2.y ) / 2;
//OUTPUT
printf("Coordinate punto medio: X = %lf , Y = %lf ",medio.x,medio.y);
return 0;
}
Utilizzare le struct aiuta quando il codice comincia a diventare più complicato. Se per esempio dobbiamo rappresentare una serie di 100 punti in un piano cartesiano:
//SENZA STRUCT
double xPunti[100];
double yPunti[100];
//CON STRUCT
struct punto {
double x;
double y;
};
struct punto punti[100];
Qui risulterà molto più utile utilizzare una struct.
Una struct o struct è una macrovariabile che al suo interno contiene tante variabili, anche di tipo diverso.
Le struct non hanno un tipo, ma possiamo definirne uno nuovo con l’istruzione typedef.
Utilizzando typedef possiamo utilizzare una struct come un tipo semplice (int, double, char). L’utilizzo di una struct è identico a quello di una variabile.
Una struct al suo interno può contenere qualsiasi tipo di variabile, anche un’altra struct.
struct punto {
double x;
double y;
};
struct caratteristiche {
double altezza;
double peso;
char sesso;
};
struct pagella{
double voti[10];
double media;
};
struct linea{
struct punto p1;
struct punto p2;
double lunghezza;
};
Ecco come le struct ci permettono di definire variabili complesse e allo stesso tempo mantenere leggibile il codice!