Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Aacahieralgorithmiqu

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 25

N.

MAKNI

I. Introduction
On désigne par algorithmique l’ensemble des activités logiques qui relèvent des
algorithmes.
Le mot algorithmes vient du nom du mathématicien Al Khawarizmi (né vers 780 - mort vers
850) qui a écrit en langue arabe le plus ancien traité d’algèbre « abrégé de calcul par la complétion et
la simplification » dans lequel il décrivait des procédés de calcul à suivre étape par étape pour
résoudre des problèmes ramenés à des équations.

Rédiger un algorithme consiste à décrire les différentes étapes de calcul pour résoudre un
problème. En d'autres termes, un algorithme est un énoncé d’une suite d’opérations permettant de
donner la réponse à un problème. Si ces opérations s’exécutent en séquence, on parle d’algorithme
séquentiel. Si les opérations s’exécutent sur plusieurs processeurs en parallèle, on parle d’algorithme
parallèle. Si les tâches s’exécutent sur un réseau de processeurs on parle d’algorithme réparti ou
distribué.

Il est parfois fait usage du mot algorithmie, bien que ce dernier ne figure pas dans la plupart des
dictionnaires.

Antiquité :
Les algorithmes dont on a retrouvé des descriptions exhaustives ont été utilisés dès l’époque
des Babyloniens, pour des calculs concernant le commerce et les impôts.

L’algorithme le plus célèbre est celui qui se trouve dans le livre des Éléments d'Euclide. Il
permet de trouver le plus grand diviseur commun, ou PGCD, de deux nombres.

II. Des exemples d’algorithmes de calcul

Exercice 1 Soit deux nombres X et Y.

• a) Calculer X+Y et remplacer X par cette valeur.


• b) Calculer X-Y et remplacer Y par cette valeur.
Afficher les nombres X et Y.

Dans cet algorithme, nous devons effectuer trois opérations successives :


- Les entrées : ce sont les nombres X et Y .
- Le traitement des informations : dans les phases en a) et b).
- La sortie : C’est le résultat final.

A ) Faire fonctionner cet algorithme pour quelques entrées X et Y.

N.M. Page 1
X= 5 Y = 2
L’étape a) X+ Y = 7 et X prend la valeur : 7
L’étape b) X –Y = 5 donc Y prend la valeur : 5

Les nombres affichés sont : X = 7 et Y = 5

A partir de deux nombres X et Y cet algorithme affiche leur somme X + Y et X.

B) Utiliser la calculatrice pour faire fonctionner cet algorithme pour plusieurs valeurs X et Y.
TI casio
: Input X (Entrer X) ? , obtenu dans l’éditeur du programme
: Input Y (Entrer Y) en appuyant sur les touches SHIFT VARS F4

:   
:X–Y  Y
: DISP ‘’X =’’, X ( Afficher X) X obtenu dans l’éditeur du programme
: DISP ‘’Y =’’, Y ( Afficher Y) en appuyant sur les touches SHIFT VARS F5

Exercice 2 Calcul du PGCD de deux entiers naturels (TI82-83-84 et TI-Nspire) voir document

Exercice 3
• Choisir un nombre.
• Lui ajouter 13
• Si le nombre obtenu est supérieur ou égal à 20, alors lui retrancher 15, sinon lui ajouter 15.
• Multiplier le nombre obtenu par 7.
• Ecrire le résultat.
( Voir programme TPA TI83 Plus)

Exercice 4

Soit une fonction f qui à un entier naturel n associe l’entier f(n) défini de la façon suivante :

 ,  
  ; 
 2

  ,  
  3
 1
1. Calculer l’image par la fonction f de chacun des entiers 0 ; 1 ; 2 ; 3 ; 4 ; 50 ; 51.
2. Ecrire un algorithme permettant de calculer les valeurs de la fonction f .
Entrée
Saisir n
Traitement
Si n est pair
Alors

