Certains langages, comme Javascript ou C, définissent une boucle
do ... while
:
instruction1;
do { blocDoWhile; } while condition;
instruction3;
L'instruction do...while
est une instruction de contrôle du flux
d'instructions. Elle crée une boucle qui exécute un bloc d'instructions
blocDoWhile
jusqu'à ce qu'une condition
de test ne soit plus
vérifiée.
La condition
est testée après que l'instruction blocDoWhile
soit
exécutée; l'instruction définie dans la boucle est donc exécutée au moins
une fois.
L'exemple ci-dessous est programmé en Javascript :
Le langage Python ne dispose pas d'une telle structure do...while
.
Proposer en Python un algorithme équivalent à la structure do...while
du programme Javascript précédent à l'aide d'une boucle while
.
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.
AAV1_ITE: Choisir et appliquer une méthode générique
On choisit une méthode par analogie de comportement :
- le bloc
doWhile
doit être exécuté au moins une fois;- la condition est une condition de continuité (
not
condition d'arrêt).
Ainsi, pour reprendre l'exemple du code Javascript :
Etat initial:
y = random.randint(0,9) n, somme = 0, y
blocDoWhile
exécuté une fois avant la bouclewhile
:n = n + 1 somme = somme + random.randint(0,9)Boucle
while
:while not somme >= 30 : n = n + 1 somme = somme + random.randint(0,9)
D'une manière générale, la boucle do...while
:
do bloc while condition;
peut toujours s'écrire en Python avec une boucle
while
:
bloc
while condition :
bloc
AAV1_ITE: Répondre explicitement à la question posée
Le code Python équivalent au code Javascript est présenté ci-dessous.
Certains langages, comme Pascal, définissent une boucle
repeat...until
:
instruction1;
repeat { blocRepeat; } until condition;
instruction3;
L'instruction repeat...until
est une instruction de contrôle du flux
d'instructions. Elle crée une boucle qui exécute un bloc d'instructions
blocRepeat
jusqu'à ce qu'une condition
de test soit
vérifiée.
La condition
est testée après que l'instruction blocRepeat
soit
exécutée; l'instruction définie dans la boucle est donc exécutée au moins
une fois.
L'exemple ci-dessous est programmé en langage Pascal :
(* exemple de boucle repeat...until *)
PROGRAM repeatuntil;
Var n, y, somme : Integer;
BEGIN
Randomize;
n := 0;
y := Random(10);
somme := y;
Repeat
Inc(n,1); (* Inc comme incrémentation : n := n + 1 *)
Inc(somme,Random(10));
Until somme >= 30;
WriteLn(y,' puis ',n,' passages : ',somme);
END.
Le langage Python ne dispose pas d'une telle structure repeat...until
.
Proposer en Python un algorithme équivalent à la structure repeat...until
du programme Pascal précédent à l'aide d'une boucle while
.
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.
AAV1_ITE: Choisir et appliquer une méthode générique
On choisit une méthode par analogie de comportement :
- le
blocRepeat
doit être exécuté au moins une fois;- la condition est une condition d'arrêt.
Ainsi, pour reprendre l'exemple du code Pascal :
Etat initial:
y = random.randint(0,9) n, somme = 0, y
blocReapeat
exécuté une fois avant la bouclewhile
:n = n + 1 somme = somme + random.randint(0,9)Boucle
while
:while not somme >= 30 : n = n + 1 somme = somme + random.randint(0,9)
D'une manière générale, la boucle repeat...until
:
repeat bloc until condition;
peut toujours s'écrire en Python avec une boucle
while
:
bloc
while not condition :
bloc
AAV1_ITE: Répondre explicitement à la question posée
Le code Python équivalent au code Pascal est présenté ci-dessous.
Certains langages, comme Pascal, définissent une boucle
for...min to max
:
instruction1;
for variable := min to max do { blocFor; }
instruction3;
L'instruction for...min to max
est une instruction de contrôle du flux
d'instructions. Elle crée une boucle qui exécute max - min + 1
fois
le bloc d'instructions blocFor
(avec max >= min
).
Entre chaque passage, la variable
est incrémentée de 1.
L'exemple ci-dessous est programmé en langage Pascal :
(* exemple de boucle for...to *)
PROGRAM forto;
Var n, y, somme : Integer;
Var min, max : Integer;
BEGIN
Randomize;
y := Random(10);
somme := y;
min := 0;
max := 9;
For n := min To max Do
BEGIN
Inc(somme,Random(10)); (* Inc comme incrémenter : somme = somme + Random(10) *)
END;
WriteLn(y,' puis ',max-min+1,' passages : ',somme);
END.
Le langage Python ne dispose pas d'une telle structure for...min to max
.
Proposer en Python un algorithme équivalent à la structure
for...min to max
du programme Pascal précédent à l'aide d'une boucle
while
.
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.
AAV1_ITE: Choisir et appliquer une méthode générique
On choisit une méthode par analogie de comportement :
- le
blocFor
doit être exécutémax - min + 1
fois;- la condition d'arrêt est
n > max
.
Ainsi, pour reprendre l'exemple du code Pascal :
Etat initial:
y = random.randint(0,9) n, somme = 0, y min, max = 0, 9
blocFor
à exécutermax - min + 1
fois dans la bouclewhile
:somme = somme + random.randint(0,9)Boucle
while
:n = min while not n > max : somme = somme + random.randint(0,9) n = n + 1
D'une manière générale, la boucle for...min to max
:
for var := min to max do bloc;
peut toujours s'écrire en Python avec une boucle
while
:
var = min
while not var > max :
bloc
var = var + 1
AAV1_ITE: Répondre explicitement à la question posée
Le code Python équivalent au code Pascal est présenté ci-dessous.
Un langage comme Python définit une boucle for...in
pour parcourir les
éléments d'une séquence:
instruction1
for element in sequence : blocFor
instruction3
L'instruction for...in
est une instruction de contrôle du flux
d'instructions. Elle crée une boucle qui parcourt un par un et dans l'ordre
les éléments d'une séquence. Pour chaque élément de la séquence,
elle exécute le blocFor
.
L'exemple ci-dessous est programmé en langage Python :
Proposer en Python un algorithme équivalent à la structure
for...in
du programme Python précédent à l'aide d'une boucle
while
.
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.
AAV1_ITE: Choisir et appliquer une méthode générique
On choisit une méthode par analogie de comportement :
une séquence est une suite ordonnée d'éléments,
éventuellement vide, accessibles par leur rang dans la
séquence. Par convention, le premier élément a le rang 0
(sequence[0]
), le deuxième le rang 1 (sequence[1]
)...
et le dernier le rang len(sequence)-1
(sequence[len(sequence)-1]
).
Ainsi, pour reprendre l'exemple de l'énoncé :
Etat initial:
sequence = [random.randint(0,9),random.randint(0,9),random.randint(0,9),random.randint(0,9),random.randint(0,9)]Boucle
while
:rang, somme = 0, 0 while not rang >= len(sequence) : element = sequence[rang] somme = somme + element
D'une manière générale, la boucle for...in
en
Python:
for element in sequence : bloc
peut toujours s'écrire avec une boucle while
:
rang = 0
while not rang >= len(sequence) :
element = sequence[rang]
bloc
rang = rang + 1
AAV1_ITE: Répondre explicitement à la question posée
Le code while
équivalent au code for..in
est
présenté ci-dessous.
Certains langages, comme Javascript ou C, définissent une boucle
for
très générale:
instruction1;
for (initialisation; condition; postbloc) { bloc; }
instruction3;
L'instruction for
est une instruction de contrôle du flux
d'instructions. Elle commence par évaluer l'expression d'initialisation
puis elle évalue la condition
. Si la condition
est vérifiée, on
« rentre » dans la boucle : le bloc
d'instructions est
exécuté puis l'expression postbloc
est évaluée. On ré-évalue la
condition
et tant qu'elle est vérifiée on ré-exécute le bloc
puis postbloc
.
On sort de la boucle dès que la condition
n'est plus vérifiée.
L'exemple ci-dessous est programmé en langage Javascript :
Proposer en Python un algorithme équivalent à la structure
for
du programme Javascript précédent à l'aide d'une boucle
while
.
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.
AAV1_ITE: Choisir et appliquer une méthode générique
On choisit une méthode par analogie de comportement :
- l'initialisation doit être exécutée avant d'entrer dans la boucle;
- la
condition
est une condition de continuité (not condition d'arrêt
);- l'instruction
postbloc
fait partie du corps de la boucle.
Ainsi, pour reprendre l'exemple du code Javascript :
Etat initial:
y = random.randint(0,9)Boucle
while
:i, somme = 0, 0 while i < y : somme = somme + i i = i + 1
D'une manière générale, la boucle for
:
for (initialisation; condition; postbloc) { bloc; }
peut toujours s'écrire avec une boucle while
:
initialisation
while condition :
bloc
postbloc
AAV1_ITE: Répondre explicitement à la question posée
Le code Python équivalent au code Javascript est présenté ci-dessous.
Déterminer « à la main » la valeur des variables x
, i
et p
après la séquence d'instructions suivante :
1 2 3 4 n, x, i, p = 5, 4, 0, 1 while i < n : p = p * x i = i + 1
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
A la fin de l'algorithme, l'instruction print n,x,i,p
affiche
?
AAV1_ITE: Choisir et appliquer une méthode générique
On utilise la méthode de l'empathie numérique.
On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction.
line cond n x i p
1 - 5 4 0 1
2 1 5 4 0 1
3 - 5 4 0 4
4 - 5 4 1 4
2 1 5 4 1 4
3 - 5 4 1 16
4 - 5 4 2 16
2 1 5 4 2 16
3 - 5 4 2 64
4 - 5 4 3 64
2 1 5 4 3 64
3 - 5 4 3 256
4 - 5 4 4 256
2 1 5 4 4 256
3 - 5 4 4 1024
4 - 5 4 5 1024
2 0 5 4 5 1024
On constate que :
i
, p == x**i
;AAV1_ITE: Répondre explicitement à la question posée
A la fin de l'algorithme, l'instruction print n,x,i,p
affiche 5 4 5 1024
:
>>> print n,x,i,p
5 4 5 1024
Déterminer « à la main » la valeur des variables n
, a
, r
, k
et u
après la séquence d'instructions suivante :
1 2 3 4 n, a, r, k, u = 5, 1, 2, 0, 1 while k < n : k = k + 1 u = u + a + k*r
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
A la fin de l'algorithme, l'instruction print n,a,r,k,u
affiche
?
AAV1_ITE: Choisir et appliquer une méthode générique
On utilise la méthode de l'empathie numérique.
On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction:
line cond n a r k u
1 - 5 1 2 0 1
2 1 5 1 2 0 1
3 - 5 1 2 1 1
4 - 5 1 2 1 4
2 1 5 1 2 1 4
3 - 5 1 2 2 4
4 - 5 1 2 2 9
2 1 5 1 2 2 9
3 - 5 1 2 3 9
4 - 5 1 2 3 16
2 1 5 1 2 3 16
3 - 5 1 2 4 16
4 - 5 1 2 4 25
2 1 5 1 2 4 25
3 - 5 1 2 5 25
4 - 5 1 2 5 36
2 0 5 1 2 5 36
On constate que :
à la fin de chaque étape \(k\), \(\displaystyle u = \sum_{i = 0}^{k}(a + ir)\);
au final :
\(\displaystyle u = 36 = \sum_{k = 0}^{5} (1 + 2k) = \sum_{k = 0}^{n} (a + rk) = (n+1)a + r\frac{n(n+1)}{2} = 6 + 30 = 36\).
C'est la somme d'une suite arithmétique comme le suggère le titre de cet exercice.
AAV1_ITE: Répondre explicitement à la question posée
A la fin de l'algorithme, l'instruction print n,a,r,k,u
affiche 5 1 2 5 36
:
>>> print n,a,r,k,u
5 1 2 5 36
Déterminer « à la main » la valeur des variables n
, k
et f
après la séquence d'instructions suivante :
1 2 3 4 n, k, f = 5, 0, 1 while k < n : k = k + 1 f = f * k
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
A la fin de l'algorithme, l'instruction print n,k,f
affiche
?
AAV1_ITE: Choisir et appliquer une méthode générique
On utilise la méthode de l'empathie numérique.
On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction:
line cond n k f
1 - 5 0 1
2 1 5 0 1
3 - 5 1 1
4 - 5 1 1
2 1 5 1 1
3 - 5 2 1
4 - 5 2 2
2 1 5 2 2
3 - 5 3 2
4 - 5 3 6
2 1 5 3 6
3 - 5 4 6
4 - 5 4 24
2 1 5 4 24
3 - 5 5 24
4 - 5 5 120
2 0 5 5 120
On constate que :
AAV1_ITE: Répondre explicitement à la question posée
A la fin de l'algorithme, l'instruction print n,k,f
affiche 5 5 120
:
>>> print n,k,f
5 5 120
Déterminer « à la main » la valeur des variables n
et r
après la séquence d'instructions suivante :
1 2 3 n, r = 351, 0 while not n < (r+1)*(r+1) : r = r + 1
La racine carrée entière \(r\) d'un entier \(n\) est telle que : \(\displaystyle \forall n,r \in \mathbb{N},\ r = \sqrt[\mathbb{N}]{n} \Leftrightarrow r^2 \leq n < (r+1)^2\).
AAV1_ITE: Méthode
Application de la méthode
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
AAV1_ITE: Résultat
A la fin de l'algorithme, l'instruction print n,r
affiche
?
AAV1_ITE: Choisir et appliquer une méthode générique
On utilise la méthode de l'empathie numérique.
On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction:
line cond n r
1 - 351 0
2 1 351 0
3 - 351 1
2 1 351 1
3 - 351 2
2 1 351 2
3 - 351 3
2 1 351 3
3 - 351 4
2 1 351 4
3 - 351 5
2 1 351 5
3 - 351 6
2 1 351 6
3 - 351 7
2 1 351 7
3 - 351 8
2 1 351 8
3 - 351 9
2 1 351 9
3 - 351 10
2 1 351 10
3 - 351 11
2 1 351 11
3 - 351 12
2 1 351 12
3 - 351 13
2 1 351 13
3 - 351 14
2 1 351 14
3 - 351 15
2 1 351 15
3 - 351 16
2 1 351 16
3 - 351 17
2 1 351 17
3 - 351 18
2 0 351 18
On constate que \(r^2 = 18^2 = 324 \leq 351 = n < 361 = 19^2 = (r+1)^2\), donc \(r = 18 = \sqrt[\mathbb{N}]{351} = \sqrt[\mathbb{N}]{n}\) comme le suggère le titre de cet exercice.
AAV1_ITE: Répondre explicitement à la question posée
A la fin de l'algorithme, l'instruction print n,r
affiche 351 18
:
>>> print n,r
351 18