Exercices Perl

Transcription

Exercices Perl
Exercices Perl
Master de Bioinformatique
Université de Rouen
1
Exercice
Écrire un programme Perl qui affiche les lignes de plus de 80 caractères lues
sur l’entrée standard.
2
Exercice
Écrire un programme Perl qui affiche le second champ de chaque ligne.
3
Exercice
Écrire un programme Perl qui permet d’enregistrer dans un fichier output.txt
les lignes qui contiennent le mot (( print )).
4
Exercice
À l’aide des tableaux associatifs, écrire un programme Perl qui affiche la
fréquence des mots d’un texte.
5
Exercice
Écrire un programme Perl qui lit des nombres, et qui pour chacun d’entre
eux indique s’il est pair ou impair. À l’issue de la saisie (Ctrl-d sous Unix ou
Ctrl-z sous Windows) le programme affiche la moyenne des nombres entrés.
6
Exercice
Écrire un programme Perl qui constituer une liste de mots entrés au clavier
l’un après l’autre puis qui trie la liste ainsi constituée par ordre croissant puis
par ordre décroissant.
1
7
Exercice
Écrire un programme Perl qui utilise un tableau associatif pour gérer un
stock de bouteilles de vin. Le nom d’un vin est utilisé comme clef, une valeur
saisie au clavier vient en + ou − de l’éventuelle valeur déjà existante.
8
Exercice
Écrire un programme Perl qui vérifie que des mots saisis peuvent correspondre à une immatriculation de véhicule en france. On vérifie donc que le mot saisi
commence par un chiffre compris entre 1 et 9 éventuellement suivi de 4 chiffres,
suivi d’une, deux ou trois lettres, suivi :
– du chiffre 0 suivi d’un chiffre ;
– d’un chiffre suivi d’un chiffre ;
– de 2a ou 2b.
9
Exercice
Écrire un programme Perl qui calcul des expressions arithmétiques simples
(non parenthésées) saisies à la volée. Le mot saisi doit commencer par un nombre suivi d’un opérateur arithmétique suivi d’un nombre (n fois). On utilise la
fonction eval(expr) pour faire le calcul.
10
Exercice
Écrire un programme Perl qui vérifie que des nombres entrés au clavier sont
bien des entiers relatifs ou des réels.
11
Exercice
Écrire un programme Perl qui saisit un texte à la volée. Lorsque la saisie est
terminée, le programme calcule le nombre de lignes, de mots et de caractères
du texte.
12
Exercice
On reprend ici l’exercice 7 mais à la fin de la saisie on appelle une fonction
qui va calcul la valeur du stock. Elle reçoit en paramètre le tableau associatif du
stock, et un tableau associatif donnant le prix H.T. d’une bouteille de chaque
vin et le taux de TVA.
2
13
Exercice
Écrire un programme Perl qui parcourir l’ensemble des fichiers réalisés pour
les exercices précédents et qui rajoute un commentaire dans chacun d’entre
eux. On choisit ici de remplacer la première ligne par elle même suivie d’un
commentaire constant.
14
Exercice
Écrivez un programme Perl qui réalise les choses suivantes :
1. Définissez un tableau de séquences d’oligonucléotides :
@seq = ("tcgtgccca", "tgtt", "cccga", "ttcatcag", "ggcaag",
"ctg", "ggtgtaccggtgatcac", "ccaccta", "cctgaattaat");
ou (pour éviter de mettre les apostrophes)
@seq = qw(
tcgtgcca
tgtt
cccga
ttcatcag
ggcaag
ctg
ggtgtaccgtgatcac
ccaccta
cctgaattaat
);
2. Répartissez les éléments du tableau @seq en trois tableaux : @small_seq
contiendra les oligos ayant entre 0 et 5 bases (caractères), @medium_seq
ceux ayant entre 6 et 10 bases, et @large_seq ceux ayant 11 bases et plus.
3. Affichez chacun des tableaux résultants.
4. Trouvez le plus long oligo dans @seq et affichez le.
Indice : L’opérateur length retourne la longueur d’une chaı̂ne, l’opérateur push
permet d’ajouter un élément à un tableau, et l’opérateur join est très utile pour
afficher simplement (en une instruction) le contenu complet d’un tableau.
15
Exercice
Supposons maintenant que votre programme Perl, à la place de définir un
tableau de séquences d’oligonucléotides, les lise dans un fichier. Le format du
fichier est très simple : un oligo par ligne. Ainsi, le fichier contenant le tableau
de séquences de l’exercice 14 est :
3
tcgtgccca
tgtt
cccga
ttcatcag
ggcaag
ctg
ggtgtaccggtgatcac
ccaccta
cctgaattaat
Modifiez votre programme pour qu’il soit capable de lire un nombre quelconque
de séquences d’oligonucléotides dans un fichier et de faire la même analyse que
dans l’exercice 14.
16
Exercice
La table suivante spécifie la maladie associée à chaque gène :
AD4
Alzheimer’s Disease
BRCA1 Breast Cancer
DMD
Duchenne Muscular Dystrophy
FMR1
Fragile X Syndrome
GBA
Gaucher Disease
Écrivez un programme Perl qui demande à l’utilisateur d’entrer un nom
de gène, et affiche la maladie correspondante. Le programme devra afficher un
message d’erreur si le gène entré n’est pas trouvé dans la table.
Remarque : pour définir le tableau représentant la table, vous pouvez utiliser
les deux syntaxes suivantes.
%genes = ("AD4", "Alzeimer’s Disease", "BRCA1", "Breast Cancer",
"DMD", "Duchenne Muscular Dystrophy", "FMR1", "Fragile X Syndrome",
"GBA", "Gancher Disease");
ou
%genes = (
AD4 => "Alzeimer’s Disease",
BRCA1 => "Breast Cancer",
DMD => "Duchenne Muscular Dystrophy",
FMR1 => "Fragile X Syndrome",
GBA => "Gancher Disease"
);
17
Exercice
Considérez un fichier contenant un texte quelconque. Écrivez un script Perl
qui recopie ce fichier de sorte que chaque ligne soit précédée de son numéro.
4
18
Exercice
Écrivez un programme Perl qui prend en entrée une séquence cDNA, valide
qu’elle contient bien uniquement les nucléotides A, T, G et C, et affiche à l’écran
la séquence mRNA correspondante (remplacez tous les T par des U).
Remarque : proposez deux solutions différentes pour les substitutions de T
en U, une avec l’opérateur s/// et une avec l’opérateur tr///.
19
Exercice
Réalisez un programme Perl lisant un fichier contenant une séquence au
format FASTA et comptant les occurences d’un motif exact dans cette séquence.
Exemple : si on recherche le motif ”AT” dans la séquence ATGTAGCATAA,
on obtient :
AT : 2
Indices :
– Le motif et le nom du fichier FASTA seront spécifiés à l’intérieur du programme.
– Utilisez la fonction substr.
20
Exercice
1. Réalisez un programme Perl lisant un fichier contenant une séquence au
format FASTA et comptant les occurences d’un motif inexact (ou expression régulière) dans cette séquence.
Exemple : si on recherche l’expression régulière (( A. ))dans la séquence
ATGTAAGCATAA, on obtient :
AT : 2
AG : 1
AA : 2
Indice : utilisez les opérateurs =~ et // avec l’option g (pour global).
2. L’opérateur //g a pour inconvénient de ne pas tenir compte des occurences chevauchantes d’un motif (par exemple, le motif AGA intervient
deux fois dans AGAGA mais n’est vu qu’une fois). À l’aide d’une boucle
while avançant sur la séquence en fonction de la présence de l’expression
régulière, modifiez le programme précédent pour compter TOUTES les
occurences d’une expression régulière.
Remarque : cette deuxième méthode est beaucoup plus lente à l’exécution
que la première, mais les deux méthodes ne donnent pas le même résultat !
Donc, tout dépend du contexte...
Vous pouvez comparer les temps d’exécution des deux méthodes à l’aide
de la commande unix time.
5
21
Exercice
Écrire un programme Perl qui lit un fichier et écrit ses lignes dans l’ordre
inverse (de la dernière à la première).
22
Exercice
Écrire un programme Perl qui étant donnée une séquence de nucléotides
effectue la traduction dans les six phases de lectures.
6

Documents pareils