Exercices sur l’algorithmie

Sommaire

Programmes avec Python
Principe de dichotomie
Partie décimale
Partie entière
Arrondi
Pair ou impair ?
Racines d’un polynôme
Somme des entiers de 1 à n
Calculer les termes d’une suite
Calculer la notation sientifique
Trouver le chiffre des unités d’un nombre
Trouver les diviseurs d’un nombre
Une histoire de cosinus…
Limite de suite (type bac)
Limite infinie d’une suite (type bac)

Nous allons te donner des algorithmes à réaliser, à toi de les programmer avec Algobox !
Evidemment tu peux les réaliser en Python, mais il faudra que tu écrives tout.
Il est fortement conseillé d’avoir lu le cours sur l’algorithmie avant de faire les exercices.
Nous te donnons des indications après l’énoncé pour t’aider, mais il est préférable que tu cherches d’abord sans les regarder

Principe de dichotomie

Haut de page

Avant de passer aux exercices avec Algobox, nous allons commencer par expliquer le principe de dichotomie, utilisé souvent dans les exercices au lycée (ou même après le bac !).
Soit f une fonction continue sur [a ; b], avec f(a) ≤ 0 ≤ f(b) et strictement croissante.
Le but est de trouver une valeur approchée de x tel que f(x) = 0, avec une précision déterminée par l’utilisateur.

1 : partie décimale
Dans le 1er algorithme, tu donneras un nombre au hasard (donc LIRE a…), et l’algorithme doit afficher la partie décimale de la variable, c’est-à-dire ce qu’il y a après la virgule.
Par exemple si tu donnes 12345,678 tu dois afficher 0,678.
Si tu donnes 45 tu adois afficher 0 (puisqu’il n’y a pas de partie décimale^^).
A toi de jouer !

Indications pour t’aider : il faut enlever 1 au nombre plusieurs fois de suite.
Par exemple 12,3 : on enlève 1 (donc 11,3 10,3 9,3…) jusqu’à arriver à 0,…



2 : partie entière

Haut de page

Une fois que tu as fait le 1er algorithme, tu peux calculer la partie entière d’un nombre !
La partie entière de 1234,567 est 1234.
La partie entière de 36,45 est 36, etc…
Tu l’auras compris, la partie entière c’est quand on enlève les chiffres après la virgule (attention ce n’est pas un arrondi !).
A partir du 1er algorithme c’est très simple ! Il est conseillé de le reprendre et de le modifier.

Indications pour t’aider : il faut d’abord calculer la partie décimale, puis la soustraite au nombre de départ.
Par exemple 15,27 : on met 0,27 dans une variable (on a vu ça dans le 1er algorithme) et on fait 15,27 – 0,27 => 15

3 : arrondi à l’unité

Haut de page

Le troisième algorithme va quant à lui consister à calculer l’arrondi d’un nombre à l’unité.
On rappelle que pour calculer l’arrondi à l’unité, on regarder le chiffre après la virgule :
si ce chiffre est 0, 1, 2, 3 ou 4, on arrondi à l’entier inférieur.
si ce chiffre est 5, 6, 7, 8 ou 9, on arrondi à l’entier supérieur.

Ainsi l’arrondi à l’unité de 12,3 est 12, mais l’arrondi de 12,8 est 13.
On peut là encore reprendre le 1er algorithme et le modifier, mais le mieux est de modifier le 2ème algorithme, il y aura très peu de changements à faire !

Indications pour t’aider : On calcule d’abord la partie décimale : on obtient 0,…
Si cette partie décimale est inférieur ou égale à 0,4 on arrondi à l’entier inférieur, sinon on arrondi à l’entier supérieur.

4 : pair ou impair ?

Haut de page

Pour le 4ème exercice, il faut dire si un nombre est pair ou impair.
Si le nombre tapé au clavier est pair, Algobox doit afficher « Le nombre est pair », s’il est impair il doit afficher « Le nombre est impair ».
Petit piège : rien n’empêcher au départ de mettre un nombre à virgule qui n’est donc ni pair ni impair… dans ce cas il faut afficher « Il faut rentrer un nombre entier ! ».

Encore une fois on pouura s’inspirer du 1er algorithme.
C’est parti !

Indications pour t’aider : si on divise un nombre pair par 2 on obtient un entier : sa partie décimale vaut 0.
Si on divise un nombre impair par 2, on obtient …,5 donc sa partie décimale vaut 0,5.
Il faut donc diviser le nombre par 2 et regarder sa partie décimale : si elle vaut 0 il est pair, si elle vaut 0,5 il est impair.
Et s’i elle ne vaut ni l’un ni l’autre c’est que le nombre initial n’était pas un entier^^

5 : racines d’un polynôme du second degré

Haut de page

Ici c’est très simple : il faut trouver les racines d’un polynôme du second degré.
Les coeeficients a, b etc de ax2 + bx + c seront donnés à chaque fois par l’utilisateur (donc LIRE a, LIRE b…)
Bien sûr il faudra distinguer les cas où il y a 0, 1 et 2 racines.
S’il n’y a qu’une rcine on l’apellera x, mais s’il y en a 2 on les appelera x1 et x2
Il serait bien ici d’afficher un message comme « le polynôme a 2 racines : x1=… et x2=… »

