Você está na página 1de 25

Lógica de

Programação em
Python - Aula 4

LIpE- Laboratório de Informática para Educação


lipe@poli.ufrj.br
Conteúdo
Estruturas de repetição Operadores lógicos
(laços) •And ( E )
•While •Or (Ou)
•For •Not (Não)
•Comandos de controle do
loop
•Estrutura aninhada
Estruturas de repetição: exemplo prático

Estou com
sede? Não

Sim

Tomo 1 copo
d’água

Continuo com
sede?

Sigo o meu
Sim Não
dia
Escrevendo o exemplo em python
Estou com
sede? Não

Sim

Tomo 1 copo
d’água

Continuo com
sede?

Sigo o meu
Sim Não
dia
Estruturas de repetição
• O que são?

Podem existir situações em que precisamos executar um bloco


do código repetidamente, ou o nosso problema se comporta de
maneira repetida sob determinadas condições . Uma estrutura
de repetição nos permite executar uma ação, ou um conjunto de
ações em sequência, repedidas vezes no nosso programa.

• Por que as usamos?

Permitem determinar o número de execuções de um


determinado código de forma dinâmica. Nos poupando linhas de
código e tornando o programa adaptável a várias situações.
Resumo das estruturas de repetição
• While (enquanto verdadeiro)

Repete um, ou um grupo de comandos, enquanto a condição necessária for verdadeira. A


condição é testada antes de executar o corpo do loop (ou seja, o loop só é iniciado se o
primeiro teste for verdadeiro).

• For (para cada item na sequência,coleção)

Executa um, ou um grupo de comandos, várias vezes, percorrendo itens em uma


sequência.

• Estrutura aninhada

Podemos usar um ou mais loops dentro de um outro loop.


While
• While

Repete um, ou um grupo de comandos, enquanto a condição necessária for verdadeira. A condição é
testada antes de executar o corpo do loop (ou seja, o loop só é iniciado se o primeiro teste for
verdadeiro).

Sintaxe: Enquanto verdadeiro


