-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodule02.html
More file actions
561 lines (467 loc) · 20.8 KB
/
module02.html
File metadata and controls
561 lines (467 loc) · 20.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="resources/css/bootstrap.min.css">
<link rel="stylesheet" href="resources/css/default.css">
<link rel="stylesheet" href="resources/css/style.css">
<title>Entrées</title>
</head>
<body>
<aside>
<nav class="navbar navbar-expand-md navbar-dark bg-dark">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#aside_navbar"
aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> Menu
</button>
<div class="collapse navbar-collapse" id="aside_navbar"></div>
</nav>
</aside>
<main class="container my-3">
<h1>Module 2 : Entrées</h1>
<article>
<h2>Situations</h2>
<section>
<h3>Peinture du toit du salon</h3>
<p>Ce mois-ci, M Fethi veut peindre le plafond du salon de sa maison. On suppose que le salon est de forme
rectangulaire et qu'il mesure 6m30 de longueur et 5m20 de largeur.</p>
<p>Sachant que le rendement de la peinture utilisée est de 6m²/Kg, on veut calculer la quantité de peinture
nécessaire pour peindre le salon de M Fethi 3 couches.</p>
<figure>
<img class="h4cm" src="resources/images/peinture.jpg" alt="Peinture">
<figcaption>Peinture & Décor</figcaption>
</figure>
<p>Nous avons écrit le programme suivant pour résoudre le problème :</p>
<pre><code class="language-python"># Longueur de la pièce en m
long = 6.30
# Largeur de la pièce en m
larg = 5.20
# Nombre de couches de peinture
nbc = 3
# Rendement en m²/Kg
rend = 6
# Surface du toit m²
st = 32.76 # todo : indiquer la formule
# Surface à peindre
sp = 98.28 # todo : indiquer la formule
# Quantité de peinture
qp = 16.38 # todo : indiquer la formule
print("Surface pièce =", st, "m²")
print("Nombre de couches =", nbc)
print("Surface totale =", sp, "m²")
print("Rendement =", rend, "m²/Kg")
print("La quantité de peinture =", qp, "Kg")</code></pre>
<p>On demande de compléter, puis d'exécuter le programme et de vérifier, enfin, qu'il affiche le bon résultat.
</p>
<p><strong>Quelle est la quantité de peinture nécessaire pour peindre le salon ?</strong></p>
</section>
<section>
<h3>Peinture de la cuisine</h3>
<p>Maintenant M Fethi veut peindre le plafond de la cuisine qui mesure 4m50 × 3m90, 2 couches seulement,
avec une peinture dont le rendement est de 4.5m²/Kg.</p>
<ol>
<li>Quelle est la quantité de peinture nécessaire ?</li>
<li><strong>Modifier le programme pour répondre à cette question.</strong></li>
</ol>
</section>
<section>
<h3>Peintre professionnel</h3>
<figure class="d-print-none">
<img src="resources/images/peintre_professionnel.jpg" alt="Sahbi peintre professionel">
<figcaption>Sahbi peintre professionel</figcaption>
</figure>
<p>Sahbi, le professionnel de peinture, est intéressé par notre programme de calcul de quantité de peinture
puisqu'il lui permet d'estimer la quantité de peinture à acheter par ses clients.</p>
<p>Cependant, Sahbi est <abbr title="ennuyé">las</abbr> de la nécessité de modifier le programme avant chaque
exécution, il veut un programme qui <strong>demande toutes les données nécessaires</strong>, effectue les
calculs et affiche le résultat.</p>
<ol>
<li>Comment faire ?</li>
<li>Effectuer les changements requis sur le programme pour qu'il réponde aux exigences de Sahbi.</li>
</ol>
</section>
<section>
<h3>Programme version finale</h3>
<p>Le programme comporte trois parties :</p>
<ul>
<li>Saisie des données</li>
<li>Calculs</li>
<li>Affichage des résultats</li>
</ul>
<pre><code class="language-python"># -- Saisie de données --
# Longueur de la pièce en m
long = float(input("Longueur de la pièce en m ? "))
# Largeur de la pièce en m
larg = float(input("Largeur de la pièce en m ? "))
# Nombre de couches de peinture
nbc = int(input("Nombre de couches de peinture ? "))
# Rendement en m²/Kg
rend = float(input("Rendement en m²/Kg ? "))
# -- Calculs --
# Surface du toit m²
st = long * larg
# Surface à peindre
sp = st * nbc
# Quantité de peinture
qp = sp / rend
# -- Affichages des rséultats --
print("Surface pièce =", st, "m²")
print("Nombre de couches =", nbc)
print("Surface totale =", sp, "m²")
print("Rendement =", rend, "m²/Kg")
print("La quantité de peinture =", qp, "Kg")</code></pre>
<h4>Exemples d'exécution</h4>
<p>Le nouveau programme affiche des résultats différents selon les entrées de l'utilisateur.</p>
<div class="row">
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Résultat du programme">Longueur de la pièce en m ? 6
Largeur de la pièce en m ? 3.5
Nombre de couches de peinture ? 2
Rendement en m²/Kg ? 10
Surface pièce = 21.0 m²
Nombre de couches = 2
Surface totale = 42.0 m²
Rendement = 10.0 m²/Kg
La quantité de peinture = 4.2 Kg</code></pre>
</div>
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Résultat du programme">Longueur de la pièce en m ? 4
Largeur de la pièce en m ? 2.5
Nombre de couches de peinture ? 1
Rendement en m²/Kg ? 6
Surface pièce = 10.0 m²
Nombre de couches = 1
Surface totale = 10.0 m²
Rendement = 6.0 m²/Kg
La quantité de peinture = 1.6666666666666667 Kg</code></pre>
</div>
</div>
</section>
</article>
<article class="p-break">
<h2>Résumé</h2>
<section>
<h3>Saisie</h3>
<p>L'entrée des données utilisateur est, principalement, effectuée à partir du clavier à l'aide de la fonction
<code>input(...)</code>. <strong>Cette fonction retourne toujours une chaîne de caractères (type
string).</strong>
</p>
<figure>
<img class="h4cm" src="resources/images/input_syntax.png" alt="Syntaxe de la fonction input">
<figcaption>Syntaxe de la fonction <code>input(...)</code></figcaption>
</figure>
<p>Souvent, on désire saisir des données numériques de type <strong>entier</strong> ou <strong>réel</strong>.
Dans ce cas, il faudra convertir la valeur saisie à l'aide des fonctions :</p>
<ul>
<li><code>int(...)</code> pour récupérer un <strong>entier</strong></li>
<li>Et, <code>float(...)</code> pour récupérer un <strong>réel</strong>.</li>
</ul>
<figure>
<img class="h4cm" src="resources/images/input_syntax_cast.png" alt="Conversions de types">
<figcaption>Conversions de types</figcaption>
</figure>
<h4>Exemple</h4>
<div class="row">
<div class="col-sm-6">
<pre><code class="language-python"># Saisie d'une chaîne de caractères
ch = input("Votre nom ? ")
# Saisie d'un nombre entier
age = int(input("Quel âge as-tu ? "))
# Saisie d'un nombre réel
moy = float(input("Quelle est ta moyenne ? "))
</code></pre>
</div>
<div class="col-sm-6">
<pre><code class="language-algorithm">// Saisie d'une chaîne de caractères
Ecrire("Votre nom ? ")
Lire(ch)
// Saisie d'un nombre entier
Ecrire("Quel âge as-tu ? ")
Lire(age)
// Saisie d'un nombre réel
Ecrire("Quelle est ta moyenne ? ")
Lire(moy)</code></pre>
</div>
</div>
</section>
</article>
<article class="p-break">
<h2>Renforcement</h2>
<section class="d-print-none">
<h3>QCM</h3>
Le QCM est accessible dans cette
<a href="qcm02.html" target="_blank" rel="noopener noreferrer">page</a>.
</section>
<section>
<h3>Point de rencontre</h3>
<figure class="d-print-none">
<img src="resources/images/point_rencontre.jpg" alt="Point de rencontre de deux véhicules">
<figcaption>Point de rencontre de deux véhicules</figcaption>
</figure>
<p>Sofien et Saber habitent dans deux villes différentes éloignées d'une distance <strong>d</strong>. Si les
deux camarades partent en même temps, on désire calculer et afficher à quel instant ils vont se rencontrer.
</p>
<p>On suppose que Sofien avance à une vitesse constante notée <b>v1</b> et que Saber avance à une vitesse
constante notée <b>v2</b>.</p>
<p>On donne la formule qui permet de calculer le temps de rencontre en fonction de la distance et de la vitesse
des deux personnes.</p>
<figure>
<img class="h2cm" src="resources/images/temps_rencontre.png" alt="Temps de rencontre des deux personnes">
<figcaption>Temps de rencontre des deux personnes</figcaption>
</figure>
<p>Ecrire un programme qui permet de simuler cette situation.</p>
<div class="d-print-none">
<div class="row">
<div class="col-sm-4">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°1">Distance en km ? 3
Vitesse de Sahbi km/h ? 7
Vitesse de Sofien km/h ? 8
Rencontre après 12 mn et 0 s
Sahbi se trouve à 1.4 km de sa maison
Sofien se trouve à 1.6 km de sa maison</code></pre>
</div>
<div class="col-sm-4">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°2">Distance en km ? 0.5
Vitesse de Sahbi km/h ? 8
Vitesse de Sofien km/h ? 9
Rencontre après 1 mn et 45 s
Sahbi se trouve à 0.235 km de sa maison
Sofien se trouve à 0.265 km de sa maison</code></pre>
</div>
<div class="col-sm-4">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°3">Distance en km ? 0.2
Vitesse de Sahbi km/h ? 3
Vitesse de Sofien km/h ? 3.5
Rencontre après 1 mn et 50 s
Sahbi se trouve à 0.092 km de sa maison
Sofien se trouve à 0.108 km de sa maison</code></pre>
</div>
</div>
</div>
</section>
<section>
<h3>Calcul Résistance</h3>
<p>Le courant qui traverse une diode LED ne doit pas dépasser 20mA et la tension à ses bornes doit être limitée
selon sa couleur.</p>
<p>Pour celà, on utilise souvent une résistance en série avec une diode LED pour limiter le courant dans la
diode, et ainsi éviter de la griller.</p>
<figure>
<img src="resources/images/schema-led.gif" alt="Alimentation Diode LED">
<img src="resources/images/led_voltage.png" alt="Tension selon la couleur du LED">
<figcaption>Alimentation Diode LED</figcaption>
</figure>
<p>On demande de concevoir un programme qui :</p>
<ul>
<li>Saisit les valeurs suivantes :
<ul>
<li>La tension d'alimentation en Volts, notée U</li>
<li>La tension au bornes de la diode en Volts (voir tableau), notée U<sub>f</sub></li>
<li>Le courant parcourant la diode (entre 10mA à 20mA), noté I<sub>f</sub></li>
</ul>
</li>
<li>Calcule la résistance R : R = (U - U<sub>f</sub>) * 1000 / I<sub>f</sub></li>
<li>Affiche sa valeur</li>
</ul>
<div class="d-print-none">
<div class="row">
<div class="col-sm-4">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°1">Tension d'alimentation ? 5
Tension LED ? 1.8
Courant diode mA ? 15
R = 213 Ω</code></pre>
</div>
<div class="col-sm-4">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°2">Tension d'alimentation ? 12
Tension LED ? 3.2
Courant diode mA ? 15
R = 586 Ω</code></pre>
</div>
<div class="col-sm-4">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°3">Tension d'alimentation ? 9
Tension LED ? 2.1
Courant diode mA ? 10
R = 690 Ω</code></pre>
</div>
</div>
</div>
</section>
<section>
<h3>Distributeur de Jus</h3>
<figure class="d-print-none">
<img src="resources/images/distributeur_jus.jpg" alt="Distributeur de jus">
<img src="resources/images/gobelets_jus.jpg" alt="Gobelets de jus">
<figcaption>Distributeur de jus / Gobelets de jus</figcaption>
</figure>
<p>Ayoub est un élève intelligent, il a conçu dans le club de robotique un distributeur de jus ingénieux. Ce
système demande à l'utilisateur d'entrer la quantité de jus <strong>qj</strong> à sa disposition (en Cl) et le
nombre de personnes à servir <strong>np</strong>.</p>
<p>Une fois les informations validées le robot remplit automatiquement les <strong>np</strong> gobelets de jus.
</p>
<p>On demande d'écrire un programme qui calcule la quantité de jus à mettre dans chaque gobelet, et puis
l'affiche.</p>
<p><i>On rappelle que : 1 litre = 100 Cl</i></p>
<div class="d-print-none">
<div class="row">
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°1">Quantité de jus en Cl ? 100
Nombre de personnes ? 5
Quantité de jus/Gobelet = 20 Cl</code></pre>
</div>
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°2">Quantité de jus en Cl ? 75
Nombre de personnes ? 4
Quantité de jus/Gobelet = 18 C</code></pre>
</div>
</div>
</div>
</section>
<section class="p-break">
<h3>Jogging</h3>
<p>Tous les matins, Samir aime faire un jogging dans son quartier qui possède la forme d'un triangle rectangle.
</p>
<p>Pour mesurer sa performance, Samir désire calculer sa vitesse moyenne après un jogging.</p>
<p>On rappelle que :</p>
<ul>
<li>vitesse = distance / temps</li>
<li>vitesse(km/h) = vitesse(m/s) * 3.6</li>
</ul>
<p>Ecrire un programme qui :</p>
<ul>
<li>Saisit le temps total du jogging <code>tj</code>, en secondes.</li>
<li>Saisit le nombre de tours effectué autour du quartier <code>nbt</code>.</li>
<li>Saisit la longueur de la base du triangle <code>a</code></li>
<li>Saisit la longueur de l'hauteur <code>b</code></li>
<li>Calcule la longueur de l'hypoténus <code>c</code>, On rappelle que c peut être calculé à l'aide de la
formule de Pythagore : c² = a² + b²</li>
<li>Calcule le périmètre du quartier <code>pq</code>, pq = (a + b + c)</li>
<li>Calcule la vitesse de Samir <code>v</code>, v = pq * nbt / tj</li>
<li>Affiche le résultat en m/s et en km/h</li>
</ul>
<div class="d-print-none">
<div class="row">
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°1">Temps jogging (s) ? 4000
Nombre de tours ? 19
Longueur de la base (m) ? 500
Longueur de l'hauteur (m) ? 100
Vitesse de Samir = 5 m/s = 18 km/h</code></pre>
</div>
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution n°2">Temps jogging (s) ? 3600
Nombre de tours ? 15
Longueur de la base (m) ? 500
Longueur de l'hauteur (m) ? 100
Vitesse de Samir = 4 m/s = 16 km/h</code></pre>
</div>
</div>
</div>
</section>
<section>
<h3>Citerne d'huile</h3>
<p>Dans une presse d'huile, l'huile est conservée dans des citernes cylindriques de diamètre <b>d</b> et de
profondeur <b>h</b>. Sur la paroie de la citerne un indicateur gradué indique le niveau <b>nh</b> de l'huile
sous forme d'un pourcentage.</p>
<ul>
<li>Si l'indicateur affiche 0%, la citerne est vide.</li>
<li>Si l'indicateur affiche 20%, la citerne est remplie à 20% de sa capacité.</li>
<li>Si l'indicateur affiche 100%, la citerne est totalement remplie.</li>
</ul>
<p>On demande d'écrire l'algorithme d'un programme qui saisit les données de l'utilisateur (en mètres), puis
affiche la quantité de l'huile en litres.</p>
<p>On donne :</p>
<ul>
<li>Le diamètre de la citerne <b>d</b> et son hauteur (h) sont mesurés en mètres.</li>
<li>Le niveau de l'huile <b>nh</b> est mesuré en pourcentage (%).</li>
<li>1 m<sup>3</sup> = 1000 litres</li>
<li>La constante π (<code>pi</code>) peut être importée du module <code>math</code> :</li>
</ul>
<pre><code class="language-python">from math import pi
# calcul de l'aire d'un cercle
r = 1.5
print(pi*r*r)</code></pre>
<figure>
<img src="resources/images/citerne_huile.svg" alt="Citerne d'huile" class="h4cm">
<figcaption>Citerne d'huile</figcaption>
</figure>
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution">Donner le diamètre de la citerne (m) : 1.2
Donner l'heuteur de la citerne (m) : 3
Donne le niveau de l'huile (%) : 20
La citerne contient 678 litres d'huile.</code></pre>
</section>
<section>
<h3>Gare routière</h3>
<figure class="d-print-none">
<img src="resources/images/gare_routiere.png" alt="Gare routière">
<figcaption>Gare routière</figcaption>
</figure>
<p>Un bus dans une gare routière, commence ses courses à partir de <code>hd</code> (heure de départ) du matin.
Ses courses continuent jusqu'au soir <code>hf</code> (heure fin). Sachant que le bus revient à la gare
routière toutes les <code>dt</code> (durée trajet) minutes, on veut calculer le nombre de voyages de ce bus en
une journée.
</p>
<p>On demande d'écrire un programme qui permet de trouver le nombre de voyages effectués par le bus le long de
la journée.</p>
<p class="explication">Exemple d'exécution</p>
<pre><code class="nohighlight shell python" data-text="Exemple d'exécution">Quelle est l'heure de départ (hh:00) ? 5
Quelle est l'heure de fin (hh:00) ? 17
Quelle est la durée du trajet ? 20
Le bus fait 36 voyages de 5h à 17h.</code></pre>
</section>
<section>
<h3>Corrigez-moi !</h3>
<figure class="d-print-none">
<img src="resources/images/bug_informatique.jpg" alt="Débogage d'un programme">
<figcaption>Débogage d'un programme</figcaption>
</figure>
<pre><code class="language-python">input("Donner un entier [10, 99] : ") = a
b = "Donner un entier [10, 99] : "
moy = a + b sur 2
print La moyenne de a et b est moy</code></pre>
<div class="row">
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Exemple de résultat n°1">Donner un entier [10, 99] : 15
Donner un entier [10, 99] : 30
La moyenne de 15 et 30 est 22</code></pre>
</div>
<div class="col-sm-6">
<pre><code class="nohighlight shell python" data-text="Exemple de résultat n°2">Donner un entier [10, 99] : 16
Donner un entier [10, 99] : 80
La moyenne de 16 et 80 est 48</code></pre>
</div>
</div>
</section>
</article>
</main>
<footer class="d-print-none bg-dark text-white p-2">
<div class="text-center">Page créée avec ♥ par Mohamed Anis MANI</div>
<div class="text-center small">Année scolaire : 2021/2022</div>
</footer>
<script src="resources/js/jquery.min.js"></script>
<script src="resources/js/bootstrap.bundle.min.js"></script>
<script src="resources/js/highlight.pack.js"></script>
<script src="resources/js/hljs.algorithm.js"></script>
<script src="resources/js/clipboard.min.js"></script>
<script src="resources/js/pages.js"></script>
<script>
hljs.initHighlightingOnLoad();
document.querySelectorAll('.language-algorithm,.language-python')
.forEach(item => {
const div = document.createElement('div');
div.className = 'bd-clipboard d-print-none';
const btn = document.createElement('button');
btn.className = 'btn-clipboard';
btn.textContent = "📋";
btn.title = "Copier";
div.appendChild(btn);
item.parentElement.insertBefore(div, item);
});
new ClipboardJS('.btn-clipboard', {
target: (trigger) => {
return trigger.parentElement.nextElementSibling;
}
});
</script>
</body>
</html>