Commit 1c9300f67f4328705aa8c6fdcdbd22677f0f135b

Authored by Rémi Emonet
1 parent 9c7c452dd6
Exists in master

...codes

Showing 10 changed files with 516 additions and 0 deletions

cours-06-code/abstraction-a.py View file @ 1c9300f
  1 +
  2 +poids = 0
  3 +
  4 +# Trouver l'animal
  5 +r = input("Ça vole ?")
  6 +if r == "oui":
  7 + r = input("Un dynosaure ?")
  8 + if r == "oui":
  9 + print("Ptérodactyle !")
  10 + poids = 2000
  11 + elif r == "non":
  12 + r = input("Un insecte ?")
  13 + if r == "oui":
  14 + print("Moustique !")
  15 + poids = 1
  16 + elif r == "non":
  17 + print("Oiseau !")
  18 + poids = 250
  19 + else:
  20 + print("oui/non attendu, au revoir")
  21 + exit()
  22 + else:
  23 + print("oui/non attendu, au revoir")
  24 + exit()
  25 +elif r == "non":
  26 + r = input("Animal domestique ?")
  27 + if r == "oui":
  28 + r = input("Indépendant ?")
  29 + if r == "oui":
  30 + print("Chat !")
  31 + poids = 3500
  32 + elif r == "non":
  33 + print("Chien !")
  34 + poids = 9000
  35 + else:
  36 + print("oui/non attendu, au revoir")
  37 + exit()
  38 + elif r == "non":
  39 + print("Tyrannosaure !")
  40 + poids = 8*1000*1000
  41 + else:
  42 + print("oui/non attendu, au revoir")
  43 + exit()
  44 +else:
  45 + print("oui/non attendu, au revoir")
  46 + exit()
  47 +
  48 +# Affichage de la taille
  49 +if poids > 2500:
  50 + print("C'est un gros animal !")
  51 +else:
  52 + print("C'est un petit animal !")
cours-06-code/abstraction-a.py.md View file @ 1c9300f
  1 +```python
  2 +poids = 0
  3 +
  4 +# Trouver l'animal
  5 +r = input("Ça vole ?")
  6 +if r == "oui":
  7 + ... # 17 lignes omises
  8 +elif r == "non":
  9 + r = input("Animal domestique ?")
  10 + if r == "oui":
  11 + r = input("Indépendant ?")
  12 + if r == "oui":
  13 + print("Chat !")
  14 + poids = 3500
  15 + elif r == "non":
  16 + print("Chien !")
  17 + poids = 9000
  18 + else:
  19 + print("oui/non attendu, au revoir")
  20 + exit()
  21 + elif r == "non":
  22 + print("Tyrannosaure !")
  23 + poids = 8*1000*1000
  24 + else:
  25 + print("oui/non attendu, au revoir")
  26 + exit()
  27 +else:
  28 + print("oui/non attendu, au revoir")
  29 + exit()
  30 +
  31 +# Affichage de la taille
  32 +if poids > 2500:
  33 + print("C'est un gros animal !")
  34 +else:
  35 + print("C'est un petit animal !")
  36 +{denser}
  37 +```
cours-06-code/abstraction-b.py View file @ 1c9300f
  1 +
  2 +def validation(message):
  3 + entree = input(message + " (oui/non) ")
  4 + if entree == "oui":
  5 + return True
  6 + if entree == "non":
  7 + return False
  8 + print("oui/non attendu, au revoir")
  9 + exit()
  10 +
  11 +
  12 +poids = 0
  13 +
  14 +# Trouver l'animal
  15 +if validation("Ça vole ?"):
  16 + if validation("Un dynosaure ?"):
  17 + print("Ptérodactyle !")
  18 + poids = 2000
  19 + else:
  20 + if validation("Un insecte ?"):
  21 + print("Moustique !")
  22 + poids = 1
  23 + else:
  24 + print("Oiseau !")
  25 + poids = 250
  26 +else:
  27 + if validation("Animal domestique ?"):
  28 + if validation("Indépendant ?"):
  29 + print("Chat !")
  30 + poids = 3500
  31 + else:
  32 + print("Chien !")
  33 + poids = 9000
  34 + else:
  35 + print("Tyrannosaure !")
  36 + poids = 8*1000*1000
  37 +
  38 +
  39 +# Affichage de la taille
  40 +if poids > 2500:
  41 + print("C'est un gros animal !")
  42 +else:
  43 + print("C'est un petit animal !")
