Parallèles entre cours de Math et cours de Prog à la HEIG
Rejoindre le serveur Discord de Arthur Bourquin, essentiellement dédié à la HEIG.
Les promotions de types en C++ garantissent qu'il n'y aura aucune perte de précision lors de la conversion du type d'une variable. Cette conversion — qu'on pourrait appeler "lossless" — n'est pas seulement vraie pour les promotions mais aussi pour les conversions suivantes.
Ci-dessous un diagramme de Hasse présentant deux relations entre les types C++. La relation C est la conversions garanties sans pertes entre deux types. La relation P est la promotion de type définie par C++. La relation P est incluse dans la relation C.
C comme P sont réflexives car pour chaque confrontation d'un type avec lui-même ce type ressort.
C comme P sont antisymétriques car si un type l'emporte sur l'autre, alors l'autre ne l'emportera jamais sur le premier.
C comme P sont transitives car si a l'emporte sur b et b l'emporte sur c alors a l'emporte sur c.
C comme P sont donc des relations d'ordre et peuvent être représentées sous la forme d'un diagramme de Hasse.
C comm P sont des relationd d'ordre partiel car dans les deux cas il existe des éléments non
comparables.
Exemples :
- (c, uc) ou n'importe quel type signé et son pendant non signé.
- (int, float)
La relation C peut être décrite ainsi :
\[ a \green{C} b ~~ \Leftrightarrow ~~ \] | \[ \begin{aligned} \left\{ \begin{array}{ll} \\[5em] \\ \end{array} \right. \end{aligned} \] | \[ a_{max} \le b_{max} \\et\\ a_{min} \ge b_{min} \] | \[ \begin{aligned} \left\{ \begin{array}{ll} \\[2em] \\ \end{array} \right. \end{aligned} \] | \[ \text{si} \quad (a, \; b) \; \in \; T_{\mathbb{N}}^2 \] |
\[ \text{si} \quad (a, \; b) \; \in \; T_{\mathbb{R}}^2 \] | ||||
\[ a_{bits} \le b_{mant} + 1 \] | \[ \text{si} \quad (a, \; b) \; \in \; T_{\mathbb{N}} \times T_{\mathbb{R}} \] |
Exemples
Le type long int est hors du diagramme car il est identique à int
ou long long int selon les systèmes.
Il en va de même pour unsigned long int.
Le type long double aussi est différent selon les systèmes.
b | uc | c | us | s | ui | i | ull | ll | f | d | |
b | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
uc | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
c | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
us | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||
s | 1 | 1 | 1 | 1 | 1 | 1 | |||||
ui | 1 | 1 | 1 | 1 | |||||||
i | 1 | 1 | 1 | ||||||||
ull | 1 | ||||||||||
ll | 1 | ||||||||||
f | 1 | 1 | |||||||||
d | 1 |
Implicitement, en mathématiques, un logarithme est en base 10, alors qu'en programmation, il est en base e.
log(a) | = | logarithme naturel de a |
log10(a) | = | logarithme en base 10 de a |
log2(a) | = | logarithme en base 2 de a |
Faire tourner une image.
1. En faisant une opération sur les coordonnées de l'image, la faire tourner d'un angle arbitraire.
2. Ajouter un point pour le centre autour duquel l'image tourne.
La HEIG-VD doit remplir une bouteille d'un litre avec 1,1 litre d'eau.
Elle fait appel à un expert rémunéré 1'000 CHF/jour. Cet expert ne parvient pas à trouver de solution, si bien qu'un nouvel expert est engagé pour le lendemain (jour ouvré), rémunéré 15% plus que le premier.
Chaque jour, un nouvel expert est ajouté au projet avec un salaire de 15% suppérieur au précédent.
Quel sera le coût total pour la HEIG-VD au bout d'une année (240 jours ouvrés) ?
Implémenter un script qui teste les égalités suivantes sur 1000 itérations avec des nombres aléatoires. \[ \sum_{k \in K} (a_k + b_k) ~~ = ~~ \sum_{k \in K} (a_k) ~ + ~ \sum_{k \in K} (b_k) \] et \[ \sum_{a = b}^c \sum_{x = y}^z (a_{ij}) ~~ = ~~ \sum_{x = y}^z \sum_{a = b}^c (a_{ij}) \]
Implémenter une fonction qui optimise le temps de parcours d'un robot devant aller récupérer un objet sur un terrain tout en pouvant emprunter une route sur une distance arbitraire.
La route est droite et le robot est dessus au début.
1. Trouver et implémenter la fonction retournant le temps de trajet du robot à l'objet :
2. Trouver et implémenter la fonction d'optimisation, soit la fonction qui retourne la distance optimale à laquelle le robot doit quitter la route :