Vous êtes sur la page 1sur 6

Algorithmique 1`ere ST I2D

I - G
en
eralit
es
Definition: Un algorithme est une suite finie dinstructions permettant la resolution
systematique dun probl`eme donne.
Un algorithme peut-etre utilise pour
decrire par une suite dinstructions ou de procedures la marche compl`ete a` suivre pour resoudre
un probl`eme ;
automatiser une tache complexe ; on sait dej`a dans ce cas resoudre le probl`eme pose et on cherche
a` tirer parti de moyens informatiques pour effectuer automatiquement toutes les etapes et tous
les calculs intermediaires qui permettent daboutir au resultat ;
chercher la solution dun probl`eme ; on ne sait pas a priori resoudre le probl`eme pose mais on
peut tirer parti dun syst`eme informatise pour explorer lensemble des possibilites, et ainsi tenter
de trouver la solution, ou du moins une bonne approximation de celle-ci.
Mode dapplication
1. Verifier que la surface est bien du teck ou un bois exotique
Un exemple courant : notice 2. Bien agiter avant emploi
dutilisation ou mode dem- 3. Impregner le bois genereusement
ploi 4. 20 minutes apr`es, essuyer lexcedent a` laide dun chiffon
5. Laisser secher 6 heures
Voici la notice dutilisation dune 6. Recommencer `a partir de letape 2
huile teck, imprimee au dos du 7 Laisser couler quelques gouttes deau sur la surface traitee
flacon dhuile : Si les gouttes perlent `a la surface,
Alors le bois est correctement huile et impermeabilise
Sinon, recommencer `a letape 2.

D efinition: Un langage de programmation est un ensemble dinstructions et de r`egles


syntaxiques comprehensibles par un syst`eme automatise (calculatrice, ordinateur, puce
electronique,. . .).
Un programme est la traduction dun algorithme dans un langage de programmation particu-
lier.
Il existe de tr`es nombreux langages de programmation tels que, parmi bien dautres, Basic, Fortran,
Python, C, C++, Matlab, assembleur. . ., ainsi que ceux implantes dans les calculatrices (alors dites
programmables. . .).
Dans la suite les langages des calculatrices TI et Casio, et le langage Python qui est un language
gratuit, moderne, tr`es efficace, et dont le code source est libre (open source). Il peut etre telecharge
`a ladresse http ://www.python.org/.

II - Premiers exemples : calcul du pgcd de deux nombres


1) Algorithme dEuclide : Automatisation du calcul du pgcd de deux entiers.
Par exemple, pour les entiers
a = 462 et b = 60 : 462 = 60 7 + 42

60 = 42 1 + 18

42 = 18 2 + 6

18 = 6 3 + 0
Y. Morel - xymaths.free.fr/Lycee/1STI/ Algorithmique - 1`ere ST I2D - 1/6
Entrer les nombres entiers a et b

Algorithme
Lire a et b
Calculer le reste r de la division (reste division de a par b) r
euclidienne de a par b Tant que r6=0 faire
ba
a prend la valeur b rb
b prend la valeur r (reste division de a par b) r
NON Fin tant que
r = 0?

OUI

pgcd = b

Exercice 1
a) Determiner le pgcd de a = 140 et b = 42.
b) Determiner le pgcd de a = 1500 et b = 2310.

2) Algorithme des diff


erences
Cet autre algorithme permettant de calculer le pgcd de deux nombres a et b sexecute de la mani`ere
suivante : on soustrait le plus petit des deux nombres a et b au plus grand, on obtient le nombre
positif d ; puis on recommence de meme avec les deux plus petits nombres parmi les trois precedents,
et ainsi de suite... 14 6 = 8
Par exemple, avec a = 14 et b = 6 : 86=2
62=4
42= 2
22=0
Algorithme Programme TI Programme Casio Programme Python
Lire a Prompt A "A="?A a=input("a ?")
Lire b Prompt B "B="?B b=input("b ?")

a-bd A-BD A-BD d=a-b


Afficher d Disp D print d
Wile D6=0
Tant que d6=0 Wile D6=0 If D<B while d !=0:
Si d<b If D<B Then BA if d<b:
ba Then DB a=b
db BA Else DA b=d
Sinon DB IfEnd else:
da Else A-BD a=d
Fin Si DA D d=a-b
a-bd End WhileEnd print d
Afficher d A-BD
Fin Tant que Disp D
End
Y. Morel - xymaths.free.fr/Lycee/1STI/ Algorithmique - 1`ere ST I2D - 2/6
III - Lire, ex
ecuter et comprendre un algorithme
Exercice 2
Algorithme
Ci-contre est donne un algorithme :
Entrer x
1. Quaffiche cet algorithme lorsque Si x < 0
lutilisateur entre le nombre 3 ? le a x la valeur x
Affecter `
nombre 12, 7 ? Fin Si
Afficher la valeur x
2. A quoi sert cet algorithme ?

Exercice 3
Ci-contre est donne un algorithme : Algorithme
x=1
1. Quaffiche cet algorithme lorsque S=0
lutilisateur entre successivement i=0
les nombres Tant que x 6= 0
Demander `a lutilisateur dentrer un nombre
12 ; 3 ; 18 ; 11 ; 0 Lire x
Affecter `a S la valeur S + x
2. A quoi sert cet algorithme ? Affecter `a i la valeur i + 1
Fin Tant que
Afficher la valeur S/i

