Algorithmie
Seconde Générale et Technologique
M-01
Algorithmie
Un algorithme est une suite finie et non ambiguë d'opérations ou d'instructions permettant de résoudre un problème ou d'obtenir un résultat. Chaque opération ou instruction est effectuée dans un ordre précis.
Les affectations
En algorithmie, l'affectation consiste à donner une valeur à une variable. En langage Python, on utilise le signe égal
= pour affecter une valeur à une variable.
a=2
b=3
a=a+b
b=a*b
- Quelles sont les valeurs de
aetbaprès l'exécution de ce code ?
Recopie et complète le tableau ci-dessous pour justifier.
| Ligne n° | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
a |
... | ... | ... | ... |
b |
... | ... | ... | ... |
- Même consigne en échangeant les deux dernières lignes du code.
- Que se passe-t-il si on échange les deux premières lignes du code ?
- Que se passe-t-il si on échange les lignes 2 et 3 du code ?
Ligne n° 1 2 3 4 a2 2 5 5 b3 3 15 Après l'exécution de ce code, la valeur de
aest 5 et la valeur debest 15.Ligne n° 1 2 3 4 a2 2 2 8 b3 6 6 Après l'exécution de ce code, la valeur de
aest 8 et la valeur debest 6.Le code devient :
b=3 a=2 a=a+b b=a*bLes valeurs de
aetbsont inchangées.Le code devient :
a=2 a=a+b b=3 b=a*bSi on échange les lignes 2 et 3 du code, le code ne fonctionne plus car on ne peut pas affecter une valeur à
aà la ligne 2 sibn'a pas encore été défini.
Le script devient :
a=2
b=3
b=a*b
a=a+b
Les variables
En python, les valeurs peuvent être de différents types :
int (entier), float (flottant), str (chaîne de caractères) et bool (booléen).
Opérations arithmétiques
Pour chacune des variables suivantes, indique sa valeur et son type.
Pour chacune des variables suivantes, indique sa valeur et son type.
a=2b=5.0c=1.5+1.5c=6/3d=6.0/2e=7/4f=23//4g=23%4h=7**2i=2*2**3*5j=(2*2)**3*5k=-2**3
>>> a=2 >>> a 2 >>> type(a) <class 'int'>>>> b=5.0 >>> b 5.0 >>> type(b) <class 'float'>>>> c=1.5+1.5 >>> c 3.0 >>> type(c) <class 'float'>>>> c=6/3 >>> c 2.0 >>> type(c) <class 'float'>>>> d=6.0/2 >>> d 3.0 >>> type(d) <class 'float'>>>> e=7/4 >>> e 1.75 >>> type(e) <class 'float'>>>> f=23//4 >>> f 5 >>> type(f) <class 'int'>>>> g=23%4 >>> g 3 >>> type(g) <class 'int'>>>> h=7**2 >>> h 49 >>> type(h) <class 'int'>>>> i=2*2**3*5 >>> i 80 >>> type(i) <class 'int'>>>> j=(2*2)**3*5 >>> j 320 >>> type(j) <class 'int'>>>> k=-2**3 >>> k -8 >>> type(k) <class 'int'>
Chaînes de caractères
Pour chacune des variables suivantes, indique sa valeur et son type.
Pour chacune des variables suivantes, indique sa valeur et son type.
a="Bon"+"jour"b=2*"bon"c="2"+"3"d="2"*3
>>> a="Bon"+"jour" >>> a 'Bonjour' >>> type(a) <class 'str'>>>> b=2*"bon" >>> b 'bonbon' >>> type(b) <class 'str'>>>> c="2"+"3" >>> c '23' >>> type(c) <class 'str'>>>> d="2"*3 >>> d '222' >>> type(d) <class 'str'>
Booléens
Pour chacune des variables suivantes, indique sa valeur et son type.
Pour chacune des variables suivantes, indique sa valeur et son type.
a=2==3b=2!=3c=2<3d=2>3e=2<=3f=2>=3g=2==2.0h=0.2+0.1==0.3i="2"*3==6j="2"*3=="2*3"k="2"*3==222l="2*3==6"
>>> a=2==3 >>> a False >>> type(a) <class 'bool'>>>> b=2!=3 >>> b True >>> type(b) <class 'bool'>>>> c=2<3 >>> c True >>> type(c) <class 'bool'>>>> d=2>3 >>> d False >>> type(d) <class 'bool'>>>> e=2<=3 >>> e True >>> type(e) <class 'bool'>>>> f=2>=3 >>> f False >>> type(f) <class 'bool'>>>> g=2==2.0 >>> g True >>> type(g) <class 'bool'>>>> h=0.2+0.1==0.3 >>> h False >>> type(h) <class 'bool'>>>> i="2"*3==6 >>> i False >>> type(i) <class 'bool'>>>> j="2"*3=="2*3" >>> j False >>> type(j) <class 'bool'>>>> k="2"*3==222 >>> k False >>> type(k) <class 'bool'>>>> l="2*3==6" >>> l "2*3==6" >>> type(l) <class 'str'>
Les boucles
En Python, une boucle
for i in range(n) répète un bloc d'instructions n fois.
for i in range(n):
Instruction 1
Instruction 2
...
Instructions effectuées après la boucle
- Recopiez et complétez le tableau des valeurs de
aetbau cours de l'exécution du programme ci-contre.
a,b = 0,1
for i in range(3):
a=a+1
b=b*a
| ligne n° | 1 | 2 i=0 |
3 i=0 |
4 i=0 |
2 i=1 |
3 i=1 |
4 i=1 |
2 i=2 |
3 i=2 |
4 i=2 |
|---|---|---|---|---|---|---|---|---|---|---|
a |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
b |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
- On remplace range(3) par range(4), quelles sont les valeurs de
aetbà la fin du script ? - On inverse les lignes 3 et 4 du programme, que se passe-t-il ?
- Le programme ci-contre donne-t-il le même résultat pour
b? Justifiez.b=1 for i in range(4): b=b*(i+1)
ligne n° 1 2
i=03
i=04
i=02
i=13
i=14
i=12
i=23
i=24
i=2a0 0 1 1 1 2 2 2 3 3 b1 1 1 1 1 1 2 2 2 6 a,b = 0,1 for i in range(4): a=a+1 b=b*aligne n° 1 2
i=03
i=04
i=02
i=13
i=14
i=12
i=23
i=24
i=22
i=33
i=34
i=3a0 0 1 1 1 2 2 2 3 3 3 4 4 b1 1 1 1 1 1 2 2 2 6 6 6 24 a,b = 0,1 for i in range(4): b=b*a a=a+1ligne n° 1 2
i=03
i=04
i=02
i=13
i=14
i=12
i=23
i=24
i=22
i=33
i=34
i=3a0 0 0 1 1 1 2 2 2 3 3 3 4 b1 1 0 0 0 0 0 0 0 0 0 0 0 On remarque que la valeur finale de
areste inchangée mais que la valeur debest nulle.-
b=1 for i in range(4): b=b*(i+1)ligne n° 1 2
i=03
i=02
i=13
i=12
i=23
i=22
i=33
i=3b1 1 1 1 2 2 6 6 24 La variable
bprend les mêmes valeurs que dans le premier programme caraeti+1sont équivalents.
En Python, une boucle
while condition répète un bloc d'instructions tant qu'une condition est vraie.
while condition:
Instruction 1
Instruction 2
...
Instructions effectuées après la boucle
On reprend l'algorithme précédent mais on remplace la boucle
for par une boucle while pour déterminer le seuil de a à partir duquel b dépasse $\num{1000000}$.
- Construisez et complétez le tableau des valeurs de
aetbau cours de l'exécution du programme ci-contre.
a,b = 0,1
while b<=1000000:
a=a+1
b=b*a
- Quel est le seuil pour dépasser $10^6$ ?
- Quel est le seuil pour dépasser $10^9$ ?
-
ligne n° 1 2 3 4 2 3 4 2 3 4 2 3 4 2 a0 0 1 1 1 2 2 2 3 3 3 4 4 4 b1 1 1 1 1 1 2 2 2 6 6 6 24 24 ligne n° 3 4 2 3 4 2 3 4 2 3 a5 5 5 6 6 6 7 7 7 8 b24 120 120 120 720 720 720 5040 5040 5040 ligne n° 4 2 3 4 2 3 4 2 a8 8 9 9 9 10 10 10 b40320 40320 40320 362880 362880 362880 3628800 3628800 Le seuil pour dépasser $10^6$ est $10$.
- Le seuil pour dépasser $10^9$ est $13$.