Estruturas condicionais

Teoria Completa

Usando o if

Cara, imagina você chegando de manhã na faculdade, boladão e cheio de sono. Pra qual sala você vai?! Bom, você provavelmente respondeu que depende do dia da semana. A gente tem diferentes aulas em diferentes dias, então precisamos saber o dia da semana pra saber qual aula temos que assistir. A verdade é que a gente vive tendo que tomar decisões, mesmo que de forma inconsciente.

E pra gente tomar decisões, precisamos verificar nossas condições (nesse caso, o dia da semana).

Da mesma forma, nosso programa não precisa ter sempre o mesmo comportamento, mas pode executar códigos diferentes dependendo de alguma condição. Pra fazer isso, a gente usa estruturas condicionais nas linguagens de programação, usando a palavra-chave “if”.

Calma, vou te contar mais sobre a estrutura. A condição tem que ser uma expressão relacional (valor booleano). O “:” indicam que o bloco de código seguinte se refere a essa condição. Além disso, repara que eu falei “bloco de código“. Estava me referindo a todos os comandos seguintes que de mesma indentação, ou seja, mesmo alinhamento. Vamos aprender com exemplos!

Ao executar esse código, a função print() vai ser executada e o texto "1 realmente é igual a 1 ksks" vai aparecer no terminal. O bloco de código referente ao if nesse caso só teve uma linha, a do print. Antes de escrever a função “print()” ali eu cliquei na tecla TAB pra dar o espaçamento necessário, ok?!

Obs: a tecla TAB é representada no teclado por duas setinhas em sentidos opostos, logo abaixo da tecla de aspas.

Mas vou te explicar o que aconteceu aqui. A expressão de comparação “1==1” foi resolvida e teve como resposta o valor True, um booleano que significa verdadeiro (1 realmente é igual a 1, né?! haha). Quando a expressão é verdadeira, o bloco indentado é executado, mas se for falsa, não é executado.

Ao executar esse código, não acontece NADA! Isso porque 5 não é igual a 4, então o print() não vai ser executado, beleza?! Se liga nesse exemplo aqui:

Nesse caso, a gente pediu a idade do usuário e guardou dentro da variável “idade”. Se a idade digitada for menor que 18, o primeiro print vai ser executado. Mas repara que o segundo print não tá com a mesma indentação do primeiro, o que significa que ele não tá dentro do mesmo bloco de código. Vamos executar pra ver no que dá!

O segundo print do código não tá pertencendo ao if, e por isso vai ser executado independentemente da idade, ok?! Mas agora se você for menor de idade…

Viu?! Conseguimos mudar o comportamento do programa de acordo com uma condição, nesse caso, a idade do usuário. Mas a gente também pode fazer um código personalizado pra caso a condição seja falsa.

Pra isso, a gente pode usar a estrutura if/else. Se a condição for verdadeira, somente o código do if vai ser executado. Caso contrário, o código a ser executado vai ser o dentro do else.

Mas também é possível aninhar os ifs.

Ou seja, caso a idade não seja menor que 18 a gente faz outra verificação: se é igual a 18. Com isso, abordamos os 3 casos, onde a idade é menor que 18, igual a 18 ou maior que 18. Repara que o código dentro do último else só vai ser executado se os dois últimos ifs não forem verdadeiros, ok?!

Pra facilitar nossa vida na hora de aninhar, a gente também pode usar a estrutura if/elif/else.

Dessa forma a gente consegue fazer as verificações sem ter que colocar um if dentro do outro. Todas as estruturas de comparação tem que começar com um if, e só podem ter um else, mas podem ter vários elif, beleza?

A última coisa que você tem que ficar esperto é que as comparações são feitas em ordem, uma de cada vez, e o if para assim que uma das condições é verdadeira, beleza? Somente um bloco de código vai ser executado na sua estrutura!

No primeiro elif deste código a gente já sabe que a idade NÃO É menor que 18, porque se fosse teria parado no primeiro if. No segundo elif sabemos que idade NÃO É igual a 18, porque se não teria parado no primeiro elif, e assim por diante… Se você fizer comparações redundantes você vai perder pontos, cara!