IV - Variables

Definition On appelle variable tout emplacement de la memoire dans lequel une information peut-
etre stockee.
Une variable est constituee de :
un nom qui permet `a lordinateur de la localiser dans sa memoire (en general une
lettre : A, B, . . ., X, . . .)
une valeur : linformation (souvent un nombre) quelle contient.
La valeur dune variable peut changer au cours de lexecution de lalgorithme.
Une affectation consiste `a attribuer une valeur `a une variable, ou `a en modifier la
valeur. valvar
La valeur val est attrivuee `a la variable nommee var.

V - Structures dans les algorithmes


Pour variable de debut a
` Fin
1) Boucles it
eratives instructions 1
Une boucle permet de repeter un ensemble dinstructions un
instructions 2
nombre fixe de fois.
...
Fin Pour

Exercice 4
a) Ecrire un algorithme qui calcule et affiche la suite des carres des nombres entiers de 1 a` 10.
b) Modifier cet algorithme pour quil calcule et affiche la somme des carres des entiers de 1 a` 10.

Y. Morel - xymaths.free.fr/Lycee/1STI/ Algorithmique - 1`ere ST I2D - 3/6


2) Tests et instructions conditionnelles
Un test est une comparaison entre la valeur dune variable et une valeur Si test
donnee, ou entre les valeurs de deux variables. instructions 1
Un test a deux resultats possibles : 0 (faux), ou 1 (vrai). instructions 2
Dans une structure conditionnelle, les instructions ne sont effectuees que ...
si le test indique est vrai. Fin Si

Exercice 5 Ecrire un algorithme qui demande un nombre `a lutilisateur et affiche en resultat si le


nombre est positif ou negatif.

3) Boucles conditionnelles Tant que test


instructions 1
Une boucle conditionnelle permet de repeter une serie dinstructions sans instructions 2
connatre a priori le nombre diterations. ...
La boucle est repete tant que le test indique est vrai. Fin Tant que

Exercice 6 Ecrire un algorithme qui demande un nombre entier `a lutilisateur et compte a` rebours
jusqu`a 0.

VI - Jeu du nombre myst


erieux
Ce jeu se joue `a deux personnes de la mani`ere suivante.
Un des deux joueurs choisit un nombre entier au hasard compris entre 1 et 100. Le but du deuxi`eme
joueur est de trouver ce nombre. Pour cela il propose un nombre au premier joueur qui lui fournit
une des trois reponses :
Gagne, si le nombre propose est le bon ;
Trop grand, si le nombre propose est plus grand que le nombre mysterieux ;
Trop petit, si le nombre propose est plus petit que le nombre mysterieux ;
Si le nombre propose nest pas le bon, le deuxi`eme joueur propose un autre nombre, et le jeu se
poursuit jusqu`a ce quil trouve le nombre exact.
Le but du jeu est de trouver le nombre mysterieux avec le moins de tentatives possible.

1) Lordinateur fait deviner


Le programme dans lequel lordinateur est le joueur choisissant un nombre au hasard compris entre
1 et 100, et lutilisateur est le joueur qui doit trouver ce nombre.
Le programme doit aussi afficher le nombre de tentatives utilisees.
Lire attentivement lalgorithme suivant (ou un des programmes), bien suivre et comprendre la
succession dinstruction, et indiquer le role de chacune des variables M, C, N.

