Creative Commons License

Questions: première session

Question 1

Coder en C la fonction aire qui permet de calculer l’aire d’un rectangle en fonction de sa longueur et de sa largeur. Les entrées de la fonction aire sont : la longueur et la largeur du rectangle. La fonction aire renvoie la valeur de l’aire.

Coder en C la fonction perimetre qui permet de calculer le périmètre d’un rectangle en fonction de sa longueur et de sa largeur. Les entrées de la fonction périmètre sont : la longueur et la largeur du rectangle. La fonction périmètre renvoie la valeur du périmètre. (1 point)

Question 2

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 3

Vous avez utilisé le compilateur gcc pour faire la compilation des programmes C durant les TPs. Quelles sont les options que vous avez utilisées et quel était l’objectif d’utilisation de chaque option? (1 point)

Question 4

Vous utilisez un système d’exploitation 64bits. Quelle est la valeur renvoyée par chacune des fonctions suivantes?

Justifiez votre réponse. (1 point)

Question 5

Quels sont les avantages à utiliser un Makefile et la commande make. (1 point)

Question 6

Quelle est la principale différence entre la boucle while et la boucle do..while?

Coder en C la fonction void afficher_1() qui permet d’afficher les nombres inférieurs ou égaux à 1000, qui sont divisibles par 5 et non divisibles par 3 en utilisant une boucle while.

Coder en C la fonction void afficher_2() qui permet d’afficher les nombres inférieurs ou égaux à 1000, qui sont divisibles par 5 et non divisibles par 3 en utilisant une boucle do..while. (2 points)

Question 7

Coder en C la fonction char* conversion (int n) qui permet de convertir un entier n en une chaine de caractères. La fonction conversion renvoie la chaine de caractères résultante. Vous pouvez utiliser les fonctions disponibles dans les bibliothèques standards ou vous pouvez écrire votre propre fonction. (1 point)

Question 8

Coder en C une structure de donnée Etudiant qui comporte les éléments suivants : Nom, Prénom, Adresse, Filière (ETI, IRC ou CGP), Modules choisis (5 maximum), la note dans chaque module.

Coder en C une structure de données Module qui comporte les éléments suivants : Nom du module, responsable du module, les intervenants dans le module.

Pour les deux structures Etudiant et Module vous pouvez utiliser les types struct et/ou union (3 points)

Question 9.a

La suite de Fibonacci est une suite d’entiers définie comme suit:

En utilisant une méthode récursive, coder en C la fonction void fibonacci(int n) qui prend n comme entrée et affiche les n termes de la suite de Fibonacci U0, U1, U2,...Un. (1.5 points)

Question 9.b

Recoder la fonction void fibonacci(int n), mais cette fois en mode itératif. Vous devrez utiliser les boucles (for, while, do..while) pour cette question. (1 point)

Question 7.b

Avant de télécharger et utiliser les données externes, quelles sont vos considérations? Quelle était votre démarche par rapport à cet aspect lors du déroulement de votre projet? (1 point)

Question 10

Examinez le code C suivant :

char message1[]= "Bonjour"; 
char caractere1 = 'a' ;
int inum1 = 12 ;
float fnum2 = 24 ;
char message2[100] ;
char caractere2 ;
int inum2 ;
float fnum2 ;

Compléter le code précédent avec les instructions nécessaires pour

  1. Copier message1 dans message2
  2. Copier caractere1 dans caractere2
  3. Copier inum1 dans inum2
  4. Copier fnum1 dans fnum2

Vous pouvez utiliser les fonctions disponibles dans la bibliothèque <string.h>. (1 point)

Question 11

Considérons la chaîne de caractères mon_message :

char mon_message[100] = "";

Coder en C les instructions nécessaires pour:

  1. Copier "Bonjour" dans mon_message
  2. Ajouter "Le monde" à la fin de mon_message
  3. Afficher la taille de mon_message suite aux intructions précédentes

Vous pouvez utiliser les fonctions disponibles dans la bibliothèque <string.h>. (2 points)

Question 12.a

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 point)

Question 12.b

Coder un C la fonction int main(int argc, char* argv[]) qui permet d’afficher le contenu d’un fichier dont le nom est passé en ligne de commande. (1 point)

//Fichier Main.c
int main (int argc, char** argv[]) {

//votre code ici
//-----

Question 13

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 fichiers dans ce répertoire. (1 point)

//fichier repertoire.h

#ifndef REP_H
#define REP_H
 void lire_dossier(char*) ;
 #endif

//fichier repertoire.c
#include "repertoire.h "
void lire_dossier(char* nom_dossier) {
// à compléter