Outils pour utilisateurs

Outils du site


pg108:tp1

Programmes de base / Lecture d'arguments sous UNIX

Pour que la vérification automatique fonctionne, votre programe ne doit renvoyer strictement ce qui est demandé, et rien de plus (pas de mise en forme particulière ou d'ajout de texte).


Hello World

Code de cet exercice : hello

Reprenez l'exemple “Hello World” du cours. Pour cela, lancez l'éditeur de votre choix, recopiez le programme et enregistrez le en l'appelant helloworld.c L'objectif du programme doit être d'afficher “Hello World” (strictement).

Parmi les éditeurs de texte disponibles, il y a:

  • gedit
  • kate
  • atom
  • emacs

Pour lancer l'éditeur, utilisez le nom de sa commande suivi du nom du fichier que vous voulez créer.

Une fois écrit et enregistré, compilez le programme grâce à la ligne suivante :

  gcc -Wall -std=c99 -o helloworld helloworld.c

Reportez-vous au cours pour les explications sur cette commande.

Exécutez votre programme grâce à la ligne suivante :

  ./helloworld

Si vous pensez qu'il fonctionne correctement, lancez la validation de votre programme à l'aide du programme program_valid.

  program_valid hello helloworld.c

Le premier argument (hello) permet d'identifier l'exercice à valider. Le second est le fichier à tester.


Vérification du nombre d'arguments UNIX

Code de cet exercice : nargs

Écrivez un programme qui affiche le nombre d'arguments qui lui ont été passés en ligne de commande UNIX.

  • Si le programme a été lancé sans argument, il doit afficher 0
  • S'il a été lancé avec un seul argument, il doit afficher 1, etc.

Testez votre programme avec différents nombres d'arguments.

Validez-le avec la commande :

  program_valid nargs <votre-fichier.c>

Récupération du nom du programme

Code de cet exercice : getprogname

Écrivez un programme qui affiche son propre nom (c'est à dire, le nom du fichier compilé qui est éxécuté). Le './' apparait au début, c'est normal.

Après l'avoir testé, validez-le avec la commande :

  program_valid getprogname <votre-fichier.c>

Affichage des arguments UNIX

Code de cet exercice : dispargs

Écrivez un programme qui affiche tous les arguments qu'il a reçu en ligne de commande. S'il n'a reçu aucun argument, il ne doit rien afficher. S'il a reçu au moins un argument, il les affiche tous, chacun sur une ligne.

Après l'avoir testé, validez-le avec la commande :

  program_valid dispargs <votre-fichier.c>

Addition des entiers passés en argument

Code de cet exercice : addargs

Écrivez un programme qui affiche la somme de tous les arguments qu'il a reçu en ligne de commande. S'il n'a reçu aucun argument, il doit afficher 0. Les arguments seront des entiers, pour cette première séance, nous ne nous attarderons pas à le vérifier.

Rappel: Votre programme reçoit les arguments sous forme de texte (chaine de caractères), il vous appartient donc de convertir ces valeurs en entier.

Après l'avoir testé, validez-le avec la commande :

  program_valid addargs <votre-fichier.c>

Calcul de puissance entière

Code de cet exercice : powarg

Écrivez un programme qui reçoit deux valeurs en ligne de commande : un réel a et un entier bositif b). Ce programme affiche le résultat de a élevé à la puissance b.

Si le programme ne reçoit pas le bon nombre d'arguments, il doit afficher “Erreur”. Si la valeur de b est négative, le programme doit afficher “erreur”. Si le résultat est impossible à calculer, le programme doit afficher “Erreur”. Bref, le calcul doit être propre. Par contre, il n'est pas nécessaire de vérifier que a est bien un réel et que b est bien un entier.

Après l'avoir testé, validez-le avec la commande :

  program_valid powarg <votre-fichier.c>

Génération d'une suite de nombres aléatoires

Code de cat exercice : randgen

Écrivez un programme qui reçoit entre un et trois entiers et qui affiche une suite de nombre aléatoires. Ces nombres seront des entiers et seront séparé par des sauts de ligne et/ou des espaces.

  1. Si le programme n'a reçu qu'une seule valeur n, cet entier représente le nombre de valeurs à afficher. Les valeurs seront comprises entre 0 et 100 (inclus)
  2. Si le programme reçoit deux valeurs n et max, alors le programme doit afficher n valeurs comprises entre 0 et max inclus.
  3. Si le programme reçoit trois valeurs n, min et max, alors le programme doit afficher n valeurs entre min et max inclus.

Pour générer un nombre aléatoire, il faut utiliser la fonction random() qui ne prend pas d'argument et qui renvoie une valeur aléatoire comprise entre 0 et RAND_MAX. Cette fonction nécessite d'utiliser la bibliothèque stdlib.h. RAND_MAX est une constante définie par stdlib.h. Pour information, elle vaut 2^31 - 1, mais sa valeur ne doit pas être utilisée telle quelle, il faut toujours passer par son nom. L'ordinateur est un système déterministe et ne peut donc pas générer de valeur purement aléatoire. Il s'agit donc d'une suite dite pseudo-aléatoire, et si vous éxécutez plusieurs fois votre programme avec les mêmes paramètres, les mêmes valeurs seront produites. Ce comportement est très pratique pour debogger le programme.

Une difficulté de l'exercice est qu'une opération sur des entiers donnera toujours un résultat entier. Donc 42/69 donnera le résultat 0. Heureusement, il est possible de convertir un entier en réel en le multipliant par 1.0 (ou en lui ajoutant 0.0). De la même façon, si vous mémorisez une valeur réelle dans une variable de type entier, cette valeur sera tronquée avant d'être convertie en entier.

Après l'avoir testé, validez votre programme avec la commande :

  program_valid randgen <votre-fichier.c>

Calculatrice

Code de cet exercice : basicalc

Écrivez un programme de calculatrice simple. Ce programme reçoit trois arguments : a, op et b. a et b sont des réels quelconques. op est un caractère qui permet de choisir l'opération à faire, op est donc un caractère parmis les 4 suivants : +, -, x, /. (La multiplication est représentée par la lettre x car l'étoile est le joker qui signifie “tous les fichiers dans le dossier courant”)

Ce n'est pas la peine de faire de test pour vérifier si l'utilisateur rentre une valeur qui ne correspond pas à un réel pour a ou b. Par contre, dans tous les autres cas, les erreurs doivent êtres gérées en affichant “Erreur”, puis éventuellement la raison de l'erreur.

Attention : Pour que le programme reçoive bien trois arguments différents, il faudra placer un espace dans la ligne de commande entre les valeurs numériques et l'opération comme suit :

  ./programme_calculatrice 42 + 34

Après l'avoir testé, validez-le avec la commande :

  program_valid basicalc <votre-fichier.c>
pg108/tp1.txt · Dernière modification: 2021/10/12 14:04 par bornat