0% ont trouvé ce document utile (0 vote)
194 vues4 pages

Tutoriel Unix: Création et Compilation C

Transféré par

Il Ou Elle
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats RTF, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
194 vues4 pages

Tutoriel Unix: Création et Compilation C

Transféré par

Il Ou Elle
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats RTF, PDF, TXT ou lisez en ligne sur Scribd

TP1

Exercice 1 :

Commandes Unix :

Créer le répertoire TP1 :


    mkdir TP1
Se placer dans le répertoire TP1 :
    cd TP1
Lancer emacs en ouvrant le fichier ex1.c :
    emacs ex1.c &
-> ex1.c est créé directement s’il n’existait pas
-> & permet de pouvoir continuer à écrire des commandes Unix tout en gardant emacs ouvert

Compiler le programme C:
    gcc -Wall ex1.c
-> -Wall est une option qui permet d’afficher certaines erreurs supplémentaires (Warning)
A utiliser à chaque compilation!

Visualiser le résultat = Afficher la liste des fichiers présents dans le répertoire:


ls
-> résultat = un fichier a.out est créé (en vert)

Exécuter le a.out :
    ./a.out

Afficher les droits des fichiers :


    ls -l
-> résultat = a.out a le droit de lecture, écriture et exécution car c’est un fichier exécutable

Compiler le programme C en donnant un nom au fichier exécutable :


    gcc ex1.c -o ex1 -Wall
-> -o est une option qui indique que l’on donne le nom de l’exécutable, le nom donné doit
suivre directement le -o
Remarque : L’ordre des options n’a pas d’importance, on peut avoir : gcc -Wall -o ex1 ex1.c

Exécuter l’éxécutable :
    ./ex1

Remarques :
-Veillez à bien respecter les espaces lorsqu'il y en a dans les commandes Unix et les
programmes C. En revanche, on peut en rajouter un ou plusieurs pour aérer le code, mais ce
n'est pas obligatoire.
    ex: if(a!=0) est équivalent à if          (          a          !=          0          )
-Dans emacs, cocher la première option (Syntax Highlighting) pour avoir le code en couleur.
-Dans la console, utiliser la flèche vers le haut pour avoir les dernières commandes
effectuées.
-Messages d’erreurs :
· Warning -> pas grave mais à corriger si on ne veut pas avoir de surprises…
· Fatal error -> il faut recompiler car l’exécutable n’est pas créé
ex : parse error = erreur de syntaxe ; , }

Quelques commandes supplémentaires :


Se placer dans un répertoire en indiquant son chemin d’accès :
    cd ProgC/TP1
Revenir un répertoire en arrière :
    cd ..
Revenir à la racine :
    cd
Supprimer un fichier :
    rm ex1.c
Supprimer un répertoire :
    rmdir TP1
Déplacer un fichier dans un répertoire en indiquant son chemin d’accès :
    mv ex1.c ProgC/TP1
Changer les droits d’un fichier :
    chmod 755 ex1.c
    chmod +x ex1.c
-> ajoute le droit d’exécution au fichier
Rappel : -rwxr-xr-x = 755

Afficher des manuels pour la programmation en C :


    man printf
    ...

Debugger un programme avec gdb :


gdb -help      -> usage (= comment ça s'utilise)
gcc -g -Wall -o ex1 ex1.c    -> compilation
gdb ./ex1      -> exécution
Ensuite pour lancer le programme : run
Pour plus de détails : help (suivi d'une commande dans la liste indiquée)
Pour quitter gdb : quit

Programme C :
ex1.c
/* réalisé par Nom    le Date TP1 ex1 /      -> commentaire entre /*…*/
#include <stdio.h>      -> inclusion de la bibliothèque permettant d’utiliser printf, scanf…
int main(void) {      -> fonction principale obligatoire entre accolades
printf(“Bonjour\n ”);      -> affichage de ce qui est entre guillemets (\n = retour à la ligne)
return 0;      -> retour de la fonction principale de type int
}

Remarque : Chaque instruction se finit par un point-virgule

Exercice 2 :
ex2.1.c
/* TP1 ex2 version 1 * /
#include <stdio.h>
int main(void) {
int a,b; -> déclaration de deux variables entières
a=2;      -> affectation d’une variable
b=3;
printf(“Somme=%d\n Différence=%d\n Produit=%d\n Quotient=%d\n”,a+b,a-b,a*b,a/b);
      -> %d pour afficher une variable de type int que l’on indique après la virgule
return 0;
}

ex2.2.c
/* TP1 ex2 version 2 */
#include <stdio.h>
int main(void) {
float a; -> déclaration d’une variable réelle
int b;
a=2.5;      -> un nombre à virgule s’écrit avec un point
b=3;
printf(“Somme=%f\n Différence=%f\n Produit=%f\n Quotient=%f\n”,a+b,a-b,a*b,a/b);
      -> %f pour une variable de type float (la somme d’un entier et d’un réel donne un réel)
return 0;
}

Remarque : Dans le prinft, si on met %.2f -> affiche seulement deux chiffres après la virgule.

ex2.3.c
/* TP1 ex2 version 3 et 4 * /
#include <stdio.h>
int main(void) {
float a;
int b;
scanf(“%f%d”,&a,&b); -> lecture de variables au clavier
printf(“Somme=%f\n Différence=%f\n Produit=%f\n”,a+b,a-b,a*b);
      -> affichage dans tous les cas
if(a!=0) printf(“Quotient=%f\n”,a/b);      -> teste si a est différent de 0
(a==0 pour tester l’égalité)
else printf(“Division par zéro impossible\n”);      -> si le test du if n’est pas vérifié
return 0;
}

Instructions conditionnelles :
if(condition) {
instruction;
}
-> si l’instruction est réduite à une seule ligne, les accolades ne sont pas obligatoires

Exercice 3 : (faire de même pour b)


int a;
scanf(“%d”,&a);
if(a%2==0 && a%3==0) printf(“%d est divisible par 2 et par 3\n”,a);
      -> a%2 se lit “a modulo 2” et calcule le reste de la division euclidienne
      -> && = et || = ou
else if(a%2==0)    printf(“%d est divisible par 2\n”,a);
else if(a%3==0)    printf(“%d est divisible par 2\n”,a);      -> mettre else devant le if lorsque
      l’on est sûr que 2 conditions de peuvent pas être vérifiées en même temps
else printf(“%d n’est divisible ni par 2ni par 3\n”,a);      -> pour tous les autres cas

Remarque : Dans le printf, si on met %3d -> affiche le nombre sur au moins 3 caractères en
ajoutant des espaces devant (permet d’aligner les nombres à droite).

Vous aimerez peut-être aussi