Contato

  • Jean Paulo Martins (jeanmartins utfpr edu br)
  • Sala 105, Bloco S (UTFPR - Campus Pato Branco)

Conteúdo

Ambiente de programação

Para seguir os exemplos aqui descritos sugiro a utilização do ambiente de programação online »repl.it. Mais adiante no curso veremos ferramentas mais apropriadas para programação.

Expressões lógicas

As expressões lógicas são aquelas que possuem como resultado um valor que somente pode ser: Verdadeiro ou Falso. Por exemplo, assuma que queiramos desenvolver um pequeno programa que, tendo como entrada um inteiro indicando a idade de uma pessoa, imprima na tela se essa pessoa é maior ou menor de idade.

Sabemos que para receber como entrada o inteiro que representará a idade devemos utilizar a função input() e transformar seu resultado em um inteiro int(input())

idade = int(input())

Tendo agora a variável idade precisamos de um meio para identificar se o valor nela contido é menor ou maior igual que 18. Na linguagem matemática isso seria representado pelos operadores de comparação, por exemplo $x < 18$ ou $x \geq 18$.

Tanto $x < 18$ quanto $x \geq 18$ são expressões lógicas, pois seu resultado somente pode ser um dentre dois valores: Verdadeiro (True) ou Falso (False). Expressões, valores ou variáveis que podem assumir como valor apenas Verdadeiro ou Falso são chamadas de Booleanas (Georg Boole).

A tabela abaixo descreve os operadores de comparação tanto em linguagem matemática quanto em linguagens de programação.

Operadores de comparação

Expressão matemática Significado Exemplo Resultado
a == b $a = b$ a é igual a b? 10 == 10 True
a != b $a\neq b$ a é diferente de b? 10 != 10 False
a < b $a < b$ a é menor que b? 1 < 0 False
a > b $a > b$ a é maior que b? 1 > 0 True
a <= b $a \leq b$ a é menor ou igual a b? 1 <= 1 True
a >= b $a \geq b$ a é maior ou igual a b? 5 >= 5 True

Exercício de consolidação

Utilizando o interpretador Python3 »repl.it utilize o trecho abaixo para definir cinco variáveis, depois avalie o resultado das expressões Booleanas que seguem:

a = 25
b = 13
c = "Tangamandápio"
d = "Tangamandapio"
e = "tangamandápio"

Quais das expressões Booleanas abaixo são verdadeiras?

a) a < b
b) a * a < b
c) c == d
d) c == b
e) d < e
f) a - b < b
g) a < 25
h) a - 12 == b
i) a != b
j) a - 12 != b
k) d == Tangamandapio
l) "Tangamandapio" == e
m) True != False
n) 42 =="42"

Representando condicionais: if

No exemplo sugerido inicialmente, temos que implementar um programa que receba como entrada a idade, a armazene em uma variável e, dada o valor dessa idade decida entre duas opções: 1) A pessoa tem menos que 18 anos ou 2) A pessoa tem 18 anos ou mais.

Por meio dos exemplos de expressões Booleanas dados anteriormente, podemos concluir que a expressão lógica idade < 18 será verdadeira apenas se a pessoa tiver menos que 18 anos. Como utilizar esse fato para definirmos a resposta que daremos em nosso programa? Para isto introduziremos um novo conceito: “condicionais”.

idade = int(input())
if idade < 18:
    print("Você ainda não atingiu a maioridade.")

E português o trecho de código acima poderia ser interpretado como:

Se (idade menor que 18) então (imprimir ‘Você ainda não atingiu a maioridade.’)

De modo geral, um condicional if define um bloco de código que será executado apenas se a expressão lógica que o segue for verdadeira. Na linguagem python esse bloco de código precisa estar identado (espaçado) da margem lateral esquerda por uma tabulação (Tab).

Teste o exemplo acima digitando diferentes valores de entrada.

Exercício de consolidação

Utilizando o código acima como exemplo, implemente um programa que represente a seguinte ideia:

Se (idade maior ou igual a 18) então (imprimir ‘Você já atingiu a maioridade.’)

Blocos de código

Como mencionado anteriormente, um bloco de código é definido pelo espaçamento à esquerda do início da linha. Nos exemplos acima os blocos de código possuíam apenas uma linha, no entanto, em situações mais complexas é comum que esses blocos contenham várias linhas. Para compreendermos melhor essa ideia vejamos um outro exemplo.

Suponha agora, que ao recebermos a idade queremos imprimir juntamente com a frase o ano de nascimento, ou seja, teremos um programa para representar a ideia:

Se (idade menor que 18) então (imprimir ‘Você nasceu em ANO e ainda não atingiu a maioridade.’)

Como não temos o ano de nascimento, ele precisa ser calculado para que possa ser dado como resposta, para isso basta subrairmos do ano atual a idade recebida como entrada.

idade = int(input())
if idade < 18:
    ano = 2018 - idade
    print("Você nasceu em", ano, "e ainda não atingiu a maioridade.")

Observe que as duas linhas abaixo do if estão espaçadas à direita, o que nos diz que elas pertencem ao mesmo bloco e portanto serão executadas apenas quando idade < 18 for verdadeiro.

Exercício de consolidação

Utilizando o código acima como exemplo, implemente um programa que represente a seguinte ideia:

Se (idade maior ou igual que 18) então (imprimir ‘Você nasceu em ANO e já atingiu a maioridade.’)

Prática de programação: Bhaskara

