8: I dati e la loro struttura nella programmazione( ARRAY, MATRICI, RECORD) Vers. 10.0 – Maggio 2025
Ora possiamo affrontare la fase di PROGRAMMAZIONE vera e propria( o IMPLEMENTAZIONE) traducendo nel linguaggio di programmazione di alto livello C tutte le istruzioni contenute nell’ algoritmo descritto in precedenza tramite PSEUDOCODIFICA.
# include < stdio. h > # include < stdlib. h > # include < string. h >
// definizione del nuovo tipo record utente Libro typedef struct { char Isbn [ 10 + 1 ]; char Titolo [ 100 + 1 ]; char Autore [ 50 + 1 ]; char CasaEditrice [ 50 + 1 ]; float Prezzo; int Pagine; } Libro;
int main( int argc, char * argv []) { // Dichiarazione di una variabile record di tipo Libro Libro lib;
// Leggo la variabile record lib di tipo Libro campo x campo effettuando // tutti i controlli // N. B. la LETTURA o CARICAMENTO è un ' operazione NON ATOMICA printf("************* Lettura dati del record ***************\ n "); // Isbn
Anche la funzione scanf() con "% s " do con le limitazioni che sappiamo( spazi)
{ printf(" Inserisci Isbn: "); gets( lib. Isbn); } while(( strlen( lib. Isbn) == 0) ||( strlen( lib. Isbn) > 10));
In modo meno efficiente si può anche dichiarare una variabile intera di nome, ad esempio, lung, valorizzarla con il valore ritornato dalla funzione strlen() all’ interno del do-while e poi testarla direttamente nella condizione dello stesso ciclo
// Titolo do { printf(" Inserisci Isbn: "); do gets( lib. Isbn); { lung = strlen( lib. Isbn); printf(" Inserisci Titolo: ");
} gets( lib. Titolo); while(( lung == 0) ||( lung > 10))
} while(( strlen( lib. Titolo) == 0) ||( strlen( lib. Titolo) > 100));
// Autore do { printf(" Inserisci Autore: "); gets( lib. Autore); } while(( strlen( lib. Autore) == 0) ||( strlen( lib. Autore) > 50));
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 46