- Aula
- Revisão
- Editor
- Desafio 1
- Desafio 2
Execuções condicionais encadeadas
Suponha que ao invés de escrever a nota final de um aluno (valores de 0 a 100), a prof. Vilma queira escrever um conceito, como A, B, ou C. O conceito do aluno é determinado da seguinte forma:
- se a média é maior do que ou igual a 80, o conceito é A;
- se a média é menor do que 80, mas maior do que ou igual a 50, o conceito é B; e
- se a média é menor do que 50, o conceito é C.
Esse caso é um exemplo condições encadeadas. Note que as condições não são independentes, pois dependem de uma mesma variável (a nota do aluno). Ou seja, a condição (2) depende de a condição (1) não ser verdadeira, e a condição (3) depende de as condições (1) e (2) não serem verdadeiras. Por isso, não podemos usar simplesmente dois comandos condicionais um em seguida do outro, porque a lógica não estará correta. Por exemplo, o programa
não implementa corretamente as restrições da Profa. Vilma, porque embora produza o resultado correto se a nota for menor do que 80, se a nota for por exemplo 85 serão impressas duas linhas, uma com o conceito "A" e outra com o conceito "B".
Uma forma correta de implementar as restrições da Profa. Vilma pode ser vista no programa abaixo, em que um bloco se-então-senão é "encaixado" (ou "encadeado") em outro bloco se-então-senão:
Programas com blocos se-então encadeados são tão frequentes que a linguagem Python tem uma forma abreviada para essa construção, e em Blockly o bloco se-então pode ser modificado para construir execuções condicionais encadeadas. Para modificar o bloco se-então clique no botão de opções do bloco:
Arraste o bloco senão-se e encaixe-o abaixo do bloco se. O bloco bloco se-então muda de aspecto e inclui um novo encaixe para uma nova condição marcada com o rótulo "senão se" e um nova abertura para encaixar blocos, marcada com o rótulo "então":
Você pode encadear quantos blocos condicionais for necessário para sua aplicação, como neste exemplo:
Para fechar o painel, clique novamente no botão de opções do bloco.
Como exemplo de uso do bloco de execução condicional no formato se-então-senão-se-então, o programa acima, que implementa o critério de aprovação da profa. Vilma, pode ser implementado da seguinte forma:
Veja esse programa na linguagem Python:
nota = int(input()) if nota >= 80: print('A') elif nota >= 50: print('B') else: print('C')
Basquete de robôs
A organização da OIBR, Olimpíada Internacional de Basquete de Robô, está implantando uma nova pontuação para o jogo, de acordo com a distância do robô para o início da quadra. A quadra tem 2000 centímetros de comprimento, como na figura abaixo:
Dada a distância D do robô até o início da quadra, onde está a cesta, a nova regra é:
- Se D ≤ 800, a cesta vale 1 ponto;
- Se 800 < D ≤ 1400, a cesta vale 2 pontos;
- Se 1400 < D ≤ 2000, a cesta vale 3 pontos.
A organização da OIBR precisa de ajuda para automatizar o placar do jogo. Dado o valor da distância D, você deve implementar um programa para calcular o número de pontos do lançamento.
Entrada
A primeira e única linha da entrada contém um inteiro D indicando a distância do robô para o início da quadra, em centímetros, no momento do lançamento.
Saída
Seu programa deve produzir uma única linha, contendo um inteiro, 1, 2 ou 3, indicando a pontuação do lançamento.Restrições
- 0 ≤ D ≤ 2000
Exemplos
Entrada
1720 |
Saída
3 |
Entrada
250 |
Saída
1 |
Entrada
1400 |
Saída
2 |
Solução
Aqui você encontra um exemplo de solução para o desafio. Mas antes de ver a solução tente resolvê-lo, criando a sua própria solução.
Solução do Desafio
Blockly
|
Python# Solução do Desafio 1 da Aula 8 distancia = int(input()) if distancia <= 800: print(1) elif distancia < 1400: print(2) else: print(3) |
Cartas
Claro que, dadas as condições, a carta que falta virar vai formar par com uma das três que já foram viradas. No caso da figura, o número marcado na carta que ainda falta virar é 11.
Implemente um programa que, dados os números de três cartas já viradas, imprima o número da carta que ainda falta virar.
Entrada
A primeira linha da entrada contém um inteiro A, indicando a primeira carta já virada. A segunda linha contém o inteiro B, indicando a segunda carta já virada. A terceira linha contém o inteiro C, indicando a terceira carta já virada.Saída
Seu programa deve produzir na saída uma única linha, contendo um único número inteiro, o número da carta que ainda falta virar.Restrições
- 0 ≤ A ≤ 100
- 0 ≤ B ≤ 100
- 0 ≤ C ≤ 100
Exemplos
Entrada
40 11 40 |
Saída
11 |
Entrada
8 8 96 |
Saída
96 |
Solução
Aqui você encontra um exemplo de solução para o desafio. Mas antes de ver a solução tente resolvê-lo, criando a sua própria solução.
Solução do Desafio
Blockly
|
Python# Solução do Desafio 2 da Aula 8 cartaA = int(input()) cartaB = int(input()) cartaC = int(input()) if cartaA == cartaB: print(cartaC) elif cartaA == cartaC: print(cartaB) else: print(cartaA) |