Année universitaire 2002-2003
espace

Licence d'informatique
Module 4 - partie "C / shell"



Travaux pratiques 1 :

  • 1. Connexion.
  • 2. Déconnexion.
  • 3. Changement du mot de passe.
  • 4. Manipulation d'une fenêtre.
  • 5. Menu de fond d'écran.
  • 6. Quelques commandes UNIX.
  • 7. Utilisation du compilateur gcc.
  • 8. Logiciel d'édition de texte asedit.
  • 9. Logiciel netscape.
  • 10. Conseils pour l'écriture des programmes en C.
  • 11. Exercice 1 : compilation d'un programme.
  • 12. Exercice 2 : palindromes.

  • 1. Connexion.

    L'étape préliminaire à tout travail consiste à établir la connexion entre le "serveur", qui offre les "ressources" (capacité de calcul, logiciels, etc...) nécessaires à la réalisation des travaux pratiques, et un "terminal X" (ou console de travail) :

    serveur

    Pour cela, procéder comme suit :

    Remarque :

    2. Déconnexion.

    Pour se déconnecter, plusieurs solutions sont possibles :

    3. Changement du mot de passe.

    Dans la fenêtre système, taper la commande nispasswd. Le système demande alors l'ancien mot de passe (Enter login(NIS) password:). Une fois ce mot de passe tapé, le système demande le nouveau mot de passe (New password:). Pour composer ce nouveau mot de passe, il faut utiliser entre six et huit caractères, dont au moins un chiffre. Il est également possible d'utiliser des caractères de ponctuation.

    Attention :

    Une fois ce nouveau mot de passe tapé, le système demande de le retaper afin de contrôler l'exactitude de celui-ci (Re-enter new password:).

    Exemple :

    > nispasswd
    nispasswd: Changing password for linfg250
    Enter login(NIS) password:
    New password:
    Re-enter new password:
    NIS passwd/attributes changed on lambi.cict.fr
    >

    Remarque :

    4. Manipulation d'une fenêtre.

    Une fenêtre est structurée graphiquement de la manière suivante :

    4.1. Différentes manipulations possibles.

    Remarque :

    4.2. Application pratique.

    Dans la fenêtre système, taper asedit & pour lancer le logiciel d'édition de texte asedit (le &, précédé ou non d'un espace, signifie que le logiciel est lancé en "tâche de fond", c'est-à-dire que l'utilisateur pourra taper d'autres commandes dans la fenêtre système pendant l'exécution du logiciel).

    Lorsque la fenêtre de l'éditeur de texte est apparue :

    5. Menu de fond d'écran.

    En appuyant sur le bouton de gauche de la souris alors que le curseur se trouve sur la zone bleue correspondant au "fond d'écran" (à l'extérieur de toute fenêtre), on accède au menu suivant :

    Il suffit alors de placer le curseur de la souris sur la commande à lancer. Par exemple, en sélectionnant xclock (en faisant glisser la souris sur ce mot), puis en relachant le bouton, une fenêtre contenant le dessin d'une horloge apparaît à l'écran :

    Remarque :

    6. Quelques commandes UNIX.

    La mémoire de stockage d'un serveur est structurée en "répertoires" et "sous-répertoires", dans lesquels il est possible d'enregistrer des "fichiers". Le répertoire de plus haut niveau est dit "répertoire racine" et se note / (caractère "slash"). À la connexion, un utilisateur se trouve dans son "répertoire principal" ("home directory"). Le répertoire principal est le répertoire dans lequel un utilisateur a le droit de créer des sous-répertoires et d'enregistrer des fichiers. Le chemin qui mène à un répertoire principal s'écrit, par exemple :

    L'ensemble des chemins que l'on peut parcourir à partir d'un répertoire (en allant de sous-répertoires en "sous-sous-répertoires") est appelé "arborescence" :

    exemple d'arborescence

    Le serveur utilisé pour les travaux pratiques fonctionne sous le système d'exploitation UNIX. Un système d'exploitation propose un ensemble de commandes permettant de gérer le stockage des informations en mémoire.

    Sous UNIX, on désigne par . le "répertoire courant" ("working directory"), et par .. le "répertoire père" du répertoire courant dans l'arborescence. Par convention, le nom d'un fichier contenant un programme en langage C est suivi de l'extension .c

    Les commandes suivantes permettent de manipuler des fichiers et des répertoires (les éléments situés entre crochets sont facultatifs) :

    Remarque :

    7. Utilisation du compilateur gcc.

    La commande gcc permet de réaliser la "compilation" et "l'édition de liens" des programmes écrits en langage C :

    Pour atteindre ce double but, à partir d'un programme C écrit dans un fichier de nom nom_source.c, la commande suivante peut être lancée :

    À l'issue de l'exécution de cette commande, soit un ensemble d'erreurs ont été détectées et sont présentées à l'utilisateur pour qu'il les corrige, soit un fichier contenant un programme exécutable est créé, de nom nom_executable. Pour lancer l'exécution de ce programme exécutable, il suffit de taper, dans une fenêtre système, le nom du fichier contenant le programme exécutable. Il peut encore se produire des erreurs ("erreurs à l'exécution") lors de l'exécution d'un programme exécutable. Ces erreurs sont en général les plus difficiles à corriger.

    Remarques :

    En réalité, plutôt que de taper la commande :

    qui est relativement longue à écrire, il est préférable de redéfinir la séquence gcc -ansi -pedantic -Wall -Werror, qui est toujours la même, par un "alias" (c'est-à-dire par un "surnom"). La manière de définir un alias sera décrite dans le prochain paragraphe.

    8. Logiciel d'édition de texte asedit.

    Pour écrire les fichiers, il est quasi-indispensable d'utiliser un logiciel d'édition de texte. Nous conseillons d'utiliser l'éditeur de texte asedit.

    #ident  "$Header: stdcshrc,v 1.4 90/04/08 16:27:39 integ Exp $"
    #       This is the default standard profile provided to a user.
    #       They are expected to edit it to meet their own needs.



    if ( $?prompt ) then
           /bin/stty erase "^H" kill "^U" intr "^C" eof "^D" susp "^Z" hupcl echoe -tostop
    endif
    alias ls 'ls -C'
    alias h history
    alias gcc "gcc -ansi -pedantic -Wall -Werror"
    set history=100
    set lineedit
    set filec


    Dorénavant, la commande à taper pour compiler un fichier source sera soit :

    auquel cas le programme exécutable sera contenu dans le fichier de nom nom_executable, soit :

    auquel cas le programme exécutable sera contenu dans le fichier de nom a.out

    9. Logiciel netscape.

    Le logiciel netscape est un "navigateur" (ou "browser") de fichiers, et un interpréteur de programmes écrits dans les langages HTML, JAVA, etc..., auxquels on peut accéder par Internet. C'est à l'aide de ce logiciel (version 4 de "Navigator") qu'il sera possible d'accéder aux sujets des travaux dirigés et des travaux pratiques, à la correction des exercices ainsi qu'à diverses autres informations.

    file:/users/linfg/linfg0/welcome.html

    Ceci permettra à l'utilisateur d'accéder, lors des prochains lancements du logiciel netscape, aux "pages" du module 4, en cliquant sur l'icône de la maison, de titre Home.

    Après chargement de la page d'accueil du module 4, il est possible de naviguer de "liens" en "liens" (un lien renvoie à une autre page ou à un autre endroit de la même page).

    Application :

    Il est possible de recopier directement le texte contenu dans une page présentée par netscape vers asedit. Pour cela :

    10. Conseils pour l'écriture des programmes en C.

    Outre l'utilisation, fortement conseillée, de commentaires, un certain nombre de conventions, plus ou moins standard (mais qui ne sont en aucun cas spécifiées par la norme ANSI) permettent de garantir une lisibilité optimale des programmes C.

    10.1. Convention sur l'utilisation des lettres majuscules et minuscules.

    En langage C, l'écriture des "identificateurs" (noms de constantes, de variables, de fonctions, etc...) doit rester identique tout au long d'un programme, quant au choix des majuscules et des minuscules.

    Exemple :

    Dans la mesure du possible, on écrira les constantes en majuscules et les autres identificateurs en minuscules.

    10.2. Règles d'indentation.

    Par ailleurs, il existe un certain nombre de conventions concernant "l'indentation". On appelle "indentation" l'utilisation de caractères séparateurs (espace, tabulation et retour-chariot) pour bien visualiser l'agencement des différentes parties d'un programme.

    Exemple :

    int bonne_indentation(int d)
    {
    espaceint cpt;
    espaceif (d!=0)
    espace{
    espaceespacecpt=0;
    espaceespacewhile (d!=0)
    espaceespace{
    espaceespaceespaced=d-1;
    espaceespaceespacecpt=cpt+1;
    espaceespace}
    espaceespacereturn(cpt);
    espace}
    espaceelse
    espace{
    espaceespacereturn(0);
    espace}
    }

    On peut donc retenir les règles suivantes :

    Remarque :

    espaceespaceprintf("Ceci est une chaîne de caractères trop longue \
    et voici un artifice correct pour y remédier.\n");

    espaceespace printf("Ceci est une chaîne de caractères trop longue "
    espaceespace        "et voici un artifice encore plus simple pour y remédier.\n");

    11. Exercice 1.

    Recopier la correction de l'exercice 1 de la première séance de travaux dirigés (accessible sur les pages du module 4) dans la fenêtre asedit. Sauvegarder le programme dans le fichier ex1.c, le compiler puis l'exécuter.

    12. Exercice 2.

    Écrire un programme qui détermine si une phrase entrée au clavier, d'au plus 100 caractères, terminée par un retour-chariot, est un palindrome. On suppose que le texte n'est composé que de lettres minuscules non accentuées, que les mots ne sont séparés que par des espaces, et qu'il n'y a aucune ponctuation.

    Un palindrome est un mot ou une phrase qui n'est pas modifié lorsqu'on inverse l'ordre des lettres qui le composent.

    Exemples de palindromes :


    Ces pages ont été réalisées par A. Crouzil, J.D. Durou et Ph. Joly.
    Pour tout commentaire, envoyer un mail à crouzil@irit.fr, à durou@irit.fr ou à Philippe.Joly@irit.fr.