Installazione di CodeBlock e uso dell’interfaccia.
Primo esercizio: Dato un intero $$n$$ in input, per ogni valore intero $$i$$ con $$1 \leq i \leq n$$ stampare una riga con il valore di $$i$$, quello di $$i$$ fattoriale e quello di $$\sqrt{i!}$$.
Tipi nuovi: unsigned long long int.
Prima versione:
[cpp]
#include <stdio.h>
#include <math.h>
int main(void)
{
int n = 0;
printf("Inserisci un intero: ");
scanf("%d", &n);
printf("Tabella dei fattoriali e loro radici quadrate");
printf(" – n = %d\n",n);
printf("—————–\n");
int i = 0;
while (i <= n) {
int k = 1;
unsigned long long f = 1; // il fattoriale e’ molto grande.
while (k <= i) { f *= k; k++; }
printf("%d\t %llu\t %10.3f\n",i,f,sqrt(f));
i++;
}
return 0;
}
[/cpp]
Definizione di Funzione in C:
[cpp]
#include <stdio.h>
// funzione fattoriale, iterativo
// calcola n!
unsigned long long fact(int n)
{
int k = 1;
unsigned long long f = 1; // il fattoriale e’ molto grande.
while (k <= n) f *= k++; // post-incremento, vedere libro.
return f;
}
// uso: printf("%llu \n",fact(4));
[/cpp]
 
Seconda versione, con i for.
[cpp]
#include <stdio.h>
int main(void)
{
int n = 0;
printf("Inserisci un intero: ");
scanf("%d", &n);
printf("Tabella dei fattoriali e loro radici quadrate");
printf(" – n = %d\n",n);
printf("—————–\n");
unsigned long long f = 1; // il fattoriale e’ molto grande.
for (int i = 1; i <=n; i++) {
f *= i;
printf("%d\t %llu\t %10.3f\n",i,f,sqrt(f));
}
return 0;
} [/cpp]
Modificate il codice sopra: aggiungete una funzione che calcola la radice quadrata di un numero, e aggiungete un altra colonna, stampando la valutazione di tale funzione. Verificate che le ultime due colonne (quella della vostra radice e quella della sqrt corrispondano).
Esercizio: dato p intero, verificare se p è primo, scrivete un programma che legge n, e stampa ‘primo’ se lo è, oppure stampa un divisore di n (provando quindi che non è primo). Quando avete finito il programma, provate a modularizzare il codice, scrivendo una funzione:
\[ isprime : \mathsf{int} \mapsto \mathsf{bool} \quad isprime(p) = true \iff \text{p e’ primo}\]
Esercizio: I fattori primi di 13195 sono 5, 7, 13 and 29. Qual’è il fattore primo più grande di 600851475143 ? come scrivereste il codice? in C o in Python? perche? 
Iterazioni in C: ciclo while, ciclo for, ciclo do..while. Semantica.
Studiare dal Libro: capitolo 4, in particolare 4.2, riquadro Side Effects, Lvalue, assegnamento composto. 4.3 Operatori di Incremento/Decremento.
Nota: Dal punto di vista dei contenuti, potete procedere pian piano e svolgendo quanti più esercizi fino al Capitolo 8. Ricordate che il libro non è da usare come ‘libro di corso’ nel senso di procedere capitolo per capitolo ‘esaustivamente’ leggendo TUTTO, ma leggere, segnandosi man mano le cose importanti, e concentrandosi sugli esercizi. Il libro è un ‘manuale di riferimento del linguaggio’. Per apprendere vanno fatti esercizi, quanti più ne fate, meglio vi troverete.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *