Ce premier TP ne suppose aucune connaissance en C. Toutes les instructions
dont vous aurez besoin seront décrites. Afin de simplifier la
présentation déjà assez lourde, ces descriptions
ne seront pas toujours complètes. Vous pourrez trouver un
résumé plus complet ou plein de tutorials sur le web.
Pour tout savoir sur une instruction, vous pouvez aussi utiliser
man
.
L'éditeur de texte sert à écrire votre programme.
Le texte de votre programme sera donc enregistré dans un fichier.
Commencez par créer un répertoire (dossier)
à l'aide de la commande mkdir
,
dans lequel vous rangerez tout ce qui concerne ce TP.
Dans ce répertoire, donc, lancez votre éditeur :
joe toto.c
ou pico toto.c
ou vim toto.c
ou xemacs toto.c
.
Vous pouvez donner un autre nom que toto.c
à votre
fichier, mais il faut terminer le nom du fichier
par .c
.
Il existe des environnements de programmation plus élaborés que la technique à deux fenêtres décrite ci-dessus, mais celle-ci a l'avantage d'être utilisable en toute circonstance et de bien dissocier la fonction d'édition des autres.
cc
ou gcc
de préférence).
Cette opération produit un autre fichier
contenant du code qui lui est exécutable. Vous n'avez ensuite plus
qu'à lancer ce fichier (en tapant simplement son nom) pour voir
votre programme s'exécuter.
/* Affichage de messages */
#include <stdlib.h> /* bibliothèque contenant les fonctions
de base comme exit */
#include <stdio.h> /* bibliothèque contenant les fonctions
d'entrée/sortie comme printf */
int main() /* La procédure principale, point de départ du
programme */
{
printf("Hello world !\n");
/* \n signifie passage à la ligne */
exit(0);
/* on sort du programme. La valeur 0 indique par convention que
le programme se termine normalement */
}
Avant de compiler, n'oubliez pas de sauvegarder le fichier contenant le programme. Pour compiler, dans la fenêtre shell tapez :
gcc -g -W -Wall toto.c -o toto
Puis, pour lancer (exécuter) le programme, tapez ./toto
.
type variable;
ou type variable = valeur
;
où type
est le type de la variable. Pour l'instant, le
type d'une variable peut être int
pour un entier, ou
float
pour un flottant (nombre à virgule flottante).
valeur
est la valeur initiale de la variable.
type variable[N];
ou
type variable[N] = { val,
... ,val };
N est un nombre entier positif (et pas une expression ou une
variable entière) spécifiant la taille du tableau.
C'est un pointeur vers une zone mémoire réservée
pour N objets de type type
.
La syntaxe
type variable[];
existe,
est est équivalente à
type *variable;
et
variable
est juste un pointeur non alloué.
Pour accéder aux valeurs du tableau, utiliser variable[n]
où n
est n'importe quelle expression (nombre,
variable,...) ayant une valeur entre 0 et N-1.
Dans la suite, nous pourrons utiliser de tels tableaux pour représenter les nombres complexes.
struct { type1 champ1; ... typeN champN; } variable;
ou
struct nom { type1 champ1; ... typeN champN; } variable;
ce qui est équivalent à la séquence de déclarations
type1 variable.champ1;
...
typeN variable.champN;
Dans la suite, nous pourrons utiliser de telles structures pour représenter les nombres complexes.
typedef
. Pour définir un type complexe
, on pourra donc faire
typedef float complexe[2];
ou
typedef struct { float x; float y; } complexe;
L'écriture d'une procédure se fait de la facon suivante :
type_resultat proc(type1 arg1,...,typen
argn)
{
...
return expr;
}
Dans notre cas, la procédure prendra un argument : le complexe.
Elle ne rendra aucun
résultat, type_resultat
sera donc void
. L'instruction
de fin de procédure sera simplement return;
.
printf
.
Cette fonction prend en premier argument une chaîne (des lettres ou
nombres entre ") qui définit ce qui sera imprimé. Dans cette
chaîne, tous les %d ou %f seront remplacés dans l'ordre par les
arguments suivants de printf
. %d indique que cette valeur sera un
entier, et %f un flottant.
Example : printf("Nous sommes le %d/%d/%d",23,2*4,annee);
imprimera
Nous sommes le 23/8/1996
si la valeur de annee
est 1996.
Exécutez la commande man printf
et regardez à quoi
ressemble une description exhaustive de la syntaxe d'une fonction C...
main
avec la matrice que
vous avez définie plus haut.
gdb
sert à exécuter un programme pas à pas et à
afficher le contenu des variables. Il est nécessaire que la compilation
ait été faite avec l'option -g
.
Quelques tutoriels en français sont disponibles sur le web : ici ou là.
Exécutez les programmes précédents pas à pas, sous gdb
.