//… /*…*/
Queste due notazioni vengono usate per scrivere un commento all’interno del codice. I comenti sono inseriti
per documentare i programmi e migliorare la leggibilità degli stessi. Vengono ignorati dal compilatore C e
non inducono la generazione di alcun codice.
Prima di scrivere un qualsiasi programma, è importante includere all’interno del codice opportune funzioni
standard, fondamentali per l’esecuzione del codice da parte del compilatore.
Tutto ciò può essere fatto tramite il comando #include <…>. Una libreria che non può mai mancare
all’interno di un programma C è: #include <stdio.h> (“standard input/output”) contenente le funzioni
preimpostate fondamentali per la programmazione in C.
Le { } sono i confini della scrittura del nostro codice ed opereremo sempre all’interno di esse. La porzione di
programma racchiusa in esse è spesso detta blocco.
Quando si inizia a scrivere un programma, è importante partire sempre da una funzione principale (che verrà
eseguita per prima).
main () {…} all’interno delle parentesi graffe troveremo il blocco di costruzione del programma chiamato
funzione (principale in questo caso). All’interno delle parentesi tonde invece, generalmente
troviamo gli input della funzione.
I programmi in C possono contenere una o più funzioni, tuttavia una deve essere sempre la funzione main ().
Una funzione (o sottoprogramma) che posso chiamare quando mi serve si scrive in questo modo:
1. Trovare il nome per la funzione
2. Indicare tra le parentesi un parametro di input formale preceduto dal suo tipo di dato
3. Indicare prima del nome della funzione il tipo di dato che mi aspetto di avere come output.
ESERCIZIO:
#include <stdio.h>
#include <math.h>
float radiceq (float y) {
float z, epsilon = 0.0001;
z = y;
while (fabs(z*z - y) > epsilon) { /*fabs indica la funzione valore assoluto*/
z = (z + y/z)/2;
}
return z;
}
main() {
printf("%f\n", radiceq(2));
}
Compilazione
Il processo di compilazione, è la traduzione di una serie di istruzioni scritte in un determinato linguaggio di
programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto).
Come compilatore ci serviremo del terminale di Linux. Di seguito troviamo alcuni dei comandi più
importanti:
cd nome_cartella/ consente di cambiare la directory corrente in quella indicata;
cd .. porta alla directory superiore (o padre);
cd ~ porta nella directory home;
Comando di esecuzione
Per Linux è disponibile un compilatore integrato C/C++: questo può essere richiamato tramite i comandi gcc
(per il C) e g++ (per il C++)
1. Accedi alla directory in cui hai salvato il codice sorgente del programma da compilare;
2. Digita il comando: gcc nome_programma.c -o nome_assegnato_al_file_compilato;
3. Esegui il file del programma appena compilato: ./nome_assegnato_al_file_compilato.
Tipi di dato
Quando introduco un dato devo sempre dire che tipo di dato sto immettendo e dove andrà memorizzato.
Esistono vari tipi di dato, tuttavia tutti possono essere ricondotti a due specifiche famiglie: atomici (non
divisibili) e strutturati (tipi di dato composti da più dati atomici).
Il tipo booleano ha due soli valori: true ("vero") e false ("falso"). Essi vengono utilizzati in modo speciale
nelle espressioni condizionali per controllare il flusso di esecuzione e possono essere manipolati con gli
operatori booleani AND, OR, NOT e così via.
I tipi di dati numerici includono i numeri interi (int) e i numeri razionali in virgola mobile (float a
precisione singola 32bit o double a precisione doppia 64 bit).
per definire il grado di precisione (in particolar modo per quando riguarda i float) bisogna utilizzare la
notazione %.nf con n uguale al numero delle cifre che voglio visualizzare dopo la virgola.
Se andiamo oltre l’intervallo di bit possibili per ogni tipo di dato il compilatore non ci darà un errore, bensì
un valore di output diverso da quello previsto.
Funzione printf()
La funzione printf(), permette di visualizzare sul terminale una stringa di caratteri.
Sequenza di escape
Il carattere backslash (/) è detto carattere di escape. Esso indica alla printf che dovrà fare qualcosa fuori
dall’ordinario. Nel momento in cui avrà incontrato un backslash in una stringa, il compilatore guarderà il
carattere succesivo e lo unirà con il backslash per formare una sequenza di escape.
Funzione scanf()
La funzione scanf permette al compilatore di leggere e salvare data immessi dalla tastiera.
scanf(“%d”,&int1); “%d” è la stringa di controllo del formato (in questo caso intero decimale). Inserire
il tipo di dato serve per far capire al compilatore quanta memoria dovrà riservare per
eseguire tale programma e che tipo di dato l’utente scriverà sulla tastiera.
& è l’operatore di indirizzo. Questo collega la variabile (in questo caso int1) a una
locazione di memoria dove il carattere immesso potrà essere immagazzinato.
ESERCIZIO (printf e scanf):
#include <stdio.h>
main() {
int a; ← inizializzazione variabile
printf("Immetti sulla tastiera un numero intero: ");
scanf("%d", &a);
printf("Il numero immesso e': %d\n",a);
return 0;
}
ESERCIZIO: Sviluppa un programma prese due variabili a, b ne scambia il valore a esse collegato
#include <stdio.h>
void main(){
float a = 3, b = 5;
scambia(&a, &b);
t = *x;
*x = *y;
*y = t;
}