Algorithmes Cours ( PDF

publicité
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 = , x10=10 ,
Faire le travail de l'algorithme pour résoudre les équations
5
5 7 5
3
234 x – 5=6 , 2  – x7=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
Téléchargement