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.

fluxograma_media.png

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")
  1. Implemente um script que lê dois números e imprime qual deles é o maior.
  2. 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

Author: Pedro Belin Castellucci

Created: 2024-04-12 sex 13:36

Validate