Strumenti Utente

Strumenti Sito


fisica:informatica:201617:esercitazione5

Questa è una vecchia versione del documento!


Esercitazione funzioni

Esercizio 1: funzione fattoriale (iterativa e ricorsiva)

Scrivere una funzione C che calcola il fattoriale di un intero n e ne restituisce il risultato. Implementare la funzione in modo iterativo e ricorsivo.

Quando il programma e` corretto e funzionante sperimentare succede su numeri grandi. Provare per

n = 10000
n = 100000
n = 1000000

Usare il comando time per misurare il tempo impiegato per il calcolo dalle due versioni. Per evitare di misurare il tempo di attesa del valore da calcolare, assegnate direttamente il valore nel codice senza usare la lettura da standard input o le stampe a schermo, ad esempio:

int main (void) {
  int n=1000000;
  fattoriale(n);
  return 0;
}

Che risultati ci sono ? Come ve li spiegate ?

Esercizio 2: Inversione di una stringa (iterativa e ricorsiva)

Riprendendo l'esempio visto a lezione, scrivete una funzione iterativa ed una ricorsiva di prototipo

void invert (void);

che legge una sequenza di caratteri (stringa) terminata da \n da standard input e la stampa rovesciata su standard output.

Esercizio 3: Numeri di Catalan

I numeri di Catalan sono una sequenza di interi utilizzati diverse aree della fisica, l'esercizio richiede di realizzare una funzione

int catalan_n (int n)

che dato n calcola (e restituisce) l'n-esimo numero delle sequenza in base alla definizione induttiva fornita qua.

Esercizio 4: Calcolo dell'integrale (versione con funzioni)

Realizzare una soluzione dell'esercizio sul calcolo dell'approssimazione dell'integrale in http://didawiki.di.unipi.it/doku.php/fisica/informatica/201516/primoanno/esercitazione3bis utilizzando le funzioni per organizzare il codice e fattorizzare parti replicate. In particolare si suggerisce di definire una funzione per il calcolo dell'area ed una funzione per la visualizzazione su standard output.

Esercizio 5: La torre di Hanoi

Esercizio 6: Verifica somme

Scrivere una funzione che , legga una sequenza dispari di interi positivi da input a1…ak che al centro e solo al centro abbia n, e restituisca true solo se la somma del primo e l’ultimo elemento sia n, e cosi’ per tutte le somme ai + ak−(i−1). Ad esempio, se n e’ 10 e la sequenza e’ 2 6 5 10 5 4 8, la funzione deve restituire true.

Esercizio 7: (avanzato) Operazioni bit a bit

Scrivere un programma C costituito da una funzione main e da tre funzioni ausiliarie

/** stampa la rappresentazione binaria di a */
void bit_stampa (int a);
/** effettua la somma (un bit alla volta) di x ed y  */
int bit_somma (int x, int y);
/** complementa il valore di x invertendo il valore di tutti i bit */
int bit_compl (int x);

Nella implementazione delle tre funzioni:

  1. si considerano solo i primi 16 bit della rappresentazione interna di un intero,
  2. si utilizzano solo gli operatori bit a bit (&,|,^,~).

La funzione ''main()“ lavora su due variabili intere, a1 e b1, ed interagisce con l'utente per leggere nuovi valori per a1 e b1. Dopodichè, utilizza le funzioni ausiliarie per calcolare a1+b1, -a1 e per stampare il risultato.

fisica/informatica/201617/esercitazione5.1490611546.txt.gz · Ultima modifica: 27/03/2017 alle 10:45 (8 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki