INFO Entraînement d'algo. mardi 8 avril 2014

                          Entraînement d'algorithmique   BTS1        08/04/14

            PARTIE A   ( sur papier )

                  Voici en Python2.7 un algorithme.

                  Lisez le et répondez aux questions.

                  a désigne un entier naturel à indiquer

from random import*

import decimal

def sev():

      w=a

     print w

     L=[a]

     for i in range(9):

          if w%2==0:

               w=w/2  

         else:

               w=3*w+1

               print w

               L.append(w)

    print L

    QUESTIONS.

     1. Que signifie L=[a]

       L est une liste contenant le seul élément a.

     2. Quel est l'effet de L.append(w)?

         W est introduit comme dernier élément de la liste L.

     3. Qu'est-ce qu'un entier naturel pair?

        C'est un entier naturel divisible par 2.

     4.Quel est le reste de la division par 2 d'un entier naturel pair?

        C'est 0.

     5. Que signifie :

             for i in range (9):  ?

          i est un entier qui prend successivement les valeurs

               0 ; 1 ; 2 ;3 ;4 ;5 ;6 ;7 ; 8 

     6. Que signifie:

                     if w%2==0:    ?

            Si w est divisible par 2

    7. Qu'obtient-on avec ce script avec a = 6 ?

6

3

10

5

16

8

4

2

1

4

 [ 6,3,10,5,16,8,4,2,1,4]

     8. Proposer une modification du script de façon à obtenir la somme 

         des termes de la liste L.

          On peut proposer de rajouter les lignes suivantes à la fin

           juste en dessous de  print L:

          S=0

          for j in range(len(L)):

                S=S+L[j]

           print " La somme des termes de L est : " , S

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

      Partie B   

    1. Ecrire un programme qui donne le terme d'indice n de la suite récurrente:

                    u0 = 3

                    un+ 1 = 2 un - 1   pour tout n dans IN

            On peut considérer:

from random import*
def u(n):

      if n==0:
           return 3
      else:
           return 2*u(n-1)-1

n=input("Donner l'indice n : n = ")

print u(n)

             Par exemple:

>>>
Donner un entier n: n = 5
65
>>>

        

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

     2. Modifier le programme pour obtenir la somme des 10

           premiers termes de cette suite.

                  On peut considérer:

from random import*
def u(n):
      if n==0:
           return 3
      else:
           return 2*u(n-1)-1
def som():
      L=[]
      for j in range(0,10):
           L.append(u(j))
      S=0
      for i in range(len(L)):
           S=S+L[i]
      print L
      print " La somme des dix premiers termes est :",S

     On obtient :

>>> som()
[3, 5, 9, 17, 33, 65, 129, 257, 513, 1025]
La somme des dix premiers termes est : 2056
>>>

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