Y. Morel - xymaths.free.fr/Lycee/1STI/ Algorithmique - 1`ere ST I2D - 4/6


Algorithme Programme TI
eatoire entre 0 et 100
M prend une valeur al randInt(0,100)M
C prend la valeur 1 1C
Afficher "Entrer un nombre" Prompt N
Lire N while N6=M
Tant que N6=M if N<M
Si N<M alors Then
Afficher "Trop petit" Disp "Trop petit"
Sinon Else
Afficher "Trop grand" Disp "Trop grand"
Fin Si End
C prend la valeur C+1 C+1C
Afficher "Entrer un nombre" Prompt N
Lire N End
Fin Tant que Disp "Gagne en",C," coups"
Afficher "Gagne en",C," coups"

Programme Casio Programme Python


Int(100Ran#+1)M import random
1C
"N="?N M=random.randint(0,100)
While N6=M N=input(Entrer un nombre: )
If N<M
Then "Trop petit" C=0
Else "Trop grand" while N!=M:
IfEnd N=input(Entrer un nombre: )
C+1C if N<M:
"N="?N print "Trop petit"
WhileEnd else
"Gagne" print "Trop grand"
"Nombre de coups=" C=C+1
C print "Gagne en ",C," coups"

2) Lordinateur doit deviner


Ecrire un programme pour ce jeu avec les roles inverses : vous pensez a` un nombre entier compris
entre 1 et 100, et lordinateur doit le trouver.
Essayer de trouver une strategie pour que lordinateur trouve ce nombre avec le moins de coups
possible.

VII - Corrig
es : Algorithmes et programmes des exercices
Exercice 4
a) Affichage des 10 premiers entiers :
Algorithme Programme TI Programme Casio Programme Python
Pour I de 1 `
a 10 For (I,1,10) For 1I To 10 for i in range(1,11):
Afficher I*I Disp I*I I*I print i*i
Fin Pour End Next

Y. Morel - xymaths.free.fr/Lycee/1STI/ Algorithmique - 1`ere ST I2D - 5/6


b) Calcul de la somme des carres des 10 premiers entiers :
Algorithme Programme TI Programme Casio Programme Python
0S 0S 0S S=0
Pour I de 1 `
a 10 For (I,1,10) For 1I To 10 for i in range(1,11):
S+I*IS S+I*IS S+I*IS print i*i
Fin Pour End Next print S
Afficher S Disp S S

Exercice 5 Test : nombre positif ?


Algorithme Programme TI Programme Casio Programme Python
Lire A Prompt A "A="?A A=input("A ?")
Si A>0 If A0 If A>0 if A0:
Afficher "A positif" Then Then "A positif" print "A positif"
Sinon Disp "A positif" Else "A n
egatif" else:
Afficher "A n
egatif" Else IfEnd print "A negatif"
Fin Si Disp "A n
egatif"
End

Exercice 6 Compte `a rebours :


Algorithme Programme TI Programme Casio Programme Python
Lire N Prompt N "N="?N N=input("N ?")
Tant que N>0 While N>0 While N>1 While N>0:
N-1N N-1N N-1N N=N-1
Afficher "N" Disp N WhileEnd print N
Fin Tant que End

VIII - Exercices
Exercice 7 Ecrire un algorithme qui demande trois nombres a, b et c a` lutilisateur et calcule et
affiche les solutions de lequation du second degre ax2 + bx + c = 0.
Exercice 8 Ecrire un algorithme qui demande `a lutilisateur un nombre entier n et calcule et affiche
la somme 1 + 2 + 3 + + n.
Exercice 9 Ecrire un algorithme qui demande `a lutilisateur un nombre entier n, et calcule et
affiche n!. (Rappel : pour un nombre entier n, n! = n (n 1) (n 2) (n 3) 2 1. )
Exercice 10 Ecrire un algorithme qui demande un nombre entier `a lutilisateur et indique si ce
nombre est pair ou impair.
(Indication : Un entier est pair, par exemple, si en lui retranchant suffisamment de fois 2 on ar-
rive `a 0.)
Exercice 11 Distributeur de billets
Ecrire un algorithme qui demande un montant N en euros (un nombre entier) et qui calcule et
affiche le nombre minimal de billets de 20, 10 et de 5 euros `a fournir pour faire le montant N.
Exercice 12 La population dune ville augmente de 4 % par an.
Ecrire un algorithme qui permet de determiner le nombre dannees au bout desquelles la population
aura double.
Y. Morel - xymaths.free.fr/Lycee/1STI/ Algorithmique - 1`ere ST I2D - 6/6

Vous aimerez peut-être aussi