Exercices d`algorithmique pour la classe de seconde

publicité
3
Exercices d’algorithmique pour
la classe de seconde
Tour de magie
[ZBZ288]
Un magicien demande à un spectateur :
• de penser à un nombre ;
• de le remplacer par son double ;
• de retrancher 3 au résultat obtenu ;
• de multiplier le nouveau résultat par 6 ;
1
Affectations de variables
[XDQ601]
1. Donnez les valeurs des différentes variables à la fin des instructions suivantes :
(a)
(c)
(e)
DONNER à A la valeur 1
DONNER à B la valeur A + 1
DONNER à A la valeur 3
(b) A reçoit la valeur 5
B reçoit la valeur 2
A reçoit la valeur B
B reçoit la valeur A
A prend la valeur 5
B prend la valeur 3
C prend la valeur A + B
A prend la valeur 2
C prend la valeur A − B
(d) A ← 5
B←A+4
A←A+1
B←A−4
3→A
10 → B
A+B→C
A+B→B
C→A
(f)
• d’annoncer le résultat obtenu.
1. (a) Écrivez un programme SPECT sur votre calculatrice qui lit dans la variable N
le nombre pensé par le spectateur et qui affiche le résultat obtenu.
(b) Écrivez un programme MAGIE sur votre calculatrice qui retrouve le nombre
pensé par le spectateur à partir du résultat.
2. Traduisez les deux programmes précédents en langage Python et bien sûr testez les
programmes.
4
Quel jour êtes vous né ?
[EDA855]
Voici une méthode pour déterminer le jour de la semaine d’une date donnée comprise
entre 1900 et 2099 :
1) On associe à chaque mois un code en utilisant le nombre 033 614 625 035 (janvier = 0, février = 3, etc) ;
A=3
A= A2
A=A+1
A=5×A
2) On additionne :
• le nombre formé des deux derniers chiffres de l’année,
• le quart de ce nombre (tronqué à la virgule si ce n’est pas un entier),
• la date du jour (donc un entier entre 1 et 31),
• le code du mois.
2. Exécutez les instructions précédentes sur votre calculatrice et vérifiez la valeur des
différentes variables.
2
Permutations
[TWX850]
1. Écrivez une suite d’instructions qui échange les contenus des deux variables A et B
quelques soient leurs contenus.
5) Si la date est après 2000, on ajoute 1 au résultat ;
6) Si l’année est bissextile et si la date est avant le 1er Mars, on ajoute 1 au résultat ;
7) On divise par 7, et le reste donne le jour de la semaine (0 = dimanche, 1 = lundi,
etc).
1. Déterminez le jour de votre naissance ?
2. Les années bissextiles sont les années :
• soit divisibles par 4 mais non divisibles par 100 ;
2. Écrivez une suite d’instructions qui transfert le contenu de la variable A à la variable B, le contenu de B à C et le contenu de C à A.
• soit divisibles par 400.
(a) Concevez et mettez au point une fonction Python bissextile qui retourne
« True » si son argument est une année bissextile, « False » sinon.
http://dichotomies.fr/2010/infomath/exercices/2nde/algorithmique/
Denis Pinsard – Mis à jour le mercredi 31 août 2011
[RGJ006]
(b) Concevez et mettez au point une procédure Python jour semaine qui attend
une date comme argument et qui retourne le jour de la semaine qui correspond
à cette date.
5
Trier trois nombres
...
Pour COL compris entre 1 et NOMBRE_DE_COLONNES − 1:
CALCULER les produits croisés des colonnes COL et COL + 1
Si les produits croisés sont différents:
...
...
[UFQ208]
Trois nombres sont stockés dans trois variables X , Y et Z.
1. On souhaite échanger les contenus des trois variables de façon à ce que X ¶ Y ¶ Z.
Pour cela on propose d’utiliser la méthode suivante.
7
Maximum
[DEA258]
1. Écrire un algorithme qui demande deux nombres et qui affiche le plus grand des
deux.
Si X > Y : PERMUTER X et Y
Si Y > Z: PERMUTER Y et Z
Si X > Z: PERMUTER X et Z
2. (a) Traduire l’algorithme en un programme compréhensible par votre calculatrice.
Démontrez que cette méthode est incorrecte.
(b) Entrer le programme dans votre calculatrice, le tester et le mettre au point.
2. Proposez une méthode qui résoud correctement le problème.
8
6
Tableau de proportionnalité
[YFX542]
1. (a) Le tableau ci-dessous est-il un tableau de proportionnalité ?
54
405
163
36
291
354
23
98
1 242
9 315
3 749
828
4 595
8 142
529
2 254
(b) Décrivez la méthode que vous utilisez pour savoir si un tableau est de proportionnalité.
2. L’algorithme décrit ci-dessous est censé déterminer si un tableau est de proportionnalité.
Est-il correct ? Si non, modifiez le pour qu’il fonctionne correctement
CALCULER le coefficient de proportion de la 1ère colonne
METTRE le résultat dans COEF1
Pour chacune des autres colonnes:
CALCULER le coefficient de proportion de cette colonne
METTRE le résultat dans COEF
Si COEF == COEF1:
PROPORTIONNEL = Vrai
Sinon:
PROPORTIONNEL = Faux
AFFICHER la valeur de PROPORTIONNEL
3. Le texte ci-dessous décrit une autre façon de vérifier qu’un tableau est de proportionnalité. Complétez le pour qu’il fonctionne correctement.
http://dichotomies.fr/2010/infomath/exercices/2nde/algorithmique/
Triangle rectangle
[NQA156]
1. Écrire un algorithme qui teste si trois nombres donnés peuvent être les longueurs
d’un triangle rectangle :
2. Traduire l’algorithme en un programme Python.
9
Triangle
[AAM164]
1. Étant donnés trois nombre a, b et c, existe-t-il toujours un triangle dont les côtés ont
pour mesure ces trois nombres ? Quelle condition doit-on exiger des trois nombres
pour que cela soit possible ?
2. Écrire un algorithme qui teste si trois nombres donnés peuvent être les longueurs
d’un triangle :
3. Traduire l’algorithme en un programme compréhensible par votre calculatrice.
10
Calculer la somme des N premiers entiers
[HSY832]
1. Écrire un algorithme qui demande un entier N et qui calcule la somme de tous les
entiers plus petits ou égaux à N .
2. (a) Traduire l’algorithme en un programme compréhensible par votre calculatrice.
(b) Entrer le programme dans votre calculatrice, le tester et le mettre au point.
Denis Pinsard – Mis à jour le mercredi 31 août 2011
[RGJ006]
Page 2
11
Permuter
[LZD932]
On cherche à écrire un algorithme qui échange (on dit aussi permute) les valeurs de deux
variables A et B.
1. Expliquer pourquoi l’algorithme ci-dessous n’est pas correct.
Écrire un programme qui allume des pixels de l’écran de votre calculatrice de manière à
dessiner les figures suivantes.
(a) Une ligne horizontale séparant l’écran en deux parties égales.
(b) Un rectangle de 71 pixels de largeur et de 51 pixels de hauteur, centré sur l’écran.
LIRE A
LIRE B
B=A
A=B
AFFICHER A
AFFICHER B
(c) Une grande croix (×) centrée sur l’écran et occupant toute la hauteur de l’écran.
(d) L’intérieur d’un carré de 41 pixels de côté, centré sur l’écran.
(e) Le carré précédent en traçant de plus ses diagonales en blanc (c’est-à-dire pixels
éteints).
(f) Un triangle isocèle rectangle dont les petits côtés mesurent 45 pixels.
2. Pour permuter A et B il est en fait nécessaire d’utiliser une variable de travail afin de
mémoriser temporairement une valeur.
Corriger l’algorithme ci-dessus en utilisant une variable de travail T .
12
Trier
[REK406]
1. Écrire un algorithme qui modifie les variables A, B et C de façon qu’en sortie de
l’algorithme, A contienne la plus petite valeur, B la suivante et C la plus grande
valeur.
2. Traduire l’algorithme en un programme, entrer le programme dans votre calculatrice, le tester et le mettre au point.
13
Dessiner
[UJV218]
L’écran de votre calculatrice est constitué de petits carrés appelés pixels. Plus précisément
l’écran est formé de 63 lignes de 95 pixels.
Chaque pixel peut être allumé ou éteint. Afficher un texte, un graphique ou une figure
sur l’écran consiste à allumer les bons pixels et à éteindre les autres.
Les pixels sont repérés par :
• leur ligne qui est un nombre entre 0 et 62, la ligne 0 étant la ligne du haut ;
• leur colonne qui est un nombre entre 0 et 94, la colonne 0 étant la colonne de
gauche.
Les commandes suivantes vous seront utiles pour écrire vos programmes :
• CLRDRAW permet d’éteindre tous les pixels ;
• PXON(7,28) permet d’allumer le pixel situé sur la ligne n˚7 et sur la colonne n˚28 ;
• PXOFF(13,42) permet d’allumer le pixel situé sur la ligne n˚13 et sur la colonne
n˚42.
http://dichotomies.fr/2010/infomath/exercices/2nde/algorithmique/
Denis Pinsard – Mis à jour le mercredi 31 août 2011
[RGJ006]
Page 3
Téléchargement