Questions: deuxième session
- Année: 2018-2019
- Durée: 2 heures
- Total: 20 points
- Documents: autorisés
- Types de documents autorisés: Tous les documents autorisés
- Calculatrices : non autorisées
Question 1
Quelles sont les différences entre un compilateur et un interpréteur. Donnez des exemples de langages compilés et de langages interprétés. (1 point)
Question 2.a
Quelle est la principale différence entre la boucle while et la boucle do..while? (1 point)
Question 2.b
Coder en C la fonction void afficher_while() qui permet d’afficher les nombres inférieurs ou égaux à 1000, qui sont divisibles par 25 et non divisibles par 7 en utilisant une boucle while.
Coder en C la fonction void afficher_dowhile() qui permet d’afficher les nombres inférieurs ou égaux à 1000, qui sont divisibles par 25 et non divisibles par 7 en utilisant une boucle do..while.
(2 points)
Question 3.a
Quelles sont les différences entre les mots-clés struct et union en C? (1 point)
Question 3.b
Coder en C une structure de données Livre qui comporte les éléments suivants : identifiant, titre, nom d’écrivain(e), nombre de pages, année de publication, nom de la maison d’édition, prix. Instanciez une variable de cette structure (par exemple, les détails de votre livre préféré). (1 point)
Question 4.a
Quelle est la valeur renvoyée par chacune des lignes suivantes?
- 10 % 4
- 10 & 4
- 10 | 4
- 10 && 4
- 10 || 4
Justifiez votre réponse. (1 point)
Question 4.b
Vous êtes sur une machine de 64 bits et vous utilisez également un système d’exploitation 64bits. Quelle est la valeur renvoyée par chacune des lignes suivantes?
- sizeof (char)
- sizeof (char *)
- sizeof (char **)
- sizeof (char ***)
Justifiez votre réponse. (1 point)
Question 5
Codez en C un programme qui prend des numéros (un ou plusieurs) passé par la ligne de commande. L’objectif de cette fonction est de calculer
- Le numéro plus grand
- Le numéro plus petit
Question 6
La suite de Fibonacci est une suite d’entiers définie comme suit :
- U0=1
- U1=1
- Un= Un-1 + Un-2
En utilisant une méthode récursive, coder en C la fonction fibonacci qui prend n comme entrée et affiche les n termes de la suite de Fibonacci U0, U1, U2,...Un. (1.5 points)
Question 7
Une des bonnes pratiques de programmation en C est de diviser le code en plusieurs modules (module1, module2,etc...) Pour chaque module on associe un fichier .h (exemple module1.h) et un fichier .c (exemple module2.c).
- Quel code est implémenté dans le fichier .h ?
- Quel code est implémenté dans le fichier .c ?
- Quelle commande de compilation permet d’obtenir le fichier .o à partir du fichier.c? Donner la commande pour avoir le module1.o à partir du module1.c
- Que contient le fichier module1.o?
- Est-ce que le fichier module1.o est un fichier exécutable ?
(1.5 points)
Question 8
Coder en C la fonction trier qui prend un tableau des entiers et qui range et affiche ces entiers dans l’ordre croissant. (1.5 points)
Question 9
Coder en C la fonction qui permet d’afficher les 10 dernières lignes d’un fichier dont le nom est passé en ligne de commande. (1.5 points)
Question 10
Examiner le contenu des deux fichiers repertoire.h et repertoire.c. Compléter le code de la fonction void lire_dossier(char* nom_dossier) qui permet de parcourir le répertoire, dont le nom est passé en paramètre, et affiche les noms de tous les répertoires dans ce répertoire. (1.5 points)
Question 11
Codez en C le programme qui cherche un fichier dans un répertoire. Le nom de fichier ainsi que le chemin de répertoire sont saisis par l’utilisateur. Le programme affiche ‘oui’ ou ‘non’. Pour simplifier notre question, nous imaginons qu’il n’y a pas des sous-répertoires dans le répertoire saisi par l’utilisateur. (1.5 points)
Question 12
En utilisant les listes simplement chainées, écrivez le code liste.c (et liste.h) et implémentez les fonctions suivantes :
- void inserer(list *, int) prend deux entrées : une liste d’entiers simplement chainée et un nouvel entier. L’objectif de cette fonction est d’ajouter ce nombre au début de la liste chainée.
- int supprimer (list *) prend une entrée : une liste d’entiers simplement chainée. L’objectif de cette fonction est de supprimer le premier entier dans la liste et de renvoyer cet entier.