Sei sulla pagina 1di 55

IEC081 - Introduo Cincia dos Computadores

IEC037 - Introduo Programao de


Computadores

Aula 02 Estruturas Condicionais Simples e


Compostas
2016/1

Contedo
Estruturas Condicionais Simples
Como montar uma condio
Estruturas Condicionais Compostas

Contedo
Estruturas Condicionais Simples
Como montar uma condio
Estruturas Condicionais Compostas

Estruturas de Programao

Qualquer programa de computador pode ser


escrito combinando-se os trs tipos bsicos de
estruturas de programao:

Sequencial

Condicional

Repetio

Estruturas de Programao

Teorema provado em
1966 por Corrado
Bhm (1923-) e
Giuseppe Jacopini
(1936-2001) no artigo:
Flow Diagrams,
Turing Machines And
Languages With Only
Two Formation Rules.

Estrutura Sequencial

a estrutura de programao mais simples.


O fluxo de comandos do algoritmo segue a mesma
sequncia 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 execuo, de forma a


selecionar qual parte do algoritmo deve ser
executada.
Essa deciso tomada a partir de uma condio,
que pode resultar apenas em:
Verdadeiro,
Falso

ou

Condio verdadeira, condio falsa

Verdadeiro ou falso apenas um resultado da


expresso condicional.
Eles indicam para que lado a execuo do seu
cdigo vai bifurcar.
O funcionamento correto do seu script no
depende do valor da condio.
quebrou?

Estrutura Condicional Simples


:: Em Python
a = float(input("Digite a: "))
b = float(input("Digite b: "))
c = float(input("Digite c: "))

incio
a, b, c
delta b**2 4*a*c

delta = b**2 4 * a * c

Condio
if (delta < 0):
print("Nao tem raizes reais")

delta < 0 v
F

Condies sempre terminam


com sinal de dois pontos
Comandos internos s condies
devem ser recuados (tecla TAB)

fim

No tem
razes reais

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 condio (tecla TAB)

Contedo
Estruturas Condicionais Simples
Como montar uma condio
Estruturas Condicionais Compostas

Como montar uma condio?

Uma condio resulta da combinao dos


seguintes elementos:
Operandos

(valores aritmticos)
Operadores (sinais que representam operaes)

Operando1

Operador

Resultado

Operando2

Tipos de operadores

Aritmticos
Operadores

Relacionais
Lgicos

Operadores Aritmticos

So utilizados para realizar as operaes


aritmticas bsicas.
Operador

*
/
//
%
**

Operao

Exemplo

Adio

1+y

Subtrao

xy

Multiplicao

8*y

Diviso real

7 / 2 (= 3,5)

Diviso inteira

7 // 2 (= 3)

Resto da diviso inteira 7 % 2 (= 1)


Potenciao

x ** 2

Operadores Aritmticos

Entrada: 02 valores numricos


Sada:
01 valor numrico

valor numrico
valor numrico

Operador
Aritmtico

valor numrico

Operadores Aritmticos
:: Formato
Operando1

Opera
dor

Operando2

Exemplos:
2a
2*a

a ** 3

5 ** 0,5

Operadores Aritmticos
:: Prioridade
Prioridade Operador
1
Parnteses mais internos
2
Potenciao
3
4

Exemplos:

Multiplicao, diviso, resto


Adio, subtrao
4 * 3 ** 2

36

(4 * 3) ** 2

144

4*5%3

4 * (5 % 3)

Da esquerda
para a direita

Na dvida, use
parnteses.

Operadores Relacionais

So utilizados para estabelecer relao de


comparao entre valores numricos.
Operador

==
>
<
>=
<=
!=

Operao

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 aritmticos


:: Formato
Operadores
Aritmticos

nmero

Operando1

nmero

Operador
aritmtico
Resultado

Operadores
Relacionais

nmero

Operando1

Operando2
nmero

nmero

Operador
relacional

Operando2

Resultado

Verdadeiro/falso

Operadores relacionais aritmticos


:: Prioridade
Prioridade
1
2
3

Operador
Parnteses mais internos
Operadores aritmticos
Operadores relacionais

Na dvida, use
parnteses.

Da esquerda
para a direita

Como avaliar uma condio?

Operadores relacionais tm menor prioridade que


os operadores aritmticos.

2 + 3 > 10 % 6
5>4
V

Como avaliar uma condio?


:: Exerccio
x = 2
y = 3
z = 7

Expresso
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

Verdadeiro

Falso

Mal formada

Como avaliar uma condio?


:: Exerccio
x = 2
y = 3
z = 7

Expresso
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

Verdadeiro

Falso
X

Mal formada

X
X
X
X

Qual a diferena entre os smbolos =


e == ?

O smbolo = indica uma atribuio de valor.


O

valor da varivel esquerda do smbolo


modificado pelo valor direita.

x=x+1

O smbolo == indica uma comparao de valores.


Nenhum

valor modificado. Eles so apenas


comparados, produzindo um resultado lgico (V ou F).

x == 2

Contedo
Estruturas Condicionais Simples
Como montar uma condio
Estruturas Condicionais Compostas

Estruturas Condicionais Compostas


:: Em Python
incio

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

Condio

if (delta < 0):


print("Nao tem raiz real")
else:
print("Tem raiz real")
if e else sempre terminam
com sinal de dois pontos
Comandos internos ao if e
ao else devem ser recuados

delta < 0

F
Tem raiz
real

fim

No tem
razes reais

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

