Nom : PTSI D EVOIR N°1 29 septembre 2016 Tous les résultats doivent être justifiés. Pour les programmes en Python, l’indentation doit clairement apparaître. Tout document interdit, y compris la calculatrice. Le barème est donné à titre indicatif : il pourra être soumis à quelques fluctuations. 3,5 points Exercice 1 : Changements de bases 1. Calculer de deux façons différentes l’écriture en base 10 du nombre 1010102 . 2. Donner l’écriture en base 2 de 163 . 3. Donner l’écriture en base 16 de 10010110110010102 . 4. Donner l’écriture de 5E16 en base 2, puis en base 10. 3,5 points Exercice 2 : Codage des entiers relatifs 1. Quels entiers naturels peut-on représenter avec des mots de 8 bits ? et quels entiers relatifs ? 2. a. Donner de deux façons différentes la représentation binaire sur 8 bits de −22. b. Effectuer en binaire la multiplication de −22 par 5. c. De quel entier relatif obtient-on la représentation ? (attention : on travaille toujours sur 8 bits.) 3. Soit x et x 0 deux entiers négatifs représentés en mémoire sur 8 bits respectivement par m et m 0 . On suppose que x ×x 0 peut être représenté sur 8 bits (c’est à dire qu’il est dans l’intervalle donné à la question 1.). Montrer qu’en effectuant le produit de m par m 0 (toujours sur 8 bits), on obtient la représentation de x × x 0 . 2,5 points Exercice 3 : Variables et affectations On a tapé dans une console Python la suite d’instructions suivantes. Indiquer à côté de chaque ligne la valeur des variables a et b après l’exécution de la ligne. a >>> a, b = 42, 15 >>> a = 2 * b >>> b += 6 >>> a = a - 10 ; b = a - 10 >>> a, b = a + 10, a 7,5 points Exercice 4 : Fonctions 1. Écrire une fonction angle_reflexion en Python qui prend en argument l’angle d’incidence theta1 d’un rayon lumineux, et qui renvoie l’angle de réflexion. Formule : les angles d’incidence θ1 et réflexion θ2 sont liés par la relation dite de Snell-Descartes : θ2 = −θ1 b 2. Écrire une fonction angle_refraction en Python qui prend en argument les indices de réfractions n1 et n2 de deux milieux et l’angle incident theta1 d’un rayon lumineux, et qui renvoie l’angle réfracté. Formule : les indices de réfraction n 1 et n 2 de chacun des milieux et les angles incident θ1 et réfracté θ2 sont liés par la relation dite de Snell-Descartes : n 1 · sin(θ1 ) = n 2 · sin(θ2 ) Remarque : on pourra considérer que Python connaît les fonctions sin et arcsin (équivalent du sin−1 de la calculatrice). 3. Écrire une fonction est_refracte en Python qui prend en argument les indices de réfractions n1 et n2 de deux milieux et l’angle incident theta1 d’un rayon lumineux, et qui renvoie un booléen indiquant si le rayon est réfracté ou pas. Rappel : le rayon est réfracté si n1 n2 · sin(θ1 ) É 1). Sinon, il y a réflexion totale et le rayon réfracté n’existe pas. 4. Écrire un programme Python qui : • demande à l’utilisateur de rentrer les valeurs des indices de réfractions et de l’angle incident ; • affiche la valeur de l’angle de réflexion ; • affiche soit la valeur l’angle de réfraction, soit un message indiquant qu’il y a réflexion totale. 3 points Exercice 5 : Fonctionnement d’un algorithme On considère l’algorithme suivant : Entrées : n ∈ N, a ∈ R Sorties : r = ? ? ? r ←1 tant que n > 0 faire si n est pair alors n ← n/2 sinon r ←r ×a n ← (n − 1)/2 a ← a2 Compléter le tableau suivant, en faisant fonctionner cet algorithme pour a = 5 et n = 13. Remarques : • les lignes ne sont pas forcément toutes utiles ; • on se dispensera de calculer explicitement les puissances de 5. Étape a r Initialisation Fin d’itération 1 Fin d’itération 2 Fin d’itération 3 Fin d’itération 4 Fin d’itération 5 Que semble calculer cet algorithme ? (On ne demande pas de justification.) n