|
Séance d'exercices 1, Programmation I |
|
Sciences et Technologies du Vivant, Semestre 1 |
Lors de cette première séance d'exercices, vous allez vous
familiariser avec le système d'exploitation Linux et passer
en revue les divers outils nécessaires à la programmation.
L'intérêt de ces exercices est également de vous
apprendre à être autonome. Il est assez normal que des erreurs
surviennent quand vous essayez de répondre aux questions.
Cherchez à comprendre par vous-même d'où vient l'erreur, tout
en sachant décider quand il faut appeler à l'aide !
- Commencez par créer trois fichiers à l'aide de la commande
touch dans votre home directory. Donnez-leur les
noms file1, file2 et file3.
- Créez trois répertoires dans votre home et nommez-les
respectivement rep1, rep2 et
rep3. Utilisez la commande mkdir.
- Copiez le fichier file1 dans les répertoires
rep1 et rep2 (commande cp). Copiez
également file2 dans les répertoires rep2 et
rep3 mais renommez-le file4.
- Déplacez (mv) le fichier file3 dans le
répertoire rep3.
- Vérifiez à l'aide de la commande ls que les
répertoires contiennent bien ce qu'ils devraient, c'est-à-dire:
|
rep1 | file1 |
| rep2 | file1 |
| file4 |
| rep3 | file3 |
| file4 |
- Copiez rep3 dans rep2 (cp -r pour
copier des répertoires) et déplacez rep2 dans
rep1.
- Supprimez les deux fichiers restés à la base de votre
home à l'aide de la commande rm. Supprimez
également le répertoire rep3 avec rm -r.
- Vérifiez (ls) qu'il ne vous reste plus que
rep1 dans votre home directory.
- Tapez les commandes suivantes:
wget http://cvlab.epfl.ch/~lepetit/courses/sv/files/exercice2.tgz
tar xfz exercice2.tgz
cd exercice2
Ces commandes téléchargent un fichier nommé exercice3.tgz sur le site du cours, le décompresse (dans un répertoire appelé exercice3).
La dernière commande permet de se déplacer dans ce répertoire.
- Ce repertoire contient 200 fichiers. Un seul de ces fichiers possède un nom finissant par 'cpp'.
Utilisez la commande ls afin d'identifier ce fichier.
- A l'intérieur de ce fichier se
trouvent la suite des instructions pour cet exercice.
Une des commandes vues en cours permet d'afficher le contenu d'un fichier. Utilisez-la pour afficher le contenu du fichier que vous avez trouvé, et continuez l'exercice.
Dans cet exercice, vous allez apprendre à vous servir des
fonctions de base d'Emacs.
- Copiez le fichier /usr/share/doc/ddd/NEWS
dans votre home directory. Le chemin complet est long à
taper, heureusement la touche Tab permet de compléter
automatiquement les noms des fichiers et des répertoires quand il
n'y a pas ambiguïté. Changez vos droits sur ce fichier en
rw-.
- Lancez Emacs en tapant la commande
emacs &
Si vous avez oublié le
&, tapez Ctrl-z dans la fenêtre Terminal pour mettre Emacs en pause,
puis la commande bg pour le mettre en tâche de
fond.
- À n'importe quel moment dans Emacs, Ctrl-g annule
la commande en cours. Ctrl-x u (Undo) permet d'annuler la
dernière commande. Comme dans la fenêtre Terminal,
Ctrl-a permet de déplacer le curseur au début de la
ligne, Ctrl-e à la fin de la ligne.
- Ouvrez le fichier NEWS que vous venez de copier
(Ctrl-x Ctrl-f).
- Déplacez votre curseur jusqu'au début de la ligne 100
(Esc-x goto-line). Sélectionnez (Ctrl-Space)
le texte jusqu'à la ligne 120. Coupez le texte sélectionné
(Ctrl-w). Rendez-vous ensuite à la fin du document
(Ctrl-End et collez le texte précédemment coupé
(Ctrl-y).
- Retournez au début du document (Ctrl-home) et
faites une recherche (Ctrl-s) du mot DDD. Vous
pouvez passer d'un mot au suivant en faisant à nouveau
Ctrl-s.
- Allez une fois de plus au début du document et remplacez
(Esc-%) toutes les instances de DDD par
EEE. Emacs vous demande de confirmer le remplacement
de chaque mot en appuyant sur y. Vous pouvez forcer le
remplacement de tous les mots sans confirmation en appuyant sur
la touche !.
- Ctrl-k permet de couper la fin d'une ligne à partir
de l'emplacement du curseur, sans avoir à utiliser
Ctrl-Space + Ctrl-w. Répété plusieurs fois,
Ctrl-k permet de couper également les lignes sous le
curseur. Comme avant, Ctrl-y permet de coller le texte
qui vient d'être coupé. Essayez.
- Sauvez votre nouveau fichier (Ctrl-x Ctrl-s) et quittez
Emacs (Ctrl-x Ctrl-c).
Vous allez maintenant écrire votre premier programme C.
- Supprimez tous les fichiers que vous avez créés lors des
exercices précédents et créez un répertoire nommé
programmation1 dans votre myfiles directory:
cd
cd myfiles
mkdir programmation1
Lors des
leçons suivantes, pensez à placer tous les fichiers que vous
créerez pour ce cours dans ce répertoire, ils seront ainsi
plus faciles à trouver.
- Allez dans programmation1 et lancez Emacs en ouvrant un fichier helloworld.cpp:
cd programmation1
emacs helloworld.cpp &
- Recopiez le programme suivant dans Emacs:
#include <iostream>
using namespace std;
int main(int argc, char ** argv)
{
cout << "Hello World!" << endl;
return 0;
}
- Une fois le texte copié, enregistrez-le et retournez dans un
terminal (vous pouvez garder Emacs ouvert, si vous l'avez lancé
correctement).
- Compilez votre programme en tapant la commande:
g++ helloworld.cpp -o hello -Wall
- Lisez le texte retourné par le compilateur. Si celui-ci
signale des erreurs, vous avez mal recopié le programme.
Corrigez-le et compilez-le à nouveau. Le compilateur
(g++) vous indique la ligne où l'erreur se trouve
d'après lui. Souvent, il est plus simple de corriger la
première erreur et d'essayer de recompiler le programme. Les
erreurs suivantes découlent souvent seulement de la première
erreur. Par exemple, si on oublie le 'i' de include, on
obtient la liste d'erreurs suivantes:
helloworld.c:1:2: invalid preprocessing directive #nclude
helloworld.c: In function `int main(int, char**)':
helloworld.c:6: `cout' undeclared (first use this function)
helloworld.c:6: `endl' undeclared (first use this function)
alors qu'il suffit d'ajouter le i manquant pour que toutes les erreurs
disparaissent. Le 1 et 6 sont les numéros de
lignes où apparaissent les erreurs.
- Si la compilation s'est bien déroulée, un exécutable
nommé hello a dû être créé. Vérifiez qu'il est
bien présent et exécutez-le. Il suffit de taper son nom,
précédé de ./ pour indiquer qu'il se trouve dans le
répertoire courant.
./hello
Le programme devrait afficher la ligne suivante:
Hello World!
Retour