04. Desvios Condicionais (if)
Nas aulas anteriores desenvolvemos programas que funcionam mais ou menos como uma linha de produção: uma série de comandos são executados um após o outro, sem opção de seguir por um caminho diferente. Você pode argumentar que o input()
, visto na aula passada, permite que o programa se comporte de formas diferentes dependendo do que o usuário digitar no teclado. Mas se olharmos o programa em si, a sequência de operações executadas é sempre a mesma. Na aula de hoje veremos como desenvolver programas que, dada uma condição, executam, ou não, um determinado bloco de código.
Suponha que queremos desenvolver uma função que recebe dois números, x
e y
como argumento e devolve 1 se x
for maior do que y
e 0, caso contrário. A não ser que exista uma fórmula fechada (existe, para alguns casos), precisamos de alguma forma de executar um trecho de código somente se x
for maior que y
e outro trecho de código somente se essa condição não for verdadeira. Nossa função deve fazer algo parecido com o seguinte:
Para isso vamos precisar do operador if
. Vamos começar com um exemplo curto para entender como ele funciona.
EXERCÍCIO 1
O operador if
O operador if
funciona da seguinte maneira:
- No caso de
if True:
o bloco doif
é executado; - No caso de
if False:
o bloco doif
não é executado.
Importante: o operador if
sempre deve ser procedido por um valor True
ou False
. Mas então, para que serve o if
? Ele parece bastante limitado... Para isso precisamos abrir mais um parênteses.
Operadores relacionais
EXERCÍCIO 2
EXERCÍCIO 3
As expressões acima utilizam operadores relacionais para comparar valores e o resultado dessas operações sempre é um valor booleano. A tabela a seguir resume os principais operadores relacionais:
Operador | Operação |
---|---|
== |
Igual |
!= |
Diferente |
> |
Maior |
< |
Menor |
>= |
Maior ou Igual |
<= |
Menor ou Igual |
Voltando para o problema inicial
Agora podemos voltar para o problema inicial: faça uma função que recebe dois números x
e y
e devolve 1, caso x
seja maior que y
, ou zero, caso contrário.
EXERCÍCIO 4
EXERCÍCIO 5
E o "caso contrário"?
Para corrigir o erro na nossa função, vamos voltar à descrição do problema inicial: uma função que devolve 1 caso x
seja maior que y
ou zero, caso contrário. Precisamos tratar esse "caso contrário". Para isso existe o operador else
, que significa, literalmente, "caso contrário".
EXERCÍCIO 6
Agora vai!
EXERCÍCIO 7
Encadeando condicionais
É possível testar uma nova condição caso a anterior falhe, utilizando o operador elif
. Ele pode ser lido como "senão, se". Vamos trabalhar com um exemplo.
EXERCÍCIO 8
EXERCÍCIO 9
EXERCÍCIO 10
EXERCÍCIO 11
If's encadeados
Dentro do bloco de um if
, elif
ou else
, podemos ter qualquer código Python válido. Inclusive outros if
's. Considere a função a seguir, que, dada a idade de uma pessoa, devolve uma string que indica em que países essa pessoa é considerada maior de idade.
EXERCÍCIO 12
Operadores lógicos
Operador and
Nos exercícios anteriores vimos como testar uma única condição, mas em muitos casos pode ser útil testar mais do que uma condição de uma vez. Por exemplo, um arco-íris ocorre se está chovendo e fazendo sol, simultaneamente. Ou seja:
EXERCÍCIO 13
Operador or
Em outros casos é suficiente que pelo menos uma das condições for satisfeita. Por exemplo: uma pessoa paga meia entrada no teatro se for estudante ou for idosa. Ou seja:
EXERCÍCIO 14
Operador not
Também existe a possibilidade de querermos considerar os casos em que uma condição é falsa. Por exemplo: sempre tomo sopa quando o dia não está quente.
EXERCÍCIO 15
Resumindo
Vamos resumir o comportamento dos operadores and
, or
e not
:
and
: devolveTrue
se AMBOS os valores forem verdadeiros;or
: devolveTrue
se PELO MENOS UM dos valores forem verdadeiros;not
: inverte deTrue
paraFalse
e vice-versa.
EXERCÍCIO 16
EXERCÍCIOS ADICIONAIS
Se acabar os exercícios propostos neste handout, resolva os outros exercícios disponíveis