• Non ci sono risultati.

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 4 (3/11/09)

N/A
N/A
Protected

Academic year: 2021

Condividi "06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 4 (3/11/09)"

Copied!
2
0
0

Testo completo

(1)

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 4 (3/11/09)

La presente esercitazione presuppone conoscenza delle seguenti parti del linguaggio C: main, return, commen- ti, variabili, identificatori, tipi scalari, assegnazione, costanti letterali, printf (base), scanf (deprecata), ope- razioni aritmetiche, if . . . else, operatori relazionali, operatori Booleani, getchar, putchar, ciclo while, libreria ctype.h, const, #define, exit, programmazione a stati, gets, sscanf, stringhe, traduzione di algoritmi matematici.

Esercizio 1

Scrivere un programma in linguaggio C che riceva in input tre numeri interi sulla stessa riga e ne calcoli la somma. Se sono presenti meno di tre numeri sulla stessa riga, il programma deve segnalare errore e non svolgere alcun calcolo.

Esercizio 2

Scrivere un programma in linguaggio C che riceva in input sulla stessa riga fino ad un massimo di tre numeri interi e calcoli la media aritmetica dei numeri introdotti. Nel caso che non sia introdotto nessun numero, il programma deve terminare silenziosamente.

Esercizio 3

Scrivere un programma in linguaggio C per calcolare il valore della seguente espressione algebrica:

ax3+ bx2+ cx + d

Il programma riceve in input sulla prima riga i valori dei quattro coefficienti (a, b, c e d) e quindi sulla seconda riga il valore di di x.

Esercizio 4

Scrivere un programma in linguaggio C per calcolare il valore della seguente espressione algebrica:

ax3+ bx2+ cx + d

Il programma riceve in input sulla prima riga i valori dei quattro coefficienti (a, b, c e d) e quindi sulle righe successive i valori di di x (uno per riga) per i quali si desidera calcolare il valore dell’espressione.

Nel caso una riga non contenga il valore di x in output dovr`a comparire il testo “valore di X non specificato”. Il programma dovrebbe quindi comportarsi come esemplificato nella seguente tabella:

input −→ output 1 1 1 2

0 2

1 5

due valore di X non specificato

2 16

Esercizio 5

Scrivere un programma in linguaggio C per trovare in quale ascissa (all’interno dell’intervallo fornito dall’utente) la seguente funzione si azzera:

y(x) = ax3+ bx2+ cx + d

Il programma riceve in input sulla prima riga i valori dei quattro coefficienti (a, b, c e d), quindi sulla seconda riga gli estremi dell’intervallo di ricerca [L, H] ed infine sulla terza riga la precisione assoluta desiderata (ε). Il programma deve quindi trovare un valore x0∈ [L, H] tale che |y(x0)| ≤ε. Si suggerisce di procedere usando l’algoritmo di bisezione:

1

(2)

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 4 (3/11/09)

1. si consideri un intervallo[L, H] ai cui estremi la funzione assume valori di segno opposto (se l’intervallo non gode di questa propriet`a allora non si pu`o applicare l’algoritmo);

2. si consideri il punto intermedio dell’intervallo, xM;

3. se |y(xM)| ≤εl’algoritmo termina (xM `e il punto cercato), altrimenti si ricomincia dal passo 2 considerando come intervallo di ricerca quel sotto-intervallo, [L, xM] oppure [xm, H], ai cui estremi la funzione assume valori di segno opposto (se nessuno dei due sotto-intervalli gode di questa propriet`a allora l’algoritmo termina senza essere riuscito a trovare uno zero della funzione).

Ad esempio se l’utente cercasse uno zero della funzione y= x + 5 nell’intervallo [−100, 100] con la precisione di 1/1000 allora dovrebbe introdurre in input i seguenti dati:

0 0 1 5 -100 100 0.001

e l’algoritmo inizierebbe eseguendo i seguenti passi:

• l’intervallo inziale [−100, 100] `e valido poich´e y(−100) = −95 ha segno opposto a y(100) = 105

• considero xM = 0, quindi y(0) = 5 e |y(0)| > 0.001

• considero il sotto-intervallo [−100, 0]

• considero xM = −50, quindi y(−50) = −45 e |y(−50)| > 0.001

• considero il sotto-intervallo [−50, 0]

• considero xM = −25, quindi y(−25) = −20 e |y(−25)| > 0.001

• considero il sotto-intervallo [−25, 0]

• . . .

2

Riferimenti

Documenti correlati

Essendo il circuito particolarmente semplice, la tabella di verit`a si poteva ottenere anche lavorando direttamente

Un sistema di elaborazione `e dotato di una memoria centrale di 256 MB con un tempo d’accesso di 40 ns e di una memoria cache di 128 kB con tempo d’accesso di 10 ns Si determini

[ `e necessaria la memoria cache ] Lo svolgimento di 20 milioni di operazioni al secondo richiede in media 10 milioni di accessi in me- moria al secondo, ai quali bisogna sommare

Scrivere un programma in linguaggio C che chieda all’utente di immettere due numeri interi, ottenga i numeri dall’utente e visualizzi la loro somma, prodotto, differenza, quoziente

Scrivere un programma in linguaggio C che chieda all’utente le coordinate di un punto nel piano Cartesiano XY e quindi determini se tale punto appartiene all’area del rettangolo

Scrivere un programma in linguaggio C che legga tutti i caratteri in input, fermandosi non appena incontra un carattere punto, punto esclamativo o punto interrogativo, e quindi

Scrivere un programma in linguaggio C che richieda e legga un numero intero N (minore di 100) e quindi presenti in output una tabella avente in prima colonna un numero intero (da 1

Scrivere un programma in linguaggio C che riceva un numero non noto a priori di parametri da riga di comando e, per ognuno di essi, dica se si tratta di un numero intero.. Ad