Introduction à la
 programmation
                         Pierre Poulain
        pierre.poulain@univ-paris-diderot.fr


                                    09/2011
Programmer ?
Donner des ordres
Pourquoi ?
Stocker
Trier
Répéter
Exemple
Combien y a-t-il d'alanines
dans cette protéine ?

GWGAWILAGAGA
Combien y a-t-il d'alanines
dans cette protéine ?

GWGAWILAGAGA
   1   2 3 4
Et dans celle-ci ?
MRARPRPRPLWATVLALGALAGVGVGGPNICTTRGVSSCQQCLAVSPMCAWCSDEALPLG
SPRCDLKENLLKDNCAPESIEFPVSEARVLEDRPLSDKGSGDSSQVTQVSPQRIALRLRP
DDSKNFSIQVRQVEDYPVDIYYLMDLSYSMKDDLWSIQNLGTKLATQMRKLTSNLRIGFG
AFVDKPVSPYMYISPPEALENPCYDMKTTCLPMFGYKHVLTLTDQVTRFNEEVKKQSVSR
NRDAPEGGFDAIMQATVCDEKIGWRNDASHLLVFTTDAKTHIALDGRLAGIVQPNDGQCH
VGSDNHYSASTTMDYPSLGLMTEKLSQKNINLIFAVTENVVNLYQNYSELIPGTTVGVLS
MDSSNVLQLIVDAYGKIRSKVELEVRDLPEELSLSFNATCLNNEVIPGLKSCMGLKIGDT
VSFSIEAKVRGCPQEKEKSFTIKPVGFKDSLIVQVTFDCDCACQAQAEPNSHRCNNGNGT
FECGVCRCGPGWLGSQCECSEEDYRPSQQDECSPREGQPVCSQRGECLCGQCVCHSSDFG
KITGKYCECDDFSCVRYKGEMCSGHGQCSCGDCLCDSDWTGYYCNCTTRTDTCMSSNGLL
CSGRGKCECGSCVCIQPGSYGDTCEKCPTCPDACTFKKECVECKKFDRGALHDENTCNRY
CRDEIESVKELKDTGKDAVNCTYKNEDDCVVRFQYYEDSSGKSILYVVEEPECPKGPDIL
VVLLSVMGAILLIGLAALLIWKLLITIHDRKEFAKFEEERARAKWDTANNPLYKEATSTF
TNITYRGT

                         Glycoprotéine plaquettaire humaine ß3
Un ordinateur
très rapide
beaucoup
de mémoire
mais bête
décomposer




un problème complexe
en éléments simples
Algorithme
Algorithme humain

        GWGAWILAGAGA
           1   2 3 4
Pour chaque acide aminé de la séquence,

si l'acide aminé est A

alors on compte une alanine de plus.
Algorithme Python

sequence = "GWGAWILAGAGA"
nombre_ala = 0

for acide_amine in sequence:
    if acide_amine == "A":
        nombre_ala = nombre_ala + 1

print nombre_ala
Autres langages ?
Java
package comptagealanines;
public class Main {
  public static void main(String[] args) {

        String sequence = "GWGAWILAGAGA";
        int nombre_ala = 0 ;

        for (int i = 0 ; i < sequence.length(); i++ ){
          if (sequence.charAt( i ) == 'A'){
            nombre_ala = nombre_ala + 1;
          }
        }

        System.out.println(nombre_ala);
    }
}
Perl
my @sequence = split('','GWGAWILAGAGA');
my $nombre_ala = 0 ;

foreach my $acide_amine (@sequence)
{
  if ($acide_amine eq 'A')
  {
    $nombre_ala = $nombre_ala + 1;
  }
}

print "$nombre_alan";
Javascript
<script>
var sequence = "GWGAWILAGAGA";
var nombre_ala = 0;

for(i=0; i<sequence.length; i++) {
      if(sequence[i].toUpperCase() == "A") {
            nombre_ala = nombre_ala + 1;
      }
}

window.alert("Nombre de A : " + nombre_ala);
</script>
PHP
<?php
        $sequence = "GWGAWILAGAGA";
        $nombre_ala = 0;

        for($i=0; $i<strlen($sequence); $i++) {
              if(strtoupper($sequence[$i]) == "A") {
                    $nombre_ala = $nombre_ala + 1;
              }
        }
        echo "Nombre de A : ".$nombre_ala;
