Bases d’algorithmique
Table des mati`eres
1 Bases d’algorithmique I 1
1.1 Algorithmes et programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Tests......................................................... 2
1.3 Fonctions ...................................................... 4
1.3.1 D´enirunefonction ............................................ 4
1.3.2 Port´eedesvariables ............................................ 5
1.4 Boucles ....................................................... 5
1.4.1 Bouclefor.................................................. 5
1.4.2 Bouclewhile ................................................ 6
1 Bases d’algorithmique I
1.1 Algorithmes et programmes
efinition 1.1
Un
algorithme
est une suite d’instructions permettant, `a partir de donn´ees, de
produire un r´esultat.
Exemples 1.1
Un algorithme peut tr`es bien ˆetre d´ecrit en langage naturel, avec un scema. . . L’existence d’algorithmes pr´ec´ede
d’ailleurs de nombreux si`ecles l’apparition des premiers ordinateurs !
efinition 1.2
Un
programme
est un algorithme ´ecrit dans un langage permettant son ex´ecu-
tion par un ordinateur.
En python, nous avons vu pour l’instant 3 instructions :
L’affectation
L’affichage (`a l’aide la commande print)
La demande de valeur `a l’utilisateur (`a l’aide la commande input)
Dans les exemples que nous avons ´etudi´es jusqu’`a pr´esent, les instructions d’un programme sont effectu´ees s´equentiellement
– ce qui ne va pas permettre de traduire des algorithmes autres que tr`es simples.
Exemple 1.2
Comment utiliser python pour afficher s´equentiellement les carr´es des entiers de 1 `a 10 ? On cherchera
`a taper le moins de caract`eres possibles, et l’on pourra utiliser la flˆeche vers le haut pour rappeler une commande
pr´ec´edemment tap´ee.
1
Exemple 1.3
L’
algorithme d’Euclide
permet de calculer le plus grand diviseur commun (pgcd) de deux entiers
strictement positifs aet b, avec a > b.
(i) On calcule le reste rde la division de apar b.
(ii) Si rest nul, le r´esultat recherch´e est b.
(iii) Sinon, on recommence `a l’´etape (i) en rempla¸cant apar b, et bpar r.
Nous prouverons plus tard que cet algorithme fonctionne .
1. Utiliser cet algorithme pour calculer `a la main le pgcd de 120 et 25.
2. Comment utiliser python pour calculer le pgcd de 22212 et 2178 ? (On ´evitera de taper trop de caract`eres. . .)
Les m´ethodes utilis´ees dans les exercice pr´ec´edents ne sont pas enti`erement automatiques. Elles n´ecessitent l’intervention
de l’utilisateur :
pour r´ep´eter des mˆemes instructions un certain nombre de fois ;
pour tester quand est-ce-qu’il faut s’arrˆeter.
Tout langage de programmation dispose d’instructions permettant d’automatiser compl`etement ce type de proed´es.
1.2 Tests
Les tests (ou branchement conditionnels) permettent d’effectuer une s´erie d’instructions si et seulement si une certaine
condition est v´erifi´ee.
La syntaxe est la suivante :
if condition :
bloc d’instructions
Rem
Le bloc d’instruction doit ˆetre indent´e par rapport au
if
, c’est-`a-dire d´ecal´e de 4 espaces (que l’on peut
obtenir directement `a l’aide de la touche tabulation).
Code Python :
a=int(input(’Entrez un entier positif : ’))
if a<0 :
print(’Vous n’avez pas rentr´e un entier positif...’)
Exercice 1 Quelle est la diff´erence entre les 2 programmes suivants :
Code Python :
a=int(input(’Entrez un entier : ’))
if a==0 :
print(’Votre entier est nul.’)
print(’Au revoir’)
Code Python :
a=int(input(’Entrez un entier : ’))
if a==0 :
print(’Votre entier est nul.’)
print(’Au revoir’)
2
Il est possible d’ajouter des instructions `a effectuer lorsque la condition n’est pas v´erifi´ee.
Code Python :
a=int(input(’Entrez un entier : ’))
if a>=0 :
print(’a est positif’)
else :
print(’a’ est strictement n´egatif)
Exercice 2
En imbriquant 2 instructions conditionnelles, ´ecrire un programme qui demande un entier `a l’utilisateur, et
affiche un message qui dit si cet entier est nul, strictement positif ou strictement n´egatif.
Le programme de l’exercice pr´ec´edent peut ˆetre compact´e de la fa¸con suivante :
Code Python :
a=int(input(’Entrez un entier : ’))
if a>0 :
print(’a est strictement positif’)
elif a==0 :
print(’a est nul’)
else :
print(’a est strictement n´egatif’)
Exercice 3
1. Que fait le programme suivant ?
Code Python :
if a>b :
if a>c :
M=a
else :
M=c
else :
if b>c :
M=b
else :
M=c
2. Le modifier pour qu’`a l’issue de son ex´ecution, la variable mcontienne de plus le minimum de a,bet c.
3
1.3 Fonctions
1.3.1 efinir une fonction
Lorsque l’on a besoin d’utiliser plusieurs fois une mˆeme s´erie d’instructions, il faut les mettre sous forme de fonction. Une
fonction poss`ede :
un nom – que l’on choisira de fa¸con `a ce qu’il soit suffisamment explicite) ;
des param`etres, qui sont ses entr´ees ;
d’un r´esultat, ou valeur de retour
La syntaxe de base pour d´eclarer une fonction est la suivante :
def nom(param`etres) :
bloc d’instruction
return valeur de retour
Il y a des variantes possibles, que nous allons ´etudier au fur et `a mesure des exemples qui suivent.
Voici une fonction qui calcule le minimum de deux r´eels :
Code Python :
def mon_min(a :float,b :float) :
"""renvoie le minimum des r´eels a et b """
if a<=b :
return a
return b
Il est alors possible d’utiliser cette fonction dans la console, ou dans un autre programme :
Code Python :
>>> a=mon_min(1,2.4)
>>> print(a)
1
Une fonction peut ne pas renvoyer de r´esultat :
Code Python :
def dis_bonjour(nom :str) :
"""affiche un message de bienvenue personalis´e"""
print(’Bonjour’,nom,’ !’)
Rem
Ne pas confondre :
return
print
Exercice 4 Sans utiliser abs, ´ecrire une fonction mon_abs(a :float), qui renvoie la valeur absolue d’un r´eel a.
4
1.3.2 Port´ee des variables
Les variables utilis´ees `a l’inerieur d’une fonction sont appel´ees
variables locales
. Une variable locale n’est pas visible `a
l’ext´erieur de la fonction.
Code Python :
def test(a :int) :
b=2
a=a+1
return a+b
>>> a=-1
>>> b=-1
>>> test(a)
2
>>> a
>>> b
On parle de
variable globale
pour une variable d´efinie `a l’ext´erieur de toute fonction.
L’usage des variables globales
est r´eserv´e `a la d´efinition de constantes. Il est impossible de modifier une variable globale dans une fonction.
Code Python :
#vitesse de la lumi`ere, en m.s^-1
c=299792458
def distance_km_min(m :float) :
"""calcule la distance en km parcouru par la lumi`ere en m minutes"""
return 60*m*c/1000
def temps_km_min(k :float) :
"""calcule le temps en min mis par la lumi`ere pour parcourir k km"""
return k*1000/(60*c)
def test() :
c=c+1
>>> distance_km_min(60)
1079252848.8
>>> temps_km_min(1)
5.5594015866358675e-08
>>> test()
.....
UnboundLocalError : local variable ’c’ referenced before assignment
1.4 Boucles
Les boucles sont des instructions qui permettent de r´ep´eter plusieurs fois un bloc d’instructions donn´e.
1.4.1 Boucle for
Une boucle for permet de r´ep´eter un nombre de fois pr´ed´etermin´e une s´equence d’instructions.
for compteur in range((debut),fin) :
bloc d’instructions
5
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!