Vous êtes sur la page 1sur 4

Université Hassan II de Casablanca

Faculté des Sciences Ben M’sik


Département de Physique

SMP/S4 (2015 - 2016)


Examen de fin de semestre - Module Informatique

Date : Vendredi 10 juin 2016


Durée : 01h 30
Documents et téléphones mobiles : non autorisés
Blanco : indésirable

Nom et Prénom CNE Section Groupe Total / 33 Moy /20

1. On considère les variables déclarées et initialisées comme suit :

int a = 65, b = 2; char c ='A'; float x = 2;

Donnez les valeurs des expressions C++ suivantes :

a. (1 pt) a/b : ……………………………………………………..……………………….

b. (1 pt) a%b : ………………………………………..……………..……………………...

c. (1 pt) a/c : ……………………………………………………..……………………….

d. (1 pt) a/x : ……………………………………………………..……………………….

e. (1 pt) a==c : ……………………………………….…………..……………………….

2. (6 pts) On considère la déclaration avec initialisation des six variables entières suivantes :

int a = 1, b = 2, c = 3, d = 4, e = 5, f = 6;

Que deviennent les valeurs de ces variables après exécution des instructions suivantes ?:
a+= b++; c = --d; e -= 2; f >> 1;

Variable a b c d e f
Nouvelle valeur

3. On considère les instructions de déclaration suivantes :


char c ='B';
int i = 0, *pi = &i;
float x;
string s = "C++";
double t[6];

Module Informatique SMP/S4 Examen Final – Juin 2016 Page 1/4


Donnez les expressions C++ qui représentent les grandeurs suivantes :
a. (1 pt) L’adresse de la zone mémoire réservée à la variable c : ………………………..

b. (1 pt) La valeur numérique de c : ….………………………………...……..……...….

c. (1 pt) La valeur pointée par le pointeur pi : ………………………………...………...

d. (1 pt) La taille en octets de la zone mémoire réservée à x : ………………...…………

e. (1 pt) La taille on octets de la chaîne de caractères s : ………………………...……...

f. (1 pt) La taille on octets du tableau t : …………………………………….……..……

g. (1 pt) La dernière composante du tableau t : …………………………………...……

4. La fonction C++ suivante calcule et retourne la factorielle de son argument n :


unsigned long int factWhile(short n) {
unsigned long int tmp = 1;
while(n) { tmp = tmp*n; n=n-1; }
return tmp;
}

a. (2 pts) En utilisant le minimum d’opérateurs possibles, donnez l’équivalent en une


seule instruction du bloc { tmp = tmp*n; n = n-1; }

………………………………………………………………………………………………………..

b. (2 pts) En utilisant la boucle for au lieu de la boucle while complétez le code de la


fonction factFor suivante qui réalise la même tâche que la fonction factWhile.

unsigned long int factFor(short n) {

………………………………………………………………………………………………

………………………………………………………………………………………………

………………………………………………………………………………………………

c. (1 pt) Peut-on utiliser cette fonction pour calculer la factorielle du nombre 100 ?
Justifiez votre réponse.

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

5. En supposant que le code de la fonction factWhile se trouve dans un module précompilé


et que sa déclaration se trouve dans le ficher "exam.hpp" du répertoire courant, on se
propose d’écrire un programme qui fait appel à cette fonction, sans la reprogrammer,

Module Informatique SMP/S4 Examen Final – Juin 2016 Page 2/4


pour calculer et afficher la factorielle de tous les nombres n compris entre deux limites n1
et n2 dont les valeurs sont à fixer par l’utilisateur. Le programme doit prévoir la possibilité
de :
 Répéter l’exécution jusqu’à confirmation d’arrêt par l’utilisateur ;
 Vérifier que n2  n1 et redemander la saisie de n2 si cette condition n’est pas
vérifiée, tout en limitant le nombre d’erreurs possibles, nerr, à un maximum de 3.
L’écran d’exécution doit se présenter sous la forme de l’exemple suivant (où les valeurs
saisies par l’utilisateur sont suivies du symbole ) :
n1 = 5
n2 = 10
n n!
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
Autre exécution? (O/N): o
n1 = 20
n2 = 15
Mauvaise valeur. n2 = 12
Mauvaise valeur. n2 = 18
Mauvaise valeur. Go to sleep.

a. (1 pt) Donnez la directive d’inclusion du fichier d’en-tête non standard exam.hpp

………………………………………………………………………………………………………..

b. (1 pt) Donnez l’instruction de déclaration des variables n1, n2 et nerr en choisissant


un type adéquat.

………………………………………………………………………………………………………..

c. (2 pts) En supposant que la valeur de n1 est déjà fournie par l’utilisateur, donnez la
boucle qui permet de saisir la valeur de n2 en s’assurant de la condition n2  n1.

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

Module Informatique SMP/S4 Examen Final – Juin 2016 Page 3/4


d. (2 pts) Donnez l’instruction qui permet d’afficher le message "Go to sleep" puis
quitter le programme lorsque le nombre d’erreurs de saisie atteint la valeur limite 3.

………………………………………………………………………………………………………..

e. (2 pts) Donnez la boucle qui permet d’afficher, comme indiqué dans l’exemple de
sortie ci-dessus, les valeurs de n! retournées par la fonction factWhile pour n
comprise entre n1 et n2.

………………………………………………………………………………………………………..

………………………………………………………………………………………………………..

f. (2 pts) Sachant que la réponse de l’utilisateur au message qui demande de confirmer


ou non la répétition de l’exécution du programme est déjà affectée à une variable de
type char appelée rep, donnez l’expression C++ qui traduit la condition de répétition
de l’exécution du programme pour de nouvelles valeurs de n1 et n2.

………………………………………………………………………………………………………..

Module Informatique SMP/S4 Examen Final – Juin 2016 Page 4/4

Vous aimerez peut-être aussi