1 / 54

96-Summer 生物資訊程式設計實習 ( 二 )

96-Summer 生物資訊程式設計實習 ( 二 ). Bioinformatics with Perl 8/13~8/22 蘇中才 8/24~8/29 張天豪 8/31 曾宇鳯. Schedule. Programming Basic. Subroutine. Subroutine. #!/usr/bin/perl -w # hello1.pl : say hello sub hello { print &quot;Hello<br>&quot;; } &amp;hello; &amp;hello();. Quiz – the identical function name ?.

freira
Download Presentation

96-Summer 生物資訊程式設計實習 ( 二 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 96-Summer生物資訊程式設計實習(二) Bioinformatics with Perl 8/13~8/22 蘇中才 8/24~8/29 張天豪 8/31 曾宇鳯

  2. Schedule

  3. Programming Basic Subroutine

  4. Subroutine #!/usr/bin/perl -w # hello1.pl : say hello sub hello { print "Hello\n"; } &hello; &hello();

  5. Quiz – the identical function name ? #!/usr/bin/perl -w sub hello { print "Hello\n"; } sub hello { print "HELLO\n"; } &hello;

  6. Subroutine – with a counter #!/usr/bin/perl -w # hello2.pl : say hello with a counter my $counter=0; sub hello { $counter++; print "Hello ($counter)\n"; } &hello; &hello();

  7. Subroutine - parameters #!/usr/bin/perl -w # hello3.pl : say hello to someone with a counter my $counter=0; sub hello { my $name = $_[0]; #all arguments are stored in @_ $counter++; print "Hello,$name ($counter)\n"; } &hello( 'Wang’ ); &hello( "Kuo” ); &hello( "Tsao” );

  8. Subroutine – value return #!/usr/bin/perl -w # hello4.pl : value return my $counter=0; sub hello { my $name = $_[0]; # all parameters are stored in @_ $counter++; return "Hello,$name ($counter)\n"; } my $ret = &hello('Wang'); print "$ret"; $ret = &hello("Kuo"); print $ret; $ret = &hello("Tsao"); print $ret;

  9. Quiz – what is $ret ? #!/usr/bin/perl -w sub hello { print "Hello\n"; } my $ret = &hello; print “\$ret = $ret\n”;

  10. Variable – global/local #!/usr/bin/perl -w # variable.pl : global/local variable my $a = 0; sub max { my ($a, $b); ($a, $b) = @_; print "\$a in &max = $a\n"; if ($a > $b) { $a; } else { $b; } } print "\$a before calling &max = $a\n"; $a = &max(3,5); print "\$a after calling &max = $a\n";

  11. Maximum #!/usr/bin/perl -w # max.pl : get the largest number among a list of numbers my $maximum = &max(1, 10, 5, 7, 4); print "the largest number is $maximum\n"; sub max { my $max_number = shift @_; while ($number = shift @_) { if ($number > $max_number) { $max_number = $number; } } $max_number; }

  12. Return #!/usr/bin/perl # return.pl : use 'return' to stop the subroutine and assign the return value my @names = qw / Wang Kuo Tsao Keng Lo Huang/; my $result = &which_one_is("Tsao", @names); if ($result eq -1) { print "Tsao isn't a pitcher\n"; } else { $result++; print "Tsao is the $result-th pitcher\n"; } sub which_one_is { my ($name, @list) = @_; foreach $idx (0..$#list) { if ($name eq $list[$idx]) { return $idx; } } -1; # $name can't be found among @list }

  13. declaration of variable &hello; &a; &hello; &b; &hello; &c; &hello; #!/usr/bin/perl -w $counter = 1; sub hello { print "$counter\n"; } sub a { local $counter = 2; &hello; } sub b { my $counter = 3; &hello; } sub c { $counter = 4; &hello; }

  14. strict #!/usr/bin/perl -w # strict.pl : use strict to enhance the error checking power of compiler use strict; $taipei101 = 509.2; print "Taipei 101 has $taipei1O1 meter\n";

  15. Programming Basic Control statement

  16. Control statement • if • unless • ?: • while • until • for • foreach

  17. Control statement - if if (true) { # true } else { # false } #!/usr/bin/perl -w # if1.pl : if statement my $proteinA = 300; #protein volume my $proteinB = 200; if ($proteinA == $proteinB) { print "Protein A is the same as Protein B\n"; } else { print "Protein A isn't the same as Protein B\n"; }

  18. Control statement - if if (...) { ... } elsif (...) { ... } else { ... } #!/usr/bin/perl -w # if2.pl : if statement my $proteinA = 300; #protein volume my $proteinB = 200; if ($proteinA > $proteinB) { print "Protein A is larger than Protein B\n"; } elsif ($proteinA < $proteinB) { print "Protein A is smaller than Protein B\n"; } else { print "Protein A is the same as Protein B\n"; }

  19. Control statement - if ... if (true); #!/usr/bin/perl -w # if3.pl : if statement my $proteinA = 300; #protein volume my $proteinB = 200; print "A is the same as B\n" if ($proteinA == $proteinB);

  20. Control statement - unless unless (true) { # false } else { # true } #!/usr/bin/perl -w # unless.pl : unless statement my $proteinA = 300; #protein volume my $proteinB = 200; unless ($proteinA == $proteinB) { print "Protein A isn't the same as Protein B\n"; } else { print "Protein A is the same as Protein B\n"; }

  21. Control statement - ?: #!/usr/bin/perl -w # if4.pl : if statement my $type = "DNA"; # "DNA" or "RNA" my $bp; if ($type eq "DNA") { $bp = "ATCG"; } else { $bp = "AUCG"; } print "$type : $bp\n"; $bp = ($type eq "DNA") ? "ATCG" : "AUCG"; print "$type : $bp\n";

  22. Control statement - while #!/usr/bin/perl -w # while1.pl : count 1 to 10 with while statement my $sum = 0; my $current = 1; while ($current <= 10) { $sum = $sum + $current; $current++; } print "The summary from 1 to 10 is $sum\n";

  23. Control statement - while #!/usr/bin/perl -w # while2.pl : count 1 to 10 with while statement my $sum = 0; my $current = 1; do { $sum = $sum + $current; $current++; } while ($current <= 10); print "The summary from 1 to 10 is $sum\n";

  24. Control statement - while #!/usr/bin/perl -w # while3.pl : count 1 to 10 with while statement my $sum = 0; my $current = 1; $sum = $sum + $current++ while ($current <= 10); print "The summary from 1 to 10 is $sum\n";

  25. Control statement - while #!/usr/bin/perl -w # while4.pl : count 1 to 10 with while statement my $sum = 0; my $current = 1; while ($current <= 10) { $sum = $sum + $current; } continue { $current++; } print "The summary from 1 to 10 is $sum\n";

  26. Control statement - until #!/usr/bin/perl -w # until.pl : count 1 to 10 with until statement my $sum = 0; my $current = 1; until ($current > 10) { $sum = $sum + $current; $current++; } print "The summary from 1 to 10 is $sum\n";

  27. Control statement - for for ( initialise; test; increment ) { statement(s); } #!/usr/bin/perl -w # for1.pl : count 1 to 10 with for statement my $sum = 0; for(my $current=1;$current<=10;$current++) { $sum = $sum + $current; } print "The summary from 1 to 10 is $sum\n";

  28. Control statement - for #!/usr/bin/perl -w # for2.pl : show each pitcher by for statement my @names = qw / Wang Kuo Tsao Keng Lo Huang/; for(my $idx=0;$idx<=$#names;$idx++) { print "$idx : $names[$idx]\n"; }

  29. Control statement - foreach #!/usr/bin/perl -w # foreach.pl : show each pitcher by foreach statement my @names = qw / Wang Kuo Tsao Keng Lo Huang/; my $idx = 0; foreach $name (@names) { print "$idx : $name\n"; $idx++; }

  30. Control statement - foreach #!/usr/bin/perl -w # for3.pl : show each pitcher by foreach statement my @names = qw / Wang Kuo Tsao Keng Lo Huang/; my $idx = 0; for $name (@names) { print "$idx : $name\n"; $idx++; }

  31. Infinite control statement #!/usr/bin/perl -w # infinite.pl : infinite loop, and Ctrl+C to stop it for(;;) { print "for\n"; } while (1) { print "while\n"; } until (0) { print "until\n"; }

  32. Loop control - last #!/usr/bin/perl -w # last.pl : stop infinite loop by last while(1) { if ($counter++ >= 10) { last; } print "while($counter)\n"; } #################################### $counter=0; while ($counter++ < 10) { print "while($counter)\n"; }

  33. Loop control - next #!/usr/bin/perl -w # next.pl : skip loop control by next $counter=0; while ($counter++ < 10) { if ($counter == 5) { next; } print "while($counter)\n"; }

  34. Loop control - redo #!/usr/bin/perl -w # redo.pl : redo loop control by redo $counter=0; while ($counter++ < 10) { if ($counter == 5) { $counter++; redo; } print "while($counter)\n"; }

  35. Exercise Control statement

  36. Exercise • 1+2+…+1000 = ? • Using “while” • Using “until” • Using “for” • Using “foreach”

  37. Programming Basic Logical operator

  38. Logical operator • and : && • or : || • not : ! • Examples • while (($a > 10) && ($a % 2 == 0)) { …} • If (($a > 10) || ($a % 2 == 0)) { … } • If (! defined($a)) { … }

  39. Logical operator – and/or/not #!/usr/bin/perl -w # logical.pl : if statement my $proteinA = 300; #protein volume my $proteinB = 300; my $proteinC; if (($proteinA > 200)&&($proteinA eq $proteinB)) { print "Protein A is larger than 200 and the same as Protein B\n"; } if (($proteinA > 400)||($proteinA eq $proteinB)) { print "Protein A is larger than 400 or the same as Protein B\n"; } if (! defined($proteinC)) { print "Protein C isn't declared\n"; }

  40. Programming Basic INPUT/OUTPUT

  41. Standard Input/Output • Input • STDIN • OUTPUT • STDOUT • ERROR • STDERR Don’t need to open or close it

  42. Standard Input - <STDIN> #! /usr/bin/perl -w # getlines1.pl : like the Unix-command 'cat' while ( $line = <STDIN> ) { print $line; } ./getline1.pl < logical.pl cat logical.pl | ./getlines1.pl -

  43. Diamond - <> #! /usr/bin/perl -w # getlines2.pl : like the Unix-command 'cat' while ( $line = <> ) { print $line; } ./getline2.pl logical.pl or ./getline2.pl < logical.pl

  44. $_ #! /usr/bin/perl -w # getlines3.pl : like the Unix-command 'cat' while ( <> ) { print $_; } ./getline3.pl logical.pl while.pl redo.pl or ./getline3.pl *.pl

  45. Invocation argument - @ARGV #! /usr/bin/perl -w # getlines4.pl : like the Unix-command 'cat' foreach (@ARGV) { print "[$_]\n"; } while ( <> ) { print $_; } ./getline4.pl logical.pl while.pl redo.pl Or ./getline4.pl *.pl

  46. Standard Input/Output #!/usr/bin/perl -w # stdin.pl : read information from STDIN, and output them into STDOUT and STDERR while ($line = <STDIN> ) { if ($line eq "ERROR\n") { print STDERR “STDERR:$line"; } elsif ($line eq "QUIT\n") { last; } else { print STDOUT “STDOUT:$line"; } }

  47. Standard Input/Output #!/usr/bin/perl -w # chomp.pl : read information from STDIN, and output them into STDOUT and STDERR while ($line = <STDIN>) { chomp($line); if ($line eq "ERROR") { print STDERR "$line\n"; } elsif ($line eq "QUIT") { last; } else { print STDOUT "$line\n"; } }

  48. parameters of printf

  49. printf #! /usr/bin/perl -w # printf.pl : user-defined type for variable output my $var1 = 1; my $var2 = 1.2; my $var3 = 3.2E10; my $var4 = 65; my $var5 = 'ABC'; print ("$var1 $var2 $var3 $var4 $var5\n"); printf("%d %f %e %c %s\n",$var1, $var2, $var3, $var4, $var5); printf("[%5d] [%5.2f] [%10.2e] [%5c] [%5s]\n",$var1, $var2, $var3, $var4, $var5); printf("[%-5d] [%-5.2f] [%-10.2e] [%-5c] [%-5s]\n",$var1, $var2, $var3, $var4, $var5);

  50. printf - output 1 1.2 32000000000 65 ABC 1 1.200000 3.200000e+10 A ABC [ 1] [ 1.20] [ 3.20e+10] [ A] [ ABC] [1 ] [1.20 ] [3.20e+10 ] [A ] [ABC ]

More Related