Utilizziamo cookie tecnici e di profilazione (anche di terze parti) per migliorare la tua esperienza su questo sito. Continuando la navigazione accetti l'utilizzo dei cookie; in alternativa, leggi l'informativa e scopri come disabilitarli.

SPECIFICHE

Realizzare un programma a menu' che consente di effettuare alcune operazioni aritmetiche:

  1. Scomposizione in fattori primi 
  2. fattoriale di un numero
  3. elevamento a potenza con esponente positivo e negativo
  4. MCD (Massimo comun divisore)  tra due numeri, utilizzando uno degli algoritmi proposti
  5. mcm (minimo comune multiplo) tra due numeri
  6. verifica della primalita' di un numero intero
  7. visualizzazione dei primi N numeri primi
  8. ricerca dell'n-esimo numero primo
  9. Calcolo della radice quadrata con l'algoritmo di Erone (vedi nel seguito)

Ogni voce di menu' deve corrispondere ad una funzione; le operazioni di input dei dati e visualizzazione dei risultati devono essere effettuate nel main e NON nelle singole funzioni.

Il programma termina scegliendo l'opzione 0.

 

 

Erone (I secolo a.C.) ha scritto nel libro “Metrica” il seguente esempio per il calcolo della radice quadrata di un numero

 

Dal momento che 720 non ha come radice quadrata un numero razionale, possiamo ottenere una approssimazione molto buona nel seguente modo.

Poiché il quadrato più grande e più vicino a 720 è 729, la cui radice quadrata è 27,dividiamo 720 per 27. Il risultato è 26 2/3. Aggiungendo ad esso 27, si ottiene 53 2/3 e dividendo per si ottiene 26 5/6 .

Pertanto la radice quadrata di 720 è molto vicina a 26 5/6 .

Infatti, moltiplicando 26 5/6 per se stesso, il prodotto dà 720 1/36 , perciò la differenza è 1/36 .

Se desideriamo rendere la differenza ancora più piccola di 1/36 , prenderemo 720 1/36 invece di 729 (o piuttosto 26 5/6 invece di 27), e procedendo nello stesso modo troveremo una differenza ancora più piccola di 1/36 .

 

L'algoritmo iterativo per il calcolo approssimato della radice quadrata di un numero reale, ottenuto dal documento di Erone ma già noto ai babilonesi, viene descritto partendo dalla considerazione che se la radice quadrata di a e' x, allora a = x per x. Possiamo pensare a come l'area di un quadrato di lato x, con x incognito. Partendo da un valore casuale, un rettangolo di area a e lato x ha l'altro lato che vale a/x. se prendiamo come nuovo x la media tra i due valori il rettangolo assomigiera' via via a un quadrato. quando i due lati sono uguali abbiamo trovato la radice quadrata.

 

L'algoritmo puo' essere anche descritto cosi':

 

Sia x il valore della radice quadrata che si vuole approssimare. Sia x1 una prima approssimazione e sia x2=x*x/x1 una seconda approssimazione di x. Poiché abbiamo x1*x2=x*x, se x1 approssima per difetto, allora x2 approssima per eccesso e viceversa. Quindi la media aritmetica x3=(x1-x2)/2 è un’ulteriore approssimazione. Procedendo si ha x4=x*x/x3 e x5=(x3+x4)/2, e così via.

Produrre un documento contenente l'algoritmo, sotto forma di flowchart o di pseudocodice, che generalizza il problema, in modo da consentire il calcolo della radice quadrata di un numero qualsiasi a meno di un errore percentuale dato. Aggiungere anche la tabella di prova dell'algoritmo per il caso in cui il numero sia 500 e la precisione richiesta sia dello 0,1%.

Costruire un programma che, letto il numero x di cui si vuol trovare la radice quadrata, e il valore epsilon, che rappresenta l’approssimazione, usi l’algoritmo di Erone per raggiungere il risultato.

OBIETTIVI

  • Algoritmo: individuazione dei dati in ingresso e di uscita
  • Algoritmo: il concetto di ciclo
  • Algoritmo: differenza tra diversi algoritmi
  • Linguaggio C: uso di variabili intere
  • Linguaggio C: lettura e presentazione di dati
  • Linguaggio C: istruzioni di gestione dei cicli
  • Linguaggio C: istruzioni aritmetiche applicate a numeri interi
  • Linguaggio C: realizzazione di menu'
  • Linguaggio C: test del programma
  • Documentazione: ordine, chiarezza espositiva, documentazione e significatività delle prove

 VALUTAZIONE

  • Individuazione dei corretti parametri nei diversi casi
  • Correttezza dell’algoritmo
  • Correttezza dell’uso degli strumenti informatici
  • Comprensione delle istruzioni per il controllo di flusso
  • Comprensione della sintassi delle funzioni: dichiarazione, chiamata, definizione
  • Comprensione delle differenza tra i diversi algoritmi
  • Scelta dei casi di test
  • Autonomia nel lavoro
  • Relazione: contenuti, chiarezza, correttezza

 SCADENZA: sono previste 8 ore di lavoro in laboratorio