Y prend la valeur 
Sinon
Y prend la valeur 3n +1.
Fin de SI
Sortie
Afficher Y.
3. (Voir le programme TPB TI 83 plus).

N.M. Page 2
o Entrée
o Saisir N
Exercice 5 o Initialisation
Voici un algorithme, écrit en langage naturel: • S prend la valeur 0.
• Choisir un entier naturel N. • Traitement
• Initialiser une valeur S en lui affectant la valeur 0.  Pour i de 1 jusqu’à N
 S prend la valeur S + i
• Répéter pour chaque entier i de 1 jusqu’à N l’instruction :
• Fin de pour
Donner à S la valeur S+i. • Sortie
• A la fin de la répétition afficher S. • Afficher S
1. Faire fonctionner cet algorithme lorsque n = 10.
2. Quel est le rôle de cet algorithme.
3. Ecrivons l’algorithme sous forme codée :

4. (Voir le programme TPC TI 83 plus).

Exercice 6
Voici un algorithme, écrit en langage naturel:
• Choisir un entier naturel N.
• Initialiser une variable u en lui affectant la valeur N
• Répéter tant que  11 l’instruction :
• Donner à u la valeur u – 11.
• A la fin de la répétition afficher u.

1. Faire fonctionner cet algorithme lorsque n = 42, puis pour n = 65.


2. Pour un entier naturel quelconque, quel lien existe-t-il entre le nombre n lu en entrée et le
nombre u affiché à la sortie ?

III) Avec la calculatrice Calculatrice TI 83 – 84


Exercice 7 : Chercher les diviseurs d’un entier Naturel
: Input N
: For(D,1,√",1)
: IF fPart(N/D = 0
: Pause {D,N/D)
: End
Exercice 8 : Décomposer un entier naturel en produit de facteurs premiers

: Prompt N
: N sto R
: ClrList L1
: {N} sto L1
: While iPart(R/2)=R/2
: augment(L1,{2}) sto L1
: R/2 sto R
: End
: For (J,3,N,2)
: While iPart(R/J)=R/J
: augment(L1,{J}) sto L1
: R/J sto R
: End
: End
: Disp L1
Exercice 9 Algoritmhe pour démontrer qu’un nombre est premier
:ClrHome
:Input « Un nombre impair : » , N
:1 sto D

N.M. Page 3
:Lbl 1
:D+2 sto D
:If D*D#N
:Then
:If fPart(N/D)=0
:Then
:Disp « Divisible par », D
:Else
:goto1
:End
:Else
:Disp « Premier »
:End

Exercice 10 : Simulation : lancer N fois une pièce et déterminer le nombre d’apparition de la


face « Pile »
:Input N
:For (k,1,N)
:If randInt(1,2)=1
:P + 1 sto P
:End
;Disp « Nombre de Piles »,P

Exercice 11 : Simulation : lancer N fois un dé et déterminer le nombre d’apparition de la face 4

:Input N
:For (k,1,N)
:If randInt(1,6)=4
:P + 1 sto P
:End
;Disp « Nombre d’apparition de 4 est » ,P

Exercice 12 : Résolution d’une équation de second degré (niveau première).


:Disp « A » : Input A
:Disp « B » : Input B
:Disp « C » : Input C
:ClrHome
:B² - 4A*C sto D
:Disp « Delta = »,D
:If D>0
:Then
:Disp « 2 solutions »
:Disp(-B+$%)/(2A) Frac, (-B-$%)/(2A) Frac
:Else
:If abs(D)<10'(
:Then
:Disp « 1 solution »
:Disp –B/(2A) Frac
:Else
:Disp « Pas de solution »
:End

N.M. Page 4
IV) Algorithmique et langage Python
IV-1 Préparer l’écriture
On commence par demander une nouvelle fenêtre : Files, News widdow.
Ensuite, il faut enregistrer le programme : Files, Save As, On donne un nom qui convient sans espace, sans
accents et finissant par .py

IV-2 Instruction : Entrée/sortie


Avec Python, on utilise les instructions input() et print()
On peut aussi faire figurer un texte avec chacune de ces instructions :

Application 1 ( On reprend l’exercice 1 page 1)


Soit deux nombres X et Y.
• a) Calculer X+Y et remplacer X par cette valeur.
• b) Calculer X-Y et remplacer Y par cette valeur.
Afficher les nombres X et Y.
Avec Python on sauvegarde un programme avec nom.py

