Vous êtes sur la page 1sur 14

La structure Tantque….

faire

Introduction : nous avons déjà vu que la répétition est un mécanisme de contrôle


de l’exécution de la machine qui demande la répétition d’un travail un certain
nombre de fois fixe(répétition complète avec Pour).Malheureusement , ce principe
ne permet pas de couvrir tous les cas de figures possibles.nous nous proposons
donc , dans ce qui suit de traiter ce problème avec un nouveau mécanisme de
contrôle

La répétition avec condition d’arrêt permet de répéter un travail jusqu’à ce qu’une


condition soit vérifiée(ou tantqu’une condition est vérifiée)

Ceci est le travail réalisé par Tantque …faire

App
Soit la séquence suivante:
i ←2
Tantque (e mod i ≠ 0) faire
i←i+1
FinTantque

1. Exécuter ce travail pour e = 7 , e = 9


2. En déduire le travail réalisé par cette séquence
3. Utiliser ce travail pour écrire un algo(+python) permettant d’afficher les 50
premiers entiers premiers(2 est le premier entier premier)

Rq:
Le travail est répété lorsque la condition est vérifiée(la condition doit être une
expression logique)
La notion de compteur(incrémentation ou décrémentation automatique n’existe
plus avec tantque)
Lorsque le travail se répéte mais il n’est pas possible de déterminer un nombre de
répétitions (VI et VF pour la structure Pour) , on passe à Tantque

Exercices
Ex1
Soit la séquence suivante
i ←2
Tantque e ≠ 1 faire
Si e mod i = 0 alors
écrire(i)
e ← e div i
Sinon
i←i+1
finsi
finTantque
Questions
Exécuter cette séquence pour e = 45
Que fait cette séquence?
Ex2
Récrire l’ago du test si une chaîne est palindrome ou non en utilisant
tantque…faire
Ex3
Ecrire un algo(+python) d’un programme permettant d’afficher le pgcd de 2 entiers
a et b (a>2 , b > 2)
Ex4
On se propose de simuler le jeu suivant
La machine choisit un entier au hasard entre 1 et 100
Le joueur doit deviner ce nombre en donnant une proposition à laquelle la
machine afficher “plus grand” si l’entier choisi est plus grand que la proposition ,
‘’plus petit’’ sinon
Le joueur dispose de 10 tentatives
Le jeu s’arrête lorsque le joueur devine le nombre avant les 10 tentatives ou
le nombre de propositions dépasse 10

Ecrire un algo(+python) permettant de réaliser ce jeu


Rappel
Le choix aléatoire de la machine se fait avec l’instruction choix ← aléa(1,100)
La structure Tantque….faire

Introduction : nous avons déjà vu que la répétition est un mécanisme de contrôle


de l’exécution de la machine qui demande la répétition d’un travail un certain
nombre de fois fixe(répétition complète avec Pour).Malheureusement , ce principe
ne permet pas de couvrir tous les cas de figures possibles.nous nous proposons
donc , dans ce qui suit de traiter ce problème avec un nouveau mécanisme de
contrôle

La répétition avec condition d’arrêt permet de répéter un travail jusqu’à ce qu’une


condition soit vérifiée(ou tantqu’une condition est vérifiée)

Ceci est le travail réalisé par Tantque …faire

App
Soit la séquence suivante:
i ←2
Tantque (e mod i ≠ 0) faire
i←i+1
FinTantque

4. Exécuter ce travail pour e = 7 , e = 9


5. En déduire le travail réalisé par cette séquence
6. Utiliser ce travail pour écrire un algo(+python) permettant d’afficher les 50
premiers entiers premiers(2 est le premier entier premier)

Rq:
Le travail est répété lorsque la condition est vérifiée(la condition doit être une
expression logique)
La notion de compteur(incrémentation ou décrémentation automatique n’existe
plus avec tantque)
Lorsque le travail se répète mais il n’est pas possible de déterminer un nombre de
répétitions (VI et VF pour la structure Pour) , on passe à Tantque

Exercices
Ex1
Soit la séquence suivante
i ←2
Tantque e ≠ 1 faire
Si e mod i = 0 alors
écrire(i)
e ← e div i
Sinon
i←i+1
finsi
finTantque

Questions
Exécuter cette séquence pour e = 45
Que fait cette séquence?

Ex2
Récrire l’ago du test si une chaîne est palindrome ou non en utilisant
tantque…faire

Ex3
Ecrire un algo(+python) d’un programme permettant d’afficher le pgcd de 2 entiers
a et b (a>2 , b > 2)

Ex4
On se propose de simuler le jeu suivant
La machine choisit un entier au hasard entre 1 et 100
Le joueur doit deviner ce nombre en donnant une proposition à laquelle la
machine afficher “plus grand” si l’entier choisi est plus grand que la proposition ,
‘’plus petit’’ sinon
Le joueur dispose de 10 tentatives
Le jeu s’arrête lorsque le joueur devine le nombre avant les 10 tentatives ou
le nombre de propositions dépasse 10

