Categorias
Introdução à Programação para Bioinformática com Biopython

Comandos condicionais

Capítulo 2

Este conteúdo faz parte do livro “Introdução à Programação para Bioinformática com Biopython“. Você pode adquirir a versão impressa desse livro aqui ou a versão para Kindle aqui. Para nos citar, consulte este link.

Aprendemos no capítulo anterior como determinar se um número é par ou ímpar utilizando o operador módulo, entretanto seria possível avisar ao usuário se um determinado número digitado é par ou ímpar? Sim, é possível através dos comandos condicionais if, elif e else.

O comando if (na tradução literal para o português “se”) realiza testes condicionais, e assim permite que blocos de comando sejam executados caso uma condição testada seja comprovada como verdadeira. Diferente de outras linguagens de programação, que usam o else if, em Python, blocos condicionais encadeados são aninhados através da palavra reservada elif, que permite que uma condição seja testada caso o valor da validação anterior obtenha um resultado falso, e assim permite que sejam utilizados quantos testes forem necessários. Uma vez realizados todos os testes, caso nenhum deles seja verdadeiro, o bloco de dados da instrução else será executado.

Podemos compreender então que os comandos condicionais analisam se uma determinada condição imposta é verdadeira ou falsa, e permitem que decisões diferentes sejam tomadas de acordo com os dados validados. Observe o exemplo:

'''
Titulo: par_ou_impar.py
Funcao: determinar se um numero eh par ou impar
'''
 
# Recebe um numero digitado pelo usuario
num = input("Digite um numero: ")	
resto = num % 2 
 
# Testa se o numero eh par ou impar
if resto == 0:
	print("O numero digitado eh par." )
else:
	print("O numero digitado eh impar." )

No exemplo mostrado acima, o script recebe um número digitado pelo usuário, calcula o resto e define se o resto da divisão do número por 2 é 0. Se sim ele retorna uma mensagem afirmando que o número é par, se não, ele retorna uma mensagem afirmando que o número é ímpar. Nesse exemplo, o comando else: pode ser substituído por “if resto == 1:”.

Durante a execução de um comando condicional três fatores devem ser analisados: (i) o que o código deverá fazer e como; (ii) a indentação do código; e (iii) operadores lógicos e condicionais.

O que o código deverá fazer e como: quando utilizar um comando condicional deve-se primeiro planejar o que o código deverá fazer para em seguida escrever o código. Um mesmo código pode ser escrito de diversas maneiras, obtendo o mesmo resultado ao final. No exemplo acima, o comando if resto == 0: é utilizado para verificar se o número recebido pela variável num é par. Em seguida, o comando else: verifica se o comando if anterior foi executado com sucesso, senão ele executa outro comando. Entretanto esse comando poderia se escrito de outra forma, utilizando mais uma vez o comando if, só que desta vez verificando se resto é igual a 1. Lembre-se, um programador deve escrever um código da maneira mais simples possível.

A indentação do código: quando o comando if é executado todos os comandos presentes dentro do bloco serão executados apenas se a condição for cumprida. Em Python, os blocos são definidos pela indentação do código, ou seja, pela organização do código. Um bloco inicia-se com o sinal dois pontos “:”, a partir desse sinal todos os comandos presentes no bloco devem ser indicados por um espaço no início da linha dado pela tecla TAB (ou por uma série de espaços, como por exemplo, quatro espaços em branco).

Operadores relacionais e lógicos: operadores relacionais são utilizados para comparações, e assim em comandos condicionais, para detectar se uma determinada condição é verdadeira ou não. Operadores lógicos podem ser utilizados para testar duas ou mais condições ao mesmo tempo.

Operadores relacionais
Operador Significado
= atribui o valor
==igual a
>maior que
< menor que
>=maior ou igual a
<=menor ou igual a
!=diferente de

Observe que o operador “=” (recebe valor) não é um operador relacional e sim um operador de atribuição, entretanto foi inserido nessa lista para compará-lo com o operador “==” (igual a).

Operadores lógicos

and

conector “e”: valida se duas condições são verdadeiras

or

conector “ou”: valida se pelo menos uma das condições é verdadeira.

O operador and executa o bloco condicional se as duas condições são verdadeiras, enquanto o operador or executa o bloco condicional se pelo menos uma das operações for verdadeira.

Exercício: construindo uma calculadora

Agora que aprendemos a utilizar comandos condicionais, podemos utilizá-los junto aos operadores matemáticos e construir uma aplicação um pouco mais avançada: uma calculadora.

Primeiramente devemos pensar: o que nossa calculadora deve fazer?

  1. Receber dois números digitados pelo usuário e o sinal da operação requisitada;
  2. Realizar as operações matemáticas (vamos definir que nossa calculadora faça apenas operações de soma, subtração, divisão e multiplicação);
  3. Exibir o resultado na tela.
'''
Titulo: calculadora.py
Funcao: efetua somas, subtracoes, divisoes e multiplicacoes
'''
 
