3° Anno TEORIA 9. Tipi di dato strutturato: vettori e record | Page 45

8 : I dati e la loro struttura nella programmazione ( ARRAY , MATRICI , RECORD ) Vers . 8.2 – Settembre 2022
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 . 45