From 23aef1828f5e36ec4572b5eaf3b50f62151b7b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Bailly?= <clement.bailly3@etu.univ-lorraine.fr> Date: Wed, 7 May 2025 11:04:38 +0200 Subject: [PATCH] Ajout des exo --- SAE/sae | 1 + deno.lock | 24 ++++++++++ qualdev/qualdev/Point.ts | 35 ++++++++++++++ qualdev/qualdev/Test/Point.test.ts | 8 ++++ qualdev/qualdev/Test/deno.json | 5 ++ qualdev/qualdev/Test/deno.lock | 24 ++++++++++ qualdev/qualdev/Test/mesMaths.test.ts | 12 +++++ qualdev/qualdev/Test/puissanceMult.test.ts | 9 ++++ qualdev/qualdev/ex1/FizzBuzzle.ts | 17 +++++++ qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts | 14 ++++++ qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts | 25 ++++++++++ .../ex2/Test/FizzBuzzleSpoutnik.test.ts | 23 +++++++++ qualdev/qualdev/math.ts | 0 qualdev/qualdev/mesMaths.ts | 47 +++++++++++++++++++ qualdev/qualdev/test.ts | 2 - 15 files changed, 244 insertions(+), 2 deletions(-) create mode 160000 SAE/sae create mode 100644 deno.lock create mode 100644 qualdev/qualdev/Point.ts create mode 100644 qualdev/qualdev/Test/Point.test.ts create mode 100644 qualdev/qualdev/Test/deno.json create mode 100644 qualdev/qualdev/Test/deno.lock create mode 100644 qualdev/qualdev/Test/mesMaths.test.ts create mode 100644 qualdev/qualdev/Test/puissanceMult.test.ts create mode 100644 qualdev/qualdev/ex1/FizzBuzzle.ts create mode 100644 qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts create mode 100644 qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts create mode 100644 qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts create mode 100644 qualdev/qualdev/math.ts create mode 100644 qualdev/qualdev/mesMaths.ts delete mode 100644 qualdev/qualdev/test.ts diff --git a/SAE/sae b/SAE/sae new file mode 160000 index 0000000..e796556 --- /dev/null +++ b/SAE/sae @@ -0,0 +1 @@ +Subproject commit e796556a52454114b55d1d4f244e7bbda8394db4 diff --git a/deno.lock b/deno.lock new file mode 100644 index 0000000..04a47e6 --- /dev/null +++ b/deno.lock @@ -0,0 +1,24 @@ +{ + "version": "4", + "specifiers": { + "jsr:@std/assert@*": "1.0.12", + "jsr:@std/assert@^1.0.12": "1.0.12", + "jsr:@std/internal@^1.0.6": "1.0.6" + }, + "jsr": { + "@std/assert@1.0.12": { + "integrity": "08009f0926dda9cbd8bef3a35d3b6a4b964b0ab5c3e140a4e0351fbf34af5b9a", + "dependencies": [ + "jsr:@std/internal" + ] + }, + "@std/internal@1.0.6": { + "integrity": "9533b128f230f73bd209408bb07a4b12f8d4255ab2a4d22a1fd6d87304aca9a4" + } + }, + "workspace": { + "dependencies": [ + "jsr:@std/assert@^1.0.12" + ] + } +} diff --git a/qualdev/qualdev/Point.ts b/qualdev/qualdev/Point.ts new file mode 100644 index 0000000..889f3e8 --- /dev/null +++ b/qualdev/qualdev/Point.ts @@ -0,0 +1,35 @@ +export class Point { + private _x: number; + private _y: number; + + constructor(x = 0, y = 0) { + this._x = x; + this._y = y; + } + + get x(): number { + return this._x; + } + + set x(value : number) { + this._x = value; + } + + get y(): number { + return this._y; + } + + set y(value : number) { + this._y = value; + } + + deplacer(x: number, y: number): void { + this._x += x; + this._y += y; + } + + public distance(p: Point): number { + return Math.sqrt((this._x - p._x) ** 2 + (this._y - p._y) ** 2); + } + +} diff --git a/qualdev/qualdev/Test/Point.test.ts b/qualdev/qualdev/Test/Point.test.ts new file mode 100644 index 0000000..fd98140 --- /dev/null +++ b/qualdev/qualdev/Test/Point.test.ts @@ -0,0 +1,8 @@ +import { Point } from "../Point.ts"; +import { assertEquals } from "jsr:@std/assert/equals"; + +Deno.test("constructeur par défaut", () => { + const p = new Point(); + assertEquals(p.x, 0); + assertEquals(p.y, 0); +}); diff --git a/qualdev/qualdev/Test/deno.json b/qualdev/qualdev/Test/deno.json new file mode 100644 index 0000000..6dffbcc --- /dev/null +++ b/qualdev/qualdev/Test/deno.json @@ -0,0 +1,5 @@ +{ + "imports": { + "@std/assert": "jsr:@std/assert@^1.0.12" + } +} diff --git a/qualdev/qualdev/Test/deno.lock b/qualdev/qualdev/Test/deno.lock new file mode 100644 index 0000000..04a47e6 --- /dev/null +++ b/qualdev/qualdev/Test/deno.lock @@ -0,0 +1,24 @@ +{ + "version": "4", + "specifiers": { + "jsr:@std/assert@*": "1.0.12", + "jsr:@std/assert@^1.0.12": "1.0.12", + "jsr:@std/internal@^1.0.6": "1.0.6" + }, + "jsr": { + "@std/assert@1.0.12": { + "integrity": "08009f0926dda9cbd8bef3a35d3b6a4b964b0ab5c3e140a4e0351fbf34af5b9a", + "dependencies": [ + "jsr:@std/internal" + ] + }, + "@std/internal@1.0.6": { + "integrity": "9533b128f230f73bd209408bb07a4b12f8d4255ab2a4d22a1fd6d87304aca9a4" + } + }, + "workspace": { + "dependencies": [ + "jsr:@std/assert@^1.0.12" + ] + } +} diff --git a/qualdev/qualdev/Test/mesMaths.test.ts b/qualdev/qualdev/Test/mesMaths.test.ts new file mode 100644 index 0000000..30a9b50 --- /dev/null +++ b/qualdev/qualdev/Test/mesMaths.test.ts @@ -0,0 +1,12 @@ +import { multAdd } from "../mesMaths.ts"; +import { assertEquals } from "jsr:@std/assert/equals"; + +Deno.test("cas général", () => { + assertEquals(multAdd(3, 8), 24); +}); +Deno.test("multiplication par 0", () => { + assertEquals(multAdd(3, 0), 0); +}); +Deno.test("multiplication par un nombre négatif", () => { + assertEquals(multAdd(3, -8), -24); +}); diff --git a/qualdev/qualdev/Test/puissanceMult.test.ts b/qualdev/qualdev/Test/puissanceMult.test.ts new file mode 100644 index 0000000..cf1dccb --- /dev/null +++ b/qualdev/qualdev/Test/puissanceMult.test.ts @@ -0,0 +1,9 @@ +import { ErreurPuissanceMult, puissanceMult } from "../mesMaths.ts"; +import { assertEquals } from "jsr:@std/assert/equals"; +import { assertThrows } from "jsr:@std/assert/throws"; + +Deno.test("cas général", () => assertEquals(puissanceMult(3, 2), 9)); +Deno.test("cas si x négatif", () => assertEquals(puissanceMult(-3, 2), 9)); +Deno.test("cas si y négatif", () => assertThrows(()=>{puissanceMult(3,-3)},ErreurPuissanceMult,"y ne peut pas etre négatif")); +Deno.test("cas si deux nombres négatifs", () => assertThrows(()=>{puissanceMult(-3,-3)},ErreurPuissanceMult,"y ne peut pas etre négatif")); +Deno.test("cas si nombre nul", () => assertEquals(puissanceMult(-1, 0), 1)); diff --git a/qualdev/qualdev/ex1/FizzBuzzle.ts b/qualdev/qualdev/ex1/FizzBuzzle.ts new file mode 100644 index 0000000..11ad25c --- /dev/null +++ b/qualdev/qualdev/ex1/FizzBuzzle.ts @@ -0,0 +1,17 @@ +export function getFizzBuzzle(i: number) { + if ((i % 3 === 0) && (i % 5 === 0)) { + return "FizzBuzzle"; + } else if (i % 3 === 0) { + return "Fizz"; + } else if (i % 5 === 0) { + return "Buzzle"; + } else { + return i; + } +} + +export function fizzBuzzle(n: number): void { + for (let i = 1; i <= n; i++) { + console.log(getFizzBuzzle(i)); + } +} diff --git a/qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts b/qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts new file mode 100644 index 0000000..2cab93d --- /dev/null +++ b/qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts @@ -0,0 +1,14 @@ +import { getFizzBuzzle } from "../FizzBuzzle.ts"; +import { assertEquals } from "jsr:@std/assert/equals"; +Deno.test("Cas si i est un multiple de 3", () => { + assertEquals(getFizzBuzzle(6), "Fizz"); +}); +Deno.test("Cas si i est un multiple de 3", () => { + assertEquals(getFizzBuzzle(10), "Buzzle"); +}); +Deno.test("Cas si i est un multiple de 3 et 5", () => { + assertEquals(getFizzBuzzle(15), "FizzBuzzle"); +}); +Deno.test("Cas si i n'est pas un multiple de 3 et 5", () => { + assertEquals(getFizzBuzzle(11), 11); +}); diff --git a/qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts b/qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts new file mode 100644 index 0000000..4c33d39 --- /dev/null +++ b/qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts @@ -0,0 +1,25 @@ +export function getFizzBuzzleSpoutnik(i: number) { + if ((i % 3 === 0) && (i % 5 === 0) && (i % 4 === 0)) { + return "FizzBuzzleSpoutnik"; + } else if ((i % 3 === 0) && (i % 4 === 0)) { + return "FizzSpoutnik"; + } else if ((i % 3 === 0) && (i % 5 === 0)) { + return "FizzBuzzle"; + } else if ((i % 4 === 0) && (i % 5 === 0)) { + return "BuzzleSpoutnik"; + } else if (i % 3 === 0) { + return "Fizz"; + } else if (i % 5 === 0) { + return "Buzzle"; + } else if (i % 4 === 0) { + return "Spoutnik"; + } else { + return i; + } +} + +export function fizzBuzzleSpoutnik(n: number): void { + for (let i = 1; i <= n; i++) { + console.log(getFizzBuzzleSpoutnik(i)); + } +} diff --git a/qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts b/qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts new file mode 100644 index 0000000..d958613 --- /dev/null +++ b/qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts @@ -0,0 +1,23 @@ +import { getFizzBuzzleSpoutnik } from "../FizzBuzzleSpoutnik.ts"; +import { assertEquals } from "jsr:@std/assert/equals"; +Deno.test("Cas si i est un multiple de 3", () => { + assertEquals(getFizzBuzzleSpoutnik(6), "Fizz"); +}); +Deno.test("Cas si i est un multiple de 3", () => { + assertEquals(getFizzBuzzleSpoutnik(10), "Buzzle"); +}); +Deno.test("Cas si i est un multiple de 3 et 5", () => { + assertEquals(getFizzBuzzleSpoutnik(15), "FizzBuzzle"); +}); +Deno.test("Cas si i n'est pas un multiple de 3 et 5", () => { + assertEquals(getFizzBuzzleSpoutnik(11), 11); +}); +Deno.test("Cas si i n'est pas un multiple de 3, 4 et 5", () => { + assertEquals(getFizzBuzzleSpoutnik(120), "FizzBuzzleSpoutnik"); +}); +Deno.test("Cas si i n'est pas un multiple de 3 et 4", () => { + assertEquals(getFizzBuzzleSpoutnik(24), "FizzSpoutnik"); +}); +Deno.test("Cas si i n'est pas un multiple de 4 et 5", () => { + assertEquals(getFizzBuzzleSpoutnik(40), "BuzzleSpoutnik"); +}); diff --git a/qualdev/qualdev/math.ts b/qualdev/qualdev/math.ts new file mode 100644 index 0000000..e69de29 diff --git a/qualdev/qualdev/mesMaths.ts b/qualdev/qualdev/mesMaths.ts new file mode 100644 index 0000000..ee535bc --- /dev/null +++ b/qualdev/qualdev/mesMaths.ts @@ -0,0 +1,47 @@ +export function multAdd(x: number, y: number): number { + let resultat = 0; + if (x < 0 && y > 0) { + x = -x; + for (let i = 0; i < y; i++) { + resultat += x; + } + return -resultat; + } + if (x > 0 && y < 0) { + y = -y; + for (let i = 0; i < y; i++) { + resultat += x; + } + return -resultat; + } + if (x < 0 && y < 0) { + x = -x; + y = -y; + for (let i = 0; i < y; i++) { + resultat += x; + } + return resultat; + } + for (let i = 0; i < y; i++) { + resultat += x; + } + return resultat; +} + +export class ErreurPuissanceMult extends Error { + constructor(msg: string){ + super(msg); + this.name = "ErreurPuissanceMult"; + } +} + +export function puissanceMult(x: number, y: number): number { + if (y < 0){ + throw new ErreurPuissanceMult("y ne peut pas etre négatif") + } + let val = 1; + for (let i = 0; i < y; i++) { + val *= x; + } + return val; +} diff --git a/qualdev/qualdev/test.ts b/qualdev/qualdev/test.ts deleted file mode 100644 index a65ab57..0000000 --- a/qualdev/qualdev/test.ts +++ /dev/null @@ -1,2 +0,0 @@ -console.log("1"); -console.log("2"); \ No newline at end of file -- GitLab