Seconde / Algorithmes 15 exercices corrigés

a
1. Etude générale d’algorithmes E.3043 Le diagramme ci-dessous représente l’algorithme d’Euclide déterminant le plus grand diviseur commun de deux nombres entiers : Voici l’exécution de cet algorithme avec les valeurs : A =254 ; B =16 : A A =254 et B =16 B r =14 C Oui D 1 A = 16 et B = 14 D 2 r =2 C Oui D 1 A = 14 et B = 2 B r =0 C Non D 2 PGCD (254 ; 16)=2 1 En reproduisant de manière analogue le tableau ci-dessus, déterminer le PGCD des entiers suivants : a A =1542 ; B =36 b A = 18 ; B = 543 2 Pour les valeurs de la question b , que fait l’algorithme lors de sa première étape? E.3042 On considère l’algorithme dont la représentation est donnée par le graphique ci-dessous : Compléter le tableau ci-dessous : Valeur de A 0 3 12 5 2 − 4 Valeur affichée E.3045 On considère l’algorithme dont la représentation est donnée par le graphique ci-dessous : Compléter le tableau ci-dessous : Valeur de A 5 8 − 2 0 21 Valeur affichée E.3046 On considère l’algorithme dont la représentation est donnée par le graphique ci-dessous : 1 Justifier qu’en affectant la valeur 5 à la variable A , l’algorithme affiche la valeur 50. 2 Déterminer la valeur affichée par l’algorithme dans les cas suivants : a A = 10 b A = 4 c A = − 2 3 a Que se passe-t-il lorsqu’on affecte la valeur 0 à la variable A ? b Trouver un autre exemple où l’algorithme ne se ter-mine jamais. 2. Première utilisation d’algoBox https://chingmath.fr sacados/3043 On choisitAetBdeux nombresrest di∑érent de 0?Le PGCD estBˆAprend pour valeurBˆBprend pour valeurrOn e∑ectue la division euclidienne deAparB.Le reste est a∑ecté àrOne∑ectueladivisioneuclidi-ennedeAparB.Le reste est a∑ecté àrNonOuiABCD1D2E sacados/3042 Donner une valeur deAA∑ecter àXla valeurA×2−5A`cher la valeur deXA sacados/3045 Donner une valeur deAA∑ecter àXla valeurA×2−5Xest supérieur ou égal à 10?A`cherAXA`cherA−XOuiNon sacados/3046 Donner une valeur deAA∑ecter àXla valeurA−3Tant queXest inférieurou égal à10A∑ecter àXla valeurA×XA`cherXSortiedeboucle
E.3069 1 La commande floor permet d’obtenir la partie entière d’un nombre ; supposons que la variable a ait la valeur 3 ; 1415926535 . a Donner la valeur de floor(a*10) . b En déduire la commande pour obtenir la valeur par défaut de a au dixième près ; au centième près. 2 Déterminer les restes des divisions euclidiennes suiv-antes : a 10 par 3 b 33 par 5 c 27 par 4 d 69 par 8 La commande a % b renvoie le reste de la division euclidi-enne de a par b : e Quelles peuvent être les valeurs de a %2 ? de 2 % a ? f À l’aide d’une structure conditionnelle, écrire un al-gorithme qui demande la saisie d’un entier puis qui affiche les phrases ˇce nombre est pairı ou ˇ ce nombre est impair ı suivant les cas. 3 La commande sqrt(2) renvoie la racine carrée du nom-bre 2: a Écrire un algorithme demandant à l’utilisateur quatre nombres représentant les coordonnées de deux points, et renvoyant la distance séparant ces deux points. b Modifier l’algorithme pour qu’il affiche la valeur par défaut de cette distance au dixième près. E.3044 1 Saisir l’algorithme ci-dessous dans le langage de program-mation de votre choix: Pour a allant de 1 à 25 x ← a × a Fin Pour 2 Par une exécution pas à pas de cet algorithme, donner l’ensemble des valeurs qui seront affectées à la variable x . E.3068 1 Saisir l’algorithme ci-dessous dans le langage de program-mation de votre choix: a ← 0 Tant que a<100 x ← a%2 Si x=0 Alors y ← a Fin Si a ← a+1 Fin Tant que 2 Lors de l’exécution de l’algorithme pas à pas, quelles sont les différentes valeurs affectées à la variable y ? 3 Modifier cet algorithme afin que la variable y soit affec-tée successivement de tous les multiples de 13 inférieurs à 100 . E.3070 1 Saisir l’algorithme ci-dessous dans le langage de program-mation de votre choix: Fonction f(a) a ← a Tant que a>=1 a ← a − 1 Fin Tant que Renvoyer a 2 a Effectuer un appel à la fonction f avec chacune des valeurs suivantes : 1 ; 2 ; 3 ; 4 ; 9 ; 10 b Quel est le rôle de la fonction f ? 3. Création d’algorithme E.3071 Le schéma ci-dessous représente l’algorithme d’Euclide. Construire cet algorithme à l’aide d’AlgoBox. E.3090 On considère l’algorithme ci-dessous où les variables x et i sont de type nombre : https://chingmath.fr sacados/3069 sacados/3044 sacados/3068 sacados/3070 sacados/3071 Lire les nombresAetBTant queLerestedeladivisiondeAparBest non nul?Le PGCD estBˆAprend pour valeurBˆBprend pour valeurrOn e∑ectue la division euclidienne deAparBSortiedeboucle sacados/3090 Lire le nombrexA`cher 1Pouriallant de 2 àxLe reste de la division euclidiennedexparivaut 0?A`cher " - "A`cheriFin de l’algorithmeSortiedeboucleOuiNon
1 Construire cet algorithme à l’aide d’AlgoBox. 2 Mathématiquement, à quoi sert cet algorithme? 4. Tracé de courbes E.3091 1 a Dans AlgoBox et dans l’onglet ˇ Dessiner dans un repère ı, cocher la case ˇ Utiliser un repère ı ; saisir les valeurs suivantes pour les bornes des axes : Xmin:-5 ; Xmax:5 ; GraduationsX:1 Ymin:0 ; Ymax:25 ; GraduationsY:1 b Saisir dans AlgoBox l’algorithme ci-dessous : c Exécuter l’algorithme pour observer son affichage. d Que semble afficher cet algorithme? 2 On souhaite tracer davantage de points de cette courbe,; pour cela, on modifie la boucle itérative pour que les abscisses des points soient espacées de 0 ; 1 en 0 ; 1 : a Modifier la ligne x PREND_LA_VALEUR i en : x PREND_LA_VALEUR i/10 b Exécuter l’algorithme pour observer l’effet de ces mod-ifications. c Quelle modification faut-il effectuer sur l’algorithme pour que la courbe représentative s’affiche sur l’intervalle − 5 ; 5 ? d Appliquer ces changements et relancer cet algorithme. E.3092 On considère la fonction f définie par : f ( x ) = x − 1 Dans un repère O ; I ; J orthogonal, on note C f la courbe représentative de la fonction f . 1 a Déterminer l’ensemble de définition de la fonction f . b Déterminer les coordonnées du point de la courbe C f ayant pour abscisse 1 . 2 a Dans AlgoBox et dans l’onglet ˇ Dessiner dans un repère ı, cocher la case ˇ Utiliser un repère ı ; saisir les valeurs suivantes définissant les bornes des axes : Xmin:0 ; Xmax:9 ; GraduationsX:1 Ymin:0 ; Ymax:3 ; GraduationsY:1 b Saisir dans AlgoBox l’algorithme suivant : c Exécuter l’algorithme et observer le graphique obtenu. 3 Le but de cette question est de tracer la courbe C f par des segments reliant chacun des points précédents. a Effacer la commande ˇ TRACER_POINT (x2,y2) ı pour la remplacer par la commande TRACER_SEGMENT reliant les points de coordonnées (x1,y1) et (x2,y2) . b Exécuter l’algorithme pour observer les modifications. Le tracé effectué est composé uniquement de segments. Quelle est l’origine commune à tous ces segments? Pourquoi? c Avant la définition de la boucle POUR et en relation avec la question 1 b , initialiser correctement les valeurs de x1 et y1 afin d’améliorer le tracé de la courbe C f . d Pour tracer la courbe C f segment par segment, l’algorithme doit relier le point actuel avec le point précédent. Juste avant la fin de la boucle POUR , affecter à x1 et y1 les valeurs de x2 et y2 . 5. Observation de la loi des grands nombres E.3108 1 a Saisir dans l’algorithme suivant dans le la langage de programmation de votre choix: c ← 0 Pour i allant de 0 à 100 x ← valeur aléatoire appartenant à 0 ; 1 x ← partie entière de 3 × x Fin Pour b Lors d’une exécution pas à pas de cet algorithme, quelles valeurs sont affectées à la variable ˇ x ı? https://chingmath.fr sacados/3091 VARIABLESxEST_DU_TYPENOMBREyEST_DU_TYPENOMBREiEST_DU_TYPENOMBREDEBUT_ALGORITHMEPOURiALLANTDE-5A5DEBUT_POURxPREND_LA_VALEURiyPREND_LA_VALEURx*xTRACER_POINT(x,y)FIN_POURFIN_ALGORITHME sacados/3092 VARIABLESx1EST_DU_TYPENOMBREy1EST_DU_TYPENOMBREx2EST_DU_TYPENOMBREy2EST_DU_TYPENOMBREiEST_DU_TYPENOMBREDEBUT_ALGORITHMEPOURiALLANTDE10A100DEBUT_POURx2PREND_LA_VALEURi/10y2PREND_LA_VALEURsqrt(x2-1)TRACER_POINT(x2,y2)FIN_POURFIN_ALGORITHME sacados/3108
2 a Ajouter une structure conditionnelle à l’intérieur de la boucle POUR afin que l’instruction : c ← c+1 soit exécutée chaque fois que la variable ˇ x ı prend la valeur 2 . b Exécuter plusieurs fois l’algorithme et observer la valeur de la variable c . Peut-on expliquer les variations des valeurs de la vari-able c ? 3 a Modifier l’algorithme afin que la boucle effectue 500 itérations et ajouter l’instruction ci-dessous en fin d’algorithme: f ← c 500 b Exécuter plusieurs fois cet algorithme et observer les variations de la valeur de la variable f en fin d’algorithme. 4 Que peut-on faire pour que les variations de la variable f se stabilisent? E.3109 1 a Activer l’utilisation d’un repère dans AlgoBox en prenant les paramètres suivants : Xmin : 0 Xmax: 10 Graduations X: 1 Ymin : 0 Ymax: 10 Graduations Y: 1 b Saisir l’algorithme suivant dans AlgoBox: c Exécuter cet algorithme. Quelle est son action? 2 a En utilisant l’exercice précédant, modifier l’algorithme présent pour qu’il affiche la fréquence d’apparition du nombre 2 (dans la variable x ) . b Modifier l’algorithme pour qu’il affiche la droite d’équation y=1/3 . c Augmenter le nombre de tirages de cet algorithme. Quelle observation peut-on faire lors de l’exécution de l’algorithme? 6. Dichotomie E.3146 1 Saisir l’algorithme ci-dessous : 2 a Exécuter cet algorithme avec les valeurs suivantes : xMin=1 ; borneMax=3 ; x=1.9384 b Observer les valeurs successives de borneMin et borneMax : vers quelle valeur semnble-t-elle tendre? 3 Modifier cet algorithme pour que ces deux valeurs se rap-prochent de 2 . https://chingmath.fr sacados/3109 VARIABLESxEST_DU_TYPENOMBREiEST_DU_TYPENOMBREmaxEST_DU_TYPENOMBREDEBUT_ALGORITHMEmaxPREND_LA_VALEUR100POURiALLANTDE1A100DEBUT_POURxPREND_LA_VALEURrandom()xPREND_LA_VALEURfloor(x*3)TRACER_POINT(10*i/max,x)FIN_POURFIN_ALGORITHME sacados/3146 VARIABLESborneMinEST_DU_TYPENOMBREborneMaxEST_DU_TYPENOMBRExEST_DU_TYPENOMBREDEBUT_ALGORITHMETANT_QUE(borneMax-borneMin>pow(10,-3))FAIREDEBUT_TANT_QUESI(x<(borneMin+borneMax)/2)ALORSDEBUT_SIborneMaxPREND_LA_VALEUR(borneMin+borneMax)/2FIN_SISINONDEBUT_SINONborneMinPREND_LA_VALEUR(borneMax+borneMin)/2FIN_SINONAFFICHERborneMinAFFICHER"-"AFFICHERborneMaxFIN_TANT_QUEFIN_ALGORITHME