?>
C#
using   System;
using   System.Collections.Generic;
using   System.Linq;
using   System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string sequence = "GWGAWILAGAGA";
            int nombre_ala = 0;
            for (int i = 0; i < sequence.Length; i++)
            {
                if (sequence[i].ToString().ToUpper() == "A")
                {
                    nombre_ala = nombre_ala + 1;
                }
            }
            Console.WriteLine("Nombre de A : " + nombre_ala.ToString());
        }
    }
}
Points communs
1. Variables
2. Tests
3. Boucles
Différences
 ; { } @ $

using public class
static void
Compilation

C, C++, C#, Fortran

 code    langage   programme
source   machine   exécutable
Interprétation   (bytecode)


Java, Python, Perl

    code    bytecode
   source    (caché)
Interprétation

Bash, Javascript, PHP

        code source
     (ligne par ligne)
Illustration bioinfo 1
Ensembl
détection de gènes
Illustration bioinfo 2
sHSP




P. Poulain, J.-C. Gelly, and D. Flatters, Detection and Architecture of Small Heat Shock Protein Monomers, PLoS ONE 5: e9990 (2010).
Biologie Informatique @ P7


   Unix (bash), R, C      L3

   Python, C, (R)         M1

   Python, Java, C, (R)   M2
Conclusion
Investissez !
Forgez !
Facilitez-vous la vie !
Amusez-vous !
bio   informatique
Crédits graphiques
  PPDIGITAL (Flickr)
                                 TurboMilk (Findicons)


  Katherine Donaldson (Flickr)
                                 Wilsoninc (Findicons)

  Ralphbijker (Flickr)

                                 fe2cruz (Flickr)
  Olivcris (Flickr)
                                 713 Avenue (Flickr)

  Nicobunu (Openclipart.org)
                                 K Lee (Wikipedia)


  VisualPharm (Findicons)        selva (Flickr)
Crédits graphiques (2)
  Nardino (Flickr)            Ennor (Flickr)


  AlanHeitz (Flickr)          Dahon (Flickr)


  Foxymoron (Flickr)          Joe Rollerfan (Flickr)



  JoeShlabotnik (Flickr)      Liz Marion (Flickr)

  doi:10.1371/
  journal.pone.0009990.g001
                              beeeeeker (Flickr)
  JoshuaDavisPhotography
  (Flickr)

