# DS_05_22_A.
py
001| # DS Version A
002|
003| ## PRECHAUFFAGE
004| # Q1 n%2 == 0 & bit de poids faible
005|
006| # Q2 0 et 255
007|
008| # Q3 variant de boucle
009|
010| # Q4 invariant de boucle
011|
012| # Q5 décroissant & suite d'entiers >0
013|
014| # Q6 mantisse & codage
015|
016| # Q7 exposant & codage
017|
018| # Q8 le codage & mantisse & exposant
019|
020|
021| ## I Manipulation des entiers
022|
023| # Q9
024| '''
025| n | L
026| 6 | [0]
027| 3 | [0,1]
028| 1 | [0,1,1]
029| 0 | [0,1,1]
030| '''
031|
032| # Q10
033| ''' récurrence triviale'''
034|
035| # Q11
1
036| ''' n entier >0 '''
037|
038|
039| # Q12
040| ''' variant + invariant alors à la fin de
l'algo N = n = sum....'''
041|
042| # Q13
043| ''' L[::-1] '''
044|
045|
046| # Q14
047| ''' [0,0,0,0,1,0,0,1]'''
048|
049| # Q15
050| def somme(L1,L2):
051| l1 = L1[::-1]
052| l2 = L2[::-1]
053| l3 = len(L1)*[0]
054| r=0
055| for i in range (len(l1)):
056| x = l1[i]+l2[i]
057| if x+r <2:
058| l3[i] = x
059| r = 0
060| elif x = 2 :
061| l3[i] = 0
062| r = 1
063| else :
064| l3[i] = 1
065| r=1
066| return l3[::-1]
067|
068| # Q16
069| def conv(L):
070| l = L[::-1]
071| s = 0
2
072| for i in range(len(l)):
073| s += l[i]*2**i
074| return s
075|
076|
077| # Q17
078| def produit(L1,L2):
079| n = conv(L2)
080| L = len(L1)*[0]
081| p = 0
082| for _ in range(n):
083| L = somme(L,L1)
084| return conv(L)
085|
086|
087| ## manipulation flottant
088|
089| # Q18
090| ''' 2^-51 = 2e-16 -> 16 CS'''
091|
092| # Q19
093| ''' 11 bits d'exposant valeur max : 2^10
=1024, 2^1024 ~ 10^309 '''
094|
095| # Q20
096| ''' c'est un pb de représentation des
nombres :) '''
097|
098| # Q21
099| from math import cos, exp, tan
100| def f(x): return cos(exp(tan(x**3)))
101|
102| # Q22
103| def taux(f,x,h):return (f(x+h)-f(x) ) / h
104|
105| # Q23
106| ''' c'est un pb de représentation des
3
nombres :)
107| bon faut quand même ajouter que si h trop
petit, f(x+h)-f(x) ~ 0 et si h trop grand
dérivée fausse
108| '''