Indications pour t’aider : ici il n’y a pas vraiment de difficultés, mais il faut bien penser à déclarer toutes les variables (il y en a 6 normalement…)
Pour le Δ, bien penser à écrire b*b – 4*a*c car Algobox ne comprend pas 4ac, il faut lui dire 4*a*c

6 : somme des entiers de 1 à n

Haut de page

Il s’agit ici de calculer la somme des entiers de 1 à n, sachant que n est un entier donné à chaque fois par l’utilisateur.
Si par exemple on donne 6, l’algorithme doit calculer 1 + 2 + 3 + 4 + 5 + 6, et afficher le résultat.

Si l’on donne 8, il doit calculer et afficher 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8.
A toi de jouer !

Remarque : si pour n au lieu de rentrer un entier on rentre un nombre à virgule, come 5,2, cela pourrait buguer… mais Algobox prend automatiquement la partie entière de n, donc pas de souci
S’il ne l’avait pas fait automatiquement, il aurait fallu d’abord calculer la partie entière de n (comme ci-dessus).

7 : calculer les termes d’une suite

Haut de page

L’exercice consiste à calculer les k premiers termes d’une suite, k étant donné à chaque fois par l’utilisateur.
Cette suite est définie par : un+1 = un2 + 0,4
Le premier terme, u0, sera également donné par l’utilisateur à chaque fois

Au niveau de la présentation, il faudra à la fin afficher quelque chose qui ressemble à ça :
u0 = 1
u1 = 1,4
u2 = …
u3 = …
…(ici bien sûr la valeur de u0 = 1 n’est qu’un exemple…)

C’est parti !

8 : calculer la notation scientifique d’un nombre

Haut de page

Dans cet exercice, tu dois entrer un nombre au clavier et l’algorithme doit calculer puis afficher la notation scientifique du nombre, tout simplement !

Indications pour t’aider : si le nombre est plus grand que 1, on le divise par 10 jusqu’à avoir un nombre plus petit que 1. Le nombre de fois que l’on a divisé le nombre par 10 correspondra à la puissance recherchée.
Si le nombre est plus petit que 1, on le multiplie par 10 jusqu’à avoir un nombre plus grand que 1. Le nombre de fois que l’on a multiplié le nombre par 10 correspondra à la puissance recherchée.

A ton tour de travailler !

9 : trouver le chiffre des unités d’un nombre

Haut de page

Comme tu t’en doutes d’après le titre, tu dois taper au clavier un nombre et l’algorithme doit afficher le chiffre des unités du nombre, tout simplement !

Indications pour t’aider : commence par enlever la partie décimale (après la virgule) au nombre. Tu as alors un entier.
Ensuite tu enlèves 10 à cet entier jusqu’à ne plus avoir qu’un chiffre, celui des unités !
A toi de jouer

10 : trouver tous les diviseurs d’un nombre

Haut de page

Attention ici l’exercice est un peu compliqué ! Mais rien qu’un peu
Il s’agit de trouver tous les diviseurs d’un nombre que tu auras rentré au clavier.
Par exemple, avec 12, il faut trouver 1, 2, 3, 4, 6 et 12 car tous ces nombres sont des diviseurs de 12.

Mais il faudra afficher la décomposition du nombre suivant les diviseurs. Si on choisit 12, il faudra afficher :
12 = 1 x 12
12 = 2 x 6
12 = 3 x 4
12 = 4 x 3
12 = 6 x 2
12 = 12 x 1

Tu remarqueras qu’il y a tout en double (1 x 12 et 12 x 1, 2 x 6 et 6 x 2…) mais ce n’est pas grave, tu dois afficher tout ça, c’est l’exercice
C’est parti !

Indications pour t’aider : on sait qu’un diviseur d’un nombre « n » est forcément plus petit que « n ». On va donc tester tous les entiers de 1 à n et voir si ce sont des diviseurs (boucle Pour).
Pour voir si un nombre est un diviseur ou non, on regarde si, quand on fait la division, on obtient un nombre entier ou non (pense aux exercices précédents )
Si on a un diviseur, on affiche alors l’égalité comme ci-dessus.
La difficulté ici c’est qu’il y a des boucles imbriquées…

11 : une histoire de cosinus…

Haut de page

On va encore faire un exercice un peu dur (ba oui sinon c’est pas marrant . Ne le fais que si tu as déjà un bon niveau, pour t’améliorer.
L’objectif est très simple, il s’agit, pour un entier naturel « n » que tu rentres au clavier, de calculer cos(π/2n)
Autrement dit de calculer cos(π/2), cos(π/4), cos(π/8), cos(π/16), cos(π/32)… et de les afficher bien sûr.
Ici l’algorithme en lui-même est très simple, le plus dur c’est de trouver comment on va faire !

Indications : il faut utiliser les formules de trigonométrie (voir la partie trigonométrie du cours).
Si au bout d’un certain temps tu ne trouves pas avec cette aide, lis ce qui suit (mais attention ça donne la réponse !).
Alors, en fait il faut utiliser que cos(2a) = 2cos2(a) – 1 (va voir la partie trigo si tu ne le sais pas encore^^)

d’où

Mais ici on veut calculer cos(π/8), cos(π/16), cos(π/32)… qui sont positifs (fais un cercle si tu n’en es pas convaincu). On ne garde donc que la version positive :

Posons maintenant a = π/2n+1 (on a le droit puisque la relation est vraie pour tout réel a), cela donne :

Ahhh là ça commence à devenir intéressant non ??
Il reste une dernière étape : poser un = cos(π/2n). Car comme un+1 = cos(π/2n+1), cela donne :

Et là qu’est-ce-qu’on voit ? Une formule de récurrence !!!
Or le but de l’exercice était de calculer les cos(π/2n), c’est-à-dire les un.
L’algorithme consiste donc à calculer les termes de la suite (un) définis par la relation de récurrence trouvée juste au-dessus, ce qui ce qui correspond à l’exercice 7 fait précédemment…

L’algortihme sera donc très simple, par contre comme on vient de le voir il faut faire « quelques » calculs avant de trouver la formule de récurrence
Bon comme je t’ai dit tout ce qu’il fallait faire, il serait bon de pimenter un peu tout cela, donc le but est d’afficher :
cos(π/4) = …
cos(π/8) = …
cos(π/16) = …
cos(π/32) = …

12 : limite de suite, type bac

Haut de page

On a une suite (un) définie par un+1 = un2 + 0,25 et u0 = 0,25.
Il faut que tu détermines la plus petite valeur de n telle que |un – 0,5| ≤ 10-p, où p est un chiffre que l’utilisateur choisira à chaque fois.

C’est un algorithme typique de terminale S qu’il faut absolument connaître !!!

13 : limite infine d’une suite, type bac

Haut de page

Voici un autre algorithme typique de terminale S à savoir faire. Etant donné une suite croissante (un) qui tend vers l’infini et un réel A, il faut déterminer le rang à partir duquel un est supérieur à A.

On a une suite (un) définie par un+1 = 3un -1 et u0 = 1

Il faut afficher le plus petit entier naturel n tel que un ≥ A, où A est un réel choisi par l’utilisateur.

Retour au cours sur l’algorithmieRemonter en haut de la page



11 réflexions sur “ Exercices sur l’algorithmie ”

  1. Merci grâce à vous je comprend plus et les algorithmes sont devenus chose compréhensible. Mais comment fais pour télécharger le cours avec ma tablette.

  2. C est un matheux qui a fait ces exemples!
    il vaut mieux au début ( en y incorporant des math faire des calculs pratiques genre calcule ton IMC . avec des remarques Surpoids puis ensuite obésité. Ou je veux faire un voyage, je reçois des petites sommes a mon anniversaire par plusieurs personnes et a Noël combien d années pour aller en Bretagne; en Grèce; en Amérique .
    Trouver les chiffres après une virgule pas besoin d algorithme çà donne pas envie de se casser la tête pour ça; même si c est instructif

  3. Bonjour,
    Dans l’exercice 1, vous préconisez pour résoudre le problème d’utiliser une structure itérative (faire… tant que…) qui me paraît à la fois moins intuitive et plus lourde qu’une structure conditionnelle (si… alors… sinon…). J’ai donc écrit le programme suivant qui a l’air de fonctionner :

    VARIABLES
    nbFourni EST_DU_TYPE NOMBRE
    nbFourArrondi EST_DU_TYPE NOMBRE
    partieDecimale EST_DU_TYPE NOMBRE

    DEBUT_ALGORITHME
    LIRE nbFourni

    //Arrondit le nombre fourni à l’entier le plus proche
    nbFourArrondi PREND_LA_VALEUR ALGOBOX_ARRONDIR(nbFourni,0)

    SI (nbFourArrondi > nbFourni) ALORS
    DEBUT_SI
    //Partie décimale = Nombre fourni – (nombre arrondi – 1)
    partieDecimale PREND_LA_VALEUR nbFourni + 1 – nbFourArrondi
    FIN_SI
    SINON
    DEBUT_SINON
    nbFourArrondi PREND_LA_VALEUR nbFourni – nbFourArrondi
    FIN_SINON

    AFFICHER « La partie décimale de votre nombre est :  »
    AFFICHER partieDecimale
    FIN_ALGORITHME

    Quelqu’un peut-il me dire en quoi une structure itérative est plus avantageuse dans ce cas ?
    Merci

  4. Bonjour
    Je pense qu’il y a une erreur dans l’algorithme N°13.
    A mon avis il faut supprimer la 3° ligne à partir du bas:
    « n PREND_LA_VALEUR n+1 »
    Merci encore pour ce travail fantastique!
    Bien cordialement

Répondre à Gérard papy Annuler la réponse.

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *