Você está na página 1de 33

Aula 02 – Estruturas de decisão

e malhas de repetição
ECOP01 – Técnicas de Programação
Prof. Rafael de Moura Moreira
Tópicos da Aula
• Blocos de comando
• Tomadas de decisão
• Malhas de repetição

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 2


Blocos de comando
Blocos de comando são grupos de comandos que devem ser tratados
como uma unidade lógica.

Comandos pertencentes a um mesmo bloco serão sempre executados


juntos. Normalmente há uma linha de controle anterior ao bloco que
decide se o mesmo será executado, repetido ou ignorado. A linha de
controle utiliza uma expressão lógica (verdadeira ou falsa).

Em Python blocos de comando são agrupados através da indentação:


espaços inseridos com a tecla tab antes de cada linha.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 3


Operadores lógicos
Operador Resultado Exemplo
== Verdadeiro se os operandos são iguais a == b
!= Verdadeiro se os operandos são diferentes a != b
> Verdadeiro se o operando da esquerda é maior do que o da direita a>b
>= Verdadeiro se o operando da esquerda é maior ou igual ao da direita a >= b
< Verdadeiro se o operando da esquerda é menor do que o da direita a<b
<= Verdadeiro se o operando da esquerda é menor ou igual ao da direita a <= b
and Verdadeiro se ambos os operandos forem verdadeiros a and b
or Verdadeiro um dos operandos for verdadeiro a or b
not Verdadeiro se o operando for falso not a

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 4


Estruturas de decisão

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 5


Estruturas de decisão
Até o momento foram vistos códigos que são executados sempre de
forma linear, do início ao fim.

Porém, muitas vezes é necessário que diferentes ações sejam tomadas


diante de diferentes situações.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 6


Estruturas de decisão
Início
Algoritmo:
P1, P2
Leia(P1)
Leia(P2)
Média ← (P1 + P2)/2
Média ← (P1+P2)/2
Se (Média ≥ 6,0) então
Média ≥ Escreva(“Aprovado”)
Verdadeiro Falso
6,0 Senão
“Aprovado” “Reprovado” Escreva(“Reprovado”)

Fim
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 7
Estruturas de decisão
Em Python, decisões do tipo “se” serão tratados com o comando if. Ex:

if (condição):
comando 1
comando 2
...
comando n

Se condição for verdadeiro, os comandos de 1 a n serão executados. Senão,


serão ignorados.
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 8
Estruturas de decisão
Opcionalmente, podemos colocar um “senão” utilizando o comando else.
if (condição):
comando 1
comando 2
else:
comando 3
comando 4
comando 5

Se condição for verdadeiro, os comandos 1 e 2 são executados, e 3, 4 e 5 são


ignorados. Caso contrário, os comandos 1 e 2 são ignorados e o restante é
executado.
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 9
Exemplo
p1 = float(input("Digite a nota 1"))
p2 = float(input("Digite a nota 2"))
media = (p1+p2)/2
if (media >= 6):
print("Aprovado com media ", media)
else:
print("Reprovado com media ", media)

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 10


Estruturas de decisão
É possível aninhar estruturas condicionais:
if (condição 1):
comando 1
comando 2
if (condição 2):
comando 3

Se condição 1 for verdadeiro, os comandos 1 e 2 são executados.


Se condição 1 e condição 2 forem verdadeiros, o comando 3 é
executado.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 11


Exercício
Modifique o programa do exemplo anterior para incluir uma
recuperação:
Se a nota do aluno for maior ou igual a 6, ele está aprovado.
Caso contrário, peça para que o usuário digite a nota da
recuperação.
Tire a média aritmética entre a média antiga e a
recuperação. Caso essa nova média seja maior ou igual a 6,
o aluno está aprovado. Senão, ele está reprovado.
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 12
Exercício
p1 = float(input("Digite a nota 1"))
p2 = float(input("Digite a nota 2"))
media = (p1+p2)/2
if (media >= 6):
print("Aprovado com media ", media)
else:
rec = float(input("Digite a rec: "))
mediarec = (media+rec)/2
if (mediarec >=6):
print("Aprovado com media ", mediarec)
else:
print("Reprovado com media ", mediarec)

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 13


Estruturas de decisão
Quando vamos testar vários valores, ou faixas de valores,
para uma mesma variável ou expressão, podemos utilizar o
comando elif para deixar o código mais compacto, evitando
aninhar diversos if’s.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 14


Estruturas de decisão
if (condição 1): if (condição 1):
comando 1 comando 1
comando 2 comando 2
elif (condição 2): else:
if (condição 2):
comando 3
Equivalentes comando 3
comando 4
comando 4
elif (condição 3): else:
comando 5 if (condição 3):
else: comando 5
comando 6 else:
comando 6

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 15


Exemplo
ang = float(input("Digite o ângulo: "))
if (ang <= 90):
print("Quadrante 1 ")
elif (ang <= 180):
print("Quadrante 2")
elif (ang <= 270):
print("Quadrante 3")
else:
print("Quadrante 4")

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 16


Malhas de repetição

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 17


Malhas de repetição
Em certas situações, ao invés de ramificar o código entre ir para um
bloco ou outro, precisamos fazer com que o código repita um trecho.