Voici le programme avec avec Python :


X=input('Enter un nombre X= ')
Y=input('Entrer un nombre Y= ')
X=X+Y
Y=X-Y
print'la nouvelle valeur de X est : ',X
print'la nouvelle valeur de Y est : ',Y

Application 2
Ecrire un algorithme donnant les coordonnées du milieu d’un segment. ( Voir corrigé exercice 16)

Application 3
Ecrire un algorithme donnant la distance entre deux points. (Voir corrigé exercice 24)

Application 4
Ecrire un algorithme donnant l’âge d’une personne à partir de sa date de naissance. (Voir corrigé
exercice 23)

Application 5
Devinette
Demander à quelqu’un de penser très fort à deux nombres
Demander la somme de ces deux nombres puis la différence de ces deux nombres.
Ecrire un algorithme permettant de lui communiquer les deux nombres qu’il a choisi au début.
( voir corrigé exercice 13)

Application 6
Ecrire un algorithme permettant le calcul de la somme des carrés de nombres.

Application 7
Ecrire un algorithme qui pour un temps donné en secondes, le convertit en heures minutes et secondes.

Application 8 ( en construction)

Application 9 ( en construction)

N.M. Page 5
IV-3. Instruction conditionnelle et tests logiques
Tout d’abord considérons l’instruction conditionnelle « si » correspondant aux différents schémas
algorithmiques :
• Si condition alors instruction

Ou bien :

• Si condition alors
• Instruction 1
• Instruction 2.
• Finsi

Pour isoler l’ensemble des instructions on peut les décaler vers la droite on appelle ceci : indenter

• Si condition alors
• Instruction 1
• Instruction 2
• . .
A ce moment, il est inutile de faire « finsi ». C'est ce que fait l’éditeur Python après le symbole « : »
• If condition :
• Instruction 1
• Instruction 2

Application 10
Faire un petit programme Pythagore qui demande trois longueurs de côtés et qui indique si le triangle est
rectangle ou pas.
Dans cette application, on ne sera trop ambitieux et on indiquera quelle est le plus grand côté.

Entrer la longueur du grand côté


Entrer la longueur du premier côté
Entrer la longueur du deuxième côté
Calculer x = a²
Calculer y=b²+c²
Si x=y
On écrit : le triangle est rectangle, si non, on écrit que le triangle n’est pas rectangle.

Voici le programme avec avec Python :

a=input('donner la longueur du grand coté a= ')


b=input('donner la longueur du premier coté b= ')
c=input('donner la longueur du deuxieme coté c= ')
x=a**2
y=b**2+c**2
if x==y:
print' '
print'le tringle est rectangle'
else:
print' '
print' '
print 'le triangle n est pas rectangle'
Les différents symboles utilisés dans les tests
Symbole Signification
== Egale à
!= Différent de
< Inférieur strictement à
> Supérieur strictement à
<= Inférieur ou égal à
>= Supérieur ou égal à

N.M. Page 6
Application 11 (Maximum, minimum, tri de deux nombres IREM Grenoble)
Ecrire un programme lisant les valeurs de deux nombres A et B et affectant le maximum de A et
de B à la variable MAXIMUM.

Une solution :
Entrer A et B
Si ) * alors
MAXIMUM+A
Sinon
MAXIMUM+B
Afficher la valeur du MAXIMUM

Note : Que faire si A=B ?

Traduction en Python : Voir corrigé exercice 18

