esercitazioni di fondamenti informatica - modulo a · esercitazioni di fondamenti informatica -...

20
Esercitazioni di Fondamenti Informatica - Modulo A 1

Upload: others

Post on 19-Sep-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Esercitazioni di Fondamenti Informatica - Modulo A 1

Page 2: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Da MSDN:

The while statement executes a statement

or a block of statements until a specified

expression evaluates to false

while ( expression ) statement

Il costrutto while esegue statement finché

expression risulta vera. Esce dal blocco appena

expression risulta falsa.Esercitazioni di Fondamenti Informatica - Modulo A 2

Page 3: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Da MSDN:

The do-while statement lets you repeat a

statement or compound statement until a

specified expression becomes false.

do statement while ( expression )

Il costrutto do-while esegue statement finché

expression risulta vera. Esce dal blocco appena

expression risulta falsa.

NB: diversamente dal ciclo while, usando il do-while

almeno una iterazione del ciclo viene sempre eseguita!

Esercitazioni di Fondamenti Informatica - Modulo A 3

Page 4: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Da MSDN:

The for statement lets you repeat a statement or compound

statement a specified number of times. The body of

a for statement is executed zero or more times until an

optional condition becomes false. You can use optional

expressions within the for statement to initialize and change

values during the for statement's execution.

for ( init-expression opt ; cond-expressionopt ; loop-

expression opt ) statement

Il ciclo for:

1. esegue init-expression,

2. controlla il valore di verità di cond-expression:

se vera esegue nell’ordine statement, loop-expression,

torna al punto (2)

se falsa esce dal ciclo

Esercitazioni di Fondamenti Informatica - Modulo A 4

Page 5: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Scrivere un programma C che calcoli la somma di N

numeri interi inseriti da tastiera.

L’inserimento e il calcolo deve essere eseguito

finché il numero digitato è maggiore di -1.

Nel caso il numero inserito sia <= -1 il programma

deve stampare a video la somma di tutti i numeri

inseriti.

Quale ciclo mi conviene usare? Provare a

implementare l’algoritmo usando tutte le tre

tipologie di ciclo.

Esercitazioni di Fondamenti Informatica - Modulo A 5

Page 6: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Algoritmo (pseudo codice)

somma = 0;

x = 0;

finché (x > -1) {

scanf("%d", &x);

somma = somma + x;

}

Risultato = somma;

Come si comporta il programma all’inserimento di -1?

Forse cambiando ordine ad alcune istruzioni…

Esercitazioni di Fondamenti Informatica - Modulo A 6

Page 7: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Algoritmo (pseudo codice)

somma = 0;

esegui {

scanf("%d", &x);

somma = somma + x;

}

finché (x > -1)

Risultato = somma;

In questa versione troviamo gli stessi problemi del precedente?

Esercitazioni di Fondamenti Informatica - Modulo A 7

Page 8: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Algoritmo (pseudo codice)

somma = 0;

per (x = ?; 1?; 2?) {

3?

}

Risultato = somma;

1. Cosa metto come condizione?

2. Cosa metto come loop-expression?

3. Serve il corpo?

Esercitazioni di Fondamenti Informatica - Modulo A 8

Page 9: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Scrivere un programma C che calcoli la radice

quadrata (intera) di un naturale N.

Considera un intero x dopo l’altro a partire da 0 e

calcolane il quadrato x*x: fermati appena tale

quadrato supera N. Il precedente numero

considerato (x-1) è il risultato.

Esercitazioni di Fondamenti Informatica - Modulo A 9

Page 10: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Scrivere un programma C che calcoli la somma di

una sequenza di numeri interi inseriti da tastiera.

L’inserimento e il calcolo devono essere eseguiti

finché il numero digitato è maggiore di -1.

Nel caso il numero inserito sia <= -1 il programma

deve stampare a video la somma di tutti i numeri

inseriti.

Esercitazioni di Fondamenti Informatica - Modulo A 10

Page 11: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Scrivere un programma C che prende in ingresso un

numero intero N compreso tra 0 e 30.

Il programma deve stampare a video:

tutti i numeri pari maggiori di 0 e minori di N

tutti i numeri dispari maggiori di N e minori di 30

Esercitazioni di Fondamenti Informatica - Modulo A 11

Page 12: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Scrivere un programma C che prende in ingresso da

tastiera un intero N.

Il programma deve poi calcolare la somma di una

sequenza di interi presa in ingresso da tastiera.

L’inserimento deve fermarsi quando la somma è

maggiore o uguale al valore N.

