SUJET 46 mai 2017

              E22   BTS  SIO    Sujet   mai 2017

             PREMIER TRAVAIL 30 minutes sur papier

             Lire l'algorithme puis répondre aux questions.

1 VARIABLES:               a un nombre décimal

2                                   n  entier naturel                                                                  

3                                    u    nombre décimal

4                                   L liste

5 INITIALISATION :      n = 0   

6                                   L=[]                         

7 TRAITEMENT:       Saisir a 

8                              u = a

9                              L=[a]

10                             Pour i allant de 1 à n

12                                 Si u est pair alors u = u/2

13                                 Sinon  u=3*u+1

14                                 Si u not in L  alors mettre u dans L

15                             Pour tout indice  i d'un terme de L

16                                      Pour tout indice  j d'un terme de L et i ≥ j

17                                               Si  L[i] < L (j] alors  L[i]  ↔  L (j]                                

18  SORTIE:                Afficher L                        

        QUESTIONS

         1. a. Pour n= 4 et a = 1 exécuter à la main le programme.

            b. Pour n= 5 et a = 2 exécuter à la main le programme.

         2.a. Ecrire, si possible en Python 2 . 7 ce programme.

            b.  Exécuter le programme pour n= 1000.

            c.  Que remarquez-vous à propos de L?

         3. Modifier cet algorithme pour qu'il donne la somme S 

             des éléments de L.

         4. Quel est l'effet des lignes de 15 à 17 ?

          SECOND TRAVAIL 30 minutes sur ordinateur

           1. Un étudiant a proposé un programme, en Python 2.7,

              qu'il a malencontreusement effacé partiellement.

              Pouvez-vous le reconstituer, afin d'obtenir un programe

              qui donne l'écriture binaire d'un entier naturel  n?             

from random import*
def bin():
      n=input( "Donner un entier naturel n ")
      ecrit=""
      q=-1
      while q!=0:
             q=int(n/2)
             r=......%2
             ecrit=str(r)+......
            n=q
      print ecrit 
                                                                                           

             a. Pourquoi a-t-il mis q= - 1 et non pas q=0 ?

             b. Par quoi pouvait-il remplacer  q=int(n/2)   ?

             c. Quelle est la nature de str(r) ?

         2. Il prétend que pour  n = 57 l'algorithme donne  

             111001.   A-t-il raison?

                                         ----------------------------------------------------------