Application 12
Compléter l’algorithme précédent pour affecter le maximum de A et B à la valeur MAXIMUM, et le
minimum de A et B à la valeur MINIMUM.

Une solution :
Entrer A et B
Si ) * alors
MAXIMUM+A
MINIMUM+B
Sinon
MAXIMUM+B
MINIMUM+A
Afficher la valeur du MAXIMUM
Voir corrigé Exercice 19

Application 13
On souhaite écrire un algorithme lisant les valeurs de A, B, C et affectant le maximum de A, B
et C à la variable MAXIMUM.
Voir corrigé exercice 20

Application 14
Programmer et faire fonctionner l’algorithme suivant :
Saisir A, B
Si A > B
Alors
Afficher 5A+2B
Sinon
Afficher 5A-2B

Application 15
Un commerçant de reprographie facture 0,30 € les 20 premières photocopies et 0,15 € les
suivantes.
1. Quel est le montant payé pour 15 photocopies ? pour 50 photocopies ?
2. Ecrire un algorithme permettant de calculer le montant payé quant le nombre de
photocopies est donné. Programmer cet algorithme, puis vérifier les résultats de la
question

N.M. Page 7
IV-4 Les boucles dans Python.

A. Les instructions conditionnelles dans Python, boucle while.


fabriquer un compteur.
Application 20

On souhaite afficher des nombres de 0 à 30. Pour cela, on utilise l'instruction while, (tant que).
En langage Naturel Instruction de Python
L’initialisation, on commence par 0 K=0
Tant que k est inférieur ou égal à 20 While k<=30 :
On écrit le nombre k print k
On incrémente, c'est-à-dire qu’on affiche k+1 à k k = k+1
On remarque la même syntaxe que pour la commande if, avec les deux points et l’indentation
obligatoire.

B. L'algorithme de Babylone
Un exemple historique
Il y a environ 4000 ans, cet algorithme était utilisé par les lettrés de Babylone pour calculer des racines carrées.

La tablette babylonienne YBC 7289


Les étapes de l'algorithme de Babylone

Voici cet algorithme appliqué au calcul de √,- :

1ère étape :
La première valeur approchée de √50 est la moitié de 50, c'est à dire 25.

2e étape :
En divisant 50 par 25, on trouve 2 ; √50 est donc compris entre 2 et 25. La deuxième valeur
approchée de √50 sera la moyenne arithmétique de 2 et de 25 soit 13,5.

3e étape :
En divisant 50 par 13,5, on trouve 3,7037 ; √50 est donc compris entre 3,7037 et 13, 5. La troisième
valeur approchée de √50 sera la moyenne arithmétique de 3,7037 et de 13, 5 soit 8,6018.

Étapes suivantes :
On continue autant de fois qu'il est nécessaire en répétant le procédé. Nous accepterons, sans le
démontrer, qu'on obtient ainsi des valeurs approchées de plus en plus précises de √50 .
La méthode se généralise à tout nombre positif.

N.M. Page 8
Construire un organigramme

Au lieu d'utiliser le langage courant pour décrire un algorithme, on peut utiliser un organigramme qui
le présente de manière plus visuelle et surtout plus synthétique.

Les organigrammes, très à la mode au début de l'informatique, sont aujourd'hui moins utilisés. Mais
dans certains cas, ils sont extrêmement utiles à la compréhension.

Avant de construire l'organigramme

Avant de présenter l'organigramme, nous ferons trois remarques qui permettront de mieux comprendre
comment il a été construit.

1°) On peut observer que, la première approximation mise à part, toutes les autres sont calculées de la
0 ,-
même façon. : si v est l'approximation qui suit immédiatement l'approximation u, on a /  1 2  2 .
Le même calcul est donc répété un certain nombre de fois.
0 ,-
2°) Contrairement à ce qu'on pouvait penser à priori, la formule /  1 2  2  montre que
deux variables seulement suffisent pour décrire la suite des valeurs approchées de √50 .

