Rappresentazione dei numeri Rappresentazione di interi Supponiamo 2 byte (16 bit) 2 16 = 65536 [-32767, 32768] con m bit 2 m -1 numeri Se prendiamo come segno il primo bit abbiamo ad esempio (01111111) 2 = 127 e (11111111) 2 = -127
Rappresentazione dei numeri Con questa rappresentazione si hanno 2 modi di rappresentare 0!!!!!!! Inoltre non valgono più le regole per la somma binaria consideriamo ad esempio i due numeri (01010000)2 = 96 e (11010000)2 = -96 ed il numero (00001000)2 = 8 ed eseguiamo le somme in binario -96+ 11010000+ 8 00001000-88 11011000 = -104 errata
Complemento a 2 -x 10 = (2 n x) 2 Si calcola invertendo 1 con 0 e viceversa e aggiungendo + 1 alla fine Valgono ancora le regole per la somma
Rappresentazione dei numeri Rappresentazione di reali Vogliamo rappresentare numeri reali distribuiti sulla retta con la distanza relativa il più piccola possibile 0.0004285741428571 rappresentazione non normalizzata 0.4285741428571 x 10-3 rappresentazione normalizzata
Rappresentazione dei numeri Rappresentazione di reali Se ho a disposizione 7 cifre 0.000428 e 0.4285741 Ci sarà uno spazio per la mantissa e uno per l esponente float 4 byte Un bit per il segno, 23 per la mantissa e 8 per l esponente
Rappresentazione dei numeri Rappresentazione di reali Potendo l esponente essere sia positivo che negativo, con 8 bit è possibile utilizzare i numeri compresi nell intervallo [ -127, 128 ] per cui l esponente varia tra [ 2-127, 2 128 ] che, in base 10, corrisponde ad un esponente incluso nell intervallo [ 10-37, 10 38 ]
C operativi di flusso I/O In C sono definiti gli operatori di flusso di I/O printf scanf
C printf: stringa di controllo La funzione printf riceve dal programma chiamante uno o più argomenti. Solo il primo è obbligatorio e deve essere una stringa, che si chiama control string (stringa di controllo) la stringa di controllo viene trasferita sullo schermo, carattere per carattere (compresi gli spazi bianchi), salvo quando sono incontrati i seguenti caratteri particolari: " (termina la stringa di controllo) % (introduce uno specificatore di formato) \ (introduce una sequenza di escape)
C printf: specificatore di formato Altri argomenti successivi alla stringa di controllo, nella chiamata a printf, rappresentano i dati da formattare e scrivere, e possono essere costituiti da: costanti, variabili, espressioni, o altre funzioni Ad ogni argomento successivo alla stringa di controllo, deve corrispondere, all'interno di essa e nello stesso ordine, uno specificatore di formato, costituito da un gruppo di caratteri introdotto dal carattere %.
C printf: specificatore di formato In uno specificatore di formato il campo tipo può assumere uno di questi valori. tipo Descrizione u, o, x valori interi assoluti, basi: decimale, ottale, esadecimale X come x ma con le cifre letterali maiuscole d,i valori interi relativi, base decimale f,e valori floating, notazione normale o esponenziale g come f o e (sceglie il più comodo) E, G come e e g (scrive "E" al posto di "e") c carattere s stringa di caratteri P indirizzo di memoria (in esadecimale)
printf printf ( stringa di controllo del formato, altri argomenti) - La stringa di controllo descrive il formato dell output - Gli altri argomenti sono opzionali e corrispondono alle singole specifiche di conversione - Ogni specifica di conversione inizia con il segno di percentuale (%) e termina con un indicatore di conversione
Indicatore di conversione i e f visualizza un intero decimale con segno visualizza un valore in virgola mobile nella notazione esponenziale (6 cifre alla destra della virgola) (sempre e solo una cifra a sinistra della virgola) visualizza un valore in virgola mobile nella notazione in virgola fissa (6 cifre alla destra della virgola)
Dimensione di campo Nel caso in cui la dimensione del campo sia maggiore del dato da visualizzare questo sarà allineato a destra all interno di quel campo E inserito tra % e indicatore di conversione (%4d) printf( %4d\n,1); printf( %4d\n,12); printf( %4d\n,123); printf( %4d\n,1234); printf( %4d\n,12345); printf( %4d\n,-1); printf( %4d\n,-12); printf( %4d\n,-123); printf( %4d\n,-1234); printf( %4d\n,-12345);
precisione Specifica la precisione con cui il dato dovrà essere visualizzato - per gli interi indica il numero minimo di cifre da visualizzare - per i float indica il numero di cifre dopo la virgola E inserito tra % e indicatore di conversione (%.4d) int i = 873; float f = 123.94536; printf( \t%.4d\n\t%.9d\n\n, i, i); printf( \t%.3f\n\t%.3e\n\n, f, f);
Sequenza di escape Il carattere \ (backslash) non è trasferito sullo schermo, ma usato in combinazione con i caratteri successivi un solo carattere se si tratta di una lettera, oppure una sequenza di cifre numeriche; l'insieme di caratteri viene detto sequenza di escape, e viene interpretato come un unico carattere Le sequenze di escape sono usate tipicamente per specificare caratteri speciali che non hanno il loro equivalente stampabile come newline, carriage return, tabulazioni, suoni ecc..., oppure caratteri, che da soli, hanno una funzione speciale, come le virgolette o lo stesso backslash
REGOLA E opportuno che al termine di una istruzione di stampa il cursore sia situato all inizio della linea successiva
C++ sequenza di escape Sequenza di escape Descrizione \n Carattere di fine linea (newline) è inserito premendo il tasto Invio \t Posiziona il cursore del video sulla tabulazione successiva (tasto TAB) \a Emette un beep \r Posiziona il cursore all inizio della linea corrente \b Il cursore ritorna indietro di un carattere (tasto Backspace) \\ Stampa la barra inversa (backslash) \" Stampa le doppie virgolette \nnn \nn carattere con codice ascii nnn (tre cifre in ottale) carattere con codice ascii nn (due cifre in esadecimale)
C printf: specificatore di formato In generale uno specificatore di formato ha la seguente sintassi: %[flags][ampiezza][.precisione]tipo Esempio: printf("%8d", 4532) à 4532 printf("%8d", -532) à -532 printf("%#6x", 255) à 0XFF printf("%10.4s", "ciaooo")à ciao printf("%08.2f", -5.324) à -0005.32 esercizio3.2.cpp
Esercizi Scrivere un algoritmo che calcoli la somma dei primi N naturali.
Esercizi Scrivere un programma che chiede all utente di digitare tre interi sulla stessa riga, e ne visualizza la somma, il prodotto e la media.
Esercizi Scrivere un programma che calcola il quadrato e il cubo dei numeri da 0 a 10 e li visualizzi come segue: numero quadrato cubo 0 0 0 1 1 1 2 4 8 3 9 27