Algorithmique et Xcas

publicité
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Algorithmique et Xcas
Auteur :
Bernard Chrétien
Académie de Lille
[email protected]
7 juin 2010
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Objectifs
On trouvera :
Ce document s’adresse aux professeurs désirant obtenir une formation en algorithmique au travers d’exemples simples et variés de la seconde à la terminale.
Pour cela, on utilisera le logiciel de calcul formel Xcas dont la syntaxe est très
voisine de celle d’un algorithme écrit en langage algorithmique. Pour chacune
des instructions suivantes :
Affectation
Si · · · Alors · · · Sinon
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
sera donné un exemple simple pour comprendre rapidement la syntaxe. Ensuite
il est donné d’autres exemples avec une solution sous Xcas. Chaque algorithme
proposé est source d’idées à réinvestir dans les différentes classes du lycée.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
Commençons par l’exemple suivant :
Lors d’un spectacle, Algor le magicien choisi une personne au hasard et lui demande d’effectuer mentalement les procédures suivantes :
Choisir un nombre sans le dire.
Lui ajouter 3 .
Multiplier le résultat par le nombre choisi au départ.
Soustraire au nombre obtenu le carré du nombre choisi au départ.
Donner le nombre obtenu.
Algor dit abracadabra et donne le nombre choisi au départ par la personne.
1. Est-ce possible ? Vérifier sur quelques exemples.
2. Donner en langage naturel l’algorithme que la personne effectue ; puis en
langage algorithmique après avoir compléter le tableau ci-dessous qui
correspond au traitement de l’algorithme écrit en langage naturel à la
valeur n = 5 (p représente le résultat obtenu à l’étape correspondante).
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
Entrée
Traitement
Étape no
1
2
3
4
Valeur de n
Valeur de p
Sortie
3. Programmer cet algorithme sur le logiciel de calcul formel Xcas, puis
l’exécuter sur les exemples précédents.
4. Quelle valeur obtient-on si l’on donne la valeur initiale x ? Quelle fonction
a-t-on ainsi définie ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique( ):={
local n, p ;
Variable
n : entier naturel
input("n",n) ;
p : entier naturel
p := n+3 ;
p := p∗n ;
Début
p := p−n∧ 2 ;
Saisir le nombre n choisi
p←n+3
return(p) ;
p ← p×n
};
p ← p−n2
fin de chaque
Afficher « le nombre p obtenu »
Fin
instruction
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Magique
Magique(
Magique(n):={
):={
p;p;
local n,
Variable
n : entier naturel
p := n+3 ; ;
input("n",n)
p : entier naturel
p∗n ;;
p := n+3
p−n;∧ 2 ;
p := p∗n
Début
return(p)
p
:= p−n;∧ 2 ;
Saisir le nombre n choisi
p←n+3
} ;return(p) ;
p ← p×n
};
p ← p−n2
Une autre façon de faire
Afficher « le nombre p obtenu »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
Voici quelques exemples d’applications :
Exemple 1 : tour de magie bis
Une solution
Algor le magicien demande à Florine d’écrire sur un papier son âge et la somme
qu’elle a en poche (moins de 100 e).
Il lui demande ensuite de montrer le papier à Margaux, qui doit le lire (sans
rien dire), puis effectuer à l’abri des regards les calculs suivants :
• Multiplier l’âge par 2 ;
• Ajouter au résultat 5 ;
• Multiplier le nombre obtenu par 50 ;
• Ajouter le montant de la somme en poche ;
• Soustraire le nombre de jours que contient une année ;
• Dire le résultat ainsi obtenu au public.
Algor dit : « le nombre 115 est vraiment abracadabrant car si je l’ajoute au
résultat de Margaux, je devine facilement l’âge et l’argent de poche de
Florine ! ». Algor dit-il vrai ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
Exemple 2 : Périmètre et aire
Une solution
On donne un rectangle dont la longueur est L, la largeur ℓ, le périmètre est p et
l’aire A.
1. On prend p = 20.
2.
a. Écrire en langage naturel un algorithme qui, connaissant la dimension L de
ce rectangle, donne la deuxième dimension ℓ et son aire A.
b. Écrire cet algorithme en langage algorithmique.
c. Programmer l’algorithme sur Xcas.
a. On prend A = 25.
Écrire en langage naturel un algorithme qui, connaissant la dimension L de
ce rectangle, donne la deuxième dimension ℓ et son périmètre p.
b. Écrire cet algorithme en langage algorithmique.
c. Programmer l’algorithme sur Xcas.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
Algorithme
???
Variable
xI , yI : entiers naturels compris entre 0 et 5
xA , yA , xM , yM , xN , yM , xP , yP , C : réels
Exemple 3 : en géométrie
Début
Une solution
Saisir xA et yA .
Dans un repère orthonormé, on choisit au hasard un point I dont les
coordonnées entières sont comprises
entre −5 et 5. On donne ensuite les
coordonnées (xA , yA ) d’un point A.
Interpréter l’algorithme ci-contre.
On pourra utiliser les listes : l’une
pour les abscisses et l’autre pour les
ordonnées.
xI ← partie entière (6× random ())
yI ← partie entière (6× random ())
xM ← −yA + xI + yI
yM ← xA − xI + yI
xN ← −yM + xI + yI
yN ← xM − xI + yI
xP ← −yN + xI + yI
yP ← xN − xI + yI
p
C ← (xM − xA )2 + (yM − yA )2
Afficher les coordonnées de A, I , M, N et P
Afficher C
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
Exemple 4 : en arithmétique
Une solution
On donne un entier naturel n à deux chiffres. Écrire un algorithme permettant
d’échanger le chiffre des unités et le chiffre des dizaines.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Magique
Tour de magie bis
Fonctions
Un quadrilatère
Échange
Indice de Ruffier
L’affectation sous Xcas
Exemple 5 : en médecine
Une solution
Pour débuter une activité sportive, il est fortement conseillé de passer le test de
Ruffier qui permet de connaître l’indice R de résistance de son coeur à l’ effort.
Pour l’évaluer, on mesure la fréquence cardiaque à trois moments importants de
l’adaptation du coeur :
au repos, que ce soit assis ou couché, on relève la fréquence cardiaque F1 ,
après l’exercice de Ruffier, qui consiste à faire 30 flexions sur les jambes en
45 secondes, on relève la fréquence cardiaque F2 ,
après une minute de repos, on relève finalement la fréquence cardiaque F3 .
On calcule ensuite l’indice R par la formule :
R = [(F1 + F2 + F3 ) − 200]/10
Un professeur de sport décide de faire le test de Ruffier à ses élèves.
Quel algorithme doit-il écrire et programmer, sur le logiciel Xcas, pour obtenir
l’indice de chacun de ses élèves ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
Commençons par l’exemple suivant :
Dans un repère (O, I , J) orthonormal , on donne les points A(3 ; −1), B(3 ; 4)
et C (−1 ; 2).
1. Placer les points.
2. Quelle est la nature du triangle ABC ?
3. Proposer un algorithme qui, trois points A, B et C étant donnés en entrée,
dit si le triangle ABC est isocèle en A en sortie.
Programmer cet algorithme sur Xcas.
4. Le point D(4 ; −3) appartient-il à la médiatrice du segment [BC ] ? On
justifiera la réponse par le calcul et on pourra vérifier le résultat en
excécutant le programme précédent.
5. En déduire la nature du quadrilatère ABDC . On pourra de nouveau se
servir du programme pour valider certaines propriétés.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele():={
Variable
local L1, L2, U, V ;
L1, L2 : listes pour les coordonnées
input("L1", L1,"L2", L2) ;
U, V : réels
U := (L1[1]−L1[0])∧ 2+(L2[1]−L2[0])∧ 2 ;
Début
V := (L1[2]−L1[0])∧ 2+(L2[2]−L2[0])∧ 2 ;
Saisir les listes L1 et L2
if U = V then print("isocele") ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
fin de chaque
instruction
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
∧
V
if (U
:= (L1[2]−L1[0])
= V) {print("isocele")
2+(L2[2]−L2[0])
;}
2;
Saisir les listes L1 et L2
else
if
U=
print("non
V then print("isocele")
isocele") ;
;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
} ; print("non isocele") ;
2
Si U = V Alors
end_if ;
};
Afficher « isocèle »
Sinon
Une autre façon de faire
Afficher « non isocèle »
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Isocèle
Isocele(L1,L2):={
Isocele():={
Variable
local L1,
U, VL2,
; U, V ;
L1, L2 : listes pour les coordonnées
∧
∧
input("L1",
L1,"L2",
L2) ;
U := (L1[1]−L1[0])
2+(L2[1]−L2[0])
2;
U, V : réels
U
V := (L1[1]−L1[0])
(L1[2]−L1[0])∧ 2+(L2[1]−L2[0])
2+(L2[2]−L2[0])∧ 2 ;
Début
∧
V
si :=
(U (L1[2]−L1[0])
= V) alors afficher("isocele")
2+(L2[2]−L2[0])
; ∧2 ;
Saisir les listes L1 et L2
if
sinon
U =afficher("non
V then print("isocele")
isocele") ; ;
U ← (L1[2]−L1[1])2 +(L2[2]−L2[1])2
2
V ← (L1[3]−L1[1]) +(L2[3]−L2[1])
else
fsi ; print("non isocele") ;
2
Si U = V Alors
end_if
};
;
};
Afficher « isocèle »
Sinon
Encore une autre façon de faire
Afficher « non isocèle »
(suivant la version de Xcas)
FinSi
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
Voici quelques exemples d’applications :
Exemple 1 : en géométrie repérée
Une solution
1. Écrire un algorithme qui teste, trois points A, B et C étant donnés, si le
triangle est équilatéral (on pourra utiliser sur Xcas l’un des liens logiques
suivants : and , et , &&).
2. Écrire un algorithme qui teste, trois points A, B et C étant donnés, si le
triangle est rectangle en A.
3. Écrire un algorithme qui teste, trois points A, B et C étant donnés, si le
triangle est équilatéral ou isocèle ou rectangle en A.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
Exemple 2 : fonctions affines par morceaux
Un commercial peut percevoir à la fin de chaque mois deux primes, l’une sur le chiffre
d’affaires mensuel et l’autre sur le nombre de kilomètres parcourus sans accident.
1. Prime sur le chiffre d’affaires
Voici les règles de gestion permettant au commercial de calculer sa remise en
fonction de son chiffre d’affaires (CA) mensuel :
a. Pour un CA inférieur à 250 000 e il a une prime de 5% du CA
b. De 250 000 à 500 000 e il a une prime de 7 % du CA
c. Au delà de 500 000 e il a une prime de 10 % du CA.
Écrire un algorithme qui détermine le taux de remise du commercial à la fin de
chaque mois selon son chiffres d’affaires.
Programmer ensuite cet algorithme sur Xcas.
2. Prime sans accident
Pour le calcul de sa prime en fonction du nombre de kilomètres parcourus sans
accident , on lui propose la règle suivante :
a. Pour moins de 100 kilomètres sans accident le montant de la prime est de
100 e ;
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
Exemple 2 : fonctions affines par morceaux
Une solution
b. Entre 100 et 500 kilomètres sans accident la prime est donnée par la formule
(K − 100) × 0, 10 + 500 où K est le nombre de kilomèttres parcourus ;
c. Au delà de 500 kilomètres la prime est donnée par la formule
(K − 500) × 0, 20 + 540.
Écrire un algorithme qui détermine la prime sans accident du commercial à la fin de
chaque mois.
Programmer ensuite cet algorithme sur Xcas.
3. On souhaite ajouter la borne 1 000 kilomètres ; quelle sera l’instruction de calcul
pour la prime au delà de 1 000 kilomètres ?
Modifier le programme précédent
4. Le commercial désire connaître directement la somme des deux primes à la fin de
chaque mois.
Écrire un algorithme qui détermine la prime totale.
Programmer ensuite cet algorithme sur Xcas.
Quelle prime obtient le commercial à la fin du mois pour un chiffre d’affaires de
350 000 e et 1 200 kilomètres sans accident ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle isocèle
Triangle équilatéral ou rectangle
Primes
Indice de Ruffier bis
if · · · then · · · else · · ·
Exemple 3 : en médecine
Une solution
Le professeur de sport sait que lorsque l’indice de Ruffier R est :
• inférieur à 0, l’élève a une très bonne adaptation à l’effort (cœur « athlétique »),
• compris entre 0 et 5, l’élève a une bonne adaptation à l’effort (cœur « très
bon »),
• compris entre 5 et 10, l’élève a une adaptation à l’effort moyenne (cœur « bon »),
• compris entre 10 et 15, l’élève a une adaptation à l’effort insuffisante (cœur
« moyen »),
• supérieur à 15, l’élève a une mauvaise adaptation à l’effort (cœur « faible »).
Le professeur a saisi pour Laure les fréquences F1 = 60, F2 = 50 et F3 = 80. Il lui
déclare qu’elle a un « un cœur athlétique ». Laure, non sportive, lui répond que cela
n’est pas possible !
Quel jugement peut-on donner à cette affirmation ? Dans la négative que faudrait-il
rajouter dans l’algorithme pour y remédier ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
Commençons par l’exemple suivant :
Pour étudier l’habitat dans une certaine région assez peu peuplée, l’Institut Géographique National décide de partager cette zone en N parcelles carrées d’aires
égales et de réaliser une photographie aérienne de chacune de ces N parcelles.
Après agrandissement, on compte le nombre d’habitations que l’on peut observer
sur chacun des N clichés. Voici les résultats de ce comptage.
Nombre d’habitations
Nombre de photos
0
3
1
18
2
42
3
58
4
77
5
70
6
55
7
37
8
19
9
11
10
5
11
3
Ainsi, il y a 77 photos, sur les N, sur lesquelles on a compté 4 habitations.
Écrire un algorithme qui permette de donner le nombre de clichés réalisés et le
nombre moyen de maisons par photo. Programmer ensuite cet algorithme sur
Xcas, puis l’exécuter pour obtenir N et la moyenne.
Auteur :
Bernard Chrétien
Algorithmique
12
2
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne():={
Variable
local L1, L2, D, N, S, k ;
L1, L2 : listes
input("L1", L1,"L2", L2) ;
D, N, k : entiers
N := 0 ;
S : réel
S := 0 ;
Début
D := dim(L1) ;
Saisir les listes L1 et L2
for k from 0 to D−1
N←0
do S := L1[k] ∗ L2[k] + S ;
S←0
N := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
end_for ;
Pour k variantDe 1 à D Faire
return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
fin de chaque
instruction
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne(L1,L2):={
Moyenne():={
Variable
local
localD,
L1,N,L2,
S, D,
k ; N, S, k ;
L1, L2 : listes
L1,"L2", L2) ;
Ninput("L1",
:= 0 ;
D, N, k : entiers
SN:=:=0 0; ;
S : réel
:= dim(L1)
0;
;
DS :=
Début
D (k:=
:= dim(L1)
for
0 ; k<=
; D − 1 ; k++)
Saisir les listes L1 et L2
for
{ kS from
:= L1[k]
0 to∗D−1
L2[k] + S ;
N←0
:= L1[k]
L2[k] ∗+L2[k]
N } + S;
do SN :=
S←0
;
D ← Dim L1 {dimension de la liste L1}
N := L2[k] + N ;
return(N,
end_forS/N)
;
;
Pour k variantDe 1 à D Faire
} ;return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
Une autre façon de faire
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne(L1,L2):={
Moyenne():={
Variable
local
localD,
L1,N,L2,
S, D,
k ; N, S, k ;
L1, L2 : listes
L1,"L2", L2) ;
Ninput("L1",
:= 0 ;
D, N, k : entiers
SN:=:=0 0; ;
S : réel
:= dim(L1)
0;
;
DS :=
Début
D (k:=
:= dim(L1)
for
0 ; k<=
; D − 1 ; k++)
Saisir les listes L1 et L2
for
{ kS from
:= L1[k]
0 to∗D−1
L2[k] + S ;
N←0
:= L1[k]
L2[k] ∗+L2[k]
N } + S;
do SN :=
S←0
;
D ← Dim L1 {dimension de la liste L1}
N := L2[k] + N ;
return(N,
end_forS/N)
;
;
Pour k variantDe 1 à D Faire
} ;return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
Une autre façon de faire
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne(L1,L2):={
Moyenne():={
Variable
local
localD,
L1,N,L2,
S, D,
k ; N, S, k ;
L1, L2 : listes
L1,"L2", L2) ;
Ninput("L1",
:= 0 ;
D, N, k : entiers
SN:=:=0 0; ;
S : réel
:= dim(L1)
0;
;
DS :=
Début
D (k:=
:= dim(L1)
for
0 ; k<=
; D − 1 ; k++)
Saisir les listes L1 et L2
for
{ kS from
:= L1[k]
0 to∗D−1
L2[k] + S ;
N←0
:= L1[k]
L2[k] ∗+L2[k]
N } + S;
do SN :=
S←0
;
D ← Dim L1 {dimension de la liste L1}
N := L2[k] + N ;
return(N,
end_forS/N)
;
;
Pour k variantDe 1 à D Faire
} ;return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
Une autre façon de faire
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne(L1,L2):={
Moyenne():={
Variable
local
localD,
L1,N,L2,
S, D,
k ; N, S, k ;
L1, L2 : listes
L1,"L2", L2) ;
Ninput("L1",
:= 0 ;
D, N, k : entiers
SN:=:=0 0; ;
S : réel
:= dim(L1)
0;
;
DS :=
Début
D (k:=
:= dim(L1)
for
0 ; k<=
; D − 1 ; k++)
Saisir les listes L1 et L2
for
{ kS from
:= L1[k]
0 to∗D−1
L2[k] + S ;
N←0
:= L1[k]
L2[k] ∗+L2[k]
N } + S;
do SN :=
S←0
;
D ← Dim L1 {dimension de la liste L1}
N := L2[k] + N ;
return(N,
end_forS/N)
;
;
Pour k variantDe 1 à D Faire
} ;return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
Une autre façon de faire
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne(L1,L2):={
Moyenne():={
Variable
local
localD,
L1,N,L2,
S, D,
k ; N, S, k ;
L1, L2 : listes
L1,"L2", L2) ;
Ninput("L1",
:= 0 ;
D, N, k : entiers
SN:=:=0 0; ;
S : réel
:= dim(L1)
0;
;
DS :=
Début
D (k:=
:= dim(L1)
for
0 ; k<=
; D − 1 ; k++)
Saisir les listes L1 et L2
for
{ kS from
:= L1[k]
0 to∗D−1
L2[k] + S ;
N←0
:= L1[k]
L2[k] ∗+L2[k]
N } + S;
do SN :=
S←0
;
D ← Dim L1 {dimension de la liste L1}
N := L2[k] + N ;
return(N,
end_forS/N)
;
;
Pour k variantDe 1 à D Faire
} ;return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
Une autre façon de faire
FinPour
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Moyenne
Moyenne(L1,L2):={
Moyenne():={
Variable
local
localD,
L1,N,L2,
S, D,
k ; N, S, k ;
L1, L2 : listes
L1,"L2", L2) ;
Ninput("L1",
:= 0 ;
D, N, k : entiers
SN:=:=0 0; ;
S : réel
:= dim(L1)
0;
;
DS :=
Début
D :=k dim(L1)
pour
de 0 jusque
;
D−1 faire
Saisir les listes L1 et L2
for kS from
:= L1[k]
0 to ∗D−1
L2[k] + S ;
N←0
:= L1[k]
L2[k] ∗+L2[k]
N; + S;
do SN :=
S←0
fpour N
; := L2[k] + N ;
D ← Dim L1 {dimension de la liste L1}
return(N,
end_forS/N)
;
;
Pour k variantDe 1 à D Faire
} ;return(N, S/N) ;
S ← L1[k] ∗ L2[k] + S
};
N ← N + L2[k]
Encore une autre façon de faire
FinPour
(suivant la version de Xcas)
Afficher « N et S/N »
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
Voici quelques exemples d’applications :
Exemple 1 : en statistique
Une solution
1. Écrire un algorithme qui détermine et affiche le plus petit élément d’une
série statistique. Le programmer sur Xcas.
2. Écrire un algorithme qui détermine et affiche le plus grand élément d’une
série statistique. Le programmer sur Xcas.
3. Écrire un algorithme qui détermine et affiche le plus petit et plus grand
élément d’une série statistique. Le programmer sur Xcas.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
Exemple 2 : suite
Une solution
On définit la suite (un )n∈N par un+1 = un + 2n − 1 avec u0 = 0.
1. Écrire un algorithme qui permet de calculer le ne terme de la suite (un )n∈N .
2. Écrire un algorithme qui permet de calculer la somme Sn des n + 1
premiers termes de la suite (un )n∈N .
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
Exemple 3 : Approche fréquentiste de π
Une solution
Flora a construit une cible carrée de côté 1 ainsi
que le quart de cercle de rayon 1 et de centre l’un
des sommets du carré. Elle se place à une distance
raisonnable de telle sorte qu’elle puisse toujours atteindre la cible lors d’un lancer de fléchettes.
Déterminer, en faisant une simulation, une valeur
approchée de la fréquence des fléchettes qui aboutissent dans le quart de disque au cours de n lancers.
Vers quel nombre semble converger cette fréquence ?
Auteur :
Bernard Chrétien
Algorithmique
1
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Moyenne pondérée
Min et Max
Suite
Calcul approché de π
Code César
for · · · from · · · to · · · do
Exemple 4 : Cryptographie
Une solution
Le code de César est un chiffrement par décalage c’est à dire une simple substitution monoalphabétique : par exemple si on code la lettre A par 1, la lettre B
par 2, · · · , la lettre Z par 26, que l’on ajoute une constante c et que l’on conserve
le résultat modulo 26, on obtient le texte codé. La constante c s’appelle la clé.
1. Écrire un algorithme qui, étant donnés un message écrit en majuscule et
sans accent et une clé, donne le codage de César. Le programmer sur Xcas.
2. En prenant c = 15 coder chacun des mots de la citation :
« RECOMMENCER, CE N EST PAS REFAIRE ».
3. Écrire un algorithme simple qui permet de décoder un message de César
dont on ne connaît pas la clé. Le programmer sur Xcas pour décoder
l’auteur « RTHPG QPASPRRXCX » de la citation précédente.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
Commençons par l’exemple suivant :
Dans une fête forraine , on propose le jeu de dés suivant :
• Triplez votre mise en obtenant les six numéros en six lancers ;
• Doublez votre mise en obtenant les six numéros en dix lancers ;
• Gagnez votre mise en obtenant les six numéros en douze lancers ;
• Au delà de douze lancers vous perdez votre mise.
Romane et Florine, intriguées par ce jeu, se proposent de faire un algorithme pour
déterminer le nombre moyen de lancers nécessaires pour obtenir les six faces.
Les deux amies se partagent le travail. Florine propose, sous Xcas, l’algorithme
NBmoyen ci-après qui permet d’estimer le nombre moyen de lancers nécessaires
pour obtenir les six faces au cours de n séries de lancers. Et charge à Romane à
écrire, sous Xcas, l’algorithme Lancer_de_des qui permet de compter le nombre
de lancers nécessaires pour obtenir l’ensemble des six faces.
Quel algorithme peut-elle proposer à Florine ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
NBmoyen(n):={
local total, j ;
total:=0 ;
for (j:=1 ;j<=n ;j++)
{ total:=total+Lancer_de_des() } ;
return(total/n) ;
};
Algorithme de Florine
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des( ):={
local L1, L2, nb, k ;
Variable
L1, L2 : Listes
L1:=[0,0,0,0,0,0] ;
nb, k : entiers
L2:=[1,2,3,4,5,6] ;
nb:=0 ;
Début
L1←[0,0,0,0,0,0]
while (L1 !=L2)
L2←[1,2,3,4,5,6]
{k:= floor(rand(1,7)) ;
nb← 0
L2[k−1]:= 0 ;
TantQue L16=L2 Faire
nb:=nb+1 ;
k← partie entière (1+6×random())
};
L2[k]← 0
};
nb←nb+1
fin de chaque
instruction
FinTantQue
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
On traduit tout d’abord en langage algorithmique puis sous Xcas comme suit :
Algorithme
Lancers_de_des()
Lancers_de_des(
Lancers_de_des(
):={
):={
L1,L1,
L2,L2,
nb,nb,
k; k;
local
local
Variable
L1:=makelist(0,0,5)
L1:=[0,0,0,0,0,0] ;
L1, L2 : Listes
L2:=[1,2,3,4,5,6]
>t+1,0,5)
;
;
L2:=makelist(t−
nb, k : entiers
nb:=
0; ;
nb:=0
Début
L1←[0,0,0,0,0,0]
tantque
while (L1
(L1 !=L2)
!=L2)
L2←[1,2,3,4,5,6]
faire
{k:=
k:=floor(rand(1,7))
floor(rand(1,7)); ;
nb← 0
L2[k−1]:=0
L2[k−1]:=
; 0;
TantQue L16=L2 Faire
nb:=nb+1
nb:=nb+1
;
;
k← partie entière (1+6×random())
ftantque
};
;
L2[k]← 0
}; };
nb←nb+1
Une autre façon de faire
FinTantQue
(suivant la version de Xcas)
Fin
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
Voici quelques exemples d’applications :
Exemple 1 : en arithmétique
Une solution
Soient a et b deux entiers naturels non nuls tels que a > b.
1. Écrire un algorithme qui permet de donner le quotient et le reste de la
division euclidienne de a par b.
2. Écrire un algorithme qui permet de donner le PGCD de a et b, ainsi que
leur PPCM.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
n coups pour six faces !
Quotient, reste, PGCD, PPCM
Extremum d’une fonction
while · · ·
Exemple 2 : Valeur approchée d’un maximum
Une solution
Aurélien a tracé graphiquement la courbe
√ représentative de la fonction f définie
sur l’intervalle [−1 ; 1] par f (x) = 4x 1 − x 2 . Il a repéré que f semble atteindre
son maximum en x0 = 0, 7. Il désire obtenir une approximation de ce maximum
à 10−p près. Quel algorithme peut-il écrire, la fonction f , x0 et p étant donnés ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Nombres premiers
La voiture et les deux chèvres
250 e
Vote
Lancers de pièces
Utilisation d’algorithmes · · ·
Voici quelques exemples où l’utilisation d’algorithmes est indispensables :
Exemple 1 : en arithmétique
Une solution
2
On note, pour n ∈ N, P(n) = n + n + 41.
1. Les nombres P(n), pour n variant de 0 à 100 sont-ils premiers ?
2. Peut-on conjecturer que pour tout entier n « P(n) est premier » ? Justifier.
3. Donner le 2010e nombre P(n) premier.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Nombres premiers
La voiture et les deux chèvres
250 e
Vote
Lancers de pièces
Utilisation d’algorithmes · · ·
Exemple 2 : en probabilité (le problème de Monty Hall)
Une solution
Lors d’un jeu télévisé, un candidat doit désigner une porte parmi trois. Derrière
l’une des portes, choisie par tirage au sort, se trouve une voiture et derrière
chacune des deux autres une chèvre. Lorsque le candidat a choisi une porte, le
présentateur, qui connaît la porte gagnante, ouvre l’une des deux autres, qui
cache une chèvre. Le candidat peut alors : soit maintenir son choix, soit changer
de porte.
Le joueur augmente-t-il ses chances de gagner la voiture en changeant son choix
initial ?
Pour répondre à cette question on pourra tout d’abord commencer par une
simulation du jeu.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Nombres premiers
La voiture et les deux chèvres
250 e
Vote
Lancers de pièces
Utilisation d’algorithmes · · ·
Exemple 3 : pour dénombrer
Une solution
Romane possède dans sa tirelire 100 pièces de 1 e, 50 pièces de 2 e et 20 billets
de 5 e. De combien de façons peut-elle obtenir la somme de 250 e avec l’argent
de sa tirelire :
• après avoir pris les 20 billets et les 50 pièces de 2 e ?
• après avoir pris 100 pièces de 1 e et 10 pièces de 2 e ?
• à partir de ses 300 e ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Nombres premiers
La voiture et les deux chèvres
250 e
Vote
Lancers de pièces
Utilisation d’algorithmes · · ·
Exemple 4 : en statistique
Une solution
Dans un établissement scolaire, les élèves désirent changer de système de restauration. La direction, à l’écoute de cette revendication, propose qu’un sondage soit
effectué. Pour cela, elle demande à l’informaticien de programmer un algorithme
qui respecte les critères suivants :
• on doit pouvoir saisir le vote de chaque électeur sachant qu’il peut
répondre par O (oui), N (non) ou B (blanc) à la question « êtes-vous
pour » ;
• la lettre « F » indiquera que le vote est terminé ;
• afficher le nombre de votants, le pourcentage de oui, de non, de blancs.
Quel algorithme l’informaticien peut-il suggérer à la direction ?
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Nombres premiers
La voiture et les deux chèvres
250 e
Vote
Lancers de pièces
Utilisation d’algorithmes · · ·
Exemple 5 : pour l’échantillonnage
Une solution
On souhaite répéter N fois la simulation de n lancers de pièces à deux faces et
vérifier l’affirmation des statisticiens :
« Lorsqu’on fabrique des échantillons aléatoires relevant du modèle de Bernoulli (deux issues possibles) de probabilité p (succès) et de taille n, alors
pour environ 95 % d’entre
eux la fréquence f de succès appartient à l’inter1
1
valle p − √ ; p + √
(lorsque n ≥ 25 et 0, 2 ≤ p ≤ 0, 8) ».
n
n
Écrire un algorithme qui illustre cette propriété.
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Nombres premiers
La voiture et les deux chèvres
250 e
Vote
Lancers de pièces
Fin de la formation
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Tour de magie bis
Énoncé
Tour_de_magie(Age,Somme):={
local p ;
p:=Age∗2 ;
p:= p + 5 ;
p:= 50∗p ;
p:=p+Somme ;
p:=p−365 ;
return(p) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Fonctions
Énoncé
Aire(Peri,Largeur):={
Perimetre(Aire,Largeur):={
local l, p, L, A ;
local l, A, L, P ;
l:=Largeur ;
l:=Largeur ;
p:= Peri ;
A:= Aire ;
L:=p/2−l ;
L:=A/l ;
A:=L∗l ;
P:=2∗(L+l) ;
print("Longueur="+L) ;
print("Longueur="+L) ;
print("Aire="+A) ;
print("Périmètre="+P) ;
};
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Un quadrilatère
Énoncé
Quadrilatere(xA,yA):={
local xI, yI, L1, L2, C ;
L1:= [xA, 0, 0, 0, 0] ;
L2:= [yA, 0, 0, 0, 0] ;
L1[1] :=floor(6∗rand(0,1)) ;
L2[1] :=floor(6∗rand(0,1)) ;
L1[2]:= −L2[0]+L1[1]+L2[1] ;
L2[2]:=L1[0]−L1[1]+L2[1] ;
L1[3]:= −L2[2]+L1[1]+L2[1] ;
L2[3]:=L1[2]−L1[1]+L2[1] ;
L1[4]:= −L2[3]+L1[1]+L2[1] ;
L2[4]:=L1[3]−L1[1]+L2[1] ;
C:=sqrt((L1[2]−L1[1])2 +(L2[2]−L2[1])2 ) ;
return(C,transpose([L1,L2])) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Échange
Énoncé
Echange(A,B):={
local a, b, c ;
print("le nombre choisi est "+(10∗A+B)) ;
c:=A ;
Première méthode
a:=B ;
b:=c ;
print("le nouveau nombre est "+(10∗a+b)) ;
};
Echange(nombre):={
local A, B ;
Deuxième méthode
A:=floor(nombre/10) ;
B:=nombre−10∗A ;
print("le nouveau nombre est "+(10∗B+A)) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Indice de Ruffier
Énoncé
Ruffier():={
local F1, F2, F3, S, I ;
input("F1", F1, "F2", F2 ,"F3", F3) ;
S:=F1+F2+F3 ;
I:=(S−200)/10 ;
print("F1 = "+F1) ;
print("F2 = "+F2) ;
print("F3 = "+F3) ;
print("Indice de Ruffier = "+I) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle équilatéral ou rectangle
Énoncé
Lorqu’on n’utilise pas l’écriture décimale dans les coordonnées il faut rajouter
evalf pour pouvoir comparer deux valeurs numériques.
Isocele(L1,L2):={
local d1, d2 ;
d1:=evalf((L1[1]−L1[0])2 +(L2[1]−L2[0])2 ) ;
d2:=evalf((L1[2]−L1[0])2 +(L2[2]−L2[0])2 ) ;
if d1=d2 then print("isocèle") ;
else print("non isocèle") ;
end_if ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle équilatéral ou rectangle
Énoncé
Equilateral(L1,L2):={
local d1, d2, d3 ;
d1:=evalf((L1[1]−L1[0])2 +(L2[1]−L2[0])2 ) ;
d2:=evalf((L1[2]−L1[0])2 +(L2[2]−L2[0])2 ) ;
d3:=evalf((L1[2]−L1[1])2 +(L2[2]−L2[1])2 ) ;
if (d1==d2)and(d1==d3) then print("équilatéral") ;
else print("non équilatéral") ;
end_if ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Triangle équilatéral ou rectangle
Énoncé
Rectangle(L1,L2):={
local d1, d2, d3 ;
d1:=evalf((L1[1]−L1[0])2 +(L2[1]−L2[0])2 ) ;
d2:=evalf((L1[2]−L1[0])2 +(L2[2]−L2[0])2 ) ;
d3:=evalf((L1[2]−L1[1])2 +(L2[2]−L2[1])2 ) ;
if (d1+d2==d3) then print("rectangle") ;
else print("non rectangle") ;
end_if ;
};
EquiRecIso(L1,L2):={
Equilateral(L1,L2) ;
Ce programme fait appel
aux 3 précédents
Isocele(L1,L2) ;
Rectangle(L1,L2) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Primes
Énoncé
PrimeCA(ca):={
local t ;
if ca <= 250000 then t:=0.05 ;
else if ca <=500000 then t:=0.07 ;
else t:=0.10 ;
end_if ;
end_if ;
print("le taux est de "+(100∗t)+"%") ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Primes
Énoncé
PrimeSans(K):={
local p ;
if K <= 100 then p:=100 ;
else if K<=500 then p:=(K−100)∗0.10+500 ;
else p:=(K−500)∗0.20+540 ;
end_if ;
end_if ;
print("prime sans accident "+p+" e") ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Primes
Énoncé
PrimeSans2(K):={
local p ;
if K <= 100 then p:=100 ;
else if K<=500 then p:=(K−100)∗0.10+500 ;
else if K<=1000 then p:=(K−500)∗0.20+540 ;
else p:=(K−1000)∗0.30+638 ;
end_if ;
end_if ;
end_if ;
print("prime sans accident "+p+" e") ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Primes
Énoncé
Prime(ca,K):={
local p1, P ;
PrimeCA(ca) ;
p1:=t∗ca ;
PrimeSans2(K) ;
P:=p1+p ;
print("prime totale "+P+" e") ;
};
Ce programme fait appel aux précédents
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
RuffierBis():={
local F1, F2, F3, S, I ;
Indice de Ruffier bis
Énoncé
input("F1",F1,"F2",F2,"F3",F3) ;
S:=F1+F2+F3 ;
I:=(S−200)/10 ;
print("F1 = "+F1) ;
print("F2 = "+F2) ;
print("F3 = "+F3) ;
if (F2<=F3) or (F2<=F1) then print("erreur de saisie") ;
else if I<= 0 then print("coeur athlétique") ;
else if I<=5 then print("coeur très bon") ;
else if I<=10 then print("coeur bon") ;
else if I<=15 then print("coeur moyen") ;
else print("coeur faible") ;
end_if ;
end_if ;
end_if ;
end_if ;
end_if ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Min(L):={
Min et Max
m, k ;
local n, Énoncé
n:=dim(L) ;
m:=L[0] ;
Min et Max
Énoncé
for (k:=1 ;k<=n−1 ;k++) {if L[k]<=m then m:=L[k] ;
end_if
};
print("Le plus petit élément est "+m) ;
};
Max(L):={
local n, m, k ;
MinMax(L):={
n:=dim(L) ;
Min(L) ;
m:=L[0] ;
Max(L) ;
for (k:=1 ;k<=n−1 ;k++) {if L[k]>=m then m:=L[k] ;
};
end_if
};
Ce programme fait
print("Le plus grand élément est "+m) ;
appel aux 2 autres
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
TermesUn(n,u0):={
local k, temp ;
temp:=u0 ;
for (k:=1 ;k<=n ;k++) { temp:=temp+2∗k−1 } ;
Suites
Énoncé
return(temp) ;
};
SommeTermesUn(n,u0):={
local S, k ;
Ce programme
fait appel
au précédent
S:= 0 ;
for (k:=1 ;k<=n ;k++) { S:=S+TermesUn(k,u0)} ;
return(S) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Calcul approché de π
Énoncé
Lancers(n):={
local k, X, Y, d, compteur ;
for (k:=1 ;k<=n ;k++) {
X:=rand(0,1) ;
Y:=rand(0,1) ;
d:=sqrt(X∧ 2+Y∧ 2) ;
compteur:=compteur+1−floor(d) ;
};
return(compteur/n) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Cesar(message,cle):={
local s, messcode, c, k, j, r ;
s:=size(message) ;
messcode:="" ;
code(c):=asc(c)−64 ;
Code Cesar
decode(k):=char(k+64) ;
Énoncé
for (j:=0 ;j<s ;j++) {r:=irem(cle+code(message[j]),26) ;
messcode:=append(messcode,decode(r))
};
return(messcode) ;
};
DecoCesar(message):={
local k ;
for (k:=1 ;k<=26 ;k++) {afficher("cle no "+k+":"+Cesar(message,k))} ;
};
Ce programme fait appel au précédent
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Quotient, reste, PGCD, PPCM
Énoncé
Quotient(a,b):={
Reste(a,b):={
local k ;
local k ;
k:=0 ;
while (k∗b<=a) {k:=k+1} ;
while (k∗b<=a) {k:=k+1} ;
return(a−b∗(k−1)) ;
return(k−1) ;
};
};
PGCD(a,b):={
PPCM(a,b):={
local r ;
a∗b/PGCD(a,b) ;
while (b !=0) {r:=Reste(a,b) ; a:=b ; b:=r} ;
return(a) ;
};
Les deux derniers programmes font appel à celui qui les précède
Auteur :
Bernard Chrétien
Algorithmique
};
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Extremum d’une fonction
Une solution
Maximum(f,x0,p):={
local X,Y,compteur ;
X:=x0+10∧ (−p) ;
Y:=f(x0) ;
compteur:=0 ;
while (evalf(f(X))>Y and compteur<10∧ p)
{Y:=evalf(f(X)) ; X:=X+10∧ (−p) ; compteur:=compteur+1} ;
X−10∧ (−p) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Premier(n):={
local k ;
for (k:=0 ;k<=n ;k++){ if isprime(k∧ 2+k+41) ;
then print("P("+k+") est premier") ;
end_if ;
Nombres
premiers
Énoncé
};
};
Recherche(p):={
local r,k ;
k:=0 ;
while (r<p−1){ if isprime(k∧ 2+k+41) ;
then r:=r+1 ; k:=k+1 ; else k:=k+1 ;
end_if ;
};
print("P("+k+")="+(k∧ 2+k+41)+" est le "+p+" ieme nombre P(n) premier ") ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
La voiture et les deux chèvres
Énoncé
Chevre(n):={
local a, v, ng1, ng2, k ;
ng1:=0 ;
ng2:=0 ;
for (k:=1 ;k<=n ; k++){ v:=floor(rand(0,3)) ;
a:=floor(rand(0,3)) ;
if a==v then ng1:=ng1+1 ;
else ng2:=ng2+1 ;
end_if ;
};
return([evalf(ng1/n),evalf(ng2/n)]) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
250 e
Énoncé
Denombrement2():={
local compteur, k, l ;
compteur:=0 ;
for (k:=0 ;k<=40 ;k++) ;
for (l:=0 ;l<=20 ;l++) ;
if 2∗k+5∗l=130 then compteur:=compteur+1 ;
end_if ;
;
;
return(compteur) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
250 e
Énoncé
Denombrement3():={
local compteur, k, l, m ;
compteur:=0 ;
for (k:=0 ;k<=100 ;k++) ;
for (l:=0 ;l<=50 ;l++) ;
for (m:=0 ;m<=20 ;m++) ;
if k+2∗l+5∗m=250 then compteur:=compteur+1 ;
end_if ;
;
;
;
return(compteur) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
Sondage():={
Vote
local o, n, b, compteur, V, c ;
Énoncé
o:=0 ;
n:=0 ;
b:=0 ;
compteur:=0 ;
while (V !="F"){textinput("votre vote",V) ;
compteur:=compteur+1 ;
if V =="O" then o:=o+1 ;
else if V =="N" then n:=n+1 ;
else b:=b+1 ;
end_if ;
end_if ;
};
c:=compteur−1 ;
print("Nombre de votants = "+c) ;
print("Nombre de Oui = "+format((o/c)∗100,"f2")+" %") ;
print("Nombre de Non = "+format((n/c)∗100,"f2")+" %") ;
print("Nombre de Blanc = "+format((c−o−n)/c∗100,"f2")+" %") ;
};
Auteur :
Bernard Chrétien
Algorithmique
Objectifs
Affectation
Si · · · Alors · · · Sinon · · ·
Pour · · · variantDe · · · à · · · Faire
Tant que · · ·
Pour aller plus loin
Solutions
PileFace(taille,essais):={
Lancers de pièces
local T, I, J, X ;
L1:=seq(A,A,1..essais) ;
Énoncé
L2:=seq(0,A,1..essais) ;
T:=taille ;
for (J:=1 ;J<=essais ;J++) ;
{X:=0 ; for (I:=1 ;I<=taille ;I++) ;
{ if alea(2)<0.5 then X:=X+1 ;
end_if ;
};
L2[J−1]:=X/taille ;
};
return(nuage_points(seq([L1[A],L2[A]],A,0,..49)),
droite(y=0.5),
droite(y=0.5+1/sqrt(T)),
droite(y=0.5−1/sqrt(T))) ;
};
Auteur :
Bernard Chrétien
Algorithmique
Téléchargement