Académique Documents
Professionnel Documents
Culture Documents
Pour chacune des questions de ce devoir, lisez bien attentivement la question avant
d'y répondre. Une fois toutes les réponses fournies:
Prénom:lamiaa
Question 0:
Créer le Xchier smps4.hpp en exécutant la cellule de code suivante, puis
%%writefile smps4.hpp
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <limits.h>
#include <float.h>
#include <fstream>
Writing smps4.hpp
Lorsque le nombre de répétions n'est pas connu, mais doit être au moins égal à
1,
2) Donner les noms des constantes prédéXnies qui représentent les bornes de
l'intervalle des valeurs possibles que peut prendre x:
Question 3:
On se propose de déterminer la valeur du plus petit réel positif simple précision, c'est-
à-dire le plus petit réel positif de type @oat, qu'on nommera @oateps, pour lequel 1 +
@oateps ≠ 1.
Pour cela, on peut initialiser une variable @oateps à 1 puis la diviser répétitivement par
2 jusqu'à ce que la condition 1 + @oateps ≠ 1 n'est plus vériXée.
En utilisant la boucle do cette méthode peut être simplement codée comme suit:
1) Rappeler la déXnition d'une fonction C/C++; réponse: une fonction C/C++ est
un bloc de code nommé qui rélise une tâche utile et réutilisiable qu'on peut
programmer une seule fois et la réutiliser pour toujours, sans la reprogrammer.
Question 5:
Compléter la cellule de code suivante par la commande qui permet d'aZcher les
caractréistiques de tous les Xchiers du répertoire courant dont le nom commence par
devoir2, puis exécuter la cellule.
# Affichage des caractérisyiques des fichiers dont le nom commence par devoir2
!g++ devoir2.cpp
Nature:
Utilité: stockage
Réponse: ........................................
Question 7:
Le programme suivant fait appel à la fonction @oateps déXnie dans le module devoir2
pour déterminer et aZcher la valeur de l'epsilon machine des réels simple précision
pour la machine sur laquelle le programme est exécuté, et la comparer à la valeur de la
constante prédéXnie FLT_EPSILON.
Writing test_devoir2.cpp
Question 8:
1) Expliquer la nature et l'utilité du Xchier test_devoir2.o
Nature: .......................................
Utilité: ......................................
Réponse: ......................................
:
Question 9:
Compléter la cellule de code suivante par la commande qui permet de construire un
exécutable nommé test_devoir2 à partir des deux Xchiers déjà séparémment
compilés devoir2.o et test_devoir2.o, puis exécuter la cellule.
# exécution de test_devoir2
!./test_devoir2
Question 10:
1) Comparer la valeur retournée par la fonction hoateps à la constante FLT_EPSILON
et interpréter le résultat de la comparaison.
Réponse: ........................................
a) du langage de programmation?
b) de la machine?
c) du système d'exploitation?
Réponse: ........................................
Question 11:
La cellule de code suivante reprend le code du programme test_devoir2.cpp où la ligne
4, qui contient la déclaration de la fonction hoateps, est transformée en commentaire.
//float floateps();
int main() {
cout << "floateps = " << floateps() << endl
<< "FLT_EPSILON = " << FLT_EPSILON << endl;
return 0;
}
Overwriting test_devoir2.cpp
Question 12:
Expliquer l'origine du message d'erreur de la commande précédente:
Réponse: ................................................
Question 13:
La cellule de code suivante reprend le contenu du Xchier à inclure smps4.hpp. Ajouter
l'instruction de déclaration de la fonction @oateps dans la ligne 9 de cette cellule puis
sauvegarder la nouvelle version de smps4.hpp en exécutant la cellule.
:
%%writefile smps4.hpp
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <limits.h>
#include <float.h>
#include <fstream>
Overwriting smps4.hpp
Question 14:
La cellule suivante reprend le code du programme test_devoir2.cpp sans l'instruction
de déclaration de la fonct hoateps. Sauvegarder ce code en exécutant la cellule, puis
recompiler le programme.
%%writefile test_devoir2.cpp
#include "smps4.hpp"
int main() {
cout << "floateps = " << floateps() << endl
<< "FLT_EPSILON = " << FLT_EPSILON << endl;
return 0;
}
Overwriting test_devoir2.cpp
Réponse: .........................................
!./a.out
Réponse: ........................................
:
Question 15 (++):
𝑖
1) Donner les représentations binaires sur huit bits des nombres 2 avec 0 ≤ 𝑖 ≤ 7.
Réponse:
20 = 00000001. 21 =00000010
22 = 00000100 23 =00001000
24 =00010000 25 =00100000
26 = 01000000 27 =10000000
2) Rappeler l'opération que réalise l'opérateur bit à bit "<<" sur les entiers non signés.
Réponse: ......................................
3) Donner les représentations binaires sur huit bits des valeurs de l'expression
(1 << 𝑖) pour 1 ≤ 𝑖 ≤ 7.
Réponse:
Réponse: ........................................
Réponse: .....................
Réponse: ......................................
Réponse: .......................................
5) Vrai ou Faux: Quelle que soit la valeur du nombre 𝑛 , l'expression arithmétique 𝑛 &
(1 << 𝑖) ne peut prendre que deux valeurs possibles.
Réponse: .......................................
6) Si vous avez répondu par Vrai à la question précédente, préciser les deux valeurs
possibles.
Réponse: .......................................
Question 17 (++):
Considérons la ligne de commande:
Le premier mot de cette ligne, g++, est le nom de la commande à exécuter et les mots
:
suivants sont des arguments passés à cette commande par le programme appelant,
Linux.
Réponse: ........................................
2) Quel est l'avantage de cette méthode par rapport à celle où le programme demande
ces arguments à l'utilisateur qui les saisie au clavier?
Réponse: ........................................
Réponse:
4) Sachant que argc et argv prennent leur valeurs de la ligne de commande servant à
lancer le programme dès validation de la ligne par l'utilisateur, donner ces valeurs
dans le cas de la ligne de commande:
Réponse:
Question 18 (++):
On se propose d'écrire un programme qui détermine et aZche les bits d'un nombre
entier et dont l'exécution peut être faite à l'aide d'une ligne de commande de la forme:
int2bin n
Réponse:
if(..................) {
cout << "..............................." << endl;
..........................;
}
4) Sachant que les mots qui forment une ligne de commande sont tous considérés
comme des chaînes de caractères, et qu'une chaîne de la forme "123" peut être
convertie en entier grâce à la fonction standard atoi, donner l'instruction qui permet
d'extraire la valeur du nombre n à partir de la ligne de commande.
Réponse:
Réponse: .......................................
7) Quel est l'avantage de l'opérateur conditionnel par rapport à la structure de test if ...
else?
Réponse: .......................................
Question 19:
La cellule de code suivante contient le code incomplet du programme int2bin de la
question précédente. En vous servant de vos réponses précédentes, complèter ce
programme puis sauvegarder le en exécutant la cellule.
%%writefile int2bin.cpp
#include "smps4.hpp"
Overwriting int2bin.cpp
!./int2bin
Erreur de syntaxe.
!./int2bin 142
142 = 00000000000000000000000010001110
!./int2bin 19
19 = 00000000000000000000000000010011
!./int2bin -1
-1 = 11111111111111111111111111111111
:
Question 20 (++):
1) Donner la déXnition d'un tableau.
Réponse:.........................................
2) Donner les instructions C++ qui permettent de réaliser les tâches suivantes:
*t1:
*(t1+i): ...........t1[i].......................
t2[i]: ..................................
t2[i][j]: ...............................
Question 21 (++):
L'objet de cet exercice est de:
Réponse: ...........................................
3) Pour coder l'algorithme de tri par sélection sous forme d'une fonction utile et
réutilisable, nous utiliserons le pseudo code suivant:
Pour i = 0 à n-1 {
imin = i; // Indice du ième minimum
Pour j = i+1 à n-1
Si (t[j] < t[imin]) imin = j;
permute(t[i],t[imin]);
}
4) Pour la tâche de permutation deux entiers la fonction de tri fait appel à la fonction
réutilsable suivante (Code C++ à compléter):
Réponse: .......................................
:
Quel est l'avantahe de ce mode par rappaort à son équivalent en C?
Réponse: .......................................
5) Pour aZcher le tableau avant et après l'opération de tri, nous utiliserons la fonction
C++ suivante (à compléter):
Question 22 (++):
La cellule de code suivante reprend le contenu du Xchier à inclure smps4.hpp. Ajouter
à ce Xchier les instructions de déclaration des 4 fonctions de la question précédente:
randint,
triParSelection,
permute, et
print
Prénom:lamiaa