3°) Il existe différents moyens d'arrêter les calculs. On peut fixer à l'avance le nombre des
approximations qui seront calculées, 20 ou 30 par exemple. On peut aussi décider de stopper les
calculs lorsque une certaine précision, fixée elle aussi à l'avance, est atteinte. Pour cela, au cours des
calculs, on peut tester la valeur absolue de la différence de deux valeurs approchées
consécutives uet v. On décidera par exemple de cesser les calculs dès qu'on aura | 4 5| 6 10'7 .
L'organigramme de Babylone
Voici maintenant l'organigramme annoncé :

N.M. Page 9
Commentaire

Cet organigramme a un début et une fin. Il comprend 3 variables numériques (u, v et d) ainsi qu'une constante numérique (c'est a).
Les instructions qu'il comporte sont exécutées une à une, de manière séquentielle. Une « boucle » répète le même calcul tant que c'est nécessaire
mais naturellement avec des valeurs différentes. Le nombre de répétitions dépend du résultat du test d>0,000001 placé dans la case rose. Selon la
réponse à ce test, les calculs sont poursuivis ou stoppés.

L'organigramme comporte plusieurs types d'instructions. On trouve en particulier :


- une instruction d’entrée (case verte) : on choisit de calculer non pas seulement √50 mais la racine
carrée d'un nombre a quelconque mais positif ; comme la valeur de a ne change jamais dans la suite
des calculs, on dit que c'est une constante numérique ;
- des instructions d'affectation (cases bleues), représentées par le signe = ;
- une instruction de sortie (case violette) ;
- une instruction conditionnelle (case rose).

Remarque :
L'instruction d'affectation = permet de définir une variable numérique en lui donnant un nom et une
valeur. Bien que ce soit le même qu'en mathématique, le symbole = a ici un tout autre sens. Par
exemple, l'instruction x=x+1 ne désigne pas du tout une équation mais indique simplement que la
nouvelle valeur de la variable numérique x s'obtient en ajoutant 1 à l'ancienne !

Algorithme et programmation
L'algorithme dans le langage Python

L'organigramme qui schématise l'algorithme de Babylone peut être transcrit presque


immédiatement dans un langage de programmation. Avec le langage de programmation
PYTHON, on obtient le programme suivant :

a=input("Choisir a :" )
u=a/2.0
d=abs(a-u)
while d>0.000001 :
v=(u+a/u)/2.0
d=abs(u-v)
u=v
print u

Même si les instructions sont exprimées en anglais, on reconnaît la démarche utilisée dans
l'organigramme.
L'entrée du nombre a se fait à l'aide de l'instruction input() : c'est un mot anglais d'origine latine qui
signifie « introduire, mettre dedans ».
Le mot-clé anglais while, qui signifie tant que..., sert à définir une boucle conditionnelle.
La précision demandée est atteinte lors du calcul de la 7e valeur approchée. Celle-ci
vaut 7,07106781187.

Un programme est donc la mise en œuvre d'un ou de plusieurs algorithmes, dans le cadre d'un
langage de programmation.

N.M. Page 10
Application 22 Dichotomie
Objectif : Chercher une solution par dichotomie :
On considère une fonction f définie sur par 8  8² 4 28 4 2
On commence par observer sa représentation graphique à l’aide de la calculatrice ou à l’aide du
logiciel de géométrie Géogebra.
On peut conjecturer que l’équation f(x) = 0 admet une unique solution sur l’intervalle :1; ∞: et que
cette solution est comprise entre 2 et 3.
1. Appliquer l’algorithme ci-dessous avec a = 2, b = 3 et e = 0,1.
Demander a et b
Demander e
Tant que b – a > e
Affecter à c la valeur (a+b)/2
Si <= > <? 6 0 alors mettre c en b
Sinon mettre c en a
Fin tant que
Afficher c,

