N.B. evidentemente, i comandi per l' interprete di comandi presuppongono di lavorare in ambiente UNIX nativo o in emulazione. Chi eseguisse questi esercizi in ambiente Windows senza emulatore, dovra' cercare nella documentazione windows come ottenere le stesse funzionalita'.
-
Creare una directory di nome uguale al proprio cognome (nelle righe
sequenti la denoteremo come cognome). (Suggerimento: se si lavora
con l' interprete grafico linux aprire una finestra terminale oppure da
Windows aprire una connessione remota (ssh), quindi usare il comando apropos
per trovare il nome del possibile comando. Infine man nomecomando
permette di avere tutte le informazioni sul comando).
-
In una finestra terminale usare comandi di linea per ridefinire cognome
come
directory di default ( comando: cd cognome )
-
Creare mediante l' editor un file di testo di nome primo.c contenente il
seguente programma C che legge un carattere in input dalla tastiera
e lo mostra su schermo. Per chi lavora in ambiente di linea
e non ha gia' un editor "preferito" si suggerisce picocome
strumento semplice ma estremamente facile da utilizzare (tutte le istruzioni
per l' utilizzo sono recuperabili dalle due righe in basso nella finestra).
#include <stdio.h>
int main()
{
char input;
scanf("%c",&input);
printf(" %c \n",input);
return 0;
}
Verificare con in comando ls quali sono i files presenti nella directory.
Compilare il programma con il comando
gcc -ansi -pedantic primo.c
-
Verificare di nuovo mediante il comando ls quali files
sono presenti nella directory corrente. Usare il
comando
ls -l
per avere un' informazione piu' dettagliata sulle proprieta' dei files
presenti.
-
Provare a guardare con l' editor il contenuto del file a.out creato
dal compilatore C. Cosa si vede ? Perché ?
-
Cambiare il nome del file a.out in primo.x. (Scoprire come farlo
e' parte dell' esercizio).
-
Eseguire il file primo.x digitandone il nome (eventualmente preceduto da
./ che e' il modo per indicare che il file in questione risiede nella
directory corrente), Es: ./primo.x ) e premendo "invio".
Attenzione, quando il programma viene eseguito, la prima istruzione "aspetta"
silenziosamente un input da tastiera. L' input termina quando si preme
il tasto "invio".
-
Modificare il programma precedente in modo che scriva su schermo un' informazione
sul fatto che e' in attesa di input. Ricompilare ed eseguire.
ATTENZIONE:
si puo' fare in modo che il compilatore generi il file eseguibile direttamente
con un nome assegnato (invece del default a.out) mediante l' istruzione
gcc -ansi -pedantic -o primo.x primo.c
-
Scrivere un programma
C che risolva l' equazione generica di primo grado a coefficienti reali ( ax+b = 0).
Compilare ed eseguire il programma con input diversi e verificare i risultati
ottenuti.
Nella lettura e scrittura di dati reali, le istruzioni scanf e printf richiedono un descrittore di conversione %f (o %e) invece di %c, come nel programma primo.c, o di %d, come nel caso di lettura e scrittura di interi (cfr. quanto detto a lezione).
-
Scrivere un programma che legga un valore di x (reale) e calcoli il valore
della funzione 1/x. Utilizzare il programma per studiare
il limite della funzione per x -> 0. Che succede ?
(Suggerimento: per immettere
valori reali molto grandi o molto piccoli e' preferibile usare la notazione scientifica per le costanti: 2.3 1035 in C si scrive 2.3e35, 7 10-23 diviene 7e-23)
-
Qual è il risultato delle seguenti espressioni ? Provare a fare delle previsioni e metterle per iscritto. Poi se ne dovra' controllare la correttezza scrivendo un programma C che le implementi e scriva i risultati.
float a,b,c,d,e,f,g,h,i;
int p,q,r,s,u,w;
a=2.0;
b=1;
c=3.9;
p=2;
q=3;
d=a/b+c;
e=b/c+a;
f=p/q;
g=p/q*q/p;
r=a/c*c/a;
u=(a/c)*(c/a);
s=(p/q)*(q/p);
w=c*(1/2);
h= (a*c < p*q);
i= h && ( q%p );
-
Il seguente frammento di codice dovrebbe calcolare la somma dei primi 10 interi ma contiene un errore di programmazione. Inserirlo in un programma C, compilarlo, eseguirlo e trovare l' errore.
Modificare il programma in modo che calcoli e stampi la somma dei primi 15 quadrati di interi.
int somma=0, i;
for(i=0;i<=10;i++);
somma += i;