Strutture
Abbiamo già parlato di array e matrici.
Un array è un esempio di struttura dati che utiliza tipi di dati semplici, come int, char, double e li organiza in un array elementare di elemeti tutti dello stesso tipo, cioè omogenei.
Però nelle strutture dati dei database, spesso è necessario organizzare i dati che non sono omogenei; come nome, cognome che sono di tipo char, età ed anno di nascita che sono di tipo intero, altezza o peso che di solito sono di tipo float,eccetera.
DEFINIZIONE:
Una struttura dati eterogenea prende il nome di record (o registrazione), è una struttura sequenziale composta in quanto è costituita da elementi di vario tipo detti campi, a loro volta composti da strutture più semplici: nel linguaggio C/C++ viene definita con la parola struct.
Il concetto di record è fondamentale per l'informatica, in quanto su di esso si basano tutte le tecniche di organizzazione e memorizzazione dei dati (file di record e database), che costituiscono l'elemento essenziale dei sistemi informatici.
Ma facciamo adesso degli esempi pratici.
ESEMPIO :Definiamo la struttura seguente per un alunno:
------------------------------
int main(){
struct alunno
{char cognome[15];
char nome[20];
char localita[20];
int classe;
char sezione;
float mediavoti;
bool ripetente;
};
Questa struttura , come si vede ha dei campi di tipo divrso: char, int, float, bool...
Dopo aver definito la struttura è possibile definire le variabili di questo tipo che si intendono utilizzare, ad esmpio per due alunni :
struct alunno filippo,giuseppe; //definisce due variabili filippo e giuseppe che hanno la stessa struttura alunno definita precedentemente.
Possiamo anche definire la struttura ed indicare alla fine le variabili; come in questo caso:
int main(){
struct alunno
{char cognome[15];
char nome[20];
char localita[20];
int classe;
char sezione;
float mediavoti;
bool ripetente;
}studente={"Rossi","Mario","Milano",4,"C",7.5,"SI"};
In questo caso abbiamo definito la struttura , una variabile ed abiamo inizializzato i suoi campi.
Esempio
Scrivere un programma che copia il nome Pippo in una stringa e il cognome Monti in un’altra stringa e li visualizzi, li concateni e dopo li visualizzi.
#include<conio.h>
#include<stdio.h>
#include<string.h>
main(){
char s1[20],s2[20],sp[2];
strcpy(s1,"Pippo");
strcpy(s2,"Monti");
strcpy(sp," ");
puts(s1);
puts(s2);
strcat(s1,sp);
strcat(s1,s2);
puts(s1);
getch();}
ESERCIZIO:
Un supermercato deve classificare i suoi prodotti attraverso una struttura con i seguenti campi: Nome_Prodotto, Genere_Alimentare, Numero_Pezzi_Venduti, Costo_Unitario, e un record di record con il giorno, mese e anno di vendita. Supporre che il supermercato inserisca dall’ es dall’ esterno almeno tre prodotti con tutti i suoi campi e che alla fine voglia stampare tutti i dati inseriti.
Esercizio
/*Una biblioteca deve classificare i propri libri attraverso una struttura che
evidenzi i seguenti campi: Titolo_Libro, nome e cognome dell' autore, codice ISBN,
e un record dei record in cui vengano inseriti i seguenti campi: anno di pubblicazione,
ristampa (si,no), prezzo. Considerare che la biblioteca inserisca dall'interno almeno
tre libri e che alla fine stampi tutti i dati a video.
*/