2. Ecrire l’algorithme en Python


3. Faire fonctionner le programme pour trouver une solution approchée de f(x)=0 en utilisant
un pas de 0.0001

C) Boucle et itérateurs
Boucle Pour :
Application 23
On souhaite trouver tous les triangles rectangles dont les côtés sont des entiers consécutifs, le premier
est un entier entre 1 et 10.
Il s’agit ici de répéter 10 fois le travail réalisé dans l’application 10 de la page 6, avec pour longueurs
de côtés : (1 ;2 ;3) , (2 ;3 ;4) , (3 ;4 ;5) , …. (10 ;11 ;12).

1. On écrit l’algorithme :
On suppose que le plus petit côté est par exemple c.
Début :
Pour c allant de 1 à 10 par pas de 1,
Mettre c+1 dans b
Mettre b+1 dans a
Afficher a, b et c.
Si c²+b² = a²
Ecrire « Le triangle est rectangle »
Sinon, écrire « Le triangle n’est pas rectangle »
Fin du si
Fin du pour
2. On traduit l’algorithme en Python

for c in range(1,10,1) :
b=c+1
a= b+1
print a,b,c
If c**2+b**2=a**2
print « le triangle est rectangle »
Else :
print « le triangle n’est pas rectangle »
3. Faire fonctionner le programme pour des entiers consécutifs de 1 à 30 puis de 1 à 50 puis
de 1 à 100 …... Que dire ?

N.M. Page 11
Application 24
Retour à la boucle Tant Que
On souhaite maintenant trouver 4 triangles rectangles dont les côtés sont des entiers, les deux
plus petits étant consécutifs. Contrairement à l’application 23, on ne sait pas pour quelle
valeur de c on va s’arrêter : l’utilisation d’une boucle pour est alors impossible. On va
reprendre la boucle tant que ( While ) et afficher les triplets qui donnent des triangles
rectangles.

1. On écrit l’algorithme :
Variables
a,b,c longueurs des côtés ; compteur pour n allant de 1 à 4.
Début
Initialiser c à 1
Initialiser n à 0
Tant que n < 4
Mettre c+1 dans b
Mettre racine(b²+c²) dans a
Si a est entiers, afficher a ,b et c et augmenter n de 1.
Fin de si
Ajouter 1 à c
Fin tant que
Fin
2. On traduit l’algorithme en Python

N.M. Page 12
Exercice 13 (Devinette)
print"Penser tres fort a deux nombres"
print"Calculer la somme et la difference de ces deux nombres"
#saisir de la somme
s=input("Entrer la somme :")
#saisir de la difference
d=input("Entrer la difference:")
print"..."
print"..."
x=(s+d)/2
y=(s-x)
print "les nombres sont :",y,"et",x
Exercice 14 (Indice de masse corporelle)
m=float(input("masse en kilo:"))
t=float(input("taille en metre:"))
IMC=m/(t**2)
print'votre masse corporelle est de :',IMC
Exercice 15 (Algorithme d’Euclide)
a=input("Choisissez l'entier a:")
b=input("choisissez l'entier b:")
D=max(a,b) #On appelle D le plus grand des deux nombres choisis
d=min(a,b) #On appelle d le plus petit des deux nombres choisis
r=D%d #On calcule le reste de la division euclidienne de D par d
while r!=0: #tant que le reste est différent de O
D=d
d=r
r=D%d #On calcule le reste de la division euclidienne de D par d
print"Le pgcd de ",a,"et de ",b,"vaut",d
Exercice 16 (Coordonnées du milieu d’un segment)
XA=float(input("abscisse de A :"))
YA=float(input("ordonnee de A :"))
XB=float(input("abscisse de B :"))
YB=float(input("ordonnee de B :"))
XM=(XA+XB)/2
YM=(YA+YB)/2
print('abscisse de M:',XM)
print('Ordonnee de M:',YM)
Exercice 17 (Primalité d'un entier naturel) (ce programme est à améliorer)
from math import*
print("module pour déterminer si un nombre est premier")
n=input("entrer un entier naturel :")
a=sqrt(n)
p=0
c=2
while (c<=a):
d=(n%c)
if (d==0):
print(n,"n'est pas un nombre premier, il est divisible par",c)
p=1
break
c=c+1
if (p==0):
print(n, "est un nombre premier")
raw_input("appuyer sur entrer pour finir")

N.M. Page 13
Exercice 18 : (Maximum de deux nombres)
A=input('A=')
B=input('B=')
if A>B:
max=A
else:
max=B
print("le maximum est :"),max
Exercice 19 :(Maximum et minimum de deux nombres)
#maxi mini
A=input('A=')
B=input('B=')
if A>B:
max=A
min=B
else:
max=B
min=A
print("le maximum est :"),max,"le minimum est",min
Exercice 20 : (Maximum de trois nombres)
Algorithme :
Entrer A, B, C
# Calcul du maximum de A et B
Si ) * alors
MAXIMUM+ )
Sinon
MAXIMUM+ *
# Calcul du maximum de MAXIMUM et C
Si @ A)BCADA alors
MAXIMUM+ @
Sinon
MAXIMUM+ A)BCADA

