Estruturas de controle

Apresentação

aula05.pdf

Exemplos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# exemplo01
#! /usr/bin/perl 
# script para testar a função defined

# criando variáveis

$scalar1 = 1;
$scalar2 = 0;
$scalar3 = "";
$scalar4; 

@array1 = ();
%hash1 = (); 

$temp = defined($scalar1);
print "Resultado do defined = $temp";

exit;

========

1
2
3
4
5
6
7
8
# exemplo02
# comandos testar a função undef

$temp1 = defined($scalar1); ## TRUE
print "Resultado do defined = $temp1\n";

$temp2 = undef($scalar1);   ## FALSE
print "Resultado do defined = $temp2\n";

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# exemplo03
# testando operacoes matematicas 
# comparacao 1
my $c = 5;
my $e = 5;
my $d = 20;

$temp = $c == $e; 
print "A comparacao 1 eh $temp.\n"; 

# comparacao 2

# $temp = $c == $d; 
# print "A comparacao 2 eh $temp.\n"; 

# comparacao 3

# $temp = $c <= $d; 
# print "A comparacao 3 eh $temp.\n"; 

# comparacao 4

# $temp = $c <=> $d; 
# print "A comparacao 4 eh $temp.\n"; ## -1, 0, 1

# comparacao 5 - contexto de "string"

# $temp = $c eq $d; 
# print "A comparacao 5 eh $temp.\n"; 

# comparacao 6 - contexto de "string"

# $temp = $c gt $d; 
# print "A comparacao 6 eh $temp.\n"; 

# comparacao 7 - contexto de "string"

# $temp = $c cmp $d; 
# print "A comparacao 7 eh $temp.\n"; ## -1, 0, 1

# comparacao 8 - contexto de "string"
# ordem alfabética

#$geneA = "FBgn2";
#$geneB = "FBgn100";

#$temp = $geneA cmp $geneB; 
#print "A comparacao 8 eh $temp.\n"; 

# comparacao 9 - contexto de "string"
# ordem alfabética

#$geneA = "FBgn002";
#$geneB = "FBgn100";

#$temp = $geneA cmp $geneB; 
#print "A comparacao 9 eh $temp.\n"; 

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# exemplo04
#! /usr/bin/perl 
# script para testar estruturas de controle

$seq = "ATGCGCGTAGCTCGTAGCTAGCTAGCTAGCT";
$avg_qual = 40;

if ($avg_qual > 30) {

   $seq_length = length($seq);

}

print "O tamanho da sequencia eh $seq_length.\n";

exit;

========

1
2
3
4
5
6
7
8
9
10
11
# exemplo05
# comando die()

$nota_do_aluno = 4.5;
$nota_de_corte = 5.0;

if ($nota_do_aluno < $nota_de_corte) {

   die "Aluno reprovado\n";

}

========

1
2
3
4
5
6
7
8
9
10
11
12
# exemplo06
# comando die()

@array_vazio = ();

$temp = pop(@array_vazio);

if (! $temp) {

   die "pop() nao deve ser usado em um array vazio\n"; 

}

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# exemplo07
# comparando dois hashes  

%coord_start = ("Gene1" => "100000",
                "Gene2" => "550000");
%coord_end   = ("Gene1" => "102000",
                "Gene2" => "556000");

$gene_alvo = "Gene1";

if ($coord_start{$gene_alvo}) {
   if ($coord_end{$gene_alvo}) {
      print "As coordenadas do $gene_alvo sao $coord_start{$gene_alvo}..$coord_end{$gene_alvo}. \n"; 
   }
}

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# exemplo08 
# operadores booleanos &&, ||  

%coord_start = ("Gene1" => "100000",
                "Gene2" => "550000");
%coord_end   = ("Gene1" => "102000",
                "Gene2" => "556000");

$gene_alvo = "Gene1";

if (($coord_start{$gene_alvo}) && ($coord_end{$gene_alvo})) {
   print "As coordenadas do $gene_alvo sao $coord_start{$gene_alvo}..$coord_end{$gene_alvo}. \n"; 
}


exit;

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# exemplo 09 
#! /usr/bin/perl 
# if() e else()

$nota_do_aluno = 10.0;
$nota_de_corte = 5.0;

if ($nota_do_aluno < $nota_de_corte) {

   die "Aluno reprovado\n";

}

print "O script não morreu!\n";


exit;

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# exemplo10 
# nota <  5,   reprovado 
# nota <= 7,   C
# nota <= 8.5, B
# nota >  8.5, A
# varias condicoes diferentes

print "\nExemplo 10:\n";

if ($nota_do_aluno < $nota_de_corte) {
   print "Aluno reprovado!\n";
   } else {
      if ($nota_do_aluno <= 7) { 
         print "C, regular!\n";
      } else {
         if ($nota_do_aluno <= 8.5) { 
            print "B, bom!\n";
      } else {
         print "A, excelente!\n";
      }
   }
}

========

Exercício

Exercício para entrega via e-mail. Informar os comandos para todos os itens. O exercício deverá estar em um arquivo no formato txt, como o nome NomeSobrenomeE04.txt (substituir NomeSobrenome pelo próprio nome, por exemplo, TatianaTorresE04.txt). Prazo: 07/09/2018

Exercício com condicionais em Perl:

  1. Um hash contém a cobertura resultante do sequenciamento de um genoma. Como chaves no hash, estão os nomes dos cromossomos e nos valores estão os valores de cobertura média para cada cromossomo. Um segundo hash contém o número de genes (valores) para cada cromossomo (chaves). O seu script deverá pegar um número de cromossomo informado pelo usuário e imprimir a cobertura desse cromossomo e o número de genes APENAS SE a cobertura for maior ou igual a 20. Se a cobertura for menor que vinte, o script deverá imprimir a seguinte mensagem “O cromossomo não tem corbertura suficiente para a analise pretendida”.

Atenção! Nem todos os números de cromossomos indicados pelo usuário estarão presentes nos hashes. Você deverá checar se eles existem ou não. Se não existir, informe ao usuário e termine o programa usando die().

Para testar o script, não é necessário que esses valores sejam reais. Invente valores para a cobertura.