Estruturas de controle
Apresentação
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:
- 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.