Algorithmique Définition d'un algorithme: Suite d'actions que doit effectuer un automate pour arriver à un résultat déterminé ( " postcondition" ) à partir d'une situation donnée ( " précondition" ) La suite d'actions est composée d'actions élémentaires ( " instructions" ) qui peuvent se succéder de manière séquentielle ou conditionnelle. 1. 1. L'action d'écrire Peut se décomposer en "affichage" ou en "impression". Tabcar1 Précondition: aucune: {} Postcondition: { la table des carrés des nombres de 1 à 5 devra être écrite } début écrire ( '1','1' ); écrire ( '2','4' ); écrire ( '3','9' ); écrire ( '4','16' ); écrire ( '5','25' ) fin; Nous notons que chaque action est séparée de la suivante par un ';'. Chaque action se décrit à l'aide d'un type d'action ( 'écrire' ( et d'une série de paramètres écrits entre parenthèses et séparés par des ','. Chaque paramètre est écrit entre ' ' ce qui indique que ce qui est écrit est un texte ( et doit être écrit comme tel ). 1.2. Les nombres 1.2.1. Les opérations Les opérations classiques: +, -,×, ^, div ( a div b donne la partie entière du quotient a ), mod ( a b mod b donne le reste de la division euclidienne de a par b ) et d'autres. Tabcar2 Précondition: aucune: {} Postcondition: { la table des carrés des nombres de 1 à 5 devra être écrite } début écrire ( '1',1*1 ); écrire ( '2',2*2 ); 1 écrire ( '3',3*3 ); écrire ( '4',4*4 ); écrire ( '5',5*5 ) fin. Que remarque-t-on dans l'écriture du deuxième paramètre? 1.2.2. Variables L'automate utilisera des cases mémoire dans ses calculs, en modifiera ou pas le contenu. Elles prendront, ces cases mémoires, le nom de constantes ou de variables. Une case mémoire variable , pour être utilisée, doit être déclarée en recevant un nom ( identificateur ) et son type ( qui pourra être entier, réel, caractère, ... ) Après avoir été déclarée elle pourra recevoir des valeurs. C'est l'action d'affectation. Au début de l'algorithme toute variable doit être initialisée ( sinon, en général, l'automate le fait luimême en affectant à la variable la valeur 0 ). A:=100, B:=-3.14 L'affectation peut concerner des variables comme réceptrices d'information ou source d'information. A:=B le contenu de B va remplacer celui de A sans que celui de B soit lui même modifié. A:=-A l'opposé du contenu de A va remplacer ce contenu. A:= B-C le contenu de A va être remplacé par la différence du contenu de B et de celui de C. N:=N+1 le contenu de N va être remplacé par sa valeur augmentée de 1. Remarque: le symbole d'affectation, quel qu'il soit, n'a rien à voir avec l'égalité mathématique: l'affectation a pour but de remplacer le contenu de la variable de gauche par la valeur déduite des opérations sur le contenu des variables écrites à droite. Exercice 1.2.2.1. À la fin de l'algorithme suivant, quelles sont les valeurs prises par les différentes variables? Ex1221 var a, b, c: entier; début a:=1; b:=2; c:=a+b; b=b+3; c:=c^2 fin. Exercice 1.2.2.2. ex 72 p 32 On écrira des programmes qui intègrent dans l'édition la valeur du nombre choisi, par exemple 3 qu'on pourra ensuite changer en 5 puis en 10, etc. 2 Exercice 1.2.2.2 À chaque étape de l'algorithme suivant donner dans le tableau en face la valeur des variables envisagées: a b c n Ex 1222 var a, b, c, n: entier; début a:=0 b:=1; c:=-1; n=1; a:=b+c; b:=a+c; n:=n+1; a:=b+c; b:=a+c; n:=n+1; a:=b+c; b:=a+c; n:=n+1 fin. 1.2.3. L'action de saisie ( au clavier ) d'une valeur et son affectation à une variable Ce qui suit est un programme calculant votre âge si vous lui donnez votre année de naissance Âge var N, A: entier début écrire ( 'quelle est votre année de naissance? ); saisir N; A:=2010-N; écrire ( 'vous avez', A, 'ans' ) fin; 3 Exercice 1. 2. 3. 1. Le triangle ABC est rectangle en A. Écrire un programme permettant de saisir les longueurs AB et AC et donnant la longueur de l'hypoténuse. Exercice 1. 2. 3. 2. Ex 68 p 31 Exercice 1. 2. 3. 3. Ex 72 p 32 ( autre mouture ) 1.3. L'itération Dans l'exercice 1. 2. 2. 2. on fait trois fois la même action. L'automate peut faire le même travail lorsqu'on décrit une seule fois l'action à faire et le nombre de fois qu'il doit faire cette même action. Exercice 1. 3. 1. Ex 131 = Ex1222Version2 var a, b, c, n: entier; début a:=0; b:=1; c:=-1; n:=1; ' ''compteur'' ' tantque compteur ≤ 3 faire début a:=b+c; b:=a+c; n:=n+1; fin fin. Exercice 1. 3. 2. On appelle u n le nombre 3n . a. Calculer, à la main les nombres u 1 , u 2 , u 3 et, à la calculatrice, le nombre u 10 . b. Quel travail font les algorithmes suivant? Ex132Version1 Ex132 Version2 var A, n: entier; var A, n: entier; début début n:=0; n:=0; A:=0 A:=1 tantque A ≤ 106 faire tantque A ≤ 106 faire début début A:=3^n; A:=A*3; n:=n+1; n:=n+1; fin; fin; écrire n écrire n fin; fin; 4 Faire "à la main" le travail de l'algorithme pour les trois premières étapes de chaque algorithme. Exercice 1. 3. 3.Ex 77 p 32 Exercice 1. 3. 4.Ex 80 p 33 1.4. L'action conditionnelle Activité1.4. 1. Parallèle avec la résolution d'une équation: 3 7 6 – 3 x = . Je cherche à résoudre 5 5 7 J'analyse: somme ou produit? Si c'est un produit je multiplie les deux membres par l'inverse du facteur ne contenant pas x Sinon, j'ajoute aux deux membres l'opposé du terme ne contenant pas x. a. L'algorithme suivant décrit l'action ci-dessus. Exprimer la condition1 et les deux actions. début si condition1 alors action1 sinon action2 fin; b. Donner une autre manière de faire la même action en changeant la condition. c. À la fin de l'algorithme précédent le travail n'est pas terminé. On donner un algorithme itératif permettant de faire le travail jusqu'au bout: RésoÉqua début tantque condition3 faire début si condition1 alors action1 sinon action2 fin; fin; Comment énoncer la condition3? 3 7 6 3 – 3 x = , x10=10 , Faire le travail de l'algorithme pour résoudre les équations 5 5 7 5 3 234 x – 5=6 , 2 – x7=11 . 5 L'action conditionnelle s'emploie sous les deux formes: si condition alors Si condition alors action1; action1 sinon action2; Si la condition est vraie alors l'action 1 est Si la condition est vraie alors l'action 1 est effectuée. effectuée. Si elle est fausse alors on ne fait rien Si elle est fausse alors on effectue l'action2. ( on passe à la suite ). 5 Exemple 141 Quelle est l'action opérée par le programme suivant? var a,b,c,m:entier; début m:=a; si b>m alors m:=b si c>m alors m:=c; écrire (''max=",m) fin; Exercice 1. 4. 2. Les tarifs d'affranchissement d'une lettre tarif rapide en France métropolitaine sont: Jusqu'à 20g: 0,56 Jusqu'à 50g: 0,90 Jusqu'à 100g: 1,35 Jusqu'à 250g: 2,22 Jusqu'à 500g: 3,02 Jusqu'à 1KG: 3,92 Jusqu'à 2 KG: 5,16 3 Jusqu'à 3 KG: 6,04 Écrire le programme qui délivre le tarif pour un poids donné. Exercice 1. 4. 3. Écrire un programme permettant de vérifier si un triangle ABC est rectangle en A. Exercice 1. 4. 4. Ex 73, 75 p 32, 76 p 32 6