cours-06-code/abstraction-b.py.md View file @ 1c9300f
  1 +```python
  2 +def validation(message):
  3 + entree = input(message + " (oui/non) ")
  4 + if entree == "oui":
  5 + return True
  6 + if entree == "non":
  7 + return False
  8 + print("oui/non attendu, au revoir")
  9 + exit()
  10 +
  11 +
  12 +poids = 0
  13 +
  14 +# Trouver l'animal
  15 +if validation("Ça vole ?"):
  16 + ... # 10 lignes omises
  17 +else:
  18 + if validation("Animal domestique ?"):
  19 + if validation("Indépendant ?"):
  20 + print("Chat !")
  21 + poids = 3500
  22 + else:
  23 + print("Chien !")
  24 + poids = 9000
  25 + else:
  26 + print("Tyrannosaure !")
  27 + poids = 8*1000*1000
  28 +
  29 +
  30 +# Affichage de la taille
  31 +if poids > 2500:
  32 + print("C'est un gros animal !")
  33 +else:
  34 + print("C'est un petit animal !")
  35 +{denser}
  36 +```
cours-06-code/abstraction-b2.py.md View file @ 1c9300f
  1 +```python
  2 +def validation(message):
  3 + ... # 7 lignes omises
  4 +
  5 +
  6 +poids = 0
  7 +
  8 +
  9 +# Trouver l'animal
  10 +if validation("Ça vole ?"):
  11 + ... # 10 lignes omises
  12 +else:
  13 + if validation("Animal domestique ?"):
  14 + if validation("Indépendant ?"):
  15 + print("Chat !")
  16 + poids = 3500
  17 + else:
  18 + print("Chien !")
  19 + poids = 9000
  20 + else:
  21 + print("Tyrannosaure !")
  22 + poids = 8*1000*1000
  23 +
  24 +
  25 +
  26 +
  27 +
  28 +# Affichage de la taille
  29 +if poids > 2500:
  30 + print("C'est un gros animal !")
  31 +else:
  32 + print("C'est un petit animal !")
  33 +{denser}
  34 +```
cours-06-code/abstraction-c.py View file @ 1c9300f
  1 +
  2 +def validation(message):
  3 + entree = input(message + " (oui/non) ")
  4 + if entree == "oui":
  5 + return True
  6 + if entree == "non":
  7 + return False
  8 + print("oui/non attendu, au revoir")
  9 + exit()
  10 +
  11 +
  12 +def trouver_animal_et_poids():
  13 + if validation("Ça vole ?"):
  14 + if validation("Un dynosaure ?"):
  15 + print("Ptérodactyle !")
  16 + return 2000
  17 + else:
  18 + if validation("Un insecte ?"):
  19 + print("Moustique !")
  20 + return 1
  21 + else:
  22 + print("Oiseau !")
  23 + return 250
  24 + else:
  25 + if validation("Animal domestique ?"):
  26 + if validation("Indépendant ?"):
  27 + print("Chat !")
  28 + return 3500
  29 + else:
  30 + print("Chien !")
  31 + return 9000
  32 + else:
  33 + print("Tyrannosaure !")
  34 + return 8*1000*1000
  35 +
  36 +
  37 +# Trouver l'animal
  38 +poids = trouver_animal_et_poids()
  39 +
  40 +# Affichage de la taille
  41 +if poids > 2500:
  42 + print("C'est un gros animal !")
  43 +else:
  44 + print("C'est un petit animal !")
cours-06-code/abstraction-c.py.md View file @ 1c9300f
  1 +```python
  2 +def validation(message):
  3 + ... # 7 lignes omises
  4 +
  5 +
  6 +
  7 +
  8 +
  9 +def trouver_animal_et_poids():
  10 + if validation("Ça vole ?"):
  11 + ... # 10 lignes omises
  12 + else:
  13 + if validation("Animal domestique ?"):
  14 + if validation("Indépendant ?"):
  15 + print("Chat !")
  16 + return 3500
  17 + else:
  18 + print("Chien !")
  19 + return 9000
  20 + else:
  21 + print("Tyrannosaure !")
  22 + return 8*1000*1000
  23 +
  24 +
  25 +# Trouver l'animal
  26 +poids = trouver_animal_et_poids()
  27 +
  28 +# Affichage de la taille
  29 +if poids > 2500:
  30 + print("C'est un gros animal !")
  31 +else:
  32 + print("C'est un petit animal !")
  33 +{denser}
  34 +```
