Fondamenti di Informatica
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1
FONDAMENTI DI INFORMATICA
Prof. PIER LUCA MONTESSORO
Facoltà di Ingegneria Università degli Studi di Udine
Linguaggio C
Esercizi sulle strutture di controllo
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà dell’autore prof. Pier Luca Montessoro, Università degli Studi di Udine.
Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.
Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell’autore.
L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione).
In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide.
In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.
Nota di Copyright
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3
Equazione di secondo grado
• Si scriva un programma in linguaggio C che legga da tastiera i parametri a, b e c di un’equazione di secondo grado e ne stampi le radici:
2 + bx + c = 0 ax
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4
Elevamento a potenza
• Si scriva un programma in linguaggio C che legga da tastiera due numeri interi a e b e stampi a b effettuando il calcolo mediante moltiplicazioni successive.
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 5
Fattoriale
• Si scriva un programma C che legga da tastiera un numero n e stampi n!
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 6
Successione di Fibonacci
• La successione di Fibonacci è cosí definita:
F 0 = 0 F 1 = 1
F n = F n-1 + F n-2
• Si scriva un programma C che legga da
tastiera n e stampi i numeri di Fibonacci
da F 0 a F n .
Fondamenti di Informatica
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 2
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 7
Conta i favorevoli
• Si scriva un programma per una votazione: il programma legge da tastiera un voto alla volta, finché non viene inserito il carattere ‘X’ (eXit) e stampa il numero dei favorevoli, il numero dei contrari e il numero degli astenuti.
Voto favorevole: f, F, s, S, y, Y Voto contrario: c, C, n, N Voto astenuto: a, A, -
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 8
Massimo e minimo
• Scrivere un programma per calcolare il massimo tra n numeri interi inseriti da tastiera
• Scrivere un programma per calcolare il minimo tra n numeri interi inseriti da tastiera
• Scrivere un programma per calcolare il massimo e il minimo tra n numeri interi inseriti da tastiera
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 9
Massimo e secondo massimo
• Scrivere un programma per calcolare il massimo e il secondo massimo tra n numeri interi inseriti da tastiera
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 10
Ricerca di un valore (I)
• Si scriva un programma che cerchi un valore dato in una sequenza di numeri interi inseriti da tastiera (si assuma che il primo numero rappresenti la
lunghezza della sequenza) e stampi se il numero è stato trovato oppure no
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 11
Ricerca di un valore (II)
• Si scriva un programma che cerchi un valore dato in una sequenza di numeri inseriti da tastiera (si assuma che il primo numero rappresenti la lunghezza della sequenza) e stampi quante volte il numero è stato trovato
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 12
Ricerca del valore più vicino
• Si scriva un programma che cerchi in una sequenza di numeri interi inseriti da tastiera (si assuma che il primo numero rappresenti la lunghezza della
sequenza) quello di valore più vicino ad
un numero dato e lo stampi
Fondamenti di Informatica
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 13
Lettura di un numero intero
• Si scriva un programma per leggere da tastiera un numero intero positivo in base 10 e memorizzarlo in una variabile.
• Il numero è introdotto cifra per cifra e letto con la funione getchar(), e quindi ogni
operazione di input restituisce il codice ASCII di una cifra del numero, ovviamente a partire da quella più significativa. Il numero termina con il codice ASCII “carriage return” ('\n').
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 14
MCD
• Si scrivano due programmi C per calcolare il massimo comun divisore tra due numeri inseriti da tastiera
utilizzando due diversi algoritmi:
– decrementi successivi – metodo di Euclide
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 15
MCD (m, n) mediante decrementi successivi
MCD = minimo tra m ed n
controlla se m e n sono entrambi divisibili per MCD:
se sì, stampa e termina;
se no, decrementa di 1 MCD e ripeti (finché MCD non diventa 1)
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 16
MCD (m, n) tramite il metodo di Euclide
n1 = n;
m1 = m;
while (n1 è diverso da m1) {
sottrai dal maggiore tra n1 e m1 l’altro numero
}
alla fine del ciclo n1 (o m1, avendo lo stesso valore) è il MCD
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 17
Radice quadrata con il metodo di Newton
n1 = n; /* n è il radicando */
n2 = 1;
while (|n1 - n2| è maggiore della precisione cercata) {
n1 = (n1 + n2) / 2;
n2 = n / n1;
}
• Si scriva un programma C per calcolare, tramite il metodo di Newton, la radice quadrata di un intero n.
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 18
wc
Si scriva il programma wc.c che implementa il comando wc di UNIX.
Esso conta il numero di linee, parole, caratteri letti dallo “standard input” (la tastiera).
Il testo sia terminato da CONTROL-D (EOF).
NOTA: in alcuni ambienti EOF è associato a
CONTROL-Z
Fondamenti di Informatica
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4
Fondamenti di Informatica - Esercitazioni
© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 19