Agora que você tá sabendo tudo de estruturas condicionais, bora fazer uns exercícios de fixação?!! Te espero lá, doido!

Expandir

Exercício Resolvido #1

UFU, Lista 08

Faça um programa que leia um código de operação (+,-,* ou /), e também dois valores inteiros A e B. O programa deve calcular o resultado da operação escolhida aplicado a A e B. Por exemplo, se a operação escolhida foi * e A = 1 e B = 3, o programa deve fornecer como resultado o valor de 1*3, que é 3.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Ops, parece que a gente tem que perguntar alguma coisa pro usuário. Nesse caso, já é certo que vamos usar a função input(). Vamos começar lendo um operador matemático e dois números.

Mas tu lembra que a função input() sempre retorna string?! Acontece que a gente tá esperando dados numéricos em A e B (números inteiros, pra ser mais exato). Por isso, já vamos converter direto o valor recebido pelo input() pra inteiro usando a função int(). Assim, os valores salvos em A e B serão inteiros. Beleza, agora vamos fazer nossas operações matemáticas!

Passo 2

Bom, a operação matemática que a gente precisa fazer agora depende do operador que a gente recebeu do usuário. A gente precisa checar qual operador ele passou, e vamos fazer isso usando estruturas condicionais (if).

Beleza! O valor da nossa variável “resultado” depende do que tem dentro da variável “operador”. Agora, a gente só precisa exibir pro usuário.

Passo 3

Exibir pro usuário sempre nos obriga a usar a função print() hahaha. Vamos lá!

Pronto! Agora, o resultado vai ser exibido logo depois de ser calculado. E assim, a gente finaliza a questão. Te espero na próxima, doido!

Mas sa

Resposta

Exercício Resolvido #2

PUC-Rio, Lista 8 (adaptado)

Escreva um programa que leia do teclado as duas notas de um aluno, calcule e exiba a média aritmética das notas. O programa deve, adicionalmente, exibir uma mensagem de parabéns caso o aluno esteja aprovado (média superior ou igual a 5,0)

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

E ai! O enunciado já começa dizendo pra gente ler do teclado duas notas. Isso significa que a gente precisa perguntar pro usuário, e pra isso a gente usa a função input()! Mas se liga na conversão de tipos!

Quando a gente pensa em notas, qual tipo de dado a gente espera? Se pensar nas nossas notas na faculdade, são sempre números reais, saca? Porque tem vírgula e tudo mais… Então, a gente converte direto pra float o resultado do nosso input(). É sempre importante pensar no tipo de dado que a gente espera do usuário e já fazer a conversão direto do input(), beleza? Não esquece disso, pufavô!

Passo 2

Beleza! Agora a gente já tem as duas notas nas variáveis. Bora calcular a média aritmética. Bom, a média aritmética é dada pela soma de todos os dados dividido pela quantidade de dados. Nesse caso, só tem 2 (as duas notas).

Bora adaptar isso pra Python!

Agora sim! Temos a média! Precisamos exibir a média pro usuário, e pra isso a gente vai usar o print()!

Se liga que a gente usou formatação de string ali, e existem vários tipos de formatação de string. O ideal é usar aquele que seu professor ensinou, ok?! Eu escolhi um método pra usar aqui na resolução, mas seu professor vai ficar BOLADÃO se você usar um método diferente do que ele ensinou (professores têm esses probleminhas). Mas o programa tá fluindo, hein!!

Obs: tem um tópico super curtinho sobre formatação de string aqui na playlist, e o nome é Operações com Strings. Caso você não esteja ligado na parada, dá uma olhada lá depois, jae?!

Pra finalizar, precisamos fazer a verificação pra exibir a mensagem caso o aluno tenha média maior que 5, assim como manda o enunciado. Pra isso, bora usar uma estrutura condicional!

Passo 3