cours-06-code/abstraction-d.py View file @ 1c9300f
  1 +
  2 +def validation(message):
  3 + entree = input(message + " (oui/non) ")
  4 + if entree == "oui":
  5 + return True
  6 + if entree == "non":
  7 + return False
  8 + print("oui/non attendu, au revoir")
  9 + exit()
  10 +
  11 +
  12 +def trouver_animal_et_poids():
  13 + if validation("Ça vole ?"):
  14 + if validation("Un dynosaure ?"):
  15 + print("Ptérodactyle !")
  16 + return 2000
  17 + else:
  18 + if validation("Un insecte ?"):
  19 + print("Moustique !")
  20 + return 1
  21 + else:
  22 + print("Oiseau !")
  23 + return 250
  24 + else:
  25 + if validation("Animal domestique ?"):
  26 + if validation("Indépendant ?"):
  27 + print("Chat !")
  28 + return 3500
  29 + else:
  30 + print("Chien !")
  31 + return 9000
  32 + else:
  33 + print("Tyrannosaure !")
  34 + return 8*1000*1000
  35 +
  36 +def adjectif_taille(grammes):
  37 + if grammes > 2500: return "gros"
  38 + else: return "petit"
  39 +
  40 +
  41 +# Trouver l'animal
  42 +poids = trouver_animal_et_poids()
  43 +
  44 +# Affichage de la taille
  45 +print("C'est un", adjectif_taille(poids), "animal !")
cours-06-code/abstraction-d.py.md View file @ 1c9300f
  1 +```python
  2 +def validation(message):
  3 + ... # 7 lignes omises
  4 +
  5 +def adjectif_taille(grammes):
  6 + if grammes > 2500: return "gros"
  7 + else: return "petit"
  8 +
  9 +def trouver_animal_et_poids():
  10 + if validation("Ça vole ?"):
  11 + ... # 10 lignes omises
  12 + else:
  13 + if validation("Animal domestique ?"):
  14 + if validation("Indépendant ?"):
  15 + print("Chat !")
  16 + return 3500
  17 + else:
  18 + print("Chien !")
  19 + return 9000
  20 + else:
  21 + print("Tyrannosaure !")
  22 + return 8*1000*1000
  23 +
  24 +
  25 +# Trouver l'animal
  26 +poids = trouver_animal_et_poids()
  27 +
  28 +# Affichage de la taille
  29 +adj = adjectif_taille(poids)
  30 +print("C'est un", adj, "animal !")
  31 +{denser}
  32 +```
