tp bd + tp5-6 dev3.2

This commit is contained in:
2023-11-20 13:22:30 +01:00
parent 35918919b1
commit 446eb575de
40 changed files with 1821 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
// juste un type énuméré pour nommer les bases
public enum Base {
A,C,G,T
}

View File

@@ -0,0 +1,31 @@
// Fichier Exemple pour le premier exercice sur l'ADN
public class Exemple{
public static void main(String[] args) {
// codon GCT code l'analine https://en.wikipedia.org/wiki/DNA_codon_table
// stop codon TAG, voir https://en.wikipedia.org/wiki/Stop_codon
System.out.println("construction du brin GCTTAG");
MonMaillon l = new MonMaillon(Base.G);
l = new MonMaillon(Base.A,l);
l = new MonMaillon(Base.T,l);
l = new MonMaillon(Base.T,l);
l = new MonMaillon(Base.C,l);
l = new MonMaillon(Base.G,l);
MonBrin b = new MonBrin(l);
System.out.println("l'affichage par défaut du brin ne va pas vous plaire");
System.out.println(b.toString());
System.out.println("On peut afficher en avançant");
System.out.println("Il faut s'en inspirer pour implémenter l'interface iterator de Java.util");
MonMaillon actuel = b.getDebut();//NB: c'est comme l ci-dessus
while (actuel != null){
System.out.println(actuel.getBase());
actuel = actuel.getSuiteMaillon();
}
}
}

View File

@@ -0,0 +1,63 @@
/**
MonBrin code un brin d'ADN sous forme de liste simplement chaînée.
Plusieurs instances de MonMaillon reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base.
On n'utilise pas java.util et on recode tout.
Cette version a un problème : la navigation n'est pas raisonnable
*/
public class MonBrin {
private MonMaillon debut;
private MonMaillon fin;
//Le constructeur fabrique un brin à partir du premier maillon p;
public MonBrin(MonMaillon p){
this.debut = p;
while (suivant=p.getSuiteMaillon() != null){
p = suivant;
}
this.fin = p;
}
public MonMaillon getDebut(){
return this.debut;
}
public MonMaillon getFin(){
return this.fin;
}
public void addDernier(MonMaillon dernier){
this.fin.setSuiteMaillon(dernier);
this.fin = dernier;
}
public void addPremier(MonMaillon premier){
premier.setSuiteMaillon(this.debut);
this.debut = premier;
}
public void removePremier(){
MonMaillon maillonASupprimer = this.debut;
this.debut = this.debut.getSuiteMaillon();
}
public void removeDernier(){ // pas efficace
MonMaillon current = this.debut;
while (suivant=current.getSuiteMaillon() != this.fin){
current = suivant;
}
current.setSuiteMaillon(null);
this.fin = current;
}
/** et pour naviguer?
On pourrait implémenter l'interface iterator de java.util ici
**/
}

View File

@@ -0,0 +1,41 @@
/**
MonMaillon code un maillon d'un brin d'ADN.
plusieurs instances reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base.
On n'utilise pas java.util et on recode tout.
*/
public class MonMaillon {
private MonMaillon suivant;
private Base valeur;
//Le constructeur de base retourne un brin à une base;
public MonMaillon(Base b){
this.valeur = b;
}
// Le constructeur évolué ajoute une base à un brin.
public MonMaillon(Base b, MonMaillon l){
this.valeur = b;
this.suivant = l;
}
public setBase(Base b){
this.valeur = b;
}
public setSuiteMaillon(MonMaillon l){
this.suivant = l;
}
public Base getBase(){
return this.valeur;
}
public MonMaillon getSuiteMaillon(){
return this.suivant;
}
}