25
N.M. Page 1 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.

Cahier Algorithmique maknix - Oiseletlycee-oiselet.fr/0.cahier_de_textes/fichiers_joints/16160_aacahier... · N.M. Page 3 Exercice 5 Voici un algorithme, écrit en langage naturel:

Embed Size (px)

Citation preview

N.M. Page 1

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 2

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 3

Exercice 5 Voici un algorithme, écrit en langage naturel:

• Choisir un entier naturel N. • Initialiser une valeur S en lui affectant la valeur 0. • Répéter pour chaque entier i de 1 jusqu’à N l’instruction :

Donner à S la valeur S+i. • A la fin de la répétition 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

o Entrée o Saisir N o Initialisation

• S prend la valeur 0. • Traitement

� Pour i de 1 jusqu’à N � S prend la valeur S + i

• Fin de pour • Sortie • Afficher S

N.M. Page 4

: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 5

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 6

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 7

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 8

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 9

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

même façon. : si v est l'approximation qui suit immédiatement l'approximation u, on a / � 01 �2 � ,-

2 �.

Le même calcul est donc répété un certain nombre de fois.

2°) Contrairement à ce qu'on pouvait penser à priori, la formule / � 01 �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 10

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 11

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 12

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 13

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 14

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 15

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 16

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 17

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 18

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 19

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 20

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 21

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 22

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 23

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 24

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 25

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