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 !

Remarques

Exercice 1 - Manipulation de fichiers

  1. Commencez par créer trois fichiers à l'aide de la commande touch dans votre home directory. Donnez-leur les noms file1, file2 et file3.

  2. Créez trois répertoires dans votre home et nommez-les respectivement rep1, rep2 et rep3. Utilisez la commande mkdir.

  3. 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.

  4. Déplacez (mv) le fichier file3 dans le répertoire rep3.

  5. 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

  6. Copiez rep3 dans rep2 (cp -r pour copier des répertoires) et déplacez rep2 dans rep1.

  7. 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.

  8. Vérifiez (ls) qu'il ne vous reste plus que rep1 dans votre home directory.

Exercice 2 - Listings

  1. 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.

  2. 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.

  3. 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.

Exercice 3 - Emacs

Dans cet exercice, vous allez apprendre à vous servir des fonctions de base d'Emacs.

  1. 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-.
  2. 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.

  3. À 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.
  4. Ouvrez le fichier NEWS que vous venez de copier (Ctrl-x Ctrl-f).
  5. 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).
  6. 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.
  7. 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 !.
  8. 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.
  9. Sauvez votre nouveau fichier (Ctrl-x Ctrl-s) et quittez Emacs (Ctrl-x Ctrl-c).

Exercice 4 - Hello World

Vous allez maintenant écrire votre premier programme C.

  1. 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.

  2. Allez dans programmation1 et lancez Emacs en ouvrant un fichier helloworld.cpp:
    cd programmation1
    emacs helloworld.cpp &
    

  3. Recopiez le programme suivant dans Emacs:
    #include <iostream>
    using namespace std;
    
    int main(int argc, char ** argv) 
    {
      cout << "Hello World!" << endl;
      return 0;
    }
    

  4. Une fois le texte copié, enregistrez-le et retournez dans un terminal (vous pouvez garder Emacs ouvert, si vous l'avez lancé correctement).
  5. Compilez votre programme en tapant la commande:
      g++ helloworld.cpp -o hello -Wall
    

  6. 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.

  7. 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