BTS-SIO
Algorithmes introduction
Travaux pratiques
1 D´efinition (encyclop´edie Universalis) :
Un algorithme est la sp´ecification d’un scema de calcul, sous forme de suites d’op´erations ´el´ementaires
ob´eissant `a des enchaˆınement d´etermin´e. Le terme algorithme tire lui-mˆeme son nom du math´ematicien
Al Khw¯arizm¯
i(env.820) dont le trait´e d’arithm´etique servit `a transmettre `a l’Occident des r`egles de calcul
sur la repr´esentation d´ecimale des nombres ant´erieurement d´ecouvertes par les math´ematiciens de l’Inde.
Un algorithme nouveau devra r´epondre soit `a un nouveau calcul `a d´eterminer soit `a l’optimisation des
m´ethodes de calculs. Ainsi on classera les algorithme suivant leur complexit´e mesur´ee en nombre d’op´erations
´el´ementaires `a l’ex´ecution. On distinguera aussi les algorithmes qui utilisent la m´emoire centrale de ceux qui
ont besoin d’une m´emoire externe (ex : disque dur) pour lequel le traitement est plus long.
Des algorithmes classiques ont ´et´e ´etablis tr`es tˆot :
l’algorithme d’Euclide (300 ans av.JC)qui permet le calcul du plus grand diviseur commun.
le scema de calcul du nombre πdˆu `a Archim`ede.
A l’issu de la Seconde Guerre mondiale, l’av`enement du calculateur ´electronique a entraˆın´e un renouvellement
complet de l’algorithmique, appliqu´ee d´esormais `a des probl`emes de taille sup´erieure `a celle des probl`emes
trait´es manuellement, comme le tri, la recherche rapide d’informations non num´eriques (bases de donn´ees...)
ou l’optimisation combinatoire.
S.Mirbel page 1 / 5
BTS-SIO
2 Gestion des entr´ees et sorties
2.1 Exemple d’algorithme
Algorithm 1 Calculer f(n) = 2n
Entr´ees: nN
Sorties: f(n)=2n
f2n
2.2 Programmation en Python
Notes :
# : permet d’ins´erer des commentaires (vous devrez prendre cette habitude d’ins´erer des commentaires au
fur et `a mesure).
input([Prompt]) as string : permet de demander `a l’utilisateur du programme de rentrer une chaine de
caract`eres (string) avec un texte d’introduction ([Prompt]).
int() : permet de transformer la chaˆıne de caract`eres en un entier naturel.
= : est l’affectation d’une valeur `a une variable, la variable pouvant ˆetre une une chaine de caract`eres ou un
nombre.
print(): permet d’afficher soit une variable, soit un texte.
l’algorithme en programm´e sous Python :
Recopier ce programme sous Python (IDLE) puis l’ex´ecuter.
2.3 Exercices
Pour chaque question vous pr´esenterez l’algorithme, puis vous le programmer en Python.
1. faire un algorithme qui donne l’image de la fonction carr´e pour des entiers donn´es par l’utilisateur.
2. soit la fonction d´efinie pour tout nombre entier npar l’expression f(n) = an2+bn +c. L’utilisateur
donnera les valeurs de a,bet c, puis une valeur de net l’algorithme permettra de calculer la valeur de
f(n).
S.Mirbel page 2 / 5
BTS-SIO
3 Les variables, types de variables
Il existe trois types de variables :
type integer (entier)
type float (nombre `a virgule flottante)
type string (chaˆıne de caract`eres)
type liste (liste d’´el´ements)
3.1 Exemple d’algorithme
Algorithme de conversion horaire :
Algorithm 2 Convertir h/m/s en s
Entr´ees: (h, m, s)D3
Sorties: f(h, m, s) = 3600h+ 60m+s
f3600 ×h+ 60 ×m+s
3.2 Programmation en Python
Sous Python, il n’est pas n´ecessaire de pr´eciser le type de la variable, ni mˆeme de la d´eclarer. Il suffit d’´ecrire
une variable au cours d’un programme pour qu’elle soit d´eclar´ee et Python s’occupe de savoir son type. Mais
pour bien construire son programme, il est n´ecessaire de savoir le type des variables utilis´ees.
l’algorithme programm´e sous Python
S.Mirbel page 3 / 5
BTS-SIO
On peut aussi utiliser une liste comme le sugg`ere l’algorithme :
l’algorithme g´er´e avec des listes
Recopier ce programme sous Python (IDLE) puis l’ex´ecuter.
3.3 Exercices
Pour chaque question vous pr´esenterez l’algorithme, puis vous le programmer en Python.
1. La division Euclidienne de 20 par 3 donne 6 reste 2. On peut alors ´ecrire 20 = 6 ×3 + 2. (20 est le
dividende, 3 le diviseur, 6 est le quotient et 2 est le reste)
On ´ecrit : 20 2 (mod 3).
D’une mani`ere g´en´erale, la division Euclidienne de deux entiers (non nuls) aet best telle qu’il existe
deux entiers qet rtels que a=bq +ravec 0 6r < b.
(a, b)N×N;(q, r)N×N,(a=bq +r)(0 6r < b).
´
Ecrire un algorithme qui demande `a l’utilisateur le dividende et le diviseur, puis qui donne le quotient et
le reste de la division Euclidienne. Programmer cet algorithme sous Python.
Utiliser le(s) fonction(s) :
int qui donne la partie enti`ere d’un nombre d´ecimal (ex : int(2,81) = 2) ou 20//3 = 6 qui donne le
quotient de la division de 20 par 3.
20%3 donne directement le reste de la division de 20 par 3.
2. Dans un hˆopital on doit faire une base de donn´ees des patients. Pour un patient donn´e (anonyme) on
souhaite connaˆıtre : son ˆage, son poids (en kg), sa taille (en m) (ces donn´ees sont ind´ependantes de la
date du jour). Donner un algorithme qui demande la liste de trois ´el´ements (un entier, un entier, un
flottant), puis sortir l’indice de masse corporel IMC qui suit la formule suivante :
IMC =taille
poids2
3. Soit une liste lde taille n.
La fonction len(l) renvoie la longueur de la liste, ici n
La fonction del(l[i]) permet d’effacer un ´el´ement de la liste lau rang i
La fonction l.append() permet d’ajouter un ´el´ement `a liste lau rang n+ 1
(a) Faire un algorithme qui demande `a l’utilisateur de rentrer son pr´enom (ex : Romane), il remplacera
la derni`ere lettre du pr´enom par un point, puis `a la suite de son pr´enom ajoutera le nombre nde
lettres qui compose son pr´enom (ex : Roman.6). (On peut consid´erer une chaine de ncaract`eres
comme une liste de n´el´ements.)
S.Mirbel page 4 / 5
BTS-SIO
(b) Une ´equipe est compos´ee de 5 joueurs (liste [J1,J2,J3,J4,J5]) et de deux rempla¸cants (liste [R1,R2]).
Au cours d’un match, on doit faire intervenir un et un seul rempla¸cant `a la place d’un joueur. Faire
un algorithme qui demande `a l’utilisateur le num´ero du rempla¸cant et le num´ero du joueur `a
remplacer et le r´esultat est les nouvelles listes de joueur et rempla¸cant. (ex : [J1,R2,J3,J4,J5]
[R1,J2]).
4. voici un algorithme qui permet de concat´ener deux chaines de caract`eres :
Algorithm 3 Concat´ener deux expressions
...
a=’bonjour’
b=’ `a tout le monde’
c=concatener(a, b)
Cet algorithme donne le r´esultat bonjour tout le monde.
En Python, il suffira de saisir print(a, b) pour concat´ener la chaine de caract`eres, on peut aussi affecter `a
une variable cla valeur a+bpuis afficher c.
(a) Cr´eer un algorithme qui demande le nom, le pr´enom et la date de naissance sous le format
(jj/mm/aaaa) d’un client. A la sortie, l’algorithme affichera :
vous vous nommez NOM Pr´enom et vous ˆetes n´e(e) le Date de naissance
(b) Faire un algorithme qui demande le nom et pr´enom de l’utilisateur, et qui donne le nombre de
lettre de chaque mot, l’algorithme permettra de concat´ener le r´esultat avec une phrase (ex : votre
pr´enom est Romane, il contient 6 lettres et votre nom est Ang`eles il contient 7 lettres.)
4 Les op´erateurs et fonctions math´ematiques
Op´erateurs En Python Fonctions En Python
X+Y X +Yexp(x) math.exp(x)
XY X Ylog(x) math.log(x)
X×Y X Ypuissance : xnmath.pow(x,n)
X/Y X/Y racine carr´ee math.sqrt(x)
quotient(X;Y)X//Y arrondir(x) `a 10nround(x,n)
reste(X;Y)X%Ypartie enti`ere (x) math.floor(x)
les constantes : math.pi donne une valeur approcee de πet math.e donne une valeur approch´ee de e.
S.Mirbel page 5 / 5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !