From 7430d513f785866b65b43a80e99515a172737ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Michel?= <francois.michel@uclouvain.be> Date: Tue, 5 Feb 2019 15:55:52 +0100 Subject: [PATCH] fix layout issues --- Exercices/Programmes/prog-1.rst | 62 ++++++++++++++++----------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/Exercices/Programmes/prog-1.rst b/Exercices/Programmes/prog-1.rst index 4d85f9d..d263e8a 100644 --- a/Exercices/Programmes/prog-1.rst +++ b/Exercices/Programmes/prog-1.rst @@ -92,7 +92,7 @@ que vous aviez réalisé en Java. ``-Werror`` Make all warnings into errors. -#. Recompilez le code du point `1` avec l'option ``-Werror``, que se passe-t-il ? Que faut-t-il rajouter dans le code pour qu'il compile sans erreurs ? +#. Recompilez le code du point `4` avec l'option ``-Werror``, que se passe-t-il ? Que faut-t-il rajouter dans le code pour qu'il compile sans erreurs ? .. only:: staff @@ -100,7 +100,7 @@ que vous aviez réalisé en Java. Le programme ne compile plus. Il faut inclure ``stdio.h`` parce que C nécessite d'avoir une déclaration des fonctions. -#. (bonus) comment se fait-il que ``gcc`` compilait sans problème au point `1`? +#. (bonus) comment se fait-il que ``gcc`` compilait sans problème au point `4`? .. only:: staff @@ -108,7 +108,7 @@ que vous aviez réalisé en Java. ``gcc`` crée une déclaration implicite des fonctions de la librairie C. Il n'affiche qu'un warning. -#. Lorsque j'exécute le programme corrigé du point `3` dans une console, j'ai accès à plusieurs variables. L'une d'elles est ``$?`` qui permet de récupérer la valeur de retour du dernier programme exécuté. Expliquez à quoi sert cette valeur. +#. Lorsque j'exécute le programme corrigé du point `6` dans une console, j'ai accès à plusieurs variables. L'une d'elles est ``$?`` qui permet de récupérer la valeur de retour du dernier programme exécuté. Expliquez à quoi sert cette valeur. .. code-block:: console @@ -133,7 +133,7 @@ que vous aviez réalisé en Java. ``-Wall`` This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. -#. Recompilez le code corrigé du point `3` avec les options ``-Wall`` et ``-Werror``, que se passe-t-il ? Que faut-il rajouter dans le code pour qu'il compile sans erreurs ? +#. Recompilez le code corrigé du point `6` avec les options ``-Wall`` et ``-Werror``, que se passe-t-il ? Que faut-il rajouter dans le code pour qu'il compile sans erreurs ? .. only:: staff @@ -142,43 +142,43 @@ que vous aviez réalisé en Java. ``-Wall``: warning si une fonction ne renvoie pas de valeur. Il faut donc ajouter ``return 0;`` à la fin de la ``main``. -.. only:: staff + .. only:: staff - #. Compilez le code suivant (sans les options ``-Wall`` et ``-Werror``). Expliquez ce que sont les arguments de la fonction ``main``. Expliquez ce que fait `atoi(3)`_ (voir `strtol(3)`_ pour une fonction similaire). Exécutez ensuite le code avec ou sans arguments. Qu'observez-vous ? Comment se protéger du fait qu'un utilisateur ne va pas forcément rentrer le bon nombre d'arguments ? + #. Compilez le code suivant (sans les options ``-Wall`` et ``-Werror``). Expliquez ce que sont les arguments de la fonction ``main``. Expliquez ce que fait `atoi(3)`_ (voir `strtol(3)`_ pour une fonction similaire). Exécutez ensuite le code avec ou sans arguments. Qu'observez-vous ? Comment se protéger du fait qu'un utilisateur ne va pas forcément rentrer le bon nombre d'arguments ? - .. code-block:: c + .. code-block:: c - #include <stdlib.h> - int main(int argc, const char *argv[]) - { - int a = atoi(argv[1]); - printf("%d\n", a); - } + #include <stdlib.h> + int main(int argc, const char *argv[]) + { + int a = atoi(argv[1]); + printf("%d\n", a); + } - .. note:: + .. note:: - ``argc`` = nombre d'arguments. - ``argv`` = tableau de chaine de caractère contenant le nom de l'exécutable suivi des arguments. - ``atoi`` = transforme une chaine de caractère en un entier. - Le programme renvoi une segmentation fault lorsque l'on ne passe pas d'argument. Il faut donc utiliser ``argc`` pour tester que l'on a le bon nombre d'argument. + ``argc`` = nombre d'arguments. + ``argv`` = tableau de chaine de caractère contenant le nom de l'exécutable suivi des arguments. + ``atoi`` = transforme une chaine de caractère en un entier. + Le programme renvoi une segmentation fault lorsque l'on ne passe pas d'argument. Il faut donc utiliser ``argc`` pour tester que l'on a le bon nombre d'argument. -.. only:: staff + .. only:: staff - #. Ecrivez un programme qui va itérer (avec une boucle ``for`` et une boucle ``while``) et afficher tous les arguments qui lui sont passés à la sortie standard. + #. Ecrivez un programme qui va itérer (avec une boucle ``for`` et une boucle ``while``) et afficher tous les arguments qui lui sont passés à la sortie standard. - .. note:: + .. note:: - .. code-block:: c + .. code-block:: c - #include <stdio.h> - int main(int argc, const char *argv[]) - { - int i; - for (i = 1; i < argc; i++) - printf("%s\n", argv[i]); - return 0; - } + #include <stdio.h> + int main(int argc, const char *argv[]) + { + int i; + for (i = 1; i < argc; i++) + printf("%s\n", argv[i]); + return 0; + } #. Ecrivez deux programmes qui réagissent de façon similaire à `true(1)`_ et `false(1)`_ en utilisant `exit(3)`_. Vous pouvez tester le bon fonctionnement de votre programme en exécutant le code suivant dans une console: @@ -289,4 +289,4 @@ systématique de ce genre d'outils vous évitera bon nombre d'erreurs fréquente #. ! -z au lieu de -n - #. < au lieu de -lt . Cette erreur n'est pas détectée par ShellCheck. \ No newline at end of file + #. < au lieu de -lt . Cette erreur n'est pas détectée par ShellCheck. -- GitLab