Une solution pour l'exercice 1 du TP5 d'informatique en MIAS+MASS S1

PROGRAM tp5exc1;

VAR ADN, complementaire :  string[255];
    i : integer ;
    brinOK : boolean ;
    Adenine, Thymine, Guanine, Cytosine : integer ;

BEGIN

(* lecture d'un brin d'ADN avec vérification *)
repeat
    writeln('donnez-moi un brin d''ADN : ') ;
    readln(ADN) ;
    brinOK:=true ;
    for i:=1 to length(ADN) do
        if (upcase(ADN[i])<>'A') and (upcase(ADN[i])<>'T') and
           (upcase(ADN[i])<>'G') and (upcase(ADN[i])<>'C')
           then brinOK:=false ;
    if (not brinOK) then writeln('ce n''est pas un brin d''ADN') ;
    until brinOK ;

(* liste des bases qui compose le brin d'ADN *)
writeln ;
writeln('Liste des bases de ce brin :') ;
for i:=1 to length(ADN) do
    case upcase(ADN[i]) of
        'A' : writeln('Adenine') ;
        'T' : writeln('Thymine') ;
        'G' : writeln('Guanine') ;
        'C' : writeln('Cytosine') ;
        end ;

(* construction du brin complémentaire *)
complementaire:='' ;
for i:=length(ADN) downto 1 do
    case upcase(ADN[i]) of
        'A' : complementaire:=complementaire+'T' ;
        'T' : complementaire:=complementaire+'A' ;
        'G' : complementaire:=complementaire+'C' ;
        'C' : complementaire:=complementaire+'G' ;
        end ;
(* ATTENTION : on ne peut pas écrire complémentaire[i]:=... *)
writeln ;
writeln('Brin complémentaire :') ;
writeln(complementaire) ;

(* statistique sur les bases *)
Adenine:=0 ; Thymine:=0 ; Guanine:=0 ; Cytosine:=0 ;
for i:=1 to length(ADN) do
    case upcase(ADN[i]) of
        'A' : Adenine:=Adenine+1 ;
        'T' : Thymine:=Thymine+1 ;
        'G' : Guanine:=Guanine+1 ;
        'C' : Cytosine:=Cytosine+1 ;
        end ;
writeln ;
writeln('Ce brin d''ADN contient :') ;
writeln(Adenine,' adénines, ',Thymine,' thymines, ',Guanine, 'guanines, ',Cytosine,' cytosines') ;

(* vérifier si le brin d'ADN est palindromique *)
brinOK:=true ;
for i:=1 to (length(ADN) div 2) do
    if (ADN[i]<>ADN[length(ADN)+1-i]) then brinOK:=false ;
writeln ;
if brinOK
   then writeln('Ce brin EST un palindrome')
   else writeln('Ce brin n''est PAS un palindrome') ;
END.