Indentao

O comando else deve estar alinhado com o


comando if correspondente.
Todos os comandos de um mesmo bloco devero
ter o mesmo recuo.

Indentao Vlida
if (condio):
comando
comando
else:
comando
comando

Indentao Invlida
if (condio):
comando
comando
else:
comando
comando

if (condio):
comando
comando
else:
comando
comando

Indentao
:: Diferenas
if (temp > 25):
print("Quente")
print("Ligue o ventilador")
print("Tchau")

t > 25
F

V
Quente
Ligue o ...

Tchau

if (temp > 25):


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

t > 25
F

Quente
Ligue o ...
Tchau

No confunda
Indentao (identao)
Insero de espaos em um cdigo
de linguagem de programao

Endentao
Encaixe dos dentes de uma pea
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 preo?

Problema 1
2 Definir entradas e sadas

Entradas

Sadas

Grandeza

Unidade de medida

Faixa de valores

PrecoA

R$

8.39

PesoA

kg

0.4

PrecoB

R$

20.30

PesoB

kg

1.0

Marca

---

{A, B}

Problema 1
3 Projetar algoritmo
incio
PrecoA, PesoA
PrecoB, PesoB

rA PrecoA/PesoA
rB PrecoB/PesoB
rA > rB
F

marca A

marca

fim

marca B

Problema 1
4 Codificar em Python
# Entrada de dados
pA = float(input("Digite
pB = float(input("Digite
mA = float(input("Digite
mB = float(input("Digite

o
o
o
o

preco da marca A: "))


preco da marca B: "))
peso da marca A: "))
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 condio (tecla TAB)

Problema 2

Um radar de trnsito
verifica a velocidade
dos veculos.
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 sadas

Entradas
Sadas

Grandeza

Unidade de medida

Faixa de valores

Velocidade

km/h

Multa

R$

Problema 2
3 Projetar o algoritmo
incio
vel

lim 60
vel > lim

multa 200 + 3 * (vel lim)

multa
fim

multa 0

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
if (vel >
multa
else:
multa

do valor da multa
lim):
= 200 + 3 * (vel lim)
= 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 equao de uma
circunferncia de raio
R 2 + 2 = 2 .
Escreva um algoritmo
que, dado um ponto P
qualquer, verifique se
ele se encontra:
Na

circunferncia
No interior
No exterior

R
x

Problema 3
2 Definir entradas e sadas

Entradas

Sadas
Sadas

Grandeza

Unidade de medida

Faixa de valores

Raio

---

>= 0

Coordenada X de P

---

Coordenada Y de P

---

Localizao de P

---

{interior, exterior, na
circunferncia}

Problema 3
3 Projetar algoritmo
X**2 + Y**2 == R**2

V
Na
circunferncia

X**2 + Y**2 < R**2

V
P interno

F
P externo

Problema 3
3 Projetar algoritmo
incio

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

R, X, Y
C1
V
Na
circunferncia

C2

F
C2

X**2 + Y**2 < R**2

V
Interno

fim

Externo

Problema 3
4 Codificar em Python
#
r
x
y

Entrada de dados
= float(input("Digite raio: "))
= float(input("Digite coord. X do ponto: "))
= 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 equao de 2


grau, determine se h razes reais e, caso positivo,
quais so elas.

Problema 4
2 Definir entradas e sadas

Entradas

Sadas

Grandeza

Unidade de medida

Coeficiente a

---

Coeficiente b

---

Coeficiente c

---

Raiz , se houver

---

Raiz , se houver

---

Faixa de valores

Problema 4
3 Projetar algoritmo
incio

a, b, c
delta b**2 4*a*c
delta < 0
V
No tem raiz
real

F
delta == 0
V
r - b/(2*a)
r

fim

F
r1 (- b + delta)/(2*a)
r2 (- b - delta)/(2*a)
r1, r2

Problema 4
4 Codificar em Python
#
a
b
c

Entrada de dados
= float(input("Digite a: "))
= float(input("Digite b: "))
= 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 mquina caanquel que gere 3 nmeros aleatrios entre 1 e 10.
Se os trs nmeros forem iguais, o jogador ganha.
Caso contrrio, ele perde.

Problema 5
2 Definir entradas e sadas

Entradas

Sadas

Grandeza

Unidade de medida

Faixa de valores

N1

---

[1,10]

N2

---

[1,10]

N3

---

[1,10]

Sucesso no jogo

---

{Perdeu, Ganhou}

Problema 5
3 Projetar algoritmo
N1 == N2
V

F
perdeu

N2 == N3
F
perdeu

V
ganhou

Problema 5
3 Projetar algoritmo
incio
Gerar N1, N2, N3
N1 == N2

V
N2 == N3

V
Ganhou!

Perdeu!

Perdeu!
Como gerar nmeros
aleatrios?
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")

Referncias bibliogrficas

Menezes, Nilo Ney Coutinho (2010). Introduo


Programao com Python. Editora Novatec.
HETLAND, Magnus Lie (2008). Beginning Python:
From Novice to Professional. Springer eBooks, 2
edio. Disponvel em:
http://dx.doi.org/10.1007/978-1-4302-0634-7.
Gaddis, Tony (2012). Starting out with Python, 2
edio. Editora Addison-Wesley.
DIERBACH, Charles. Introduction to Computer
Science using Python: a computational problemsolving approach. John Wiley & Sons, 2012.

Dvidas?

Potrebbero piacerti anche