Rappels pour les cours de BioPerl

Codes correspondant aux tests des connaissances avec des questionnaires à choix multiples dans les Slides

Représentation des données

Données simples

In [1]:
$nombre = 1;
1
In [2]:
$nombre = $nombre + 10;
11
In [3]:
$chaine = "nombre : ";
nombre : 
In [4]:
$chaine = $chaine.$nombre;
nombre : 11
In [5]:
chop($chaine);
1
In [6]:
print $chaine
Out[6]:
nombre : 1
1

Explication des différentes réponses possibles pour le MCQ

  • nombre : 11 : pas de prise en compte de chop
  • nombre : 1 : réponse correcte
  • ombre : 11 : mauvaise interprétation de chop
  • nombre : : pas de prise en compte de la concaténation des chaines de caractères et des nombres

Tableaux

In [7]:
$nombre= 12;
12
In [8]:
$chaine = ($nombre+1)." ".($nombre+2);
13 14
In [9]:
@tab = ($nombre, ($chaine,$chaine));
1213 1413 14
In [10]:
print $tab[1];
Out[10]:
13 14
1

Explication des différentes réponses possibles pour le MCQ

  • un tableau contenant 2 éléments $chaine : pas de prise en compte de l'applatissement des tableaux imbriqués
  • $chaine : réponse correcte
  • $nombre : oubli du début des index d'un tableau à 0
  • rien

Tableaux associatifs

In [11]:
%hash = ("id1" => 1, "id2" => "chaine");
id11id2chaine
In [12]:
$id = "id";
id
In [13]:
$hash{$id} = "je ne sais pas";
je ne sais pas
In [14]:
@tab = each(%hash);
id11
In [15]:
@tab = each(%hash);
id2chaine
In [16]:
print $tab[1];
Out[16]:
chaine
1

Explication des différentes réponses possibles pour le MCQ

  • rien : pas de prise en compte de l'applatissement des tableaux imbriqués
  • id2 : mauvaise interprétation de each
  • 1 : pas prise en compte du changement d'état à chaque fois que each est appelé
  • chaine : réponse correct

Structures de contrôle

Structure de test

In [17]:
$c1 = "chaine";
chaine
In [18]:
$t = $c1 eq "chaine2";
In [19]:
if ( $t ){
    print "1";
}elsif ( 1 < 10 & 2 > 3 ){
    print "2";
}elsif ( 2 | "0" ){
    print "3";
}else{
    print "4";
}
Out[19]:
3
1

Explication des différentes réponses possibles pour le MCQ:

  • 1 : mauvaise interprétation du test d'égalité de 2 chaines
  • 2 : mauvaise interprétation du &
  • 3 : bonne réponse
  • 4 : mauvaise interprétation du | ou des booléens

Boucles

In [20]:
@liste = ("2","22", "10", "100")
22210100
In [21]:
foreach $_ (@liste)
{
    print $_;
    if ( $_ lt "20"){
        $_ = $_ + 1;
    }
    print " ".$_;
    print "\n";
}
Out[21]:
2 3
22 22
10 11
100 101

Explication des différentes réponses possibles pour le MCQ:

  • 2 22 11 100 : pas compréhension de 100 < 20
  • 3 22 11 101 : bonne réponse
  • 2 22 10 100 : pas d'ajout de 1 aux valeurs inférieures à 20
  • 2 23 10 100 : pas bonne interprétation de lt

Manipulation de fichiers

Explication des différentes réponses possibles pour le MCQ:

  • if -s file {open(FILE, ">file"); write("text"); close(FILE) } : >> pour ajouter à un fichier
  • if -z file {open(FILE, ">>file"); write("text"); close(FILE) } : z teste si un fichier est vide
  • if -w file {open(FILE, ">>file"); write("text"); close(FILE) } : w teste les droits en écriture
  • if -s file {open(FILE, ">>file"); write("text"); close(FILE) } : réponse correcte

Expressions régulières

In [15]:
my $v = '"cette" chaine';
if( $v =~ m/^"([a-z]{4,})",/ ) {
   print "$1\n";
}
In [16]:
my $v = '"celle",ci';
if( $v =~ m/^"([a-z]{4,})",/ ) {
   print "$1\n";
}
Out[16]:
celle
1
In [17]:
my $v = 'et "celle",la';
if( $v =~ m/^"([a-z]{4,})",/ ) {
   print "$1\n";
}
In [2]:
my $v = '"ou",elle';
if( $v =~ m/^"([a-z]{4,})",/ ) {
   print "$1\n";
}

Explication des différentes réponses possibles pour le MCQ:

  • "cette" chaine : oubli de la ,
  • "celle",ci : réponse correcte
  • celle",la : " pas en première position
  • "ou",elle : pas 4 lettres

Fonctions

In [22]:
my $a = 3;
sub fonction{
    my ($a) = @_;
    return ($a+2,$a+1);
}
my ($b,$a) = fonction($a+2);
76

Explication des différentes réponses possibles pour le MCQ:

  • 3 : pas de prise en compte de la fonction
  • 4 : pas de prise en compte de $a+2 dans l'appel
  • 5 : pas de prise en compte de $a+1 dans return
  • 6 : réponse correcte
  • 7 : récupération de la mauvaise variable de sortie