Chamamos essas estruturas de malhas de repetição, ou loops.

Malhas de repetição são controladas por uma estrutura de decisão.


Caso sua condição seja verdadeira, o código é repetido.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 18


Malhas de repetição
IMPORTANTE: é importante assegurar que em algum momento a
condição que decide a execução do loop irá se tornar falsa. Chamamos
isso de critério de parada.

Um loop sem critério de parada bem definido, ou cujo critério de


parada nunca é atingido torna-se um loop infinito e fará com que o
código não progrida, ou dependendo da operação sendo repetida,
poderá até esgotar recursos computacionais e provocar travamentos
no sistema.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 19


Malhas de repetição
Podemos subdividir os loops em 2 tipos:
• Loops com quantidade conhecida de repetições
• Loops com quantidade desconhecida de repetições

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 20


Malhas de repetição
Loops com quantidade desconhecida de repetições são aqueles que
não temos como prever quantas vezes serão executados.

Portanto, devemos definir uma condição que provoque a sua repetição


e dizer que eles serão executados enquanto essa condição for
verdadeira.

Quando essa condição se tornar falsa, dizemos que o loop atingiu seu
critério de parada, e ele será interrompido.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 21


Malhas de repetição
Para criar loops do tipo “enquanto” em Python utilizamos o comando while.
Dentro do parêntese ele receberá uma expressão lógica, assim como no if.

while (condição):
comando 1
comando 2
...
comando n
Se condição for verdadeira, os comandos de 1 a n são executados. Em
seguida, condição é testada novamente. Se for verdadeira, os comandos
voltam a ser executados, e assim sucessivamente, até que a condição falhe
em um teste.
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 22
Exemplo
Faça um programa que pede para um professor digitar todas as notas
de sua turma, calcula e mostra a média da turma na tela.

O professor não sabe previamente quantos alunos ele possui, e digitará


um valor negativo quando acabar de digitar todas as notas.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 23


Exemplo
Início

soma ← 0 Algoritmo:
nota ← 0
Verdadeiro cont ← -1 soma ← 0
nota ← 0
soma ← soma + nota cont ← -1
cont ← cont + 1
Enquanto (nota >= 0) faça:
soma = soma + nota
nota
cont = cont + 1
Leia(nota)
nota ≥ 0
media ← soma/cont
Falso
media ← soma/cont
Escreva(media)

Fim
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 24
Exemplo
soma = 0
nota = 0
cont = -1
while (nota >= 0):
cont += 1 # forma abreviada de cont = cont + 1
soma += nota # forma abreviada de soma = soma + nota
nota = float(input("Digite a nota: "))
media = soma/cont
print("Media da turma = ", media)

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 25


Malhas de repetição
Assim como as estruturas condicionais, loops podem ser aninhados entre si
e/ou com estruturas condicionais. Ex:
n = 0
m = 0
while (m < 2):
while (n < 10):
print(10*m + n)
n = n + 1
n = 0
m = m + 1
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 26
Malhas de repetição
Loops com quantidade conhecida de repetições utilizam uma variável
como contador de repetições. Eles precisam de 3 parâmetros:
• Valor inicial: o valor que o contador receberá antes do início do loop
• Valor final: o valor que, ao ser atingido pelo contador, fará com que o
loop seja interrompido
• Incremento: quanto será somado ao contador após cada execução

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 27


Malhas de repetição
Dizemos que esses loops são loops do tipo para:

para (contador) de (valor inicial) ate (valor final) passo (incremento) faça:

Em Python, loops do tipo para são implementados utilizando o


comando for. Junto com o comando for, é normal utilizar a função
range para trabalhar com o contador.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 28


Malhas de repetição
A função range pode receber 1, 2 ou 3 parâmetros:
range(x) – x será considerado como valor final (exclusivo). O valor
inicial será considerado como 0 e passo será considerado como 1. Ou
seja, ele irá gerar os números inteiros de 0 até x-1.
range(x,y) – x será considerado como valor inicial (inclusivo) e y como
valor final (exclusivo). O passo será considerado como 1. Ou seja, ele irá
gerar números inteiros de x até y-1.
range(x,y,z) – x é valor inicial (inclusivo), y é valor final (exclusivo) e z é
o passo. Ou seja, ele irá gerar os números x, x + z, x + 2z, ... y-1

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 29


Malhas de repetição
for i in range (0,10,2): i = 0
print(i) while (i < 10):
print(i)
i += 2
Os códigos acima produzem a mesma saída:
0
2
4
6
8
Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 30
Exercício
Faça um programa que pede para um professor digitar quantos alunos
ele possui em uma turma.

Em seguida, peça para ele digitar a nota de cada aluno, calcule e


imprima a média da turma na tela.

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 31


Exercício
alunos = int(input("Digite a quantidade de alunos: "))
soma = 0
for i in range(alunos):
nota = float(input("Digite a proxima nota: "))
soma += nota
media = soma/alunos
print("Media da turma = ", media)

Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 32


Prof. Rafael de Moura Moreira ECOP01 - Técnicas de Programação - Aula 2 33