F.Gaudo 23 décembre 2010 Table des matières 1 Avat de commecer 2 2 Géératio aléatoire d'u code ADN 3 3 Géératio du code complémetaire à u code ADN doé 5 4 Algorithme CGR de représetatio de l'adn 6 1
1 Avat de commecer Ce documet cotiet ue liste d'algorithmes permettat l'étude de l'adn e lycée et les programmes correspodats. Le lagage de programatio Pytho a été choisi car il est cosidéré par les développeurs professioels comme l'u des plus appropriés pour l'appretissage de la programmatio. Le lagage de programmatio du logiciel XCas a été choisi pour sa structure fracisée et éamois très proche de celle des lagages de programmatio usuels (Pytho, C etre autres), ce qui e fait u logiciel particulièremet adapté à u public fracophoe. Ce documet suppose ue coaissace des istructios fodametales (etrées, sorties, boucles, coditios) du lagage Pytho aisi que de celles du logiciel XCas. Pour le lagage Pytho, a d'utiliser des caractères accetués das les programmes, o 'oubliera pas de préciser l'ecodage de caractères utilisé e plaçat au début de chaque programme la lige suivate sous Widows #-*- codig:lati-1 -*- et sous Liux ubutu #-*- codig:utf-8 -*- http: // mathsfg. et. free. fr 2
2 Géératio aléatoire d'u code ADN L'algorithme suivat géère u code ADN aléatoire de logueur l spéciée par l'utilisateur. Etrées : l : ombre Début traitemet code pred la valeur "" ; pour k allat de 1 à l faire a pred la valeur d'u ombre aléatoire etier etre 1 et 4 ; si a = 0 alors code pred la valeur de code + A ; si a = 1 alors code pred la valeur de code + T ; si a = 2 alors code pred la valeur de code + C ; si a = 3 alors code pred la valeur de code + G ; Fi Sorties : code http: // mathsfg. et. free. fr 3
Programmes correspodats : XCas : Saisir("logueur : ",l); code:=""; pour k de 1 jusque l faire a:=alea(4); si a==0 alors code:=code+"a";fsi; si a==1 alors code:=code+"t";fsi; si a==2 alors code:=code+"c";fsi; si a==3 alors code:=code+"g";fsi; fpour; afficher("code ADN : ",code); Pytho : from radom import * l=iput("logueur du code : ") code="" for k i rage(0,l): a=radit(1,4) if a==1: code=code+"a" if a==2: code=code+"t" if a==3: code=code+"c" if a==4: code=code+"g" prit ("code ADN : "+code) http: // mathsfg. et. free. fr 4
3 Géératio du code complémetaire à u code ADN doé Etrées : code : chaîe de caractères composée de A, T, C ou G. Début traitemet codecompl pred la valeur "" ; pred la valeur de la logueur de code pour k allat de 1 à faire si code[k] = A alors codecompl pred la valeur codecompl + T ; si code[k] = T alors codecompl pred la valeur codecompl + A ; si code[k] = C alors codecompl pred la valeur codecompl + G ; si code[k] = G alors codecompl pred la valeur codecompl + C ; Fi Sorties : codecompl Programmes correspodats : XCas : code:="aatcggga"; codecompl:=""; :=legth(code); pour k de 1 jusque faire si code[k-1]=="a" alors......codecompl:=codecompl+"t";fsi; si code[k-1]=="t" alors......codecompl:=codecompl+"a";fsi; si code[k-1]=="c" alors......codecompl:=codecompl+"g";fsi; si code[k-1]=="g" alors......codecompl:=codecompl+"c";fsi; fpour; afficher(codecompl); Pytho : code="aatcggga" codecompl="" =le(code) for k i rage(1,): if code[k-1]=="a": codecompl=codecompl+"t" if code[k-1]=="t": codecompl=codecompl+"a" if code[k-1]=="c": codecompl=codecompl+"g" if code[k-1]=="g": codecompl=codecompl+"c" prit("code complemetaire : ",codecompl) Remarque : Das l'algorithme o utilise code[k] pour désiger le k e caractère de la chaîe de caractère code alors que das les programmes o utilise code[k 1] : cela viet du fait que pour les lagages Pytho et XCas, le premier caractère d'ue chaîe de caractères est le caractère de rag 0. http: // mathsfg. et. free. fr 5
4 Algorithme CGR de représetatio de l'adn Nous e décriros pas ici l'algorithme CGR. O e trouvera ue descriptio très claire de l'algorithme CGR à l'adresse suivate : http ://www.mathom.fr/mathom/fetedelasciece/fs2007/complemets.html Le programme suivat trace la représetatio de l'adn doée par l'algorithme CGR : Pytho : from Tkiter import* def tracer(sequece): "Tracé" taille=le(sequece) x1=205 y1=205 for car i sequece: if car=="a": x2=10 y2=10 if car=="c": x2=410 y2=10 if car=="g": x2=410 y2=410 if car=="t": x2=10 y2=410 ca1.create_lie(x1,y1,x2,y2,fill='white') x1=(x1+x2)/2 y1=(y1+y2)/2 ca1.create_oval(x1-3,y1-3,x1+3,y1+3,fill='blue') sequece=raw_iput("etrer la séquece ADN à représeter : ") fe1=tk() ca1=cavas(fe1,height=500,width=500,backgroud='black') ca1.pack(side=left) ca1.create_lie(10,10,410,10,fill='white') ca1.create_lie(410,10,410,410,fill='white') ca1.create_lie(410,410,10,410,fill='white') ca1.create_lie(10,410,10,10,fill='white') bou1=butto(fe1,text='quitter',commad=fe1.quit) bou1.pack(side=bottom) bou2=butto(fe1,text='tracer',commad=tracer(sequece)) bou2.pack() fe1.mailoop() fe1.destroy() http: // mathsfg. et. free. fr 6