cours-07-code/planete-slides.md View file @ 1c9300f
  1 +## Programme Sans Fonctions // A la fin : on veut répéter ça, on pourrait faire un for
  2 +```python
  3 +planetes = [ # x, y, masse, nom
  4 + [0, 0, 5.9736E24, "terre"],
  5 + [3.844E5, 0, 7.3477E22, "lune"] ]
  6 +G = 6.6742E-11 * 1E-6 # N km2 kg-2
  7 +ZERO = [0, 0]
  8 +{denser}
  9 +```
  10 +
  11 +```python
  12 +bob = [0, 6378.137] # km
  13 +bobm = 100 # kg
  14 +
  15 +for pl in planetes:
  16 + dx = pl[0] - bob[0]
  17 + dy = pl[1] - bob[1]
  18 + d = (dx * dx + dy * dy)**0.5
  19 + print("Bob est a", d, "km du centre de", pl[3])
  20 +
  21 +somme_forces = ZERO
  22 +for pl in planetes:
  23 + dx = pl[0] - bob[0]
  24 + dy = pl[1] - bob[1]
  25 + d = (dx * dx + dy * dy)**0.5
  26 + u = [dx / d, dy / d] # vecteur unitaire
  27 + df = [G * bobm * pl[2] / d / d * u[0],
  28 + G * bobm * pl[2] / d / d * u[1]]
  29 + somme_forces = [somme_forces[0] + df[0],
  30 + somme_forces[1] + df[1]]
  31 +
  32 +print("Somme des forces sur Bob :", somme_forces, "newtons")
  33 +{z}
  34 +```
  35 +- @anim: .z>span:nth-of-type(4), .z>span:nth-of-type(8)
  36 +- @anim: .z>span:nth-of-type(5), .z>span:nth-of-type(6)
  37 +- @anim: .z>span:nth-of-type(7)
  38 +- @anim: .z>span:nth-of-type(10), .z>span:nth-of-type(21)
  39 +- @anim: .z>span:nth-of-type(11), .z>span:nth-of-type(12), .z>span:nth-of-type(13)
  40 +- @anim: .z>span:nth-of-type(14)
  41 +- @anim: .z>span:nth-of-type(15)
  42 +- @anim: .z>span:nth-of-type(16), .z>span:nth-of-type(17)
  43 +- @anim: .z>span:nth-of-type(18), .z>span:nth-of-type(19)
  44 +
  45 +
  46 +## Fonctions : Répétitions Contrôlées
  47 +```python
  48 +planetes = [ # x, y, masse, nom
  49 + [0, 0, 5.9736E24, "terre"],
  50 + [3.844E5, 0, 7.3477E22, "lune"] ]
  51 +G = 6.6742E-11 * 1E-6 # N km2 kg-2
  52 +ZERO = [0, 0]
  53 +{denser}
  54 +```
  55 +
  56 +```python
  57 +def info_bob(bob, bobm):
  58 + for pl in planetes:
  59 + dx = pl[0] - bob[0]
  60 + dy = pl[1] - bob[1]
  61 + d = (dx * dx + dy * dy)**0.5
  62 + print("Bob est a", d, "km du centre de", pl[3])
  63 +
  64 + somme_forces = ZERO
  65 + for pl in planetes:
  66 + dx = pl[0] - bob[0]
  67 + dy = pl[1] - bob[1]
  68 + d = (dx * dx + dy * dy)**0.5
  69 + u = [dx / d, dy / d] # vecteur unitaire
  70 + df = [G * bobm * pl[2] / d / d * u[0],
  71 + G * bobm * pl[2] / d / d * u[1]]
  72 + somme_forces = [somme_forces[0] + df[0],
  73 + somme_forces[1] + df[1]]
  74 +
  75 + print("Somme des forces sur Bob :", somme_forces, "newtons")
  76 +
  77 +info_bob([0, 6378.137], 100)
  78 +info_bob([6378.137, 0], 100)
  79 +{z dense}
  80 +```
  81 +- @anim: %+class:highlight:.z>span:nth-of-type(1),.z>span:nth-of-type(21),.z>span:nth-of-type(22)
  82 +
  83 +## Fonctions : Ne Pas Se Répéter
  84 +```python
  85 +planetes = [ # x, y, masse, nom
  86 + [0, 0, 5.9736E24, "terre"],
  87 + [3.844E5, 0, 7.3477E22, "lune"] ]
  88 +G = 6.6742E-11 * 1E-6 # N km2 kg-2
  89 +ZERO = [0, 0]
  90 +{denser}
  91 +```
  92 +
  93 +```python
  94 +def dist(a, b):
  95 + dx = b[0] - a[0]
  96 + dy = b[1] - a[1]
  97 + return ( dx**2 + dy**2 )**0.5
  98 +
  99 +def info_bob(bob, bobm):
  100 + for pl in planetes:
  101 + d = dist(pl, bob)
  102 + print("Bob est a", d, "km du centre de", pl[3])
  103 +
  104 + somme_forces = ZERO
  105 + for pl in planetes:
  106 + d = dist(pl, bob)
  107 + u = [ (pl[0] - bob[0]) / d, (pl[1] - bob[1]) / d]
  108 + df = [G * bobm * pl[2] / d / d * u[0],
  109 + G * bobm * pl[2] / d / d * u[1]]
  110 + somme_forces = [somme_forces[0] + df[0],
  111 + somme_forces[1] + df[1]]
  112 +
  113 + print("Somme des forces sur Bob :", somme_forces, "newtons")
  114 +
  115 +info_bob([0, 6378.137], 100)
  116 +{z dense}
  117 +```
  118 +- @anim: %+class:highlight:.z>span:nth-of-type(1),.z>span:nth-of-type(8),.z>span:nth-of-type(13)
  119 +
  120 +
  121 +## Fonctions : Meilleures Abstractions
  122 +```python
  123 +planetes = [ # x, y, masse, nom
  124 + [0, 0, 5.9736E24, "terre"],
  125 + [3.844E5, 0, 7.3477E22, "lune"] ]
  126 +G = 6.6742E-11 * 1E-6 # N km2 kg-2
  127 +ZERO = [0, 0]
  128 +{denser}
  129 +```
  130 +
  131 +```python
  132 +def vec_addmul(a, m, b): # retourne a + m*b (en 2d)
  133 + return [ a[0]+m*b[0], a[1]+m*b[1] ]
  134 +
  135 +def dist(a, b):
  136 + d = vec_addmul(b, -1, a) # b - a
  137 + return ( d[0]**2 + d[1]**2 )**0.5
  138 +
  139 +def info_bob(bob, bobm):
  140 + for pl in planetes:
  141 + d = dist(pl, bob)
  142 + print("Bob est a", d, "km du centre de", pl[3])
  143 + somme_forces = ZERO
  144 + for pl in planetes:
  145 + d = dist(pl, bob)
  146 + u = vec_addmul(bob, -1, pl) # pl - bob
  147 + u = vec_addmul(ZERO, 1/d, u) # u / d
  148 + df = vec_addmul(ZERO, G * bobm * pl[2] / d / d, u)
  149 + somme_forces = vec_addmul(somme_forces, 1, df)
  150 +
  151 + print("Somme des forces sur Bob :", somme_forces, "newtons")
  152 +
  153 +info_bob([0, 6378.137], 100)
  154 +{z dense}
  155 +```
  156 +- @anim: %+class:highlight:.z>span:nth-of-type(1),.z>span:nth-of-type(5),.z>span:nth-of-type(15),.z>span:nth-of-type(16),.z>span:nth-of-type(17),.z>span:nth-of-type(18)