diff --git a/debug.ts b/debug.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a3253d6fcb82dd15f8b5e352edda041c3d92f692
--- /dev/null
+++ b/debug.ts
@@ -0,0 +1,133 @@
+function deb1(): number {
+  let j = 200;
+  let tab = new Array<number>();
+  for (let i = 0; i < 10; i++) {
+    j -= 10;
+    tab[i] = j;
+  }
+  return j;
+}
+
+function deb2(x: number, y: number): void {
+  const tmp = y;
+  y = x;
+  x = tmp;
+  console.log(x, y);
+}
+
+let x = 10;
+let y = 20;
+deb2(x, y);
+console.log(x, y);
+
+//20 10 puis 10 20
+//nom parlant : échange de valeurs
+//ça ne fonctionne pas car les valeurs de x et y sont échangées SEULEMENT dans la fonction elle-meme, les véritables valeurs des variables x et y restent comme avant
+
+function deb3(xy: number[]): void {
+  let tmp = xy[0];
+  xy[0] = xy[1];
+  xy[1] = tmp;
+  xy = [100, 200];
+  console.log(xy);
+}
+
+let xy = [10, 20];
+deb3(xy);
+console.log(xy);
+
+//vu qu'on modifie un tableau directement et pas des valeurs, le tableau se fait bien modifier meme en dehors de la fonction
+//le dernier console.log affiche quand meme [20,10] car on a modifié la variable de manière locale seulement pour [100,200]
+
+let j = 10;
+deb4();
+console.log(j);
+
+function deb4(): number {
+  let j = 25;
+  for (let i = 0; i < 10; i++) {
+    let j = 2 * i;
+    console.log(j);
+  }
+  return j;
+}
+
+//la variable j en dehors de la fonction et celle à l'intérieur de deb4() ne sont pas les memes,
+//la première sera donc toujours égale à 10 alors que celle de la fonction pourra prendre n'importe quelle valeur paire de 0 (inclus) à 18
+
+let tab1 = [1, 2, 3];
+let tab2 = tab1;
+
+tab1[1] = 5;
+console.log(tab1, tab2);
+
+//les deux tableaux ont désormais comme deuxième valeur 5, modifier un tableau revient à modifier les deux
+
+let tab1bis = [1, 2, 3];
+let tab2bis = [...tab1bis]; // Copie du tableau
+
+tab1bis[1] = 5;
+console.log(tab1bis, tab2bis);
+
+//maintenant, on n'a que modifié le premier tableau
+// dans le premier cas, dans les mémoires les deux tableaux pointaient vers le meme tableau, alors que dans le deuxième cas on a créé une simple copie du tableau, donc pas le meme
+
+multiplication(3, 5);
+
+/*function multiplication(x: number, y: number): number {
+  let val = 0;
+
+  for (let i = 0; i < y; i++) {
+    val += x;
+  }
+
+  return val;
+}*/
+
+function multiplication(x: number, y: number): number {
+  let val = 0;
+  let absY = Math.abs(y);
+
+  for (let i = 0; i < absY; i++) {
+    val += x;
+  }
+  if (y < 0) return -val;
+  else return val;
+}
+
+console.log(multiplication(5, 3)); // résultat = 15
+console.log(multiplication(-5, 3)); // -15
+console.log(multiplication(5, -3)); // -15
+console.log(multiplication(-5, -3)); // 15
+
+console.log(multiplication(0, 0));
+console.log(multiplication(5, 3));
+console.log(multiplication(3, 5));
+console.log(multiplication(-5, -2));
+console.log(multiplication(-2, -5));
+console.log(multiplication(-74, 2));
+console.log(multiplication(-1, 75));
+console.log(multiplication(10, -25));
+console.log(multiplication(10, -3));
+
+let n = 5;
+console.log(factorielle(n));
+
+function factorielle(n: number): number {
+  if (n < 0) {
+    console.log("Ne pas rentrer de nombre negatif !");
+    return 0;
+  } else {
+    if (n === 0) {
+      return 1;
+    }
+
+    let valeur = n * factorielle(n - 1);
+    return valeur;
+  }
+}
+
+console.log(factorielle(3));
+console.log(factorielle(0));
+console.log(factorielle(1));
+console.log(factorielle(-3));