Esercitazioni di Fondamenti Informatica - Modulo A 1
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
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
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-expression opt ; loopexpression 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 a 2 + b 2 = c 2. Esempio 3,4,5 -> (9+16=25). N.B. : Calcolare solo le terne in cui a<b. Esercitazioni di Fondamenti Informatica - Modulo A 20