Introduction à la programmation

  • 1.
    Introduction à la programmation Pierre Poulain pierre.poulain@univ-paris-diderot.fr 09/2011
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    Combien y a-t-ild'alanines dans cette protéine ? GWGAWILAGAGA
  • 10.
    Combien y a-t-ild'alanines dans cette protéine ? GWGAWILAGAGA 1 2 3 4
  • 11.
    Et dans celle-ci? MRARPRPRPLWATVLALGALAGVGVGGPNICTTRGVSSCQQCLAVSPMCAWCSDEALPLG SPRCDLKENLLKDNCAPESIEFPVSEARVLEDRPLSDKGSGDSSQVTQVSPQRIALRLRP DDSKNFSIQVRQVEDYPVDIYYLMDLSYSMKDDLWSIQNLGTKLATQMRKLTSNLRIGFG AFVDKPVSPYMYISPPEALENPCYDMKTTCLPMFGYKHVLTLTDQVTRFNEEVKKQSVSR NRDAPEGGFDAIMQATVCDEKIGWRNDASHLLVFTTDAKTHIALDGRLAGIVQPNDGQCH VGSDNHYSASTTMDYPSLGLMTEKLSQKNINLIFAVTENVVNLYQNYSELIPGTTVGVLS MDSSNVLQLIVDAYGKIRSKVELEVRDLPEELSLSFNATCLNNEVIPGLKSCMGLKIGDT VSFSIEAKVRGCPQEKEKSFTIKPVGFKDSLIVQVTFDCDCACQAQAEPNSHRCNNGNGT FECGVCRCGPGWLGSQCECSEEDYRPSQQDECSPREGQPVCSQRGECLCGQCVCHSSDFG KITGKYCECDDFSCVRYKGEMCSGHGQCSCGDCLCDSDWTGYYCNCTTRTDTCMSSNGLL CSGRGKCECGSCVCIQPGSYGDTCEKCPTCPDACTFKKECVECKKFDRGALHDENTCNRY CRDEIESVKELKDTGKDAVNCTYKNEDDCVVRFQYYEDSSGKSILYVVEEPECPKGPDIL VVLLSVMGAILLIGLAALLIWKLLITIHDRKEFAKFEEERARAKWDTANNPLYKEATSTF TNITYRGT Glycoprotéine plaquettaire humaine ß3
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    Algorithme humain GWGAWILAGAGA 1 2 3 4 Pour chaque acide aminé de la séquence, si l'acide aminé est A alors on compte une alanine de plus.
  • 20.
    Algorithme Python sequence ="GWGAWILAGAGA" nombre_ala = 0 for acide_amine in sequence: if acide_amine == "A": nombre_ala = nombre_ala + 1 print nombre_ala
  • 21.
  • 22.
    Java package comptagealanines; public classMain { public static void main(String[] args) { String sequence = "GWGAWILAGAGA"; int nombre_ala = 0 ; for (int i = 0 ; i < sequence.length(); i++ ){ if (sequence.charAt( i ) == 'A'){ nombre_ala = nombre_ala + 1; } } System.out.println(nombre_ala); } }
  • 23.
    Perl my @sequence =split('','GWGAWILAGAGA'); my $nombre_ala = 0 ; foreach my $acide_amine (@sequence) { if ($acide_amine eq 'A') { $nombre_ala = $nombre_ala + 1; } } print "$nombre_alan";
  • 24.
    Javascript <script> var sequence ="GWGAWILAGAGA"; var nombre_ala = 0; for(i=0; i<sequence.length; i++) { if(sequence[i].toUpperCase() == "A") { nombre_ala = nombre_ala + 1; } } window.alert("Nombre de A : " + nombre_ala); </script>
  • 25.
    PHP <?php $sequence = "GWGAWILAGAGA"; $nombre_ala = 0; for($i=0; $i<strlen($sequence); $i++) { if(strtoupper($sequence[$i]) == "A") { $nombre_ala = $nombre_ala + 1; } } echo "Nombre de A : ".$nombre_ala; ?>
  • 26.
    C# using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string sequence = "GWGAWILAGAGA"; int nombre_ala = 0; for (int i = 0; i < sequence.Length; i++) { if (sequence[i].ToString().ToUpper() == "A") { nombre_ala = nombre_ala + 1; } } Console.WriteLine("Nombre de A : " + nombre_ala.ToString()); } } }
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
     ; { }@ $ using public class static void
  • 33.
    Compilation C, C++, C#,Fortran code langage programme source machine exécutable
  • 34.
    Interprétation (bytecode) Java, Python, Perl code bytecode source (caché)
  • 35.
    Interprétation Bash, Javascript, PHP code source (ligne par ligne)
  • 36.
  • 37.
  • 38.
  • 39.
    sHSP P. Poulain, J.-C.Gelly, and D. Flatters, Detection and Architecture of Small Heat Shock Protein Monomers, PLoS ONE 5: e9990 (2010).
  • 40.
    Biologie Informatique @P7 Unix (bash), R, C L3 Python, C, (R) M1 Python, Java, C, (R) M2
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 47.
    bio informatique
  • 48.
    Crédits graphiques PPDIGITAL (Flickr) TurboMilk (Findicons) Katherine Donaldson (Flickr) Wilsoninc (Findicons) Ralphbijker (Flickr) fe2cruz (Flickr) Olivcris (Flickr) 713 Avenue (Flickr) Nicobunu (Openclipart.org) K Lee (Wikipedia) VisualPharm (Findicons) selva (Flickr)
  • 49.
    Crédits graphiques (2) Nardino (Flickr) Ennor (Flickr) AlanHeitz (Flickr) Dahon (Flickr) Foxymoron (Flickr) Joe Rollerfan (Flickr) JoeShlabotnik (Flickr) Liz Marion (Flickr) doi:10.1371/ journal.pone.0009990.g001 beeeeeker (Flickr) JoshuaDavisPhotography (Flickr)