Strumenti Utente

Strumenti Sito


fisica:informatica:201718:esercitazioni:esercitazione5

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
fisica:informatica:201718:esercitazioni:esercitazione5 [24/01/2018 alle 12:38 (7 anni fa)] Susanna Pelagattifisica:informatica:201718:esercitazioni:esercitazione5 [29/01/2018 alle 09:46 (7 anni fa)] (versione attuale) – [Esercizio 8: Calcolo della radice quadrata] Susanna Pelagatti
Linea 1: Linea 1:
 ====== Esercitazione 4 ====== ====== Esercitazione 4 ======
  
-Tipi di dato e rappresentazione +Tipi di dato e rappresentazione.\\ 
 +**ATTENZIONE: per le informazioni relative ai tipi di dato fare riferimento a {{ :fisica:informatica:201718:esercitazioni:005-linguaggio_c--tipididato.pdf |questi lucidi}}. 
 +**
 ===== Esercizio 0: Convertire da base 10 a base $b$ ===== ===== Esercizio 0: Convertire da base 10 a base $b$ =====
  
Linea 67: Linea 68:
  
 Scrivere un programma C che stampa i limiti di rappresentazione dei principali tipi reali ed alcune delle costanti di float.h relative alla lunghezza della rappresentazione (ad esempio la lunghezza della mantissa) Scrivere un programma C che stampa i limiti di rappresentazione dei principali tipi reali ed alcune delle costanti di float.h relative alla lunghezza della rappresentazione (ad esempio la lunghezza della mantissa)
 +
 +In ''float.h'' sono presenti anche le funzioni 
 +<code>
 +fpclassify(), isinf(), isnan()
 +</code>
 +a cosa servono ?
 +
 +===== Esercizio 7: Conversioni implicite =====
 +Nei lucidi {{ :fisica:informatica:201718:esercitazioni:005-linguaggio_c--tipididato.pdf | su tipi di dato}} a pagina 28-32 sono riassunte le conversioni automatiche effettuate dal linguaggio C. Leggetele attentamente e utilizzatele per spiegare i valori stampati dal seguente programma:
 +<code>
 +#include <stdio.h>
 +
 +int main (void) {
 +double x, y=5.;
 +int a = 4;
 +
 +x = 1/2;
 +printf("Primo valore: %lf\n", x); 
 +
 +x = y/2;
 +printf("Secondo valore: %lf\n", x); 
 +
 +x = a/2;
 +printf("Terzo valore: %lf\n", x); 
 +
 +x = 1./2;
 +printf("Quarto valore: %lf\n", x); 
 +
 +x = 1/(double)2;
 +printf("Quinto valore: %lf\n", x);
 +return 0;
 +}
 +</code>
 +
 +===== Esercizio 8: Calcolo della radice quadrata ======
 +Dato un numero reale positivo //a// si consideri la sequenza dei numeri reali //x// definita da 
 +<code>
 +x[0] = 1
 +x[i+1] = 1/2*(x[i] + a/x[i])
 +</code>
 +si puo' dimostrare che ''x[i]'' tende alla radice quadrata di //a// per //i// che tende all'infinito.
 +
 +Scrivere un programma che legga il valore di //a// da standard input e calcoli la radice quadrata di //a// utilizzando la sequenza. In particolare, si calcoli la sequenza fino a che ''x[i]'' non diventa uguale a ''x[i+1]'', il valore ottenuto e' l'approssimazione cercata per la radice quadrata di //a//.
 +
 +Ad ogni ciclo, far stampare su standard output il numero dell'iterazione ''i'', il valore di ''x[i]'' ed il valore di ''a-x[i]*x[i]'' per controllare la convergenza.
 +
 +===== Esercizio 9: Bilanciamento delle parentesi =====
 +Scrivere un programma C che legge dallo standard input una sequenza di caratteri (terminata da EOF) e stabilisce se l'insieme dei caratteri utilizza in modo appropriato le parentesi graffe  tonde e quadre ovvero 
 +  * se il numero delle parentesi aperte e chiuse coincide e 
 +  * se la parentesi aperta precede sempre la parentesi chiusa. 
 +
 +Ad esempio:
 +<code>
 +{lkshaj[nnnn()]}{}
 +</code>
 +e' una sequenza corretta, mentre
 +<code>
 +{lkshaj][nnnn()}{}
 +</code>
 +e' scorretta.
 +
 +Utilizzare ''getchar()'' per leggere i caratteri uno ad uno, la funzione restituisce EOF quando lo stream e' finito (vedi ''man getchar''). 
 +
 +Inserendo manualmente i caratteri EOF puo' essere generato utilizzando la combinazione di tasti CONTROL-D.
 +
 +Quando il programma e' funzionante, verificare il bilanciamento delle parentesi del programma stesso utilizzando la redirezione. Ad esempio, se l'eseguibile relativo al mio programma si chiama ''checkpar'', e il sorgente si trova nel file checkpar.c, provare ad eseguire
 +<code>
 +bash$ ./checkpar < checkpar.c
 +</code>
 +
  
  
fisica/informatica/201718/esercitazioni/esercitazione5.1516797485.txt.gz · Ultima modifica: 24/01/2018 alle 12:38 (7 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki