-
Aprire la shell o terminale. Ricordiamo che la shell non è altro che un interprete di comandi, in particolare dei vostri e che quindi
-
stampa un prompt >
-
legge un comando scritto dall'utente e terminato con enter/return/invio
-
esegue il comando o segnala un errore se non è in grado di completarlo
-
Creare una cartella o directory
Laboratorio
con il comando UNIX
mkdir Laboratorio (mkdir sta per make directory)
- Entrare nella nuova cartella con il comando
cd Laboratorio (cd sta per change directory)
-
Creare una cartella o directory
Esercitazione_i
con il comando UNIX
mkdir Esercitazione_i per l'i-esima esercitazione
- Entrare nella nuova cartella con il comando
cd Esercitazione_i
-
Si
utilizzerà preferibilmente l'editor
geany per
scrivere tali
programmi, lanciandolo dalla linea di comando della shell o terminale:
geany
<nomefile>.c &
N.B. L'utilizzo del simbolo &
consente di tenere aperta la shell, anche dopo aver lanciato l'editor geany.
-
Per compilarli (ovvero per tradurre il file <nomefile>.c dal C al linguaggio macchina, creando il file eseguibile <nometarget>)
si useranno i comandi, sempre dalla shell o terminale:
-
gcc -o
<nometarget> <nomefile>.c
perché il file compilato venga messo nel
file
<nometarget>
.
Con questo sistema avremo un file eseguibile per ogni file sorgente.
-
gcc
<nomefile>.c perché il file compilato
venga messo nel file
a.out.
Con questo sistema tutti i file eseguibili risultati dalla compilazione vengono trascritti sullo stesso file a.out.
-
Infine, per eseguire il file eseguibile < nometarget>, ottenuto dalla compilazione, usare il comando
./<nometarget>.
Per ulteriori approfondimenti su UNIX, vedi la seguente
sintesi.
ESERCIZI
Esercizi sulle funzioni
-
Scrivere una funzione che accetti in ingresso tre valori x, a e b e verifichi che x è compreso nell'intervallo [a,b].
Scrivere quindi una funzione main() per collaudare la funzione implementata.
-
Scrivere una funzione con quattro parametri a, b, c, x reali che restituisce
il risultato della funzione a x2 + b x + c.
Scrivere quindi una funzione main() per collaudare la funzione implementata.
-
Scrivere una funzione che riceve i coefficienti a, b, c reali di un'equazione di secondo grado e restituisce 1 se l'equazione ha soluzioni reali e 0 altrimenti.
Scrivere quindi una funzione main() per collaudare la funzione implementata.
-
Scrivere una funzione che riceve un parametro di tipo char e restituisce il carattere successivo.
Scrivere quindi una funzione main() per collaudare la funzione implementata.
Esercizi sugli array
-
Scrivere un programma che riempie due array con interi forniti
dall'utente, e calcola e stampa la matrice prodotto vettore, cioè
una matrice n x m le cui righe sono ottenute moltiplicando l'i-esimo numero del primo array per tutti i numeri del secondo. Ad esempio, se n = 3, m = 2, il primo vettore contiene (4,7,1) ed il secondo (5,7), allora la matrice prodotto vettore sarà:
-
In un quadrato magico (vedi esempio), la somma dei numeri presenti in ogni riga, in ogni colonna e in entrambe le diagonali dà sempre lo stesso numero, detto somma magica.
Scrivere un programma che crea una matrice quadrata di interi e determina se la matrice rappresenta o meno un quadrato magico.
-
Utilizzate un array per risolvere questo problema: leggete 20 numeri compresi tra 10 e 100. Per ogni numero letto, visualizzatelo solo se esso non è già stato immesso in precedenza.
-
Scrivere un programma che legga da tastiera un array di interi ordinato
(in ordine non decrescente). Se l'array è effettivamente ordinato si deve stampare il numero di interi distinti in esso contenuti.
-
Scrivere un programma che
- legge una sequenza di 50 caratteri;
- rimpiazza nella sequenza tutti i caratteri non alfanumerici con uno spazio;
- stampa la sequenza modificata.
-
Scrivere un programma che legge in input un array ordinato di numeri interi
(in questa fase si devono rifiutare gli input che non rispettano l'ordinamento), quindi chiede all'utente quale valore vuole cercare nell'array e ne effettua la ricerca utilizzando l'algoritmo di ricerca binaria (questo algoritmo consiste nel suddividere l'array in due metà e nel restringere la ricerca solo alla metà in cui il valore da cercare deve necessariamente trovarsi, se è presente nell'array).
-
(*) Scrivere un programma che
- legge una sequenza di 50 caratteri;
- rimpiazza nella sequenza tutti i caratteri non numerici con uno spazio;
- stampa la sequenza modificata indicando da quante cifre e quanti numeri è composta.
-
Sia n un intero. Sia S la sequenza 0, 1, ..., n. L'utente elimina uno ed
uno solo degli n + 1 elementi di S e poi inserisce gli elementi rimanenti in un qualche ordine a suo piacimento.
Scrivete un programma che determini l'elemento mancante. Progettate diverse soluzioni, partendo dalla più semplice, cercando via via di utilizzare sempre meno memoria per ottenere il risultato.
In particolare:
- Progettate una soluzione che funzioni memorizzando la sequenza in input.
- (*) Progettate una soluzione che funzioni senza memorizzare la sequenza in input.