dimanche 27 novembre 2011

PARTIE 2 : Savoir écrire des sous-algorithmes developpement




Exercice 2.1 :

a) Ecrire la procédure échanger qui provoque l'affichage de 2 puis de 1 lors de l'exécution des instructions suivantes:
...
  A <- 1
  B <- 2
  échanger(A,B)
  afficher(A,B)
...
b) Que se passerait-il si la ligne échanger(A,B) était remplacée par échanger(1,2) ?

Exercice 2.2 :

a) Ecrire une fonction continuer(Rép) qui retourne VRAI si le caractère passé en paramètre est égal à 'o' ou 'O', et FAUX sinon.
b) Ecrire une procédure calcul(annNaiss, annCour, age) qui calcule l'âge qu'aura une personne née durant l'année annNaiss à la fin de l'année courante annCour.
c) Transformer la procédure calcul en une fonction calculBis.
d) Ecrire un algorithme age qui demande à l'utilisateur l'année de naissance d'un individu, puis qui calcule et affiche l'âge ce de dernier à la fin de l'année courante (l'année courante sera fournie par l'utilisateur). Cet algorithme doit utiliser les sous-algorithmes précédents. L'utilisateur doit pouvoir continuer à fournir des années de naissance aussi longtemps qu'il le désire.

Exercice 2.3

En vous aidant des algorithmes de la feuille 2 (sur l’itération) écrire
a) Une fonction deuxChiffres qui retourne VRAI si le nombre passé en paramètre est un nombre à 2 chiffres, et FAUX sinon.
b) Une fonction factorielle qui retourne la factorielle d’un nombre donné.
c) Une procédure max qui saisit nbVal valeurs (nbVal est un paramètre de la fonction) et qui renvoie (par le biais des paramètres) la plus grande valeur saisie.
d) Un algorithme qui demande à l’utilisateur d’entrer une valeur entière positive (uneVal), puis
a. qui indique à l’utilisateur si uneVal est un nombre à 2 chiffres,
b. qui affiche la factorielle de uneVal,
c. et qui saisit uneVal valeurs et affiche la plus grande valeur saisie.
Vous devrez bien sûr faire appel aux sous-algorithmes définis en a), b) et c)

PARTIE 1 : Comprendre et reconnaître les sous-algorithmes developpement



Exercice 1.1 : simulation

Algorithme devinette

variables essai, précédent : entier
          ok : booléen
début
   précédent <-9
   répéter
       afficher ("Principal : une donnée SVP : ")
       saisir (essai)
       ok <-faux
       deviner(essai, précédent, ok)
       afficher ("Principal : ", essai, précédent)
   tant que non ok
fin
procédure deviner(val1, val2, rép)

paramètres (D) val1 : entier
           (D/R) val2 : entier
           (R) rép: booléen
début
   afficher ("début deviner : ", val1, val2)
   si val2 mod 2 = 0
      Alors val2 <- val2 / 2
      sinon val2 <- val2 + (val2 + 1) / 2
   fsi
   rép <- val1 = val2
   val1 <-0
   afficher ("fin deviner : ", val1, val2)
fin

- Quels sont les affichages de l'algorithme devinette lorsque les données saisies sont
11, 11, 11, 11, ... ?

- Quelles sont les lignes qui peuvent être supprimées sans que le fonctionnement général de l'algorithme ne soit modifié?

Exercice 1.2 : Identification de sous-algorithmes
Algorithme miseEnPage

{Cet algorithme permet la mise en page de nombres entiers cadrés à droite}
Constantes (Largeur : entier) <-10
           (Etoile : caractère) <-'*'
variables valeur, taille : entiers
          encoreDonnées : booléen
début
  encoreDonnées réponseUtilisateur()
  tant que encoreDonnées faire
       afficher ("Entrez une valeur : ")
       saisir (valeur)
       si valeur ≥ 0
           Alors taille <- longueurEntier(valeur)
           sinon taille <-1 + longueurEntier(-valeur)
       fsi
       ligne(Largeur, Etoile)
       ligne(Largeur – taille, '.')
       afficher (valeur)
       encoreDonnées <- réponseUtilisateur()
  ftq
  ligne(Largeur, Etoile)
fin