Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- consideriamo per esempio la possibilità di fare una rubrica:
- gestire un nome array stringa da trenta, analogamente per il cognome e per il numero di telefono;
- ci devono essere delle associazioni per indici:definire questri tre array e poi cercare un contatto attraverso il suo indice;
- questo modo di programmare è un modo barbaro di programmare.Sula cache ci stanno i dati per la locazione temporale e spaziale nella memoria. viene fatto apposta
- per far si che, anche se non ho maniera di lavorare con la cache, posso accedervi attraverso determinati programmi così da velocizzare rispetto a lavorare con la ram.
- i tre array nella rubrica se tutto va bene sono posti consecutivi in memoria, tuttavia per esempio per una stessa persona per accedere a nome()cognome()e numero() non li trovo viciini
- perciò il programma è lento. invece creando una struttura dati posso creare array di persone contenenti numeri indirizzi nomi e cognomi. Così facendo rendo più veloce il programma.
- possiamo anche creare strutture dati di strutture dati.non c'è la gestione di n array ma la gestione di array all'interno del quale ci sono strutture dati.
- c'è bisogno di una type def per definire la struttura dati.
- typedef struct _individuo
- {unisgned short età;
- char nome[];
- char cognome[];
- char telefono[];
- char indirizzi[];
- } individuo; //questo individuo è proprio un nuovo tipo
- typedef individuo* pindividuo;
- per accedere alla parte di memoria dove nella struttura individuo è contenuto l'età
- scrivo nel main e nel printf ciccio.età;
- se invece dobbiamo gestire un array dovremmo scrivere ciccio.nome[quale lettera del nome]
- comunque attraverso l'operatore punto!
- si può anche creare ad esempio la struttura dei numeri complessi:
- typedef struct _complex
- {float re
- float im
- } complex;
- quindi per esempio se volessi definire una funzione che lavora con le strutture dati
- dovrò usare una funzione che mi restituisce intanto void inoltre per passare i dati usiamo sempre puntatori
- c'è un operatore che si chiama puntato con cui possiamo vedere il contenuto di un puntatore ->
- scriviamo la funzione somma
- {
- }
- facciamo adesso la strutttura dati per i poligoni
- typedef struct _dot
- {float x;
- float y;
- } dot;
- abbiamo defnito il punto
- adesso il segmento fatto da due punti gli estremi
- typedef struct _segmento
- {dot a;
- dot b;
- }
- ora i poligoni, facciamo per un poligono fissoe poi a segmenti variabili
- typedef struct _triangolo
- {segmento s1;
- segmento s2;
- segmento s3;
- } triangoolo;
- però questo tipo di struttura non fa il controllo se effettivamente il poligono è un triangolo cioè se i lati sono contigui.
- per salvare per esempio la rubrica possiamo salvarla in un file binario poichè la fwrite funziona in modo che sappiamo quanti dati salvare con
- sizeof(individuo)*100 in cui 100 sono le persone dentro la rubrica;
- altro esempio: nel programmino che crea file binari si poteva fare una struttura dove leggiamo sia float che double
- perchè c'erano x e y rispettivamente di float e double al posto di creare due array.
- come i dati lo stesso programma sta in memoria quindi si potrebbero fare puntatori a funzioni.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement