Prova Intermedia di
Laboratorio
Esercizi proposti
Come affrontare questi esercizi.
Si consiglia di leggere gli esercizi e pensare ad un programma
C che li risolve "a tavolino" prima di recarsi in
laboratorio, eventualmente provando a svolgere manualmente la
traccia dellesecuzione. Potete lavorare da soli o a piccoli
gruppi di due-tre persone, secondo le vostre abitudini, ma
e importante non appoggiarsi interamente al lavoro altrui,
soprattutto se nel gruppo e presente una persona piu
esperta.
Per chi non frequenta le lezioni, si consiglia di iniziare a
svolgere esercizi dopo aver compreso gli esempi di programmi C
diffusi come materiale supplementare (primo
file e secondo file), che possono
fornire una traccia per la soluzione di problemi analoghi.
Esercizi senza uso di array
Sviluppare i programmi seguenti supponendo che i dati in
ingresso siano digitati correttamente (cioe non e
necessario includere controlli di validita).
- Scrivere un programma che dato un intero ne visualizza il
quadrato ed il cubo.
- Scrivere un programma che dato un reale ne visualizza il
quadrato, la meta e i 3 settimi.
- Si consideri una sequenza di 5 interi, scrivere un
programma che ne calcola la media (senza memorizzarli)
- Si sviluppi un programma che esegue le seguenti
operazioni:
* legge un intero, detto n,
** legge n reali dati in sequenza
*** scrive la somma di tutti i reali letti.
- Come sopra, ma scrivere il massimo valore reale letto
- Come sopra, ma scrivere quanti tra i numeri letti sono
maggiori di pigreco (approssimato come 3.14159)
- Si sviluppi un programma che:
* legge una sequenza arbitrariamente lunga di interi
positivi (che sara terminata da uno zero o
negativo),
** per ciascun valore letto, che rappresenta un prezzo
espresso in euro, scrive il corrispondente in lire prima
di leggere lintero successivo (1 euro=1936,27
lire),
*** termina dopo la lettura di un valore zero o negativo.
- Come sopra, ma il prezzo in lire non deve contenere
decimali.
Si raccomanda inoltre
- di provare ogni programma con diversi dati in ingresso,
- di provare se esistono piu modi ugualmente validi
di digitare i dati in ingresso,
- di provare combinazioni errate di dati in ingresso per
verificare il tipo di messaggi eventuali di errore,
- di introdurre consapevolmente errori nei programmi che
risolvono gli esercizi per verificare le modalita
di segnalazione di errore da parte del compilatore C.
Esercizi con uso di array
- Scrivere un programma che legge una sequenza di 10 interi
e
* li memorizza in una array a,
** ne calcola il quadrato di ciascuno e lo memorizza
nella posizione di indice corrispondente in una array b,
*** ne calcola analogamente il cubo, memorizzandolo in
una array c
**** visualizza il contenuto di b e di c
- Se la soluzione dellesercizio precedente contiene
piu di due istruzioni cicliche (for o while)
sviluppare una soluzione dellesercizio precedente
che non contenga piu di due istruzioni cicliche
(for o while). Eventualmente visualizzare le informazioni
in ordine diverso, o andando a capo con criteri diversi.
- Si consideri il programma sviluppato come soluzione
dellesercizio precedente e si sostituisca ogni
ciclo for con un ciclo while (o viceversa).
- Si consideri una sequenza di 5 interi, scrivere un
programma che
* li memorizza in un array a,
** ne calcola la media, il massimo ed il minimo.
- Si dichiari una array a di interi, dimensionandola a 100.
Si sviluppi un programma che esegue le seguenti
operazioni:
* legge un intero, detto n, e se n e compreso tra
1e 100
** legge altri n interi dati in sequenza e li memorizza
in a, quindi visualizza il contenuto di tutte e 100 le
posizioni di a
*** se invece n e minore di 1, oppure
emaggiore di 100, scrive un messaggio di errore.
- Come sopra, ma scrivere soltanto
* il contenuto delle n posizioni effettivamente riempite,
e
** il massimo valore intero letto
- Come sopra, ma scrivere soltanto quanti tra i numeri
letti sono pari e quanti sono dispari
E se proprio non sapete piu cosa fare,
- inserite nei programmi precedenti i controlli di
validita sui dati in ingresso,
- migliorate la visualizzazione dei dati,
- identificate porzioni di programma che potrebbero essere
utili altrove e trasformatele in funzioni,
- visualizzate la traccia delle operazioni compiute dal
programma in modo comprensibile,