Premi`ere S Lycée Jean Vilar 2013/2014 AlgoBox

publicité
Première S
Lycée Jean Vilar
2013/2014
AlgoBox : Vecteurs et droites du plan
Exercice 1. On considère l’algorithme suivant ?
Variables
xA, yA, xU, yU, a, b, c sont des nombres réels
Entrée
Saisir xA, yA, xU et yU
Initialisation
a prend la valeur yU
b prend la valeur -xU
c prend la valeur -a xA – b yA
Sortie
Afficher « l'équation est ax + by + c = 0
avec a », a, ««b = », b, « c = », c
1. À quoi sert l’algorithme ? Expliquer.
2. Compléter le programme suivant qui correspond à l’algorithme :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
VARIABLES
xA EST_DU_TYPE NOMBRE
yA EST_DU_TYPE NOMBRE
xU EST_DU_TYPE NOMBRE
yU EST_DU_TYPE NOMBRE
...
...
...
DEBUT_ALGORITHME
LIRE xA
LIRE yA
...
...
a PREND_LA_VALEUR yU
b PREND_LA_VALEUR -xU
...
AFFICHER "L’équation est de la forme ax + by + c = 0"
AFFICHER "\navec a = "
AFFICHER a
...
...
...
...
24: FIN_ALGORITHME
ou en Python :
x_A
y_A
...
...
a =
b =
...
= i n p u t ( ”x A = ”)
= i n p u t ( ”y A = ”)
y_U
≠x_U
p r i n t ”L e q u a t i o n de l a d r o i t e p a s s a n t par A e t de v e c t e u r d i r e c t e u r U
est ”
p r i n t a , ”x + ” , . . .
19
Première S
Lycée Jean Vilar
2013/2014
Exercice 2. Ecrire un programme qui demande a, b et c trois nombres réels et ensuite qui teste si
a ”= 0 ou b ”= 0 et le cas échéant affiche ”ax + by + c = 0” est l’équation cartésienne d’une droite”.
Exercice 3. Coder dans AlgoBox l’algorithme suivant :
a, b, c sont des nombres
xA, yA sont des nombres
Lire a, b et c
Si a <> 0 ou b <> 0 alors
lire xA, yA
si A appartient à la droite D d’équation ax + by + c = 0 alors
Afficher "A appartient à D"
fin
fin
Exercice 4. On considère la droite D d’équation
6x + 15y = 3
Écrire un programme qui compte le nombre de points A appartenant à D et tels que les coordonnées
soient des nombres entiers compris entre -20 et 20.
20
Première S
Lycée Jean Vilar
2013/2014
AlgoBox : Vecteurs et droites du plan
(corrigé)
Exercice 1. On considère l’algorithme suivant ?
Variables
xA, yA, xU, yU, a, b, c sont des nombres réels
Entrée
Saisir xA, yA, xU et yU
Initialisation
a prend la valeur yU
b prend la valeur -xU
c prend la valeur -a xA – b yA
Sortie
Afficher « l'équation est ax + by + c = 0
avec a », a, ««b = », b, « c = », c
1. À quoi sert l’algorithme ? Expliquer.
2. Compléter le programme suivant qui correspond à l’algorithme :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
VARIABLES
xA EST_DU_TYPE NOMBRE
yA EST_DU_TYPE NOMBRE
xU EST_DU_TYPE NOMBRE
yU EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE xA
LIRE yA
LIRE xU
LIRE yU
a PREND_LA_VALEUR yU
b PREND_LA_VALEUR -xU
c PREND_LA_VALEUR -a * xA + b * yA
AFFICHER "L’équation est de la forme ax + by + c = 0"
AFFICHER "\n avec a = "
AFFICHER a
AFFICHER "\n b = "
AFFICHER b
AFFICHER "\n c = "
AFFICHER c
24: FIN_ALGORITHME
Exercice 2. Ecrire un programme qui demande a, b et c trois nombres réels et ensuite qui teste si
a ”= 0 ou b ”= 0 et le cas échéant affiche ”ax + by + c = 0” est l’équation cartésienne d’une droite” :
1:
2:
3:
4:
5:
6:
7:
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
21
Première S
Lycée Jean Vilar
2013/2014
8:
LIRE c
9:
SI ( a!= 0 ou b != 0 ) ALORS
10:
DEBUT_SI
11:
AFFICHER "ax+by+c = 0 décrit une droite"
12:
FIN_SI
13:
SINON
14:
DEBUT_SINON
15:
AFFICHER "ax + by + c = 0 ne décrit pas une droite"
16:
FIN_SINON
17: FIN_ALGORITHME
Exercice 3. Coder dans AlgoBox l’algorithme suivant :
a, b, c sont des nombres
xA, yA sont des nombres
Lire a, b et c
Si a <> 0 ou b <> 0 alors
lire xA, yA
si A appartient à la droite D d’équation ax + by + c = 0 alors
Afficher "A appartient à D"
fin
fin
On rappelle que le point A(xA ; yA ) appartient à la droite D si et seulement si on a l’égalité :
axA + byA + c = 0. D’où, le programme :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
xA EST_DU_TYPE NOMBRE
yA EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE c
SI ( a!= 0 ou b != 0 ) ALORS
DEBUT_SI
LIRE xA
LIRE yA
SI (a*xA + b*yA + c == 0) ALORS
DEBUT_SI
AFFICHER "A(xA;yA) appartient à la droite D"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "A(xA;yA) n’appartient pas à la droite D"
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
AFFICHER "ax + by + c = 0 ne décrit pas une droite"
FIN_SINON
FIN_ALGORITHME
Exercice 4. On considère la droite D d’équation
6x + 15y = 3
22
Première S
Lycée Jean Vilar
2013/2014
Écrire un programme qui compte le nombre de points A appartenant à D et tels que les coordonnées
soient des nombres entiers compris entre -20 et 20.
Avant d’écrire le programme, précisons l’algorithme (ou comment on fait pour compter ces points).
Rappelons que si l’on se donne x alors on connait y :
y=
3 ≠ 6x
15
Ainsi, pour x allant de ≠20 à 20, il nous suffit de tester si y est un nombre entier compris entre
≠20 et 20.
D’autre part, notons que la fonction affine f (x) = 3≠6x
15 est décroissante (son coefficient directeur
6
2
est ≠ 15 = ≠ 5 ), ainsi pour tout ≠20 Æ x Æ 20, on a 20 Ø f (≠20) Ø y = f (x) Ø f (20) Ø ≠20. D’où
la condition ≠20 Æ y Æ 20 est automatiquement vérifiée.
L’algorithme est alors le suivant :
1: x, y sont des nombres
2: compteur est un nombre entier
3: compteur Ω 0
4: for x allant de -20 à 20 do
5:
if 3 - 6x est divisible par 15 then
6:
incrémenter le compteur de 1
7:
y Ω 3≠6x
15
8:
afficher (x,y)
9:
end if
10: end for
11: Afficher compteur
Û initialisation
Une façon de tester si un nombre est divisible par 15 est de vérifier si le reste de sa division
euclidienne par 15 est nul. Dans le langage d’AlgoBox, le reste de la division euclidienne d’un
nombre n par 15 se calcul à l’aide la commande %, ainsi : n % 15.
Voici maintenant le programme Algobox :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
VARIABLES
x EST_DU_TYPE NOMBRE
y EST_DU_TYPE NOMBRE
compteur EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
compteur PREND_LA_VALEUR 0
POUR x ALLANT_DE -20 A 20
DEBUT_POUR
SI ( (3-6*x) % 15 == 0 ) ALORS
DEBUT_SI
compteur PREND_LA_VALEUR compteur + 1
y PREND_LA_VALEUR (3-6*x)/15
AFFICHER "\n("
AFFICHER x
AFFICHER ", "
AFFICHER y
AFFICHER ")"
FIN_SI
FIN_POUR
AFFICHER "\n Nombre de solutions: "
AFFICHER compteur
22: FIN_ALGORITHME
23
Téléchargement