Estrutura condicional
Table of Contents
1. Estrutura condicional
Conforme vimos na aula de introdução. Um algoritmo pode de beneficiar de uma execução condicional de instruções, isto é, "Se estiver nublado, leve um guarda-chuva" ou, como no fluxograma a seguir.
Para isso, precisamos definir instruções que permitam a verificação de
expressões booleanas. Expressões booleanas são expressões que,
quando avaliadas, resultando em verdadeiro (True
) ou falso
(False
). Essas expressões são construídas utilizando operadores
relacionais e lógicos.
1.1. Operadores relacionais e lógicos
Operadores relacionais são utilizados para comparar dois valores de
mesmo tipo. O resultado de uma operação com operadores relacionais
deve ser interpretado como um tipo lógico (booleano, True
ou False
).
Operador | Operação |
---|---|
== | Igual a |
!= | Diferente de |
< | Menor que |
<= | Menor ou igual a |
> | Maior que |
>= | Maior ou igual a |
Lembre-se de que é importante considerar o tipo de dado envolvido nas operações. Quando os tipos de dados envolvidos são inteiros, por exemplo, "1 <= 3", a semântica das operações é a mesma da matemática. Mas qual é o resultado da comparação "papel" > "Pedra"?
Caso tente-se aplicar operações relacionais em valores para os quais a operação não está definida, ocorrerá um erro do tipo TypeError. Por exemplo, a comparação "1" > 1, resulta no seguinte erro:
TypeError: '>' not supported between instances of 'str' and 'int'
Considere o exemplo de pseudocódigo a seguir que utiliza a estrutura condicional.
Leia (idade) Se idade >= 18 faça Imprima ("Maior de idade") Senão Imprima ("Menor de idade")
Tipicamente, o bloco de código do "Senão" é opcional.
Apresente um pseudocódigo que lê a idade de uma pessoa, imprime a idade e, apenas se a idade for um número par, imprime uma outra mensagem informando que a idade é par.
1.2. Instruções if-else em Python
Em Python, uma estrutura condicional pode ser definida da seguinte forma.
if <expressao booleana>: instruções else: # Bloco opcional instruções
Por exemplo,
idade = int(input("Digite sua idade")) if idade >= 18: print("Maior de idade") else: print("Menor de idade")
O bloco else
é opcional, como exemplo, considere o seguinte
idade = int(input("Digite sua idade")) if idade % 2 == 0: print("Sua idade e' par") print(f"Tem {idade} anos")
A indicação de quais instruções estão dentro do if
(e de outros
blocos de código) é feita pela
identação (alinhamento horizontal) das instruções. Verifique o
funcionamento do código a seguir.
idade = int(input("Digite sua idade")) if idade % 2 == 0: print("Sua idade e' par") print(f"Tem {idade} anos")
- Implemente um script que lê dois números e imprime qual deles é o maior.
- Implemente um script que lê três números e imprime qual deles é o maior.
1.2.1. Instruções If-elif-else
Considere o seguinte problema. Implementar um programa que recebe dois
números inteiros a
e b
e imprime se a
é maior que b
ou se a
é igual a b
ou se a
é menor que b
. Uma solução deselegante seria
a seguinte,
a = int(input("Digite a: ")) b = int(input("Digite b: ")) if a < b: print(f"{a} < {b}") else: if a == b: print (f"{a} == {b}") else: print(f"{a} > {b}")
Quando é necessário utilizar instruções else-if
como no exemplo, o
mais adequado é utilizar a instrução elif
do Python.
a = int(input("Digite a: ")) b = int(input("Digite b: ")) if a < b: print(f"{a} < {b}") elif a == b: print (f"{a} == {b}") else: print(f"{a} > {b}")
Implemente um script que recebe a média das notas de um estudante e responde se ele está aprovado (\(média \geq 6\)), em recuperação (\(3 \leq média < 6\)) ou reprovado (\(média < 3\)).
1.2.2. Operadores lógicos
Os operadores lógicos são aplicados a outras operações lógicas para combiná-las em expressões mais sofisticadas.
Operador | Operação |
---|---|
not | Negação |
and | Conjunção |
or | Disjunção |
Por exemplo, considere um programa que lê três números \(a\), \(b\), e \(c\), e responde se \(a\) é o maior dos números. Para isso, basta verificar se \(a \geq b\) e \(a \geq c\).
a = int(input("Digite a: ")) b = int(input("Digite b: ")) c = int(input("Digite c: ")) if a >= b and a >= c: print(f"{a} e' o maior") else: print(f"{a} nao e' o maior")
Como segundo exemplo, considere um programa que lê dois números \(a\) e \(b\) representando um intervalo \([a, b]\) e responde se um terceiro número \(x\) está fora do intervalo.
a = int(input("Digite a: ")) b = int(input("Digite b: ")) x = int(input("Digite x: ")) if x < a or x > b: print("Fora do intervalo") else: print("Dentro do intervalo")
Por fim, como exemplo do operador not
, considere que se deseja um
programa semelhante ao anterior que lê dois números \(a\) e
\(b\) representando um intervalo \([a, b]\) e responde se um terceiro
número \(x\) está dentro do intervalo. Uma possível implementação é a
seguinte.
a = int(input("Digite a: ")) b = int(input("Digite b: ")) x = int(input("Digite x: ")) if not(x < a or x > b): print("Dentro do intervalo") else: print("Fora do intervalo")
Implemente um código em Python que realiza a mesma função do pseudocódigo a seguir.
Leia (P1, P2, EX) NF <- 0.4P1 + 0.4P2 + 0.2EX Se NF >= 6 faça: Imprima ("Aprovado") Senão Se 3 >= NF >= 5.5 faça Leia (REC) MF <- 0.5(NF + REC) Se MF >= 6 faça Imprima ("Aprovado") Senão Imprima ("Reprovado") Senão Imprima ("Reprovado")
2. Referências e outros materiais
- Forbellone, André Luiz Villar, e Henri Frederico Eberspächer. "Lógica de programação: a construção de algoritmos e estruturas de dados." (2005).
- https://www.w3schools.com/python/python_conditions.asp