Il programma deve infine stampare a video la

somma calcolata e la differenza tra la somma e il

numero N.

Esercitazioni di Fondamenti Informatica - Modulo A 12

Page 13: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Scrivere un programma C che calcoli la radice

quadrata (intera) di un naturale N.

Considerare un intero x dopo l’altro a partire da 0 e

calcolarne il quadrato x*x: fermarsi appena tale

quadrato supera N. Il precedente numero

considerato (x-1) è il risultato.

Si facciano tre versioni del programma, usando in

ciascuna un tipo di ciclo diverso

Esercitazioni di Fondamenti Informatica - Modulo A 13

Page 14: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Scrivere un programma che prende in ingresso una

sequenza di numeri positivi e negativi interrotta da

0.

Quando viene inserito 0 il programma deve

calcolare la media di tutti i numeri positivi inseriti.

Quale ciclo conviene usare? Provare con tutti i tipi

di ciclo conosciuti (while, do-while, for).

Esercitazioni di Fondamenti Informatica - Modulo A 14

Page 15: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

Progettare e Codificare in C un programma che:

Chieda in ingresso un intero N

Stampi a video la tavola pitagorica per i fattori fino

a N compreso.

Si utilizzi il tipo di ciclo ritenuto più adeguato.

Esempio:

Per N=4 stampa:

Esercitazioni di Fondamenti Informatica - Modulo A 15

Page 16: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

NB: Per i futuri esercizi si usi il tipo di ciclo ritenuto più adeguato.

Esercizio 8

Dato un numero reale N e uno intero M, calcolare la potenza di N^M con M>=0 (senza utilizzare l’istruzione pow). Si usi il tipo di ciclo

ritenuto più adeguato.

Variante: supporre che M possa assumere valori negativi.

Esercizio 9

Scrivere un programma C che calcoli la somma di due numeri tramite

i cicli iterativi utilizzando solo l’operazione di incremento (operatore

++), supponendo quindi di non avere a disposizione l’operatore di

somma. Si usi il tipo di ciclo ritenuto più adeguato.

Esercitazioni di Fondamenti Informatica - Modulo A 16

Page 17: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

NB: Per i futuri esercizi si usi il tipo di ciclo ritenuto più adeguato.

Esercizio 10

Dato un numero di righe N, disegnare sullo schermo la seguente

figura (esempio per N=5):

Esercitazioni di Fondamenti Informatica - Modulo A 17

Page 18: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

NB: Per i futuri esercizi si usi il tipo di ciclo ritenuto più adeguato.

Esercizio 11

Calcolare iterativamente

Il numero di addendi (corrispondenti alla precisione del calcolo)

dovrà essere dato in input prima dell’esecuzione del calcolo.

Ad ogni iterazione stampare il valore corrente di 𝜋.

Ad esempio:

1. pi = 4

2. pi = 2.666...

3. pi = 3.466...

4. ....

Esercitazioni di Fondamenti Informatica - Modulo A 18

Page 19: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

NB: Per i futuri esercizi si usi il tipo di ciclo ritenuto più adeguato.

Esercizio 12

Progettare e codificare il programma in C che legga da terminale una

sequenza di interi positivi e negativi terminati dal valore 0 e stampi

per ognuno di essi l’opposto, il reciproco e il modulo.

Esercizio 13

Scrivere un programma C che, dato un numero intero N, calcoli il

fattoriale di tutti i numeri interi minori o uguali a N. Si usi il tipo di

ciclo ritenuto più adeguato.

NOTA: il fattoriale di N è il risultato della moltiplicazione di tutti i

numeri minori e uguali a n.

Es.:

3! (3 fattoriale) = 1 * 2 * 3 = 6

Esercitazioni di Fondamenti Informatica - Modulo A 19

Page 20: Esercitazioni di Fondamenti Informatica - Modulo A · Esercitazioni di Fondamenti Informatica - Modulo A 11 Scrivere un programma C che prende in ingresso da tastiera un intero N

NB: Per i futuri esercizi si usi il tipo di ciclo ritenuto più adeguato.

Esercizio 14

Realizzare un programma C che, chiesto all’utente un numero

intero pari a N, ricavi e stampi a video tutte le terne pitagoriche

con i cateti minori o uguali ad N.

Una terna pitagorica è formata da tre numeri naturali (a, b, c)

tali che a2 + b2 = c2. Esempio 3,4,5 -> (9+16=25).

N.B. : Calcolare solo le terne in cui a<b.

Esercitazioni di Fondamenti Informatica - Modulo A 20