Precisamos checar se a média é maior que 5. Pra fazer verificações, precisamos da palavra-chave if, lembra dela?

A nossa estrutura condicional fica com essa cara. A gente quer que, se a média for maior que 5, exibir uma mensagem parabenizando o aluno. Vamos colocar esse código dentro do escopo do if.

Pronto! Agora, o segundo print() só vai ser executado quando a média for maior que 5. Bora testar?

Passo 4

Vou executar o programa e colocar alguns dados aleatórios que vierem na minha cabeça pra testar.

Reparou que, como a média é menor que 5.0, a mensagem do segundo if não foi exibida? A ideia das estruturas condicionais é justamente essa: mudar o comportamento do programa de acordo com diferentes situações. Vamos executar de novo!

Dessa vez, como a média foi maior do que 5, o segundo print() funcionou!

E é isso, finalizamos o ex! Te vejo no próximo, doido!

Resposta

Exercício Resolvido #3

UFU, Lista 2.

Leia um número fornecido pelo usuário. Se esse número for positivo, calcule a raiz quadrada do número. Se o número for negativo, mostre uma mensagem dizendo que o número é inválido.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí, doido! Bora começar perguntando pro usuário o número, igual tá mandando no enunciado. Mas, se liga, a gente vai fazer conta com esse dado que o usuário digitar. Se a gente vai fazer conta, a gente espera que seja um número, certo?! Então vamos fazer conversões direto no input().

Vamo aos códigosss!

Se liga que no enunciado não diz se é pra ser número real ou inteiro. Nesse caso, eu escolhi usar números reais (float), mas se você usou inteiros, não vai ter problema. Se não tá no enunciado, o coração não sente! Agora, precisamos checar se esse número aí é positivo ou negativo. Vamos precisar de uma estrutura condicional!

Passo 2

Se liga na cara que nossa estrutura vai ter:

A expressão é, se os números forem maiores ou iguais a 0, então executa o primeiro bloco, se não (se forem negativos), o segundo bloco. Mas mano, não esquece que o que eu faço aqui é só uma solução possível, beleza?! Todos os exercícios de prog tem mais de uma solução! Vou até te dar um exemplo de outra cara que essa estrutura poderia ter:

Pronto! Inverti a parada. Se liga, agora, se o número for negativo o primeiro bloco vai ser executado. Caso contrário (o contrário de negativo é positivo), então o segundo bloco vai ser executado. Viu? O código ficou diferente, mas o resultado tá igualmente certo, jae? Bora continuar escrevendo os códigos para números positivos.

Passo 3

No enunciado tá dizendo que, se for positivo, temos que calcular a raiz quadrada. Bom, não tá dizendo que é pra exibir, mas nesse caso a gente deduz que é pra exibir o resultado. Até porque, se a gente não exibir, o programa não vai servir pra nada, né?

Pronto! Se for positivo, a gente calcula a raiz e exibe. Se liga que eu to usando formatação de string ali no print()! Existem vários tipos de formatação de string, e eu escolhi uma das formas de fazer. Mas o ideal é você usar o mesmo método que seu professor usa, beleza?

Obs: Se tu não tiver ligado em formatação de string, dá uma olhada no tópico Operações com Strings. É rapidão, olha lá!

Passo 4

Agora, vamos escrever o código pros números negativos. No enunciado tá dizendo que, se for negativo, a gente precisa exibir uma mensagem falando que o número é inválido. Bora fazer isso usando um print()!

Pronto! Agora, se o número for negativo, uma mensagem de erro vai ser exibida. Caso contrário, vai ser exibida a raiz quadrada do número. Bora testar?

Passo 5

Pra testar, bora executar nosso código!

Executei uma vez e coloquei 81. Como é positivo, o programa respondeu com a raiz quadrada. Agora vou executar de novo e colocar um número negativo.

Opa! Como o número é negativo, o programa retornou a mensagem de número inválido que a gente programou! TÁ TUDO FUNCIONANDOOOOOO!

Conseguimos! Te espero no próximo exercício, hein!

Resposta