Transcript un numero
• La funzione printf consente di effettuare la stampa a video formattata.
Sintassi:
printf ( stringa_formato, arg0, arg1, … );
• La stringa che controlla il formato (
stringa_formato
) contiene i comuni caratteri che compongono il messaggio testuale e una o più specifica di conversione per ogni variabile di cui stampare il valore.
• Le specifiche di conversione iniziano con il carattere % e terminano con un carattere di conversione tra i seguenti: -
%d, %i %u
: decimale : intero senza segno
%e
: notaz.esponenziale
-
%f %x %c
: float(virgola mobile) : esadecimale : carattere -
%o %s
: ottale : stringa • In mezzo tra % e carattere di conversione si può trovare: -
un segno meno
: indica l’allineamento del testo a sinistra -
un numero
: indica l’ampiezza minima del campo riservato al valore
un punto
: separa l’ampiezza del campo da un altro numero che indica l’ampiezza della precisione (numero max di caratteri da stampare per le stringhe e numero max di cifre decimali per un float)
• Esempio:
printf ( “%-8.3f
%12s %4d %.5
s” , v1 , v2 , v4 , v4 );
• v1 è stampata come float allineato a sinistra con ampiezza minima del campo pari 8 celle video e al massimo 3 cifre decimali • v2 è stampata come stringa allineata a destra con ampiezza minima del campo pari 12 celle video • v3 è stampata come decimale allineato a destra con ampiezza minima del campo pari 4 celle video • v4 è stampata come stringa allineata a destra con ampiezza minima del campo non dichiarata ma di cui si stampano al massimo 5 caratteri
• La funzione scanf consente di acquisire valori formattati in input.
Sintassi:
scanf ( stringa_formato, arg0, arg1, … );
• La stringa che controlla il formato (
stringa_formato
) è analoga a quella della printf e le medesime sono le specifiche e caratteri di conversione.
• Scanf legge i caratteri dallo standard input e li memorizza negli argomenti che seguono la stringa di formato. Tali argomenti devono essere puntatori (iniziando con &, vettori a parte), cioè indirizzi di variabili in memoria.
• Scanf si ferma quando ha esaurito la sua stringa di formato o se trova una inconsistenza.
• Scanf ritorna il numero di oggetti letti oppure un EOF al termine del file o se l’elemento letto contrasta con la specifica di controllo.
• Esempio: dove i
scanf ( “%d %f %s” , &i , &j , a );
è un intero decimale, j un float e a un vettore di caratteri (stringa)
• Decimale: - notazione posizionale in base 10, usata dagli uomini - 10 cifre per rappresentare ogni numero: 1,2,3,4,5,6,7,8,9 - cifre più significative a sinistra, le meno significative a destra - esempio di rappresentazione: 435 => 4 ×10 2 +3 ×10 1 +5 ×10 0 - con (n) cifre si possono rappresentare (10^n) numeri decimali, da 0 a (10^n-1) • Binario: - notazione posizionale in base 2, usata nei calcolatori - 2 cifre per rappresentare ogni numero: 0,1 - cifre più significative a sinistra, le meno significative a destra - esempio di rappresentazione: 10111101 => 1 ×2 7 +0 ×2 6 +0 ×2 5 +1 ×2 4 +1 ×2 3 +1 ×2 2 +0 ×2 1 +1 ×2 0 - con (n) cifre si possono rappresentare (2^n) numeri decimali, da 0 a (2^n-1) - per passare da binario a decimale basta fare la somma delle potenze - per passare da decimale a binario si fa la divisione ripetuta per 2
• Esempio di conversione decimale > binario, convertiamo 275 Divisione 275 / 2 137 / 2 68 / 2 34 / 2 17 / 2 8 / 2 4 / 2 2 / 2 1 / 2 Quoziente Resto 137 1 68 34 1 0 17 8 4 2 1 0 0 1 0 0 0 1 Codifica 1 11 011 0011 10011 010011 0010011 00010011 100010011 => 275 in decimale corrisponde a 100010011 in binario
• Esadecimale: - migliora il sistema binario che usa troppe cifre per rappresentare numeri grandi - conversione da binario a esadecimale è molto semplice - notazione posizionale in base 16 - 16 cifre per rappresentare ogni numero: 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F - 1,2,3 …,9 in esadecimale corrispondono agli stessi decimali, mentre A,B,C,D,E,F corrispondono ai decimali 10,11,12,13,14,15 - cifre più significative a sinistra, le meno significative a destra - esempio di rappresentazione: C38F => 12 ×16 3 +3 ×16 2 +8 ×16 1 +15 ×16 0 - con (n) cifre si possono rappresentare (16^n) numeri decimali, da 0 a (16^n-1) - per passare da binario a decimale basta fare la somma delle potenze - per passare da decimale a binario si fa la divisione ripetuta per 16 • Ottale: - discorso analogo ai precedenti, sia per la notazione che per i metodi di conversione, solo che la base qui è 8.
# include