{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Rappels pour les cours de BioPerl\n", "\n", "Codes correspondant aux tests des connaissances avec des questionnaires à choix multiples dans les [Slides](https://github.com/bebatut-edu/bioperl-cm)\n", "\n", "## Représentation des données\n", "\n", "### Données simples" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "$nombre = 1;" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "11\n" ] } ], "source": [ "$nombre = $nombre + 10;" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "nombre : \n" ] } ], "source": [ "$chaine = \"nombre : \";" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "nombre : 11\n" ] } ], "source": [ "$chaine = $chaine.$nombre;" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "chop($chaine);" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "nombre : 1" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "print $chaine" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ\n", "\n", "- `nombre : 11` : pas de prise en compte de `chop`\n", "- `nombre : 1` : réponse correcte\n", "- `ombre : 11` : mauvaise interprétation de `chop`\n", "- `nombre :` : pas de prise en compte de la concaténation des chaines de caractères et des nombres\n", "\n", "\n", "### Tableaux" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "12\n" ] } ], "source": [ "$nombre= 12;" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "13 14\n" ] } ], "source": [ "$chaine = ($nombre+1).\" \".($nombre+2);" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "1213 1413 14\n" ] } ], "source": [ "@tab = ($nombre, ($chaine,$chaine));" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "13 14" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "print $tab[1];" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ\n", "\n", "- un tableau contenant 2 éléments `$chaine` : pas de prise en compte de l'applatissement des tableaux imbriqués \n", "- `$chaine` : réponse correcte \n", "- `$nombre` : oubli du début des index d'un tableau à 0 \n", "- rien" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tableaux associatifs" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "id11id2chaine\n" ] } ], "source": [ "%hash = (\"id1\" => 1, \"id2\" => \"chaine\");" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "id\n" ] } ], "source": [ "$id = \"id\";" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "je ne sais pas\n" ] } ], "source": [ "$hash{$id} = \"je ne sais pas\";" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "id11\n" ] } ], "source": [ "@tab = each(%hash);" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "id2chaine\n" ] } ], "source": [ "@tab = each(%hash);" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "chaine" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "print $tab[1];" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ\n", "\n", "- rien : pas de prise en compte de l'applatissement des tableaux imbriqués \n", "- `id2` : mauvaise interprétation de `each`\n", "- `1` : pas prise en compte du changement d'état à chaque fois que `each` est appelé \n", "- `chaine` : réponse correct" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Structures de contrôle\n", "#### Structure de test" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "chaine\n" ] } ], "source": [ "$c1 = \"chaine\";" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "$t = $c1 eq \"chaine2\";" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "if ( $t ){\n", " print \"1\";\n", "}elsif ( 1 < 10 & 2 > 3 ){\n", " print \"2\";\n", "}elsif ( 2 | \"0\" ){\n", " print \"3\";\n", "}else{\n", " print \"4\";\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ:\n", "\n", "- `1` : mauvaise interprétation du test d'égalité de 2 chaines\n", "- `2` : mauvaise interprétation du `&`\n", "- `3` : bonne réponse\n", "- `4` : mauvaise interprétation du `|` ou des booléens" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Boucles" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "22210100\n" ] } ], "source": [ "@liste = (\"2\",\"22\", \"10\", \"100\")" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2 3\n", "22 22\n", "10 11\n", "100 101\n" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foreach $_ (@liste)\n", "{\n", " print $_;\n", " if ( $_ lt \"20\"){\n", " $_ = $_ + 1;\n", " }\n", " print \" \".$_;\n", " print \"\\n\";\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ:\n", "\n", "- `2 22 11 100` : pas compréhension de `100` < `20`\n", "- `3 22 11 101` : bonne réponse\n", "- `2 22 10 100` : pas d'ajout de 1 aux valeurs inférieures à 20\n", "- `2 23 10 100` : pas bonne interprétation de `lt`" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Manipulation de fichiers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ:\n", "\n", "- `if -s file {open(FILE, \">file\"); write(\"text\"); close(FILE) }` : `>>` pour ajouter à un fichier\n", "- `if -z file {open(FILE, \">>file\"); write(\"text\"); close(FILE) }` : `z` teste si un fichier est vide\n", "- `if -w file {open(FILE, \">>file\"); write(\"text\"); close(FILE) }` : `w` teste les droits en écriture\n", "- `if -s file {open(FILE, \">>file\"); write(\"text\"); close(FILE) }` : réponse correcte" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Expressions régulières" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "my $v = '\"cette\" chaine';\n", "if( $v =~ m/^\"([a-z]{4,})\",/ ) {\n", " print \"$1\\n\";\n", "}" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "celle\n" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "my $v = '\"celle\",ci';\n", "if( $v =~ m/^\"([a-z]{4,})\",/ ) {\n", " print \"$1\\n\";\n", "}" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "my $v = 'et \"celle\",la';\n", "if( $v =~ m/^\"([a-z]{4,})\",/ ) {\n", " print \"$1\\n\";\n", "}" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "my $v = '\"ou\",elle';\n", "if( $v =~ m/^\"([a-z]{4,})\",/ ) {\n", " print \"$1\\n\";\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ:\n", "\n", "- `\"cette\" chaine` : oubli de la `,`\n", "- `\"celle\",ci` : réponse correcte\n", "- `celle\",la` : `\"` pas en première position\n", "- `\"ou\",elle` : pas 4 lettres" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fonctions" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "76\n" ] } ], "source": [ "my $a = 3;\n", "sub fonction{\n", " my ($a) = @_;\n", " return ($a+2,$a+1);\n", "}\n", "my ($b,$a) = fonction($a+2);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Explication des différentes réponses possibles pour le MCQ:\n", "\n", "- `3` : pas de prise en compte de la fonction\n", "- `4` : pas de prise en compte de `$a+2` dans l'appel\n", "- `5` : pas de prise en compte de `$a+1` dans return\n", "- `6` : réponse correcte\n", "- `7` : récupération de la mauvaise variable de sortie" ] } ], "metadata": { "kernelspec": { "display_name": "IPerl 0.006", "language": "perl", "name": "iperl" }, "language_info": { "file_extension": ".pl", "mimetype": "text/x-perl", "name": "perl", "version": "5.16.0" } }, "nbformat": 4, "nbformat_minor": 0 }