Ecrire un algo(+python) permettant de réaliser ce jeu


Rappel
Le choix aléatoire de la machine se fait avec l’instruction choix ← aléa(1,100)
Exercices (pour chacun des exercices , donner un algo puis le script python)

1. afficher le plus grand nombre formé par les chiffres d’un nombre
Exemple : pour l’entier 623589 le plus grand nombre formé par ses chiffres est 986532

2. Saisir un entier E entre 10 et 100 puis afficher sa représentation binaire avec le


principe suivant(méthode des divisions successives)
Exp E = 77

la représentation de bas en haut est 1 0 0 1 1 0 1

3. On se propose de simuler le jeu suivant


La machine choisit un entier au hasard entre 1000 et 9999
Le joueur doit deviner ce nombre en donnant une proposition à laquelle la machine
affiche les chiffres correctes et remplace les autres par *
Le joueur dispose de 10 tentatives
Le jeu s’arrête lorsque le joueur devine le nombre avant les 10 tentatives ou le
nombre de propositions dépasse 10
Rappel
Le choix aléatoire de la machine se fait avec l’instruction choix ← aléa(1,100)

4. saisir une chaîne alphabétique puis afficher si elle est palindrome ou non

5. Ecrire un algo(+python) qui permet , pour une chaîne de caractères , de


transformer les doubles espaces(une succession de 2 ou plusieurs espaces) en un
seul espace
Exemple: (on suppose les _ des espaces)
Pour Ph =”sans___maitrise_,____la_puissance__n’est_______rien” ,
on obtient
“Sans_maitrise,la_puissance_n’est_rien”
6. La « multiplication Russe » est une méthode particulière permettant la
multiplication de deux entiers A et B en utilisant seulement la multiplication par 2, la
division par 2 et l’addition.
Exemple : pour A =17 et B = 19, le produit de A par B se fait comme suit :
A B
17 19
Le premier nombre est divisé par 2 (division entière) et le deuxième est multiplié par 2 :
on aura
8 38
Le processus se répète jusqu’à avoir dans la première colonne 1 :
17 19
8 38
4 76
2 152
1 304
Le résultat est la somme des nombres de la deuxième colonne qui sont en face des
nombres impairs de la première colonne (donc les nombres de la deuxième colonne qui
sont en face des nombres pairs de la première colonne seront ignorés).
🡪 17 19
8 38 Ignoré
4 76 Ignoré
2 152 Ignoré
🡪 1 304

17 * 19 = 19 + 304 = 323
On veut écrire un programme qui lit deux entiers positifs non nuls et inférieur à 100,
calcule et affiche le produit de deux entiers par la méthode Russe.

7. afficher la persistance additive d’un entier calculée de la façon suivante


On somme les chiffres d’un entier et on répète cette action jusqu’à avoir un entier à
un chiffre (exp: N = 5468 → 23→ 5)

8. Calculer le pgcd de 2 entiers a et b en utilisant le fait qu’il soit égal au produit des
facteurs communs dans la décomposition en facteurs premiers des 2 entiers avec
le plus petit exposant
Exemple
A = 113400 et B = 3667356

En déduire le ppcm comme étant tous les facteurs avec le plus grand exposant
Remarque : penser à utiliser l’algo de décomposition en facteurs premiers vu en
classe)
9. Remplir un tableau avec n entiers entre 1 et 100 (n entre 5 et 100) puis
afficher les entiers premiers s’il existe: Remplissage manuel
/aléatoire(automatique)

10. La suite de Syracuse d'un nombre entier Z > 0 est définie par récurrence,
de la manière suivante :
U0 = Z
Un = un-1/2 si n est pair Un = 3un-1+1 si n est impair
Z = 15

u0 u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12 u13 u14 u15 u16 u17 u18 u19 u20

15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1 4 2 1

Pour un entier Z , la suite atteint 1 et la séquence 4 , 2 , 1 se répète


afficher l’indice du terme où la suite atteint 1

11. Afficher , à partir d’une date de la forme jj/mm/aaaa , son jour de la


semaine
On donne : le 1 janvier 1900 était un lundi

12. Afficher , pour 2 chaînes de caractères alphabétiques minuscules , les


lettres présentes dans les deux / les lettres présentes dans l’une ou l’autre
(intersection / union)

13. D’approximer la racine nième (n) de A sachant la suite ci-dessous converge vers
cette valeur

Et =A

14. Afficher les 10 premiers entiers positifs Kaprekar(Un entier E est dit kaprekar si
,lorsqu’il est élevé au carré , peut être séparé en une partie gauche et une partie
droite (non nulles) telles que la somme donne le nombre initial E)
15. Crypter une chaîne alphabétique ch en une chaîne numérique représentant la
concaténation des codes ASCII de chaque caractère

