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));