While (condição):
declaração 1
Corpo do loop
declaração 2
declaração 3
...
declaração n
Exemplos While
Exemplo 1 : contando o número de Exemplo 2 : loop inifinito
repetições
var= 1
varcontador = 0
while (var == 1) :
while (varcontador < 4):
num = input(“Digite um numero: ")
print (“valor do contador = ” + str( varcontador) )
print (“você digitou: “ + num)
varcontador = varcontador + 1
print “Fim!"
print (“fim“)

#*obs: indentação!! Programa executado:

Programa executado: Digite um numero: 2


você digitou: 2
valor do contador = 0 Digite um numero: 4
valor do contador = 1 você digitou: 4
valor do contador = 2 Digite um numero: 5
valor do contador = 3 você digitou: 5
fim # o programa continuará pedindo para digitar um número .....
# para sair do loop infinito usamos Ctrl+C
Exercícios While

Exercício 1 : Crie um programa que peça ao usuário o número de notas que serão inseridas, em
seguida receba o valor de cada nota e apresente a média das notas ao fim do programa

Exercício 2 : Crie um programa que tem como objetivo atualizar a senha do usuário porém essa
nova senha só deve ser registrada caso ela tenha no mínimo 6 dígitos quaisquer. Enquanto a
senha digitada não antender a esse critério continue pedindo uma nova senha.
#Utilizar a função len(string) para obter o número de caracteres da senha inserida pelo usuário
Exemplos While
Exemplo 3 : média para N notas Exemplo 4 : else após o while
N= eval(input(“digite o número de notas: ”)) senhanova=input("digite uma senha: ")
contador=0 while(len(senha)<6):
somatorio=0 print("senha muito curta")
while (contador < N): senhanova=input("digite uma senha: ")
somatorio+=eval(input(“digite uma nota: ”)) else:
contador+=1 senhaBD=senhanova
print (“media: “ + str(somatorio/N)) # pode surgir a dúvida : não dará o mesmo resultado se
deletarmos o else ? Nesse caso “sim”
Programa executado: Programa executado:

digite o número de notas: 5 digite uma senha: lipe


digite uma nota: 5 senha muito curta
digite uma nota: 4 digite uma senha: l1p3-
digite uma nota: 6 senha muito curta
digite uma nota: 3 digite uma senha: l1p3-super
digite uma nota: 7 senha ok!
media: 5.0
Exemplos While
Exemplo 5 : exemplo 4 else necessário

senhanova=input("digite uma senha: ") # implementar o código


contador=0
while(len(senhanova)<6):
print("senha muito curta")
senhanova=input("digite uma senha: ") # novidade : adicionamos mais uma “condição” no loop
contador+=1 O loop irá ser interrompido pelo break caso o contador
if(contador==3): alcance o valor 3
print("número de tentativas excedido")
break; # novidade : ‘break;’
É um comando de controle de loops.
else: Interrompe e sai do loop assim que executado
senhaBD=senhanova Será melhor explicado a frente
print("senha atualizada no BD : "+senhaBD)
# nesse exemplo só quero que a minha senha
no banco de dados seja atualizada se forem
feitas no máximo 3 tentativas
For
Executa um ou um grupo de comandos N vezes, onde N representa o número de itens em uma
sequência,coleção.
Item é uma nova
(o nome da variável pode ser variável criada no
qualquer um, o nome ‘item’ início do for que irá
foi apenas ilustrativo) assumir o valor cada
um dos itens contidos
Sintaxe:
for item in sequencia: na sequência
desejada. Tal
declaração 1 sequência pode ser
Corpo do loop declaração 2 uma string, tupla,
lista,range() ...
declaração 3 Logo , o corpo do loop
... irá ser executado um
(o nome da sequencia será o total de N vezes onde
nome da sequencia que N representa a
desejamos percorrer) quantidade de itens na
sequência
Percorrendo uma sequência com For
O for pode iterar sobre os itens contidos em uma sequência, como uma lista ou uma string.

Exemplo 1: percorrendo uma string Exemplo 2: percorrendo uma lista

meunome=“rodrigo” minhalista=[“rodrigo”,”miguel”,”victor”]
contador=0 contador=0
for caractere in meunome: for item in minhalista:
contador+=1 contador+=1
print(caractere) print(item)
print(contador) print(contador)
r
o
d rodrigo
Resultado: r Resultado: miguel
i victor
g 3
o
7
Preenchendo estruturas de dados com for

Exercício 1 : Criar um programa que receba o número de nomes a serem salvos em


uma lista (deve ser criada) e em seguida receba e armazene estes nomes nessa lista.
O primeiro nome digitado deve ser o primeiro nome da lista, enquanto o último
digitado deve ser o último nome da lista

Exercício 2 : Fazer o mesmo exercício porém de forma que o primeiro nome digitado
seja o último da lista e o último digitado seja o primeiro da lista

Exercício 3 : Crie um programa que deve receber uma string, e exibir este número
inteiro invertido. Por exemplo :
Entrada “LIPE”
Saída “EPIL”
#comando len(string) retorna o número de caracteres na string
EX n=int(input("digite o número de nomes : ")) digite o número de nomes : 3
1 lista=[] digite um nome: rodrigo
for i in range(0,n,1): digite um nome: victor
lista.append(input("digite um nome: ")) digite um nome: renan
print(lista) ['rodrigo', 'victor', 'renan']

EX2
n=int(input("digite o número de nomes : ")) digite o número de nomes : 3
lista=[] digite um nome: rodrigo
for i in range(0,n,1): digite um nome: victor
lista.insert(0,input("digite um nome: ")) digite um nome: renan
print(lista) ['renan', 'victor', 'rodrigo']

EX palavra=input("digite a palavra a ser invertida: ") digite a palavra a ser invertida: LIPE
3 tamanho=len(palavra) EPIL
palavrainvertida="" >>>
for i in range(tamanho,0,-1): digite a palavra a ser invertida: PYTHON
palavrainvertida+=palavra[i-1] NOHTYP
>>>
print(palavrainvertida) digite a palavra a ser invertida: SUBINO ONIBUS
SUBINO ONIBUS
Range() : uma função muito utilizada no
for do python

Forma geral: range (início, fim, passo)


Exemplos:

range(5, 10,1) # a lista tem início no valor 5, e caminha em progressão aritimética até o valor
5, 6, 7, 8, 9 10 (o valor fim nunca é incluído na sequência gerada) com passo = 1

range(0, 10, 3)
0, 3, 6, 9 o valor fim nunca é incluído na sequência gerada!!

range(-10, -100, -30)


-10, -40, -70
Estrutura aninhada

Exemplo While:
While(1) (condição):
while(2) (condição):
Corpo do while 1 declarações while2 Corpo do while 2
declarações while1

• Como podemos observar, o while 2 está dentro do corpo do while 1. Assim, para cada
iteração do while 1 haverá um teste inicial para o while 2, podendo este ser iniciado ou não.
• Podemos concluir que para termos um primeiro teste do while interno devemos ter a
condição do while externo sendo verdadeira pelo menos uma vez.
• Podemos aplicar a estrutura aninhada também ao for.
Exemplo estrutura aninhada

matriz=[]
for i in range (0,3,1):
linha=[] O código gera uma matriz identidade 3X3
for j in range (0,3,1):
if i==j : [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
linha.append(1)
else:
linha.append(0)
matriz.append(linha)

print(matriz)
Declarações de controle para loops
Saída

• break: força o programa a interromper e sair do loop. for i in range(1,6):


São executados normalmente os comandos logo if i == 3: 1
abaixo da estrutura do loop break 2
print i

• continue: interrompe a iteração no ponto onde está for i in range(1,6): 1


implementado e em seguida faz o loop pular para a if i == 3: 2
próxima repetição, descartando os comandos a abaixo continue 4
do continue print i 5

• pass:pass é um operador nulo,quando executado


nada acontece. No entanto, pode ser útil quando é def f(arg):
requerido uma declaração(devido à sintaxe da pass
linguagem) mas o programador não deseja inserir
nenhum código naquele ponto naquele momento
Condição composta para o primeiro exemplo
Estou com sede
e com água? Não

Sim

Tomo 1 copo
d’água

Continuo com
sede e com água?

Sim Não Sigo o meu


dia
Condição composta para o primeiro exemplo
Estou com sede
e com água? Não

Sim

Tomo 1 copo
d’água

Continuo com
sede e com água?

Sim Não Sigo o meu


dia
Operadores lógicos

Os operadores lógicos unem expressões lógicas formando assim, uma nova expressão
que é composta por 2 ou mais sub-expressões. O resultado lógico de expressões compostas
será a relação entre as sub-expressões. Como estudamos, toda expressão lógica avaliada
resultará num valor lógico e a relação entre vários valores lógicos é um outro valor lógico.
Quando estudamos os operadores relacionais aprendemos a obter o valor lógico entre 2
operandos, no caso, entre o operando que está a esquerda do operador e o operando que
está a direita do Operador Relacional. Como resposta, obtemos valores do tipo Booleano, isto
é, verdadeiro [True] ou falso [False].
Operadores lógicos

OR
O operador lógico OR sempre precisará que uma das 2 sub-
expressões conectadas sejam verdadeiras para que, a
expressão num todo seja verdadeira.
AND
O operador lógico AND sempre precisará que as duas sub-
expressões conectadas sejam verdadeiras para que a expressão
num todo seja verdadeira

NOT O operador lógico NOT muda a nossa análise da expressão.


Essencialmente se ela era verdadeira, se torna falsa.Se era falsa
se torna verdadeira.
Operadores Lógicos
A=10
B=15
Exemplos Resultado da expressão

A>0 and B>0 TRUE


and A>0 and B<0 FALSE
B>A and B==10 TRUE

A>B or B==15 TRUE


ou A<B or B=!15 TRUE
A>B or B=!15 FALSE

not A>0 FALSE


not not A>0 or not A>B TRUE
not B<14 and A<B TRUE
Tabela Lógica

Você também pode gostar