16. Remplir un tableau automatiquement avec n valeurs distinctes entre 1 et 100


puis afficher si une valeur x saisie existe dans le tableau ou

17. La partie décimale de l’inverse d’un entier premier P (1/P) contient une suite de
chiffres qui se répète (exp 1 / 7 = 0.142857142857 ….) . Afficher , pour un entier
P premier saisi , cette séquence
Préparation synthèse 1

Exercice 1 On désire calculer la valeur V = n! / (k! * (n-k)!) où x! = 1*2*3*...*x


Questions
Compléter l’algo de cette fonction afin de calculer x! = 1*2*3…*x
Fonction fact(x:entier):entier
DEBUT
A←1
Pour i de à faire

FinPour
retourner
FIN
En déduire une affectation qui calcule V ( on ne demande pas de lire ou d’afficher)

Exercice 2
Pour chaque séquence , donner une affectation équivalente qui utilise une fonction prédéfinie
parmi cet ensemble ( estnum , abs , pos)

Séquence algo Appel de la fonction prédéfinie

Si (x 0) alors
Y←x
Sinon
Y ← -x
finsi

P← -1 i← 0
Tantque ch[i] c et i long(ch)-1 faire
i← i +1
finTantque
Si ch[i] = c alors
P← i
finsi

P← -1 i← 0
Tantque ch[i] c et i long(ch)-1 faire
i← i +1
finTantque
Si ch[i] = c alors
P← i
finsi
Exercice 3
Soit l’algo suivant à compléter
Fonction inconnue(x:entier) : ………………………..
DEBUT
R ← “”
CH← convch(x)
Pour i de 0 à long(ch) -1 faire
Si valeur(ch[i] mod 2 = 1) alors
R ← R + ch[i]
finsi
finPour
Si long(R) > 0 alors
Retourner valeur(R)
Sinon
Retourner -1
finsi
FIN

Questions
● Compléter le type de retour dans l’entête
● Donner le tdo locaux de inconnue
● Donner la valeur retournée par la fonction pour x = 15472 et x= 2462
● Déduire le rôle de cette fonction

Exercice 4
Etant donné un ensemble de points , on se propose de réaliser les actions suivantes :
● Saisir un nombre de points n entre 100 et 1000
● Mettre les points dans un tableau T avec les coordonnées sous la forme d’une chaîne “x,y”
où x est l’abscisse et y est l’ordonnée (exp : “2.5,-1”)
● Afficher le / les points les plus proches du centre

Questions
Donner l’algo principal en utilisant une ou plusieurs fonctions
Donner l’algo de chaque fonction utilisée
Préparation synthèse 1

Exercice 1 On désire calculer la valeur V = n! / (k! * (n-k)!) où x! = 1*2*3*...*x


Questions
Compléter l’algo de cette fonction afin de calculer x! = 1*2*3…*x
Fonction fact(x:entier):entier
DEBUT
A←1
Pour i de à faire

FinPour
retourner
FIN
En déduire une affectation qui calcule V ( on ne demande pas de lire ou d’afficher)

Exercice 2
Pour chaque séquence , donner une affectation équivalente qui utilise une fonction prédéfinie
parmi cet ensemble ( estnum , abs , pos)

Séquence algo Appel de la fonction prédéfinie

Si (x 0) alors
Y←x
Sinon
Y ← -x
finsi

P← -1 i← 0
Tantque ch[i] c et i long(ch)-1 faire
i← i +1
finTantque
Si ch[i] = c alors
P← i
finsi

P← -1 i← 0
Tantque ch[i] c et i long(ch)-1 faire
i← i +1
finTantque
Si ch[i] = c alors
P← i
finsi
Exercice 3
Soit l’algo suivant à compléter
Fonction inconnue(x:entier) : ………………………..
DEBUT
R ← “”
CH← convch(x)
Pour i de 0 à long(ch) -1 faire
Si valeur(ch[i] mod 2 = 1) alors
R ← R + ch[i]
finsi
finPour
Si long(R) > 0 alors
Retourner valeur(R)
Sinon
Retourner -1
finsi
FIN

Questions
● Compléter le type de retour dans l’entête
● Donner le tdo locaux de inconnue
● Donner la valeur retournée par la fonction pour x = 15472 et x= 2462
● Déduire le rôle de cette fonction

Exercice 4
Etant donné un ensemble de points , on se propose de réaliser les actions suivantes :
● Saisir un nombre de points n entre 100 et 1000
● Mettre les points dans un tableau T avec les coordonnées sous la forme d’une chaîne “x,y”
où x est l’abscisse et y est l’ordonnée (exp : “2.5,-1”)
● Afficher le / les points les plus proches du centre

Questions
Donner l’algo principal en utilisant une ou plusieurs fonctions
Donner l’algo de chaque fonction utilisée

Vous aimerez peut-être aussi