@@ -28,3 +28,22 @@ Si je modifie tab1, cela affecte aussi tab 2.
En faisant le programme petit a petit je me rend compte que tab1 n'affecte pas tab2.
J'en déduis qu'à la ligne 2 l'opérateur ([...]), "change" tab2 en une copie indépendante de tab1, ainsi on peut modifier tab1 sans affecter tab2
dans cette exercice, j'ai appris à utiliser l'operateur ([...]) qui sert a modifier indépendament des tableaux.
Exercice 7:
La fonction deb7 prend deux arguments x et y.
La fonction actuel calcule le produit de x et y en ajoutant x à lui-même y fois (via une boucle for).
La fonction effectue une multiplication en utilisant des additions répétées.
deb7(3, 5) et deb7(5, 3) devraient donner le même résultat, mais la boucle s'exécute un nombre de fois égal à y, ce qui peut être inefficace si y est beaucoup plus grand que x
Pour optimiser la fonction, j'ai fait en sorte que la boucle s'exécute le plus petit nombre de fois possible. J'ai donc fait en sorte d'échanger les valeurs de x et y si y < x
Le programme fonctionne correctement pour des nombres négatifs, mais l'ordre des arguments n'est pas bien géré, par exemple : quand je fais deb7(3, -5), la boucle ne s'exécute pas correctement, car y (le nombre d'itérations) sera négatif, ce qui est invalide pour une boucle for
Le programme fonctionne correctement pour ce cas, car l'échange des valeurs de x et y permet à la boucle de s'exécuter correctement, cependant, le programme ne gère pas tous les cas où y est négatif. Par exemple, si deb7(-5, -3) est appelé, la boucle ne fonctionnera pas correctement, car y (le nombre d'itérations) sera négatif
Pour gérer les cas où y est négatif, je vais d'abbord vérifier si y est négatif, si y est négatif, je vais faire en sorte de convertir y en positif et ajuster le signe de x pour que le résultat final reste correct
J'ai modifié mon programme pour qu'avant d'entrer dans la boucle, le programme affiche les valeurs de x et y après les éventuelles corrections (inversion de signe ou échange) pour vérifier que l'optimisation est bien appliquée
Les test avec les valeurs données fonctionnent
dans cette exercice, j'ai appris à gerer des nombres négatifs dans un algorithme, optimisation des boucles ainsi qu'à utiliser le débogage dans des situations concrètes