Avec Python
#Maximum de trois nombres
A=input('A=')
B=input('B=')
C=input('C=')
#calcul du maximum de A et B
if A>B:
max=A
else:
max=B
#calcul du maximum de A et C
if C>max:
max=C
else:
max=max
print"le maximum de",A,";",B,"et",C,"est",max

Exercice 21 ( Calculer le cube des entiers de 1 àN)


N=input("N=")
def cube(x):
return x*x*x

N.M. Page 14
for i in range(N+1):
print i,cube(i)
Exercice 22 ( Calculer la somme d’une liste)

T=[1,2,3,4,5]
C=0
for i in range(5):
C=C+T[i]
print C
Exercice 23 (Python peut Trouver votre âge)

# Ce script ne gère pas si l'anniversaire est passé ou non d'où le "environ"


annee_courante = 2009
print "Quelle est votre date de naissance ?"
reponse = raw_input()
print "Vous avez environ", annee_courante- int(reponse),"ans"

Exercice 24 (Python calcule la distance entre deux points)


import math
print "xA?"
xA = int(raw_input())
print "yA?"
yA = int(raw_input())
print "xB?"
xB = int(raw_input())
print "yB?"
yB = int(raw_input())
print "distance entre A et B:", math.sqrt( (xA-xB)**2 + (yA-yB)**2)

Exercice 25 (segment 1)
from turtle import*
x1=-200
y1=-100
x2=50
y2=150
up()
goto(x1,y1)
down()
goto(x2,y2)
up()

Exercice 26 (segment 2)
from turtle import*
x=-100
y=-150
a=30
d=200
up()
goto(x,y)
down()
left(a)
forward(d)
up()

N.M. Page 15
forward(100)
left(120)
forward(100)
mainloop()

Exercice 28 (Triangle 2)
from turtle import*
reset()
couleur=['red','blue','green']
for i in range(3):
color(couleur[i])
forward(100)
left(120)
mainloop()

Exercice 29 (Triangle 3)

A suivre …….

DESSINS GEOMETRIQUES ( lycée l’Oiselet ) lien vers mon bureau pour activer Python.

Etape 1 : Tracer un triangle équilatéral pas à pas.

Etape 2 : Introduire une boucle FOR pour rendre la tâche automatique.

Etape 3 : Introduire des couleurs pour chaque côté.

Etape 4 : Fabrication d’une fonction « triangle équilatéral »

Etape 5 : Utilisation de cette fonction pour tracer une frise et fabrication de la fonction «frise ».

Etape 6 : Amélioration : paramétrage du point de départ et de l’angle de départ. Fonction «init » .