O algoritmo de Bhaskara nos indica como calcular as raízes reais de uma equação do segundo grau de coeficientes $a,b,c$.

Esse algoritmo pode ser descrito em duas partes, a primeira parte consiste no cálculo do discriminante

$\Delta = b^2 - 4ac$

A segunda parte vai depender do valor de $\Delta$, existem três situações possíveis que devem ser consideradas:

Se ($\Delta < 0$) então (Imprimir ‘A equação não possui raízes reais.’)

Se ($\Delta = 0$) então (Imprimir ‘A equação possui a raíz $X$.’)

  • $X = \dfrac{-b}{2a}$

Se ($\Delta > 0$) então (Imprimir ‘A equação possui duas raízes reais $X_1$ e $X_2$.’)

  • $X_1 = \dfrac{-b - \sqrt{\Delta}}{2a}$

  • e $X_2 = \dfrac{-b + \sqrt{\Delta}}{2a}$

Implemente um programa que receba como entrada três números reais a,b e c como sendo os coeficientes da equação $ a x^2 + bx + c = 0$ e calcule a resposta dadas as possíveis situações descritas acima.

Representando condicionais: if/else

Em situações como a do nosso primeiro exemplo, as condições envolvidas para a decisão de qual bloco de código será executado são complementares, ou seja, se uma é verdadeira a outra é necessariamente falsa.

idade = int(input())
if idade < 18:
    print("Você ainda não atingiu a maioridade.")
if idade >= 18:
    print("Você já atingiu a maioridade.")

Ainda neste exemplo, uma pessoa que não possui idade < 18 necessariamente deve possuir idade >= 18, pois não há outra alternativa. Para casos como esse temos uma nova construção que nos permite simplificar a escrita do programa, essa nova construção é baseada no formato:

Se (condição é verdadeira) então (efetue alguma operação) Senão (efetue outra operação)

Em outras palavras apenas a primeira condição é definida explicitamente sendo a outra opção (a complementar) omitida. A palavra senão traduzida para o inglês é escrita como else, portanto ao adaptarmos o código-fonte para a linguagem Python teremos:

idade = int(input())
if idade < 18:
    print("Você ainda não atingiu a maioridade.")
else:
    print("Você já atingiu a maioridade.")

Exercício de consolidação

  1. Escreva um programa em Python que receba como entrada uma senha na forma de string. Seu programa deverá verificar se essa senha está correta e escolher uma dentre duas opções:
    • Imprimir: “Acesso garantido.”
    • Imprimir “Senha incorreta, tente novamente.”.
    • Assuma que a senha correta seja “LP31M”.
  2. Escreva um programa em Python que receba como entrada um email e uma senha na forma de string. Se email e senha estiverem corretos imprimir que o acesso está garantido. Se algum deles não estiver correto, indicar qual deles não está correto.
    • Assuma que a senha correta seja “LP31M”.
    • Assuma que o email correto seja o seu.

Complete o código abaixo (Dica: um bloco de código if pode estar dentro de outro, use o espaçamento):

email = input()
senha = input()
email_correto = "jeanmartins@utfpr.edu.br"
senha_correta = "LP31M"
# Insira o restante do código aqui!

Representando condicionais: if/elif/else

No nosso primeiro exemplo vimos que idade < 18 ou idade >= 18 são as únicas opções para idade. No exemplo acima, uma senha ou está correta ou não está correta, e portanto os condicionais if/else são suficientes para representar a situação. No entanto, como poderíamos imaginar, nem todas as condições possuem apenas duas alternativas.

Ao tratarmos de idades, por exemplo, é comum que as pessoas sejam classificadas como crianças, adolescentes, adultos e idosos. Vejamos passo a passo como seria possível identificar esses quatro casos utilizando as construções vistas até então (if/else).

idade = int(input())
if idade < 12:
    print("Você ainda é criança.")
else:
    if idade < 18:
        print("Você é adolescente.")
    else:
        if idade < 60:
            print("Você já é adulto.")
        else:
            print("Você é idoso")

Observe que a cada novo bloco é preciso indentar o que tornaria nosso código deslocado à direita se vários blocos aninhados forem necessários. É em contextos similares a este que a linguagem nos oferece uma nova opção de comando de decisão elif. Deste modo trechos de código como o abaixo:

else:
    if idade < 18:

Podem ser substítuídos por uma versão mais compacta:

elif idade < 18:

Veja abaixo a adaptação do código-fonte para utilização do comando elif:

idade = int(input())
if idade < 12:
    print("Você ainda é criança.")
elif idade < 18:
    print("Você é adolescente.")
elif idade < 60:
    print("Você já é adulto.")
else:
    print("Você é idoso")

Exercício de consolidação

  1. Escreva um programa em Python que receba como entrada um email e uma senha na forma de string. Se email e senha estiverem corretos imprimir que o acesso está garantido. Se algum deles não estiver correto, indicar qual deles não está correto.
  • Assuma que existam três emails corretos (joao@hotmail.com, maria@gmail.com, jose@google.com).
  • Assuma que a senha correta para todos seja “LP31M”.

Complete o código abaixo (Dica: um bloco de código if pode estar dentro de outro, use o espaçamento):

email = input()
senha = input()
email_correto1 = "joao@hotmail.com"
email_correto2 = "maria@gmail.com"
email_correto3 = "jose@google.com"
senha_correta = "LP31M"
# Insira o restante do código aqui!