diff --git a/qualdev/compte_rendu.txt b/qualdev/compte_rendu.txt index 6dad208994a2ca493123321ddcb56d81138f1d0f..c378a00edd42d2184dd750ef2d93557ab8ff3690 100644 --- a/qualdev/compte_rendu.txt +++ b/qualdev/compte_rendu.txt @@ -22,4 +22,4 @@ Dépot distant 6) git push -u origin main -7) \ No newline at end of file +7)git status (encore) \ No newline at end of file diff --git a/src/TD1.ts b/src/TD1.ts new file mode 100644 index 0000000000000000000000000000000000000000..8cd8dfda9a33101c37c6fd5e95ef4f087b06c58c --- /dev/null +++ b/src/TD1.ts @@ -0,0 +1,139 @@ +// Définition de la classe Point +class Point { + x!: number; + y!: number; +} + +// Définition de la classe Cercle +class Cercle { + centre!: Point; + rayon!: number; +} + +// Définition de la classe Rectangle +class Rectangle { + coinSupGauche!: Point; + largeur!: number; + hauteur!: number; +} + +// Instanciation d'un objet Cercle +let centreCercle = new Point(); +centreCercle.x = 150; +centreCercle.y = 100; + +let monCercle = new Cercle(); +monCercle.centre = centreCercle; +monCercle.rayon = 75; + +// Fonction pour vérifier si un point est dans un cercle +function pointDansCercle(cercle: Cercle, point: Point): boolean { + let distance = Math.sqrt( + (point.x - cercle.centre.x) ** 2 + + (point.y - cercle.centre.y) ** 2, + ); + return distance <= cercle.rayon; +} + +// Fonction pour vérifier si un rectangle est complétement dans un cercle +function rectangleDansCercle(cercle: Cercle, rectangle: Rectangle): boolean { + let coin1: Point = rectangle.coinSupGauche; + let coin2: Point = { x: coin1.x + rectangle.largeur, y: coin1.y }; + let coin3: Point = { x: coin1.x, y: coin1.y + rectangle.hauteur }; + let coin4: Point = { + x: coin1.x + rectangle.largeur, + y: coin1.y + rectangle.hauteur, + }; + + return pointDansCercle(cercle, coin1) && pointDansCercle(cercle, coin2) && + pointDansCercle(cercle, coin3) && pointDansCercle(cercle, coin4); +} + +// Fonction pour vérifier s'il y a chevauchement entre un cercle et un rectangle +function chevauchement(cercle: Cercle, rectangle: Rectangle): boolean { + let coin1: Point = rectangle.coinSupGauche; + let coin2: Point = { x: coin1.x + rectangle.largeur, y: coin1.y }; + let coin3: Point = { x: coin1.x, y: coin1.y + rectangle.hauteur }; + let coin4: Point = { + x: coin1.x + rectangle.largeur, + y: coin1.y + rectangle.hauteur, + }; + + return pointDansCercle(cercle, coin1) || pointDansCercle(cercle, coin2) || + pointDansCercle(cercle, coin3) || pointDansCercle(cercle, coin4); +} + +// Instanciation d'un rectangle +let coinRectangle = new Point(); +coinRectangle.x = 130; +coinRectangle.y = 90; + +let monRectangle = new Rectangle(); +monRectangle.coinSupGauche = coinRectangle; +monRectangle.largeur = 30; +monRectangle.hauteur = 20; + +// Test de la fonction pointDansCercle() +let testPoint = new Point(); +testPoint.x = 140; +testPoint.y = 100; + +console.log( + "Le point est dans le cercle ?", + pointDansCercle(monCercle, testPoint), +); + +// Test de la fonction rectangleDansCercle() +console.log( + "Le rectangle est entièrement dans le cercle ?", + rectangleDansCercle(monCercle, monRectangle), +); + +// Test de la fonction chevauchement() +console.log( + "Le rectangle chevauche-t-il le cercle ?", + chevauchement(monCercle, monRectangle), +); + +class Temps { + heure!: number; + minute!: number; + seconde!: number; + + affichageTemps(): void { + let ch = ""; + if (this.heure < 10) ch += "0"; + ch += this.heure + ":"; + if (this.minute < 10) ch += "0"; + ch += this.minute + ":"; + if (this.seconde < 10) ch += "0"; + ch += this.seconde; + console.log(ch); + } +} + +let chrono = new Temps(); +chrono.heure = 9; +chrono.minute = 45; +chrono.seconde = 0; + +function temps2Number(t: Temps): number { + return t.heure * 60 * 60 + t.minute * 60 + t.seconde; +} + +function number2Temps(tempsEnSeconde: number): Temps { + let t = new Temps(); + t.heure = Math.floor(tempsEnSeconde / 3600); + tempsEnSeconde %= 3600; + t.minute = Math.floor(tempsEnSeconde / 60); + t.seconde = tempsEnSeconde % 60; + return t; +} +function multiplieTemps(t: Temps, n: number): Temps { + return number2Temps(temps2Number(t) * n); +} + +function vitesseMoyenne(t: Temps, distance: number): Number { + let tEnHeures = temps2Number(t) / 3600; + return distance / tEnHeures; +} diff --git a/src/TD2.ts b/src/TD2.ts new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/TDAdn.ts b/src/TDAdn.ts new file mode 100644 index 0000000000000000000000000000000000000000..f6756a23e8d3ca6beec333d3d824db8c8d0c41b5 --- /dev/null +++ b/src/TDAdn.ts @@ -0,0 +1,80 @@ +function estADN(seq: string): boolean { + for (let c of seq) { + if (c !== "A" && c !== "C" && c !== "G" && c !== "T") { + return false; + } + } + + return true; +} + +function transcrit(seqADN: string): string { + let seqARN = ""; + + for (let c of seqADN) { + if (c === "T") seqARN += "U"; + else seqARN += c; + } + + return seqARN; +} + +function baseComplémentaire(base: string): string { + if (base === "A") return "T"; + else if (base === "T") return "A"; + else if (base === "C") return "G"; + else if (base === "G") return "C"; + else return ""; +} + +function séquenceComplémentaireInversée(seq: string): string { + let seqInv = ""; + + for (let c of seq) { + seqInv = baseComplémentaire(c) + seqInv; + } + + return seqInv; +} + +function estCodon(codon: string, seq: string, indice: number): boolean { + return seq[indice] === codon[0] && seq[indice + 1] === codon[1] && + seq[indice + 2] === codon[2]; +} + +function nombreOccurencesCodon(codon: string, seq: string): number { + let nbOcc = 0; + + for (let i = 0; i < seq.length; i += 3) { + if (estCodon(codon, seq, i)) nbOcc++; + } + + return nbOcc; +} + +function main(): void { + let seqADN = prompt("Entrez une séquence d'ADN: ")!; + + if (estADN(seqADN)) { + let codon = prompt("Entrez un codon: ")!; + + console.log( + "Séquence complémentaire inversée: " + + séquenceComplémentaireInversée(seqADN), + ); + let seqARN = transcrit(seqADN); + console.log("Séquence ARN: " + seqARN); + console.log( + `Le codon ${codon} apparaît ${ + nombreOccurencesCodon( + codon, + seqARN, + ) + } fois dans la séquence ARN.`, + ); + } else { + console.log("Séquence ADN erronée !!!"); + } +} + +main();