vuoi
o PayPal
tutte le volte che vuoi
RHALIOUCHE YASMINE BIOINGEGNERIA 2024
* = (caratteri jolly) indica qualsiasi combinazione di caratteri (Es. ls c* > stamperà a
video l’elenco di file nella cartella che iniziano per c), indico qualsiasi sequenza di 0 o più
caratteri che compaiono all’interno del nome (Es. cd compit* > per specificare una
qualunque sequenza di caratteri anche nei nomi delle cartelle e funziona solamente se vi
è un’unica cartella con il nome usato).
? = (caratteri jolly) utilizzato all’interno di un file per indicare che mi interessano tutti i file
che contengono i caratteri digitati da noi e ancora un carattere dopo (Es. ls ciao? > vanno
bene ciao0 o ciao1, ma non ciao11 o ciao12).
tree = stampa a video la struttura del file system, partendo dalla posizione in cui ci
troviamo, ossia dalla cartella corrente in giù;
tree .. = mi da l’albero partendo dalla cartella superiore;
tree / = mi fa vedere tutto il file system, quindi tutte le cartelle del sistema operativo.
mkdir = crea una cartella e vuole obbligatoriamente essere seguito dal nome della
cartella che voglio creare mkdir <directory>.
rmdir = cancellare una directory e vuole obbligatoriamente essere seguito dal nome
della directory che voglio eliminare rmdir <directory> (non possiamo cancellare una
cartella se non vuota).
cp = copiare un file, ovviamente deve essere seguito dal nome del file che
vogliamo copiare e il nome del file che voglio creare come copia di quello (deve
avere un nome diverso) cp <file1> <file2>;
comando di accodamento >> cat = per evitare sovrascrizioni, accoda il
contenuto del file che si vuole copiare in un altro file
cp file1 file2
cat file3>> file 2 (permettendoci di avere in file2 sia il contenuto di file 1 che
quello di file3);
cp nome del file che voglio copiare + nome della directory in cui voglio
posizionare la copia = crea la copia di un file, posizionandola in una cartella
diversa, ma mantenendo lo stesso nome cp file1 [file2 ..] <directory>;
cp -R = copia ricorsiva di file, ovvero copia un’intera cartella e deve essere
seguito dal nome della cartella che si vuole copiare e dal nome di quella in cui
vogliamo che il contenuto venga copiato cp -R
directory1 directory2.
mv = usato per effettuare due operazioni:
spostare un file da una cartella ad un’altra: il comando è seguito dal nome del file
che si vuole spostare, e il nome della cartella dove si vuole spostarlo mv file
directory;
rinominare un file: il comando è seguito dal nome del file che si vuole rinominare e
il nuovo nome che gli si vuole dare mv file file1.
rm = rimuovere definitivamente il file o i file elencati dopo il comando rm file1
[file2...];
rm -i nome file: per essere sicuri della richiesta di conferma, per la rimozione di un
file.
history = mostra tutti i comandi forniti in precedenza fino a quel momento (può
essere fatto anche usando le frecce della tastiera).
!! = richiama l’ultimo comando dato;
!! può essere dato seguito da una lettera, così che richiami l’ultimo comando
che comincia con quella lettera (!! c darà ad esempio cd).
RHALIOUCHE YASMINE BIOINGEGNERIA 2024
Ctrl + C = interrompe l’esecuzione di un programma;
Ctrl + S = blocca l’output che scorre sullo schermo;
Ctrl + Q = sblocca l’output bloccato con Ctrl + S.
fdi start = primo comando da dare dopo aver aperto SSH CODE, apre l’ambiente
di lavoro.
fdi stop = ritorna al terminale.
Dopo aver dato il comando fdi start e quindi aver avuto accesso all’ambiente di
programmazione, dò il comando micro seguito dal nome del file.c, per poter
aprire l’editor. Mentre micro seguito dal nome di file già esistente, apre quel
file per permettere eventuali modifiche (Ctrl + S: per salvare – Ctrl + Q: per
uscire).
hello.c
PRIMA COSA ANDARE NELL’EDITOR E DIGITARE micro nomefile.c (ex. micro hello.c), SUCCESSIVAMENTE SI APRIRÀ L’EDITOR
IN CUI SCRIVEREMO QUESTO PROGRAMMA.
#include <stdio.h>
/* La funzione main deve essere sempre presente e specifica il punto di
* inizio dell'esecuzione del programma.
*/
int main()
{ // questo è un commento "inline", si estendono fino a fine riga (andata a capo)
puts("Hello, world!"); // ricordare il punto e virgola dopo l'istruzione
}
I commenti si indicano con /* (in apertura) e */ (in chiusura).
printf o puts = sono funzioni analoghe, che fanno operazioni di stampa, sono simili ma
non identiche; e sono presenti in una libreria, per poterle usare va inserita una riga di
codice detta direttiva (#include <stdio.h>).
main = prima funzione del programma ad essere eseguita, in essa sono contenute le
funzioni eseguite nel programma int main(); DEVE SEMPRE AVERE UN NOME ED ESSERE
SEGUITA DA UNA COPPIA DI PARENTESI (), che eventualmente racchiuderanno i
parametri della funzione. Nel nostro caso non riceve parametri, ma restituisce un valore,
dichiarato subito prima da int (intero), che contiene una serie di istruzioni che devono
essere racchiuse tra parantesi {}, in C servono a delimitare quelle che vengono chiamate
porzioni di codice e anche quello che viene chiamato corpo di una funzione (una
funzione è definita da un nome, corpo – sequenza di istruzioni e racchiuso da parentesi
graffe).
puts("Hello, world!") = stampa a video la scritta “Hello, world!”.
return = è l’istruzione che ogni istruzione che viene scritta dovrebbe contenere e, nel
caso della funzione main, essa deve proprio restituire un valore intero > lo 0 è una
‘l’esecuzione terminata con successo’
costante intera (ovvero significa ). In caso
diverso da 0,
terminasse con un valore significa che vi è un errore nella sua esecuzione.
Ogni istruzione scritta nel linguaggio C, deve necessariamente essere terminata da un
carattere particolare, che è ;.
- RECAP
commento: illustra l’obbiettivo del programma;
direttiva (include): stdio.h),
serve a includere il file di intestazione ( che è il file che
printf
serve al compilatore, perché nel programma viene fatto uso della funzione o
puts;
main: definizione della funzione principale
ossia la , che contiene due istruzioni;
RHALIOUCHE YASMINE BIOINGEGNERIA 2024
printf: l’istruzione di stampa a video,
è che può essere fatta anche con la funzione
puts;
l’istruzione che torna il valore di uscita della funzione .
\n = è un’indicazione che dice di stampare il messaggio e poi andare a capo.
control + s = per salvare il programma.
Una volta salvato il programma, si va alla finestra del ‘Terminale’ e si invoca il compilatore con:
gcc -Wall -o hello.out // nome dato per l’eseguibile hello.c // nome del file sorgente, ovvero del programma scritto
gcc = è un commando che va seguito dal nome del programma da compilare.
nome.out = indica l’eseguibile ottenuto dopo la compilazione. È un file non
stampabile, bensì solo eseguibile. ./hello.out).
./ = comando per eseguire l’eseguibile (ex.
printf è necessario mettere tra le (“”) anche il \n con il
Quando si usa la , mentre
puts no perché va direttamente a capo. rilevare se non ci
gcc -Wall seguito dal nome del file sorgente = serve a
sono errore nel nostro programma, che possono essere warnings (che non
impediscono la realizzazione della versione eseguibile del programma) o fatal
error (che impediscono la genesi del file eseguibile), a sua volta si suddivide in
(errori del tipo dimenticare il ; alla fine della riga, o le “ “ nella scrittura
sintattici
di una stringa da stampare a video ) e semantici (errori che contemplano un uso
scorretto degli elementi del programma). Mentre gli errori logici indicano gli
errori dell’algoritmo che abbiamo implementato e quindi il compilatore (non
vengono rilevati in modo automatico, come quelli citati in precedenza, perché
l’errore non sta nel codice che è stato scritto, ma nel modo in cui è stato
concepito e implementato l’algoritmo).
-o = indica qual è il nome dell’eseguibile da generare e SE NON VIENE
UTILIZZATO NESSUNO ESEGUIBILE VERRÀ DENOMINATO AUTOMATICAMENTE
a.out.
echo $? = stampa a video il valore restituito dell’ultimo comando eseguito.
Conversione di valute
Il file può essere compilato con gcc -Wall -o valuta valuta.c e eseguito con il
comando ./valuta
#include <stdio.h>
int main()
{
/* dichiarazione delle variabili utilizzate nel programma */
double euro = 123.10; // valore da convertire
double cambio_euro_dollaro = 1.18213; // tasso di cambio
double dollari; // variabile per memorizzare il risultato
/* conversione da euro a dollari */
dollari = euro * cambio_euro_dollaro;
/* stampa dei risultati */
printf("Importo in euro : %.2f\n", euro);
printf("Importo in dollari : %.2f\n", dollari);
}
RHALIOUCHE YASMINE BIOINGEGNERIA 2024
La prima parte usa la direttiva #include per specificare le librerie necessarie alla
seconda parte, e viene specificata con:
#include <stdio.h>
La funzione main invece contiene le istruzioni per effettuare i calcoli, dove sono
dichiarate per esempio la double (ovvero l’importo in euro e il tasso di cambio).
Alla fine, vengono stampati a video i risultati, utilizzando la funzione printf, e il
programma termina.
Calcolo dei resti
#include <stdio.h>
int main()
{ int importo = 123;
int b50, b20, b10, b5, m2, m1;
int resto;
/* calcolo del numero di monete e banconote */
b50 = importo / 50; // numero di banconote da 50 euro
resto = importo % 50;
b20 = importo / 20; // numero di banconote da 20 euro
resto = importo % 20;
b10 = importo / 10; // numero di banconote da 10 euro
resto = importo % 10;
b5 = resto / 5; // numero di banconote da 5 euro
resto = importo % 5;
m2 = resto / 2; // numero di monete da 2 euro
m1 = resto % 2;
/* stampa del numero di banconote calcolate */
printf("Importo totale : %d euro\n", importo);
printf("%d banconote da 50 euro\n", b50);
printf("%d banconote da 20 euro\n", b20);
printf("%d banconote da 10 euro\n", b10);
printf("%d banconote da 5 euro\n", b5);
printf("%d monete da 2 euro\n", m2);
printf("%d monete da 1 euro\n", m1);
return 0;
}
Uso degli operatori in forma abbreviata
dato = dato OP valore
dato OP= valore
Le due seguenti espressioni sono equivalenti, dove la seconda espressione usa
l’operatore OP in forma abbreviata. L’operatore OP può essere uno tra i vari operatori del
C.
per esempio,
resto = resto % 10;
resto %= 10;
sono equivalenti.
Sono molto utili per incrementi: