Questions à choix multiples

Ces questions ont pour objectif de vous permettre de tester vous-même votre compréhension de la matière couverte par cette mission de mise en route. Elles supposent que vous avez lu le premier chapitre du syllabus contenant l’introduction à Unix et au langage C.

Question 1. Commande man(1)

La commande man(1) permet de lire les pages de manuel d’un système Unix. Elle est particulièrement utile pour vérifier les arguments à donner à un programme en ligne de commande ou pour savoir comment utiliser certaines fonctions de la librairie standard ou appels systèmes. Comment faut-il appeler la commande man(1) pour lister toutes les pages de manuel dont le résumé contient le mot “”intro”” ?
man -k intro
man intro
man -k *intro*

Question 2. Commande ls(1)

La commande ls(1) permet de lister le contenu d’un répertoire. Elle supporte de nombreux paramètres. Parmi les groupes d’affirmation suivants, un seul est valide, lequel ?
  • Dans un répertoire, la commande ls -a sans argument permet d’afficher la liste de tous les fichiers et répertoires présents
  • La commande ls -r permet de lister les répertoires présents dans le répertoire courant en inversant l’ordre
  • La commande ls -l permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire non cachés
  • Dans un répertoire, la commande ls -a sans argument permet d’afficher la liste de tous les fichiers et répertoires présents
  • La commande ls -R permet de lister de façon récursive le contenu du répertoire courant et de ses sous-répertoires
  • La commande ls -l permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire non cachés
  • Dans un répertoire, la commande ls * permet d’afficher la liste de tous les fichiers et répertoires présents
  • La commande ls -f permet de lister le contenu du répertoire courant sans trier les fichiers par nom
  • La commande ls -l permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire
  • Dans un répertoire, l’appel à ls(1) sans argument permet d’afficher la liste de tous les fichiers et répertoires présents
  • La commande ls -r permet de lister de façon récursive le contenu du répertoire courant et de ses sous-répertoires
  • La commande ls -l permet d’obtenir la liste détaillée du contenu du répertoire courant avec toutes les informations relatives à chaque fichier et répertoire

Question 3. Premier programme en langage C

Depuis la publication du livre de référence [KernighanRitchie1998], le premier programme écrit en langage C affiche à l’écran la chaîne de caractères « Hello, world ». Parmi les codes source ci-dessous, un seul est entièrement correct. Lequel ?
#include <stdio.h>
int main(int argc, const char *argv[]) {
  printf("Hello, world\n");
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
  printf("Hello,");
  printf(" world\n");
}
#include <stdio.h>
void main(int argc, const char *argv[]) {
  printf("Hello, world\n");
}
int main(int argc, const char *argv[]) {
  printf("Hello, world\n");
}
#include <stdlib.h>
int main() {
  printf("Hello, world\n");
}
#include <stdlib.h>
void main()
   printf("Hello, world\n");
}

Question 4. Deuxième programme en langage C

Votre deuxième programme en langage C doit afficher à l’écran la chaîne de caractères SINF1252. Lequel parmi les programmes ci-dessous affiche-t-il correctement cette chaîne de caractères ?
#include <stdio.h>
int main(int argc, const char *argv[]) {
  int a = 1252;
  printf("SINF%d\n", a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
 int a = 1252;
 printf("SINF");
 printf("%d\n", a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
  int a = 1252;
  printf("SINF%a\n", a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
  int a = 1252;
  printf(SINF);
  printf(%d\n, a);
}
#include <stdio.h>
int main(int argc, const char *argv[]) {
  int a = 1252;
  printf("SINF$a\n", a);
}

Question 5. Arguments passés à un programme C

Considérons le programme C ci-dessous qui permet de manipuler les arguments passés en ligne de commande.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
  int a = atoi(argv[1]);
  printf("%d\n", a);
}

Parmi les groupes d’affirmations ci-dessous, un seul ne contient que des affirmations qui sont toutes vraies. Lequel ?

  • Lors de l’exécution de la fonction main, argc est initialisé au nombre d’arguments passés au programme (y compris le nom de l’exécutable lui-même).
  • Lors de l’exécution de la fonction main, le tableau argv[] contient dans argv[0] le nom du programme, dans argv[1] le premier argument, etc.
  • La fonction atoi permet de convertir une chaîne de caractères en l’entier équivalent.
  • Lors de l’exécution de la fonction main, argc est initialisé à zéro.
  • Lors de l’exécution de la fonction main, le tableau argv[] contient dans argv[0] le premier argument, dans argv[1] le second argument, etc.
  • La fonction atoi calcule la taille de son argument.
  • Lors de l’exécution de la fonction main, argc est le nombre maximum d’arguments que l’on peut lui passer.
  • Lors de l’exécution de la fonction main, le tableau argv[] contient dans argv[0] le premier argument, dans argv[1] le second argument, etc.
  • La fonction atoi doit prendre comme argument une chaîne de caractères qui ne contient que des chiffres.
  • Lors de l’exécution de la fonction main, le tableau argv[] contient dans argv[0] le premier argument, dans argv[1] le second argument, etc.
  • La fonction atoi permet de convertir une chaîne de caractères en l’entier équivalent.

Vérifiez vos réponses