Você está na página 1de 55

Algoritmos e Programação

Aula 04 – Estruturas Condicionais Simples e


Compostas

2022/1
Conteúdo

Estruturas Condicionais Simples

Como montar uma condição

Estruturas Condicionais Compostas


Conteúdo

Estruturas Condicionais Simples

Como montar uma condição

Estruturas Condicionais Compostas


Estruturas de Programação
 Qualquer programa de computador pode ser
escrito combinando-se os três tipos básicos de
estruturas de programação:

Sequencial Condicional Repetição


Estruturas de Programação
 Teorema provado em
1966 por Corrado
Böhm (1923-) e
Giuseppe Jacopini
(1936-2001) no artigo:
“Flow Diagrams,
Turing Machines And
Languages With Only
Two Formation Rules”.
Estrutura Sequencial
 É a estrutura de programação mais simples.
 O fluxo de comandos do algoritmo segue a mesma
sequência linear da nossa escrita:
 De cima para baixo
 Da esquerda para direita
p/ direita

p/ baixo a = 3
b = 4
m = (a + b)/2
print(m)
Estrutura Condicional
 Permite alterar o fluxo de execução, de forma a
selecionar qual parte do algoritmo deve ser
executada.
 Essa decisão é tomada a partir de uma condição,
que pode resultar apenas em:
 Verdadeiro, ou ?
 Falso
Condição verdadeira, condição falsa

 Verdadeiro ou falso é apenas um resultado da


expressão condicional.
 Eles indicam para que lado a execução do seu
código vai bifurcar.
 O funcionamento correto do seu script não
depende do valor da condição.

quebrou?
Estrutura Condicional Simples
:: Em Python
início
a = float(input("Digite a: "))
b = float(input("Digite b: "))
a, b, c
c = float(input("Digite c: "))
delta ← b**2 – 4*a*c
delta = b**2 – 4 * a * c
Condição
delta < 0 v
if (delta < 0):
print("Nao tem raizes reais") F Não tem
raízes reais
Condições sempre terminam
com sinal de dois pontos

Comandos internos às condições fim


devem ser recuados (tecla TAB)
Exemplo A
# Script que calcula o valor do ingresso a
depender de se houver meia entrada

opcao = input("Meia entrada? (S/N) ")


ingresso = 30.0

if (opcao == "S"):
ingresso = ingresso/2

print("Valor do ingresso: ", ingresso)

Recuo dos comandos dependente


da condição (tecla TAB)
Conteúdo

Estruturas Condicionais Simples

Como montar uma condição

Estruturas Condicionais Compostas


Como montar uma condição?
 Uma condição resulta da combinação dos
seguintes elementos:
 Operandos (valores aritméticos)
 Operadores (sinais que representam operações)

Operando1 Operador Operando2

Resultado
Tipos de operadores

Aritméticos

Operadores Relacionais

Lógicos
Operadores Aritméticos
 São utilizados para realizar as operações
aritméticas básicas.
Operador Operação Exemplo
+ Adição 1+y

– Subtração x–y

* Multiplicação 8*y

/ Divisão real 7 / 2 (= 3,5)

// Divisão inteira 7 // 2 (= 3)

% Resto da divisão inteira 7 % 2 (= 1)

** Potenciação x ** 2
Operadores Aritméticos
 Entrada: 02 valores numéricos
 Saída: 01 valor numérico

valor numérico
Operador valor numérico
valor numérico Aritmético
Operadores Aritméticos
:: Formato

Opera
Operando1 Operando2
dor

Exemplos:

2a a³ 5

2*a ✓ a ** 3 ✓ 5 ** 0,5 ✓
Operadores Aritméticos
:: Prioridade
Prioridade Operador
1 Parênteses mais internos
Da esquerda
2 Potenciação
para a direita
3 Multiplicação, divisão, resto
4 Adição, subtração

4 * 3 ** 2 36

(4 * 3) ** 2 144 Na dúvida, use


Exemplos: parênteses.
4*5%3 2

4 * (5 % 3) 8
Operadores Relacionais
 São utilizados para estabelecer relação de
comparação entre valores numéricos.
Operador Operação Exemplos
== Igual a 3 == 3 20 == 18

> Maior que 5>4 10 > 11

< Menor que 3<6 9<7

>= Maior ou igual a 5 >= 3 4 >= 4

<= Menor ou igual a 3 <= 5 7 <= 7

!= Diferente de 8 != 9 2 != 2
Operadores relacionais × aritméticos
:: Formato

número número
Operadores Operando1
Operador
Operando2
aritmético
Aritméticos
Resultado número

número número
Operadores Operando1
Operador
Operando2
relacional
Relacionais
Resultado Verdadeiro/falso
Operadores relacionais × aritméticos
:: Prioridade
Prioridade Operador
1 Parênteses mais internos Da esquerda
2 Operadores aritméticos para a direita
3 Operadores relacionais