Etape 7 : Fabrication de la frise emboitée des triangles équilatéraux.

Etape 8 : Fabrication de la frise emboitée « mieux » des triangles équilatéraux.

Solution Etape 1 : Tracer un triangle équilatéral pas à pas.

from turtle import*

N.M. Page 16
reset()

forward(100)

left(120)

forward(100)

left(120)

forward(100)

mainloop()

Solution Etape 2 : Introduire une boucle FOR pour rendre la tâche automatique.

Et Etape 3 : Introduire des couleurs pour chaque côté.

from turtle import*

reset()

couleur=['red','blue','green']

for i in range(3):

color(couleur[i])

forward(100)

left(120)

N.M. Page 17
mainloop()

Solution Etape 4 : Fabrication d’une fonction « triangle équilatéral

from turtle import*# On importe la librairie de dessin turtle

reset()

couleur=['red','blue','green']

def triangle(cote):

for i in range(3):

color(couleur[i])

forward(cote)

left(120)

mainloop()

N.M. Page 18
triangle(100)

Solution Etape 5 : Utilisation de cette fonction pour tracer une frise et fabrication de la fonction
« frise »

from turtle import*# On importe la librairie de dessin turtle

reset()

couleur=['red','blue','green']

def triangle(cote):

for i in range(3):

color(couleur[i])

forward(cote)

left(120)

def frise(n,cote):

for i in range(n):

triangle(cote)

N.M. Page 19
up()

forward(cote)

down()

mainloop()

frise(4,100)

Solution Etape 6 : Amélioration : paramétrage du point de départ et de l’angle de départ. Fonction


«init »

from turtle import*# On importe la librairie de dessin turtle

reset()

couleur=['red','blue','green']

def init(x,y,cap):

up()

goto(x,y)

left(cap)

down()

N.M. Page 20
def triangle(cote):

for i in range(3):

color(couleur[i])

forward(cote)

left(120)

def frise(n,cote):

for i in range(n):

triangle(cote)

up()

forward(cote)

down()

mainloop()

init(-200,0,45)

frise(4,100)

N.M. Page 21
Solution Etape 7 : Fabrication de la frise emboitée des triangles équilatéraux.

from turtle import*# On importe la librairie de dessin turtle

reset()

couleur=['red','blue','green']

def init(x,y,cap):

up()

goto(x,y)

left(cap)

down()

N.M. Page 22
def triangle(cote):

for i in range(3):

color(couleur[i])

forward(cote)

left(120)

def frise(n,cote):

for i in range(n):

triangle(cote)

up()

forward(cote)

down()

init(-300,0,0)

for i in range(5):

frise(2**(i+1),300./(2**(i+1)))

init(-300,0,0)

mainloop()

N.M. Page 23
Solution Etape 8 : Fabrication de la frise emboitée « mieux » des triangles équilatéraux.

from turtle import*# On importe la librairie de dessin turtle

reset()

couleur=['red','blue','green']

def init(x,y,cap):

up()

goto(x,y)

left(cap)

down()

def triangle(cote):

for i in range(3):

color(couleur[i])

forward(cote)

left(120)

N.M. Page 24
def frise(n,cote):

for i in range(n):

triangle(cote)

up()

forward(cote)

down()

def frise_fractale(x,y,cap,n,cote):

init(x,y,cap)

for i in range(n):

frise(2**(i+1),cote/(2.**(i+1)))

init(x,y,cap)

mainloop()

frise_fractale(-300,0,0,4,300)

APPLICATION 22 Dichotomie
rom math import*
def fonc(x):
return x**2-2*x-2
a=float(input("a="))
b=float(input("b="))
e=float(input("e="))
while((b-a)>e):
c=(a+b)/2.
if fonc(a)*fonc(c)<0:
b=c
else:
a=c
print"Une valeur approchée de la solution de f(x)=0 est",c

N.M. Page 25

Vous aimerez peut-être aussi