print("CALCULADORA")
 
num1 = input("Digite o primeiro numero: ")
 
operador = input("Digite a operacao desejada \
(1 para soma, 2 para subracao, 3 para divisao e \
4 para multiplicacao): ")
 
num2 = input("Digite o segundo numero: ")
 
# Determinando qual o operador foi utilizado
if operador == 1:
	operacao = num1 + num2
 
if operador == 2:
	operacao = num1 - num2
 
if operador == 3:
	operacao = num1 / num2
 
if operador == 4:
	operacao = num1 * num2
 
print("Resultado: ")
 
print(operacao)

Ainda podemos aperfeiçoar nossa calculadora validando o tipo de entrada digitada pelo usuário. Veja como ficaria:

'''
Titulo: calculadora.py
Funcao: efetua somas, subtracoes, divisoes e multiplicacoes
'''
 
print("CALCULADORA")
 
num1 = input("Digite o primeiro numero: ")
 
operador = input("Digite a operacao desejada \
(1 para soma, 2 para subracao, 3 para divisao e \
4 para multiplicacao): ")
 
num2 = input("Digite o segundo numero: ")
 
# Determinando qual o operador foi utilizado
if operador == 1:
	operacao = num1 + num2
 
elif operador == 2:
	operacao = num1 - num2
 
elif operador == 3:
	operacao = num1 / num2
 
elif operador == 4:
	operacao = num1 * num2
 
else:
	operacao = "Operador invalido. Use: 1, 2, 3 ou 4"
 
print("Resultado: ")
 
print(operacao)

Nesse exemplo, utilizamos o comando else para avaliar se nenhum dos requisitos anteriores for cumprido. O comando if é utilizado apenas na primeira condição, em seguida, os comandos elif são utilizados, indicando dependência de que condições anteriores não tenham sido cumpridas.

Exercício com operadores relacionais e lógicos

No exemplo a seguir pediremos que o usuário digite sua idade e em seguida tentaremos decidir se o usuário pode votar ou não.

idade = int(raw_input("Digite usa idade: "))
 
if idade >= 0 and idade < 16:
	print("Voce nao pode votar!")
elif (idade >= 16 and idade < 18) or idade >= 70:
	print("Voto opcional!")
elif idade >= 18 and idade < 70:
	print("Voto obrigatorio!")
else:
	print("Idade invalida!")

Observe que inicialmente recebemos a idade do indivíduo de uma nova maneira, utilizando duas funções: raw_input( ) para receber o valor digitado pelo usuário, e int( ) para converter o valor digitado para inteiro. A seguir verificamos se o indivíduo possui mais do que 0 anos e menos do que 16 anos.

As condições “idade >= 16 and idade < 18” só serão válidas se o valor presente em idade atender a ambas. O comando condicional ainda seria válido se “(idade >= 70)”, devido ao uso do operador “or”.

Ao final utilizamos o comando else para imprimir uma mensagem caso o usuário digite algum valor que não seja um número inteiro. Um bom código deve prever possíveis erros de execução pelo usuário e imprimir mensagens de aviso.

Quer aprender mais? Conheça nossos cursos profissionalizantes à partir de R$19,99:

Livro Introdução à Programação para Bioinformática com Biopython

Capítulo 1
Introdução ao Python

Capítulo 2
Comandos condicionais

Capítulo 3
Laços de repetição

Capítulo 4
Trabalhando com strings

Capítulo 5
Listas

Capítulo 6
Manipulando arquivos

Capítulo 7
Funções

Capítulo 8
Princípios da orientação a objetos

Capítulo 9
Introdução ao Biopython

Capítulo 10
Sequências

Capítulo 11
BLAST

Capítulo 12
PDB

Capítulo 13
Visualização de dados em Python

Capítulo 14
Outras coisas interessantes que se pode fazer com Biopython

Capítulo 15
Hierarquia do Biopython

Por favor, nos cite:

MARIANO, D. C. B.; BARROSO, J. R. P. M. ; CORREIA, T. S. ; de MELO-MINARDI, R. C. . Introdução à Programação para Bioinformática com Biopython. 3. ed. North Charleston, SC (EUA): CreateSpace Independent Publishing Platform, 2015. v. 1. 230p .

Por Diego Mariano

Doutor em Bioinformática pela Universidade Federal de Minas Gerais com atuação na área de ciência de dados e aprendizado de máquina aplicados ao aperfeiçoamento de enzimas usadas na produção de biocombustíveis. Mestre em Bioinformática, também pela UFMG, atuando na área de desenvolvimento de sistemas Web para montagem de genomas. Atualmente realiza estágio pós-doutoral no Departamento de Ciência da Computação da UFMG com foco em desenvolvimento de sistemas Web para Bioinformática, análise exploratória e visualização de dados. Tem conhecimentos nas linguagens: PHP, JavaScript, Python, R, Perl, HTML, CSS e SQL.