Na dúvida, use
parênteses.
Como avaliar uma condição?
 Operadores relacionais têm menor prioridade que
os operadores aritméticos.

2 + 3 > 10 % 6

5>4

V
Como avaliar uma condição?
:: Exercício
x = 2
y = 3
z = 7

Expressão Verdadeiro Falso Mal formada


x+y>6
x - 1 + y == 4
x ** y == x * y
y-5=z-9
1 - z != 4 < 11
x + 8 % z >= y * 6 – 15
Como avaliar uma condição?
:: Exercício
x = 2
y = 3
z = 7

Expressão Verdadeiro Falso Mal formada


x+y>6 X
x - 1 + y == 4 X
x ** y == x * y X
y-5=z-9 X
1 - z != 4 < 11 X
x + 8 % z >= y * 6 – 15 X
Qual a diferença entre os símbolos “=”
e “==” ?
 O símbolo “=” indica uma atribuição de valor.
O valor da variável à esquerda do símbolo é
modificado pelo valor à direita.
x=x+1

 O símbolo “==” indica uma comparação de valores.


 Nenhum valor é modificado. Eles são apenas
comparados, produzindo um resultado lógico (V ou F).

x == 2
Conteúdo

Estruturas Condicionais Simples

Como montar uma condição

Estruturas Condicionais Compostas


Estruturas Condicionais Compostas
:: Em Python
a = float(input("Digite a: ")) início
b = float(input("Digite b: "))
a, b, c
c = float(input("Digite c: "))
delta ← b**2 – 4*a*c
delta = b**2 – 4 * a * c
Condição V
delta < 0
if (delta < 0): F
print("Nao tem raiz real")
else: Tem raiz Não tem
real raízes reais
print("Tem raiz real")

if e else sempre terminam


com sinal de dois pontos
Comandos internos ao if e fim
ao else devem ser recuados
Exemplo B
# Script que verifica se o aluno passou
ou nao com base na media

m = float(input("Digite sua media: "))

if (m >= 5.0):
print("Passou")
else:
print("Reprovou")

if e else sempre terminam


com sinal de dois pontos
Comandos internos ao if e
ao else devem ser recuados
Indentação
 O comando else deve estar alinhado com o
comando if correspondente.
 Todos os comandos de um mesmo bloco deverão
ter o mesmo recuo.
Indentação Válida Indentação Inválida
if (condição): if (condição): if (condição):
comando comando comando
comando comando comando
else: else: else:
comando comando comando
comando comando comando
Indentação
:: Diferenças
t > 25 V

if (temp > 25): F Quente


print("Quente")
print("Ligue o ventilador") Ligue o ...
print("Tchau")

Tchau

t > 25 V

if (temp > 25): F Quente


print("Quente")
print("Ligue o ventilador") Ligue o ...
print("Tchau")
Tchau
Não confunda

Indentação (identação)
• Inserção de espaços em um código
de linguagem de programação

Endentação
• Encaixe dos dentes de uma peça
denteada com os de outra
Problema 1
 Uma lata de leite em pó da marca A, com 400g,
custa R$ 8,39.
 Um saco de leite em pó da marca B, com 1kg, custa
R$ 20,30.
 Qual marca tem o melhor preço?
Problema 1
2 – Definir entradas e saídas

Grandeza Unidade de medida Faixa de valores


PrecoA R$ 8.39
PesoA kg 0.4
Entradas
PrecoB R$ 20.30
PesoB kg 1.0
Saídas Marca --- {“A”, “B”}
Problema 1
3 – Projetar algoritmo
início
PrecoA, PesoA
PrecoB, PesoB

rA ← PrecoA/PesoA
rB ← PrecoB/PesoB

V
rA > rB
F
marca ← “A” marca ← “B”

marca

fim
Problema 1
4 – Codificar em Python
# Entrada de dados
pA = float(input("Digite o preco da marca A: "))
pB = float(input("Digite o preco da marca B: "))
mA = float(input("Digite o peso da marca A: "))
mB = float(input("Digite o peso da marca B: "))

rA = pA / mA
rB = pB / mB

if (rA > rB):


marca = "B"
else:
marca = "A"

print("Compre a marca ", marca)

Recuo dos comandos dependente


da condição (tecla TAB)
Problema 2
 Um radar de trânsito
verifica a velocidade
dos veículos.
 Caso ultrapassem 60
km/h, emite-se um
registro de multa.
 O valor da multa é de
R$ 200,00 mais R$ 3,00
para cada 1 km/h acima
do limite.
 Escreva um programa
para determinar o valor
da multa.
Problema 2
2 – Definir entradas e saídas

Grandeza Unidade de medida Faixa de valores


Entradas Velocidade km/h ≥0
Saídas Multa R$ ≥0
Problema 2
3 – Projetar o algoritmo
início

vel

lim ← 60

F
vel > lim
V
multa ← 200 + 3 * (vel – lim) multa ← 0

multa

