Outils pour utilisateurs

Outils du site


nsi:premiere:exercices_algorithmes

Exercices - Algorithmes

Exercice 1

Un point est sur une grille,

  • sa position est donnée par ses coordonnées $(x; y)$ avec des axes évidents :
    • l'axe $x$ pointe vers la droite,
    • l'axe $y$ pointe vers le haut,
  • la position initiale du point est toujours $(0; 0)$,
  • les instructions disponibles consistent à déplacer le point vers la gauche, la droite, le

haut, le bas,

  • dans tous les cas dites les coordonnées du point en fin d'algo.
algo a)
DÉBUT
    haut 1
    droite 2
    bas 3
FIN
algo b)
DÉBUT
    RÉPÉTER 10 FOIS
        haut 1
        droite 2
        bas 3
    FIN
    haut 5
FIN
algo c)
DÉBUT
    TANT QUE y du point < 100 RÉPÉTER
        haut 3
        droite 5
    FIN
    gauche 9
FIN
algo d)
DÉBUT
    POUR i ALLANT DE 1 À 10 FAIRE
        SI i pair ALORS
            haut i
        SINON
            droite i
        FIN
    FIN
FIN
Remarque : Ces algorithmes précédent font toujours la même chose. Ils n'ont pas d'entrées.

Exercice 2

La Logo est un langage de programmation pédagogique dans lequel on anime la pointe d'un crayon qui dessine. Le crayon commence à la position (0,0) et il est orienté vers l'Est (droite). Il peut avancer et tourner à gauche ou à droite. Que font les programmes suivants ?

algo a)
DÉBUT
    avancer de 100
    tourner gauche de 90 degrés
    avancer de 100
    tourner gauche de 90 degrés
    avancer de 100
    tourner gauche de 90 degrés
    avancer de 100
    tourner gauche de 90 degrés
FIN
algo b)
DÉBUT
    RÉPÉTER 6 FOIS
        avancer de 100
        tourner à droite de 60 degrés
    FIN
FIN
algo c)
DÉBUT
    RÉPÉTER 3 FOIS
        RÉPÉTER 3 fois
            avancer de 100
            tourner à droite de 120 degrés
        FIN
        tourner à droite de 120 degrés
    FIN
FIN

Exercice 3

Que font les deux algorithmes suivants ?

ENTRÉES n, entier > 0
DÉBUT
    Soit t = 0,
    POUR i ALLANT DE 1 À n FAIRE
        ajouter i à t
    FIN
    RENVOYER t
FIN
ENTRÉES n, entier > 0
DÉBUT
    POUR i ALLANT DE 2 À n-1 FAIRE
        SI i est diviseur de n ALORS
            RENVOYER non
        FIN
    FIN
    RENVOYER oui
FIN

Exercice 4

On suppose que l'on peut utiliser un ensemble d'éléments, par exemple quelque chose comme $\left\lbrace 1, 14, 25, 8, 17\right\rbrace$. Il est notamment possible de parcourir cet ensemble pour en lire les éléments un à un.

ENTRÉES ens, un ensemble
DÉBUT
    soit n = 0
    POUR CHAQUE élément e DE ens FAIRE
        ajouter 1 à n
    FIN
    RENVOYER n
FIN
  1. Que renvoie l'algorithme pour ens = {1, 14, 25, 8, 17} ?
  2. Que renvoie l'algorithme en général ?
  3. Dans le cas où ens ne contient que des nombres, écrivez un algorithme semblable qui renvoie le total des éléments de e.
  4. Dans le cas où ens ne contient que des nombres, écrivez un algorithme semblable qui renvoie la valeur maximum de ens. Précisez la précondition dans ce cas.
Remarque : Cette structure permettant le parcours de tous les éléments d'un ensemble n'est pas présente dans tous les langages de programmation. Elle est par exemple absente en C. C'est en revanche la forme unique choisie pour la boucle POUR de Python.

Exercice 5 : Zune

Zune est le nom donné par Microsoft à son logiciel de gestion et de lecture de fichiers musicaux dans les baladeurs du même nom, commercialisé entre 2006 et 2011.

Le 31 décembre 2008, une grande partie des Zune de première génération a subi une panne critique bloquant le démarrage du lecteur. Le problème venait du module de mise à jour, contenant une conversion de date.

ENTRÉE jours: représente le nombre de jour à partir du 1er janvier 1980 (jour 1)
SORTIE année, jour: paire fournissant l'année et et le jour dans l'année
par ex: pour 14/01/1981, jours = 380 et la fonction doit renvoyer 1981, 14
DÉBUT
    soit année = 1980
    TANT QUE jours > 365 RÉPÉTER
        SI année bissextile ALORS
            SI jours > 366 ALORS
                enlever 366 à jours
                ajouter 1 à année
            FIN
        SINON
            enlever 365 à jours
            ajouter 1 à année
        FIN
    FIN
    RENVOYER année, jours
FIN
  1. Pourquoi l'application a-t-elle subi une panne le 31/12/2008 ?
  2. Pourquoi pas avant ?
  3. Que faudrait-il changer pour éviter le problème ?
nsi/premiere/exercices_algorithmes.txt · Dernière modification : de goupillwiki