fim
Problema 2
4 – Codificar em Python
# Entrada de dados e definicao de constantes
vel = float(input("Informe a velocidade: "))
lim = 60 # Limite de velocidade

# Calculo do valor da multa


if (vel > lim):
multa = 200 + 3 * (vel – lim)
else:
multa = 0

# Exibicao de resultados
print(multa)
Problema 2
5 – Testar o script resultante

40
km/h
60
km/h
80
km/h
Problema 3
 A equação de uma
circunferência de raio y
R é 𝑥 2 + 𝑦 2 = 𝑅2 .
 Escreva um algoritmo R
que, dado um ponto P
qualquer, verifique se x
ele se encontra:
 Na circunferência
 No interior

 No exterior
Problema 3
2 – Definir entradas e saídas

Grandeza Unidade de medida Faixa de valores


Raio --- >= 0
Entradas Coordenada X de P ---
Coordenada Y de P ---
Saídas {interior, exterior, na
Saídas Localização de P ---
circunferência}
Problema 3
3 – Projetar algoritmo

X**2 + Y**2 == R**2


V F

Na
circunferência X**2 + Y**2 < R**2

V F

P é interno P é externo
Problema 3
3 – Projetar algoritmo
início
C1 X**2 + Y**2 == R**2
R, X, Y
C2 X**2 + Y**2 < R**2
F
C1
V F
C2
V
Na
circunferência Interno Externo

fim
Problema 3
4 – Codificar em Python
# Entrada de dados
r = float(input("Digite raio: "))
x = float(input("Digite coord. X do ponto: "))
y = float(input("Digite coord. Y do ponto: "))

if (x**2 + y**2 == r**2):


print("Ponto estah na circunferencia.")
else:
if (x**2 + y**2 < r**2):
print("Ponto eh interno.")
else:
print("Ponto eh externo.")
Problema 4
 Dados os coeficientes a, b, c de uma equação de 2º
grau, determine se há raízes reais e, caso positivo,
quais são elas.
Problema 4
2 – Definir entradas e saídas

Grandeza Unidade de medida Faixa de valores


Coeficiente a ---
Entradas Coeficiente b ---
Coeficiente c ---
Raiz , se houver ---
Saídas
Raiz , se houver ---
Problema 4
3 – Projetar algoritmo
início

a, b, c

delta ← b**2 – 4*a*c

F
delta < 0
F
V delta == 0
V r1 ← (- b + delta)/(2*a)
Não tem raiz r2 ← (- b - delta)/(2*a)
real r ← - b/(2*a)

r r1, r2

fim
Problema 4
4 – Codificar em Python
# Entrada de dados
a = float(input("Digite a: "))
b = float(input("Digite b: "))
c = float(input("Digite c: "))
delta = b**2 – 4 * a * c
if (delta < 0):
print("Nao tem raiz real.")
else:
if (delta == 0):
r = -b / (2 * a)
print("Uma raiz real")
print(r)
else:
r1 = (-b + delta**0.5) / (2 * a)
r2 = (-b - delta**0.5) / (2 * a)
print("Duas raizes reais:")
print(r1)
print(r2)
Problema 5
 Projete um algoritmo para uma máquina caça-
níquel que gere 3 números aleatórios entre 1 e 10.
 Se os três números forem iguais, o jogador ganha.
Caso contrário, ele perde.
Problema 5
2 – Definir entradas e saídas

Grandeza Unidade de medida Faixa de valores


N1 --- [1,10]
Entradas N2 --- [1,10]
N3 --- [1,10]
Saídas Sucesso no jogo --- {Perdeu, Ganhou}
Problema 5
3 – Projetar algoritmo

N1 == N2
F V

perdeu N2 == N3
F V

perdeu ganhou
Problema 5
3 – Projetar algoritmo
início

Gerar N1, N2, N3

F
N1 == N2
V

N2 == N3 F

Ganhou! Perdeu! Perdeu!

Como gerar números


aleatórios?

fim
Problema 5
4 – Codificar em Python
# Biblioteca de numeros aleatorios
from random import *

# Gera numeros aleatorios entre 1 e 10


n1 = randint(1,10)
n2 = randint(1,10)
n3 = randint(1,10)

print(n1, n2, n3)

if (n1 == n2):
if (n2 == n3):
print("Ganhou")
else:
print("Perdeu")
else:
print("Perdeu")
Referências bibliográficas
 Menezes, Nilo Ney Coutinho (2010). Introdução à
Programação com Python. Editora Novatec.
 HETLAND, Magnus Lie (2008). Beginning Python:
From Novice to Professional. Springer eBooks, 2ª
edição. Disponível em:
http://dx.doi.org/10.1007/978-1-4302-0634-7.
 Gaddis, Tony (2012). Starting out with Python, 2ª
edição. Editora Addison-Wesley.
 DIERBACH, Charles. Introduction to Computer
Science using Python: a computational problem-
solving approach. John Wiley & Sons, 2012.
Dúvidas?

Você também pode gostar