SlideShare ist ein Scribd-Unternehmen logo
1 von 92
Capítulo 2
Controle de Fluxo
Natália Francesca
1
• As instruções de controle de fluxo
podem decidir quais instruções
Python devem ser executadas de
acordo com determinadas condições.
2
• Os fluxogramas representam os pontos de ramificação com
losangos, e os demais passos são representados por
retângulos. Os passos inicial e final são representados por
retângulos com cantos arredondados.
3
•Valores booleanos
•Operadores de comparação
•Operadores booleanos
4
Valores booleanos
• Tipos de dados booleano (Boolean): True e False
• Sempre começam com uma letra T ou F maiúscula e o restante
em letras minúsculas
>>> spam = True
>>> spam
True
>>> true
Traceback (most recent call last);
File "<pyshell#2>", line 1, in <module>
true
NameError: name 'true' is not defined
>>> True = 2+2
SyntaxError: assignment to keyword
5
Operadores de comparação
Operador Significado
== Igual a
!= Diferente de
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual a
6
>>> 42 == 42
True
>>> 42==99
False
>>> 2!=3
True
>>> 2!=2
False
>>> 'hello' == 'hello'
True
>>> 'hello' == 'Hello'
False
>>> 'dog' != 'cat'
True
>>> True == True
True
>>> 42 == 42.0
True
>>> 42 == '42'
False
7
Os operadores <, >, <= e >= funcionam
apropriadamente somente com valores inteiros e de
ponto flutuante
>>> 42 < 100
Tr>>> 42 > 100
ue
False
>>> 42 < 42
False
>>> eggCount = 42
>>> eggCount <= 42
True
>>> myAge = 29
>>> myAge >= 10
True
8
Diferença entre os operadores == E =
• Operador == (igual a) pergunta se dois
valores são iguais
• Operador = (atribuição) coloca o valor à
direita na variável da esquerda
9
Operadores booleanos
And, or e not
• São usados para comparar valores
booleanos, assim como operadores de
comparação, eles avaliam as expressões
reduzindo-as a um valor booleano.
10
Operadores booleanos binários
•And e or: sempre aceitam dois valores
booleanos (ou expressões) são considerados
operadores binários
11
And
• Avalia uma expressão como True se ambos os
valores forem True, caso contrário é avaliada
como False.
Expressão
True and True True
True and False False
False and True False
False and False False
12
Or
• Avalia uma expressão como True se um dos
valores booleanos for True. Se ambos forem
False, ela será avaliada como False.
Expressão Avaliada como...
True or True True
True or False True
False or True True
False or False False
13
Operador not
• De modo diferente de and e or, o operador not
atua somente sobre um valor booleano (ou uma
expressão).
• O operador not simplesmente é avaliado como
valor booleano oposto.
>>> not True
False
>>> not not not not True
True
14
Not
• Atua somente sobre um valor booleano (ou uma
expressão). É avaliado como o valor booleano
oposto.
Expressão Avaliada como...
not True False
not False True
15
Misturando operadores booleanos e
de comparação
>>> (4 < 5) and (5 < 6)
True
>>> (4 < 5) and (9 < 6)
False
>>> (1 == 2) or (2 == 2)
True
16
Misturando operadores booleanos e de
comparação
(4 < 5) and (5 < 6)
True and (5 < 6)
True and True
True
17
• Operadores booleanos têm uma ordem de
atuação, assim como os operadores
matemáticos.
• Not > and > or
• Exemplo:
>>> 2+2 == 4 and not 2+2 == 5 and 2*2 == 2+2
True
18
Elementos de controle de fluxo
• Instruções geralmente começam com uma parte
chamada condição, e todas as condições são
seguidas de um bloco de código chamado
cláusula
• Condições: nome mais específico para
expressões booleanas, as instruções são sempre
avaliadas como um valor booleano, ou seja True
e False.
19
Blocos de código
• As linhas de código Python podem ser agrupadas
em blocos
• Indentação das linhas de código
• Regras:
1. Os blocos começam no local em que a
indentação aumenta
2. Os blocos podem conter outros blocos
3. Os blocos terminam no local em que a
indentação se reduz a zero ou na indentação do
bloco que o contém
20
if name == 'Mary':
print('Hello Mary')
if password == 'swordfish':
print('Access granted.')
else:
print('Wrong password.')
O primeiro bloco de código começa na linha
print(‘Hello Mary’) e contém todas as linhas
depois dela. Neste bloco, temos outro bloco, que
tem apenas uma única linha: print(‘Access
Granted.’). O terceiro bloco também tem somente
uma linha: print(‘Wrong password.’)
21
Instruções de controle de fluxo
• As instruções são a parte mais importante do
controle de fluxo, representam os losangos do
fluxograma e correspondem às decisões que seu
programa tomará.
22
Instruções if
• Pode ser lida como “se (if) esta condição for
verdadeira, execute o código que está na cláusula
• A palavra-chave if;
• Uma condição (ou seja, uma expressão avaliada
como True ou False);
• Dois-pontos;
• Começando na próxima linha, um bloco de
código indentado (chamado de cláusula if)
23
Imagine que name tenha recebido um valor
anteriormente.
if name == 'Alice':
print('Hi, Alice.')
Todas as instruções de controle de fluxo
terminam com dois pontos e são seguidas por
um novo bloco de código (a cláusula). A cláusula
dessa instrução if é o bloco como print (‘Hi,
Alice’)
24
25
Instruções else
• A cláusula else será executada somente quando
a condição da instrução else pode ser lida como
“se esta condição for verdadeira, execute esse
código; senão (else) execute aquele código”
• A palavra-chave else;
• Dois-pontos;
• Começando na próxima linha, um bloco de
código indentado (chamado de cláusula else)
26
Retornando ao exemplo com Alice, vamos dar
uma olhada em um código que utiliza uma
instrução else para oferecer uma saudação
diferente caso o nome da pessoa não seja Alice.
if name == 'Alice':
print('Hi, Alice.')
else:
print('Hello, stranger.')
27
28
Instruções elif
• A instrução elif é uma instrução “ else if” que
sempre vem atrás de um if ou outra elif. Ela provê
outra condição que será verificada somente se todas
as condições anteriores forem False
• A palavra-chave elif;
• Uma condição (ou seja, uma expressão avaliada
como True ou False);
• Dois-pontos;
• Começando na próxima linha, um bloco de código
indentado (chamado de cláusula elif)
29
Vamos acrescentar um elif ao verificador de
nomes e ver essa instrução em ação.
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
30
31
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, Kiddo.')
elif age > 2000:
print('Unlike you, Alice is not an undead,
immortal vampire.')
elif age > 100:
print('You are not Alice, grannie.')
32
33
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
elif age > 100:
print('You are not Alice, grannie.')
elif age > 2000:
print('Unlike you, Alice is not an undead,
immortal vampire.')
34
35
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
else:
print('You are neither Alice nor a little kid.')
36
37
Instruções de loop while
Ao usar a instrução while o bloco de código é
executado repetidamente,enquanto while for True.
• A palavra-chave while;
• uma condição (ou seja,uma expressão avaliada
como True ou False);
• dois-pontos;
• começando na próxima linha,um bloco de código
indentado (chamado de cláusula while)
Ao final da cláusula while, a execução do programa
retorna ao início instrução while.
38
Código com uma instrução if:
spam = 0
if spam < 5:
print('Hello, world.')
spam = spam + 1
Código com uma instrução
while:
spam = 0
while spam < 5:
print('Hello, world.')
spam = spam + 1
39
40
41
Um loop while irritante
name = ' '
while name != 'your name':
print('Please type your name.')
name = input()
print('Thank you!')
42
43
Explicando
1- o programa define a variável name com uma string vazia
2- Isso serve para que a condição name != ' your name ' seja
avaliada como True e a execução do programa entre na
cláusula do loop while
3- O código nessa cláusula pede ao usuário que digite seu
nome, que é atribuído à variável name. Como essa é a última
linha do bloco , a execução retorna ao início do loop while e
avalia a condição novamente. Se o valor em name for
diferente da string 'your name', a condição será True e a
execução entrará novamente na cláusula while.
4 - Quando o usuário digitar your name, a condição do loop
while será 'your name' != 'yor name', que será avaliada como
False. A execução do programa ignorará a cláusula loop while
e executará o restante do programa.
44
Instruções break
• Atalho para fazer a execução do programa sair
previamente de uma cláusula de loop while. Se
uma instrução break for alcançada, a execução
sairá imediatamente da cláusula do loop while.
45
Instruções break
while True:
print('Please type your name.')
name = input()
if name == 'your name':
break
print('Thank you!')
46
Explicando
1- A primeira linha cria um loop infinito; é um loop
while cuja condição é sempre True. A execução do
programa sempre entrará no loop e sairá somente
quando uma instrução break for executada.
2- Como antes, esse programa pede que o usuário digite
your name, agora enquanto a execução ainda está no
loop while, uma instrução if é executada, para verificar
se name é igual a your name.
3- Se essa condição for True, a instrução break será
executada
4- E a execução sairá do loop para exibir print ('Thank
you!')
47
Explicando
5- Caso contrário, a cláusula da instrução if com
a instrução break será ignorada, o que colocará a
execução no final do loop while. A execução
retorna ao início da instrução while, para
verificar novamente a condição.
1- Como essa condição é simplesmente o valor
booleano True, a execução entra no loop para
pedir ao usuário que digite your name
novamente.
48
49
Instruções continue
• Assim como as instruções break, as instruções
continue são usadas nos loops.
• Quando alcançar uma instrução continue, a
execução do programa retornará imediatamente
ao início do loop e a condição será avaliada
novamente. O que também acontece quando a
execução alcança o final do loop.)
50
Preso em um loop infinito?
Se você executar um programa com um bug que
o faça ficar preso em um loop infinito, TECLE
CTRL-C.
Testando:
while True:
print('Hello world!')
Outra maneira de encerrar o programa é indo em
Shell > Restart Shell
51
Utilizando continue para escrever um programa que peça
um nome e uma senha:
while True:
print('Who are you?')
name = input()
if name != 'Joe':
continue
print('Hello, Joe. what is the password? (It is a fish.)')
password = input()
if password == 'swordfish':
break
print('Access granted.')
52
Explicando
• Se o usuário fornecer qualquer nome que não seja
Joe, a instrução continue fará a execução do
programa retornar ao início do loop.
• Se o usuário conseguir passar pela instrução if, uma
senha será solicitada.
• Se a senha fornecida for swordfish, a instrução break
será executada e a execução sairá do loop while para
exibir Access granted
• Caso contrário, a execução continuará até o final do
loop while, quando retornará ao início do loop
53
54
Exemplo de entrada
Who are you?
I'm fine, thanks. Who are you?
Who are you?
Joe
Hello, Joe. What is the password? (It is a fish.)
Mary
Who are you?
Joe
Hello, Joe. What is the password? (It is a fish.)
swordfish
Access granted.
55
Valores “Truthy” e “Falsey”
name = ' '
while not name:
print('Enter your name:')
name = input()
print('How many guests will you have?')
numOfGuests = int(input())
if numOfGuests:
print('Be sure to have enough room for all
your guests.')
print('Done')
56
Loops for e a função range()
• O loop for e a função range() são usados para
executar um bloco de código somente
determinado número de vezes.
57
No código, uma instrução for é semelhante a for i
in range(5): sempre inclui as partes a seguir:
• a palavra-chave for;
• um nome de variável;
• a palavra-chave in;
• uma chamada ao método range() com até três
inteiros passados a ele;
• dois-pontos;
• começando na próxima linha, um bloco de
código indentado (chamado de cláusula for).
58
Loop for em ação
print('My name is')
for i in range(5):
print('Jimmy Five Times (' + str(i) + ')')
59
Explicando
• O código da cláusula do loop for é executado cinco
vezes.
• Na primeira vez, a variável i é definida como 0.
• A chamada print() na cláusula exibirá Jimmy Five
Times (0).
• Depois que o Python finalizar uma iteração, a
execução retornará ao início do loop e a instrução
for incrementará i de um, começando pelo 0, em
seguida 1, 2, 3 e 4.
• A variável i assumirá os valores até o inteiro
passado para range()
60
My name is
Jimmy Five Times (0)
Jimmy Five Times (1)
Jimmy Five Times (2)
Jimmy Five Times (3)
Jimmy Five Times (4)
61
62
NOTA
As instruções break e continue podem ser usadas
em loops for. A instrução continue continuará
com o próximo valor do contador do loop for ,
como se a execução do programa tivesse
alcançado o final do loop e retornado ao início.
De fato, as instruções continue e break podem
ser usadas somente em loops while e for. Se você
tentar usar essas instruções em outros lugares, o
Python exibirá uma mensagem de erro.
63
História de Gauss
total = 0
for num in range(101):
total = total + num
print(total)
O resultado deve ser 5.050.
64
Explicando
• A variável total é definida com 0;
• O loop for então executa total = total + num 100
vezes;
• Quando o loop terminar de executar todas as
100 iterações, todos os inteiros de 0 a 100 terão
sido somados a total;
• Total será exibido na tela.
65
Um equivalente ao loop while
print ('My name is')
i = 0
while i < 5:
print('Jimmy Five Times (' + str(i) + ')')
i = i + 1
66
Argumentos de início, fim e de
incremento de range()
• Algumas funções podem ser chamadas com
vários argumentos separados por uma vírgula, e
range() é uma delas. Isso permite alterar o
inteiro passado para range() de modo a seguir
qualquer sequência de inteiros, incluindo
começar com um número diferente de 0.
67
for i in range(12, 16):
print(i)
O primeiro argumento será o ponto em que a
variável do loop for deve iniciar ; o segundo
argumento será o número com o qual o loop
deve terminar, sem incluí-lo.
12
13
14
15
68
• A função range() também pode ser chamada
com três argumentos. Os dois primeiros
argumentos serão os valores de início e fim, e o
terceiro será o argumento de incremento. O
incremento é a quantidade somada à variável
após cada iteração.
for i in range(0, 10, 2):
print(i)
69
Chamar range(0, 10, 2) fará uma contagem de
zero a oito em intervalos de dois.
0
2
4
6
8
70
• A função range() é flexível quanto à sequência de
números gerados em loops for. Usando números
negativos para o argumento de incremento o
contador do loop for diminui em vez de aumentar.
for i in range(5, -1, -1):
print(i)
71
A execução de um loop for para exibir i com
range(5,-1, -1) deverá exibir de cinco a zero.
5
4
3
2
1
0
72
Importando módulos
• Todos os programas Python podem chamar um
conjunto básico de funções denominado funções
internas (built-in), incluindo as funções print(), input()
e len().
• O Python também vem com um conjunto de módulos
chamado biblioteca-padrão (standard library).
• Cada módulo corresponde a um programa Python que
contém um grupo relacionado de funções que pode ser
incluído em seus programas.
• Por exemplo, o módulo math contém funções
relacionadas à matemática, o módulo random contém
funções relacionadas a nº aleatórios.
73
Antes de usar as funções de um módulo, você
deve importá-lo usando uma instrução import.
No código, uma instrução import é constituída
das seguintes partes:
• a palavra-chave import;
• o nome do módulo;
• opcionalmente, mais nomes de módulos, desde
que estejam separados por vírgula.
74
Após ter importado um módulo, você poderá
usar todas as suas funções.
módulo: random
função: random.randint()
import random
for i in range(5):
print(random.randint(1, 10))
4
1
8
4
1
75
Explicando
A função random.randint() é avaliada com um
valor aleatório entre os dois inteiros passados a
ela. Como randint() está no módulo random,
você deve digitar random. na frente do nome da
função para informar o Python que essa função
deve ser procurada no módulo random.
76
Instrução import que importa quatro módulos
diferentes:
import random, sys, os, math
Agora podemos utilizar qualquer uma das
funções contidas nesses quatro módulos.
77
Instruções from import
• Uma forma alternativa para a instrução import
é composta da palavra-chave from seguida do
nome do módulo, a palavra-chave import e um
asterisco; por exemplo, from random import*.
• As chamadas às funções em random não
precisarão do prefixo random.
• Entretanto usar o nome completo deixa o
código mais legível, é melhor usar a forma
normal da instrução import.
78
Encerrando um programa
previamente com sys.exit()
import sys
while True:
print('Type exit to exit.')
response = input()
if response == 'exit':
sys.exit()
print('You typed' + response + '.')
79
Explicando
O programa contém um loop infinito sem uma
instrução break. A única maneira de esse
programa terminar será o usuário digitar exit,
fazendo sys.exit() ser chamado.
Quando response for igual a exit, o programa
será encerrado.
Como a variável response é definida pela função
input(), o usuário deverá fornecer exit para
interromper o programa.
80
Resumo
• Ao usar expressões que são avaliadas como True
ou False (também chamadas de condições),
podemos criar programas que tomem decisões
em relação ao código a ser executado e
ignorado.
• Também podemos executar códigos
repetidamente em um loop enquanto
determinada condição for avaliada como True.
81
Resumo
• As instruções break e continue serão úteis caso
você precise sair de um loop ou voltar para o
início.
• Essas instruções de controle de fluxo permitirão
escrever programas muito inteligentes.
82
Exercícios práticos
1- Quais são os dois valores do tipo booleano?
Como eles são escritos?
2- Quais são os três operadores booleanos?
3- Escreva as tabelas verdade de cada operador
booleano (ou seja, todas as combinações
possíveis de valores booleanos para o operador e
como elas são avaliadas).
83
1- True e False
2- And, or e not
84
Exercícios práticos
4- Para que valores as expressões a seguir são
avaliadas?
(5 > 4) and (3 == 5)
not (5 > 4)
not ((5 > 4) or ( 3 == 5))
(True and True) and (True == False)
(not False) or (not True)
85
Exercícios práticos
5- Quais são os seis operadores de comparação?
6- Qual é a diferença entre o operador “igual a” e
o operador de atribuição?
7- Explique o que é uma condição e quando você
usaria uma.
86
5- ==, !=, <, >, <= e >=
6- == é operador que compara dois valores e é
avaliado como um booleano, enquanto = é o
operador de atribuição, que armazena um valor
em uma variável.
7- Uma condição é uma expressão usada em
uma instrução de controle de fluxo e é avaliada
como um valor booleano.
87
Exercícios práticos
8- Identifique os três blocos no código a seguir:
spam = 0
if spam == 10:
print('eggs')
if spam > 5:
print('bacon')
else:
print('ham')
print('spam')
print('spam')
88
Exercícios práticos
9- Escreva um código que exiba Hello se 1 estiver
armazenado em spam , Howdy se 2 estiver
armazenado em spam e Greetings! se outro valor
estiver armazenado em spam.
10- Que tecla você deve pressionar se o seu
programa estiver preso em um loop infinito?
11- Qual é a diferença entre break e continue?
12- Qual é a diferença entre range(10), range(0,
10) e range (0, 10, 1) em um loop for?
89
9- if spam == 1:
print('Hello')
elif spam == 2:
print('Howdy')
else:
print('Greetings!')
11- A instrução break desviará a execução para
fora do loop, imediatamente depois dele. A
instrução continue desviará a execução para o
início do loop.
90
Exercícios práticos
13- Crie um pequeno programa que mostre os
números de 1 a 10 usando um loop for. Em
seguida, crie um programa equivalente que
mostre os números de 1 a 10 usando um loop
while.
14- Se você tivesse uma função chamada bacon()
em um módulo chamado spam, como você
chamaria após ter importado spam?
91
13-
for i in range(1, 11):
print(i)
i = 1
while i <= 10:
print(i)
i = i + 1
92

Weitere ähnliche Inhalte

Was ist angesagt?

Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchDaniel Brandão
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Calculadora Cientifica no visualg
Calculadora Cientifica no visualgCalculadora Cientifica no visualg
Calculadora Cientifica no visualgDenise Marinho
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggersflaviognm
 
MS Excel - Aula 01
MS Excel - Aula 01MS Excel - Aula 01
MS Excel - Aula 01Roney Sousa
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
Revsão sobre sistemas operacionais
Revsão sobre sistemas operacionaisRevsão sobre sistemas operacionais
Revsão sobre sistemas operacionaisRodrigo Rodrigues
 
Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosRoney Sousa
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoElaine Cecília Gatto
 
Barramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de ComputadoresBarramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de ComputadoresWellington Oliveira
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Mariana Camargo
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 

Was ist angesagt? (20)

Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL Workbench
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Calculadora Cientifica no visualg
Calculadora Cientifica no visualgCalculadora Cientifica no visualg
Calculadora Cientifica no visualg
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
MS Excel - Aula 01
MS Excel - Aula 01MS Excel - Aula 01
MS Excel - Aula 01
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Revsão sobre sistemas operacionais
Revsão sobre sistemas operacionaisRevsão sobre sistemas operacionais
Revsão sobre sistemas operacionais
 
Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - Algoritmos
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de Programação
 
Aula 7 - Expressões Aritméticas e Lógicas
Aula 7 - Expressões Aritméticas e LógicasAula 7 - Expressões Aritméticas e Lógicas
Aula 7 - Expressões Aritméticas e Lógicas
 
Barramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de ComputadoresBarramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de Computadores
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Programação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a ObjetosProgramação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a Objetos
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Modelos de Engenharia de Software
Modelos de Engenharia de SoftwareModelos de Engenharia de Software
Modelos de Engenharia de Software
 

Andere mochten auch

CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...
CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...
CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...Liber UFPE
 
Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...
Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...
Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...Fernando Souza
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosAmbiente Livre
 
Como extrair insights no meio digital para execução de uma Estratégia Data...
Como extrair insights no meio digital para execução de uma Estratégia Data...Como extrair insights no meio digital para execução de uma Estratégia Data...
Como extrair insights no meio digital para execução de uma Estratégia Data...Estêvão Soares Custodio
 
Data analysis open data
Data analysis open dataData analysis open data
Data analysis open dataLiber UFPE
 

Andere mochten auch (20)

Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...
 
Automatize tarefas maçantes com python - Aula 1
Automatize tarefas maçantes com python - Aula 1Automatize tarefas maçantes com python - Aula 1
Automatize tarefas maçantes com python - Aula 1
 
Encarando o Big Data: Tornando a Sociologia Relevante
Encarando o Big Data: Tornando a Sociologia RelevanteEncarando o Big Data: Tornando a Sociologia Relevante
Encarando o Big Data: Tornando a Sociologia Relevante
 
Webinar | Saia do básico em social media
Webinar | Saia do básico em social mediaWebinar | Saia do básico em social media
Webinar | Saia do básico em social media
 
Aula Experimental - Rede Sampa - Da curadoria social e coletiva: os filtros d...
Aula Experimental - Rede Sampa - Da curadoria social e coletiva: os filtros d...Aula Experimental - Rede Sampa - Da curadoria social e coletiva: os filtros d...
Aula Experimental - Rede Sampa - Da curadoria social e coletiva: os filtros d...
 
CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...
CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...
CLASSIFICAÇÃO DE DOCUMENTOS FILATÉLICOS EM FORMATO ABERTO PARA WEB: o caso do...
 
Os Usos Literários do Espaço de Alta Dimensão
Os Usos Literários do Espaço de Alta DimensãoOs Usos Literários do Espaço de Alta Dimensão
Os Usos Literários do Espaço de Alta Dimensão
 
Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...
Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...
Palestra - Social Media Week - Carreira Social Media - Erros e acertos que vo...
 
Construindo diálogos
Construindo diálogosConstruindo diálogos
Construindo diálogos
 
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...
 
Seminário Sociologia na era do Big Data
Seminário Sociologia na era do Big DataSeminário Sociologia na era do Big Data
Seminário Sociologia na era do Big Data
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
Como extrair insights no meio digital para execução de uma Estratégia Data...
Como extrair insights no meio digital para execução de uma Estratégia Data...Como extrair insights no meio digital para execução de uma Estratégia Data...
Como extrair insights no meio digital para execução de uma Estratégia Data...
 
Apresentação do Tainacan Museus - Instituto Brasileiro de Museus - IBRAM
Apresentação do Tainacan Museus - Instituto Brasileiro de Museus - IBRAMApresentação do Tainacan Museus - Instituto Brasileiro de Museus - IBRAM
Apresentação do Tainacan Museus - Instituto Brasileiro de Museus - IBRAM
 
Extração de Dados do Facebook com o NetVizz
Extração de Dados do Facebook com o NetVizzExtração de Dados do Facebook com o NetVizz
Extração de Dados do Facebook com o NetVizz
 
Capítulo 4 listas.
Capítulo 4   listas.Capítulo 4   listas.
Capítulo 4 listas.
 
Data analysis open data
Data analysis open dataData analysis open data
Data analysis open data
 
Métodos Digitais para Análise de Dados - Aula 07 - Fontes de informação dig...
Métodos Digitais para Análise de Dados - Aula 07 - Fontes de informação dig...Métodos Digitais para Análise de Dados - Aula 07 - Fontes de informação dig...
Métodos Digitais para Análise de Dados - Aula 07 - Fontes de informação dig...
 
E-commerce + Social media
E-commerce + Social mediaE-commerce + Social media
E-commerce + Social media
 
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 02 - Museus e red...
 

Ähnlich wie Controle de Fluxo em Python: if, else, elif, while, for, break e continue

Ähnlich wie Controle de Fluxo em Python: if, else, elif, while, for, break e continue (20)

02 controle de fluxo
02   controle de fluxo02   controle de fluxo
02 controle de fluxo
 
Construcao de Algoritmos - Aula 08
Construcao de Algoritmos - Aula 08Construcao de Algoritmos - Aula 08
Construcao de Algoritmos - Aula 08
 
Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
Alg   aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)Alg   aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
Alg aula 05-1 - estruturas de-repeticao tp1 (repita e enquanto)
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de Repetição
 
Algoritmos C/C++ - Aula 02
Algoritmos C/C++ - Aula 02Algoritmos C/C++ - Aula 02
Algoritmos C/C++ - Aula 02
 
Java
JavaJava
Java
 
Java - Aula 08
Java - Aula 08Java - Aula 08
Java - Aula 08
 
Aula3
Aula3Aula3
Aula3
 
Introducao a Lógica de Programação
Introducao a Lógica de ProgramaçãoIntroducao a Lógica de Programação
Introducao a Lógica de Programação
 
Conceitos base de programação - parte 2
Conceitos base de programação - parte 2Conceitos base de programação - parte 2
Conceitos base de programação - parte 2
 
EstrutControleC.pdf
EstrutControleC.pdfEstrutControleC.pdf
EstrutControleC.pdf
 
Visualg
VisualgVisualg
Visualg
 
Repetir
RepetirRepetir
Repetir
 
6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo
 
Aula 05 - Comandos de repeticao - JAVA.pdf
Aula 05 - Comandos de repeticao - JAVA.pdfAula 05 - Comandos de repeticao - JAVA.pdf
Aula 05 - Comandos de repeticao - JAVA.pdf
 
Cap3 icc final
Cap3 icc finalCap3 icc final
Cap3 icc final
 
Aula 05 - Estrutura de Controle em PHP.pdf
Aula 05 - Estrutura de Controle em PHP.pdfAula 05 - Estrutura de Controle em PHP.pdf
Aula 05 - Estrutura de Controle em PHP.pdf
 
01 variaveis io if
01 variaveis io if01 variaveis io if
01 variaveis io if
 
Algoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - LacosAlgoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - Lacos
 
Aula 11
Aula 11Aula 11
Aula 11
 

Mehr von Laboratório de Políticas Públicas Participativas

Mehr von Laboratório de Políticas Públicas Participativas (18)

Al sweigart, cap 3
Al sweigart, cap 3Al sweigart, cap 3
Al sweigart, cap 3
 
Manual Tainacan - acervos digitais em rede
Manual Tainacan - acervos digitais em redeManual Tainacan - acervos digitais em rede
Manual Tainacan - acervos digitais em rede
 
Algorithms and their others
Algorithms and their othersAlgorithms and their others
Algorithms and their others
 
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...
Oficina Cultura Digital, Museus e Acervos em Rede - Módulo 01 - inteligênci...
 
Métodos Digitais para Análise de Dados - Aula 06 - O digital como espaço soc...
Métodos Digitais para Análise de Dados - Aula 06 - O digital como espaço soc...Métodos Digitais para Análise de Dados - Aula 06 - O digital como espaço soc...
Métodos Digitais para Análise de Dados - Aula 06 - O digital como espaço soc...
 
Métodos Digitais para Análise de Dados - Aula 05 - Sociabilidade em rede e ca...
Métodos Digitais para Análise de Dados - Aula 05 - Sociabilidade em rede e ca...Métodos Digitais para Análise de Dados - Aula 05 - Sociabilidade em rede e ca...
Métodos Digitais para Análise de Dados - Aula 05 - Sociabilidade em rede e ca...
 
Seminário - Apresentação do Artigo - Big Data and Historical Social Science
Seminário - Apresentação do Artigo - Big Data and Historical Social ScienceSeminário - Apresentação do Artigo - Big Data and Historical Social Science
Seminário - Apresentação do Artigo - Big Data and Historical Social Science
 
Métodos Quantitativos e Pesquisa em Ciências Sociais - Ramos, 2013 (Síntese d...
Métodos Quantitativos e Pesquisa em Ciências Sociais - Ramos, 2013 (Síntese d...Métodos Quantitativos e Pesquisa em Ciências Sociais - Ramos, 2013 (Síntese d...
Métodos Quantitativos e Pesquisa em Ciências Sociais - Ramos, 2013 (Síntese d...
 
Minicurso - Geoprocessamento/Qgis
Minicurso - Geoprocessamento/QgisMinicurso - Geoprocessamento/Qgis
Minicurso - Geoprocessamento/Qgis
 
Métodos Digitais para Análise de Dados - Aula 04 - Conceituando os métodos di...
Métodos Digitais para Análise de Dados - Aula 04 - Conceituando os métodos di...Métodos Digitais para Análise de Dados - Aula 04 - Conceituando os métodos di...
Métodos Digitais para Análise de Dados - Aula 04 - Conceituando os métodos di...
 
Seminário do artigo "A sociologia digital: um desafio para o século XXI"
Seminário do artigo "A sociologia digital: um desafio para o século XXI"Seminário do artigo "A sociologia digital: um desafio para o século XXI"
Seminário do artigo "A sociologia digital: um desafio para o século XXI"
 
Seminário - Apresentação do artigo - Ontologies methodologies-and-new-uses-of...
Seminário - Apresentação do artigo - Ontologies methodologies-and-new-uses-of...Seminário - Apresentação do artigo - Ontologies methodologies-and-new-uses-of...
Seminário - Apresentação do artigo - Ontologies methodologies-and-new-uses-of...
 
Métodos Digitais para Análise de Dados - Aula 03 - Do tipo de problema à apli...
Métodos Digitais para Análise de Dados - Aula 03 - Do tipo de problema à apli...Métodos Digitais para Análise de Dados - Aula 03 - Do tipo de problema à apli...
Métodos Digitais para Análise de Dados - Aula 03 - Do tipo de problema à apli...
 
Métodos Digitais para Análise de Dados - Aula 02 - Da formulação do problem...
Métodos Digitais para Análise de Dados - Aula 02 - Da formulação do problem...Métodos Digitais para Análise de Dados - Aula 02 - Da formulação do problem...
Métodos Digitais para Análise de Dados - Aula 02 - Da formulação do problem...
 
Plano de pesquisa 2016 2019 - Métodos Digitais na UFG
Plano de pesquisa 2016 2019 - Métodos Digitais na UFGPlano de pesquisa 2016 2019 - Métodos Digitais na UFG
Plano de pesquisa 2016 2019 - Métodos Digitais na UFG
 
Aula 01 - Métodos Digitais para Análise de Dados - Introdução
Aula 01 - Métodos Digitais para Análise de Dados - IntroduçãoAula 01 - Métodos Digitais para Análise de Dados - Introdução
Aula 01 - Métodos Digitais para Análise de Dados - Introdução
 
Modelo de desenvolvimento de software em 3 camadas para Wordpress
Modelo de desenvolvimento de software em 3 camadas para WordpressModelo de desenvolvimento de software em 3 camadas para Wordpress
Modelo de desenvolvimento de software em 3 camadas para Wordpress
 
Material oficina Tainacan Porto Alegre - apresentação_inicial
Material oficina Tainacan Porto Alegre - apresentação_inicialMaterial oficina Tainacan Porto Alegre - apresentação_inicial
Material oficina Tainacan Porto Alegre - apresentação_inicial
 

Controle de Fluxo em Python: if, else, elif, while, for, break e continue

  • 1. Capítulo 2 Controle de Fluxo Natália Francesca 1
  • 2. • As instruções de controle de fluxo podem decidir quais instruções Python devem ser executadas de acordo com determinadas condições. 2
  • 3. • Os fluxogramas representam os pontos de ramificação com losangos, e os demais passos são representados por retângulos. Os passos inicial e final são representados por retângulos com cantos arredondados. 3
  • 4. •Valores booleanos •Operadores de comparação •Operadores booleanos 4
  • 5. Valores booleanos • Tipos de dados booleano (Boolean): True e False • Sempre começam com uma letra T ou F maiúscula e o restante em letras minúsculas >>> spam = True >>> spam True >>> true Traceback (most recent call last); File "<pyshell#2>", line 1, in <module> true NameError: name 'true' is not defined >>> True = 2+2 SyntaxError: assignment to keyword 5
  • 6. Operadores de comparação Operador Significado == Igual a != Diferente de < Menor que > Maior que <= Menor ou igual a >= Maior ou igual a 6
  • 7. >>> 42 == 42 True >>> 42==99 False >>> 2!=3 True >>> 2!=2 False >>> 'hello' == 'hello' True >>> 'hello' == 'Hello' False >>> 'dog' != 'cat' True >>> True == True True >>> 42 == 42.0 True >>> 42 == '42' False 7
  • 8. Os operadores <, >, <= e >= funcionam apropriadamente somente com valores inteiros e de ponto flutuante >>> 42 < 100 Tr>>> 42 > 100 ue False >>> 42 < 42 False >>> eggCount = 42 >>> eggCount <= 42 True >>> myAge = 29 >>> myAge >= 10 True 8
  • 9. Diferença entre os operadores == E = • Operador == (igual a) pergunta se dois valores são iguais • Operador = (atribuição) coloca o valor à direita na variável da esquerda 9
  • 10. Operadores booleanos And, or e not • São usados para comparar valores booleanos, assim como operadores de comparação, eles avaliam as expressões reduzindo-as a um valor booleano. 10
  • 11. Operadores booleanos binários •And e or: sempre aceitam dois valores booleanos (ou expressões) são considerados operadores binários 11
  • 12. And • Avalia uma expressão como True se ambos os valores forem True, caso contrário é avaliada como False. Expressão True and True True True and False False False and True False False and False False 12
  • 13. Or • Avalia uma expressão como True se um dos valores booleanos for True. Se ambos forem False, ela será avaliada como False. Expressão Avaliada como... True or True True True or False True False or True True False or False False 13
  • 14. Operador not • De modo diferente de and e or, o operador not atua somente sobre um valor booleano (ou uma expressão). • O operador not simplesmente é avaliado como valor booleano oposto. >>> not True False >>> not not not not True True 14
  • 15. Not • Atua somente sobre um valor booleano (ou uma expressão). É avaliado como o valor booleano oposto. Expressão Avaliada como... not True False not False True 15
  • 16. Misturando operadores booleanos e de comparação >>> (4 < 5) and (5 < 6) True >>> (4 < 5) and (9 < 6) False >>> (1 == 2) or (2 == 2) True 16
  • 17. Misturando operadores booleanos e de comparação (4 < 5) and (5 < 6) True and (5 < 6) True and True True 17
  • 18. • Operadores booleanos têm uma ordem de atuação, assim como os operadores matemáticos. • Not > and > or • Exemplo: >>> 2+2 == 4 and not 2+2 == 5 and 2*2 == 2+2 True 18
  • 19. Elementos de controle de fluxo • Instruções geralmente começam com uma parte chamada condição, e todas as condições são seguidas de um bloco de código chamado cláusula • Condições: nome mais específico para expressões booleanas, as instruções são sempre avaliadas como um valor booleano, ou seja True e False. 19
  • 20. Blocos de código • As linhas de código Python podem ser agrupadas em blocos • Indentação das linhas de código • Regras: 1. Os blocos começam no local em que a indentação aumenta 2. Os blocos podem conter outros blocos 3. Os blocos terminam no local em que a indentação se reduz a zero ou na indentação do bloco que o contém 20
  • 21. if name == 'Mary': print('Hello Mary') if password == 'swordfish': print('Access granted.') else: print('Wrong password.') O primeiro bloco de código começa na linha print(‘Hello Mary’) e contém todas as linhas depois dela. Neste bloco, temos outro bloco, que tem apenas uma única linha: print(‘Access Granted.’). O terceiro bloco também tem somente uma linha: print(‘Wrong password.’) 21
  • 22. Instruções de controle de fluxo • As instruções são a parte mais importante do controle de fluxo, representam os losangos do fluxograma e correspondem às decisões que seu programa tomará. 22
  • 23. Instruções if • Pode ser lida como “se (if) esta condição for verdadeira, execute o código que está na cláusula • A palavra-chave if; • Uma condição (ou seja, uma expressão avaliada como True ou False); • Dois-pontos; • Começando na próxima linha, um bloco de código indentado (chamado de cláusula if) 23
  • 24. Imagine que name tenha recebido um valor anteriormente. if name == 'Alice': print('Hi, Alice.') Todas as instruções de controle de fluxo terminam com dois pontos e são seguidas por um novo bloco de código (a cláusula). A cláusula dessa instrução if é o bloco como print (‘Hi, Alice’) 24
  • 25. 25
  • 26. Instruções else • A cláusula else será executada somente quando a condição da instrução else pode ser lida como “se esta condição for verdadeira, execute esse código; senão (else) execute aquele código” • A palavra-chave else; • Dois-pontos; • Começando na próxima linha, um bloco de código indentado (chamado de cláusula else) 26
  • 27. Retornando ao exemplo com Alice, vamos dar uma olhada em um código que utiliza uma instrução else para oferecer uma saudação diferente caso o nome da pessoa não seja Alice. if name == 'Alice': print('Hi, Alice.') else: print('Hello, stranger.') 27
  • 28. 28
  • 29. Instruções elif • A instrução elif é uma instrução “ else if” que sempre vem atrás de um if ou outra elif. Ela provê outra condição que será verificada somente se todas as condições anteriores forem False • A palavra-chave elif; • Uma condição (ou seja, uma expressão avaliada como True ou False); • Dois-pontos; • Começando na próxima linha, um bloco de código indentado (chamado de cláusula elif) 29
  • 30. Vamos acrescentar um elif ao verificador de nomes e ver essa instrução em ação. if name == 'Alice': print('Hi, Alice.') elif age < 12: print('You are not Alice, kiddo.') 30
  • 31. 31
  • 32. if name == 'Alice': print('Hi, Alice.') elif age < 12: print('You are not Alice, Kiddo.') elif age > 2000: print('Unlike you, Alice is not an undead, immortal vampire.') elif age > 100: print('You are not Alice, grannie.') 32
  • 33. 33
  • 34. if name == 'Alice': print('Hi, Alice.') elif age < 12: print('You are not Alice, kiddo.') elif age > 100: print('You are not Alice, grannie.') elif age > 2000: print('Unlike you, Alice is not an undead, immortal vampire.') 34
  • 35. 35
  • 36. if name == 'Alice': print('Hi, Alice.') elif age < 12: print('You are not Alice, kiddo.') else: print('You are neither Alice nor a little kid.') 36
  • 37. 37
  • 38. Instruções de loop while Ao usar a instrução while o bloco de código é executado repetidamente,enquanto while for True. • A palavra-chave while; • uma condição (ou seja,uma expressão avaliada como True ou False); • dois-pontos; • começando na próxima linha,um bloco de código indentado (chamado de cláusula while) Ao final da cláusula while, a execução do programa retorna ao início instrução while. 38
  • 39. Código com uma instrução if: spam = 0 if spam < 5: print('Hello, world.') spam = spam + 1 Código com uma instrução while: spam = 0 while spam < 5: print('Hello, world.') spam = spam + 1 39
  • 40. 40
  • 41. 41
  • 42. Um loop while irritante name = ' ' while name != 'your name': print('Please type your name.') name = input() print('Thank you!') 42
  • 43. 43
  • 44. Explicando 1- o programa define a variável name com uma string vazia 2- Isso serve para que a condição name != ' your name ' seja avaliada como True e a execução do programa entre na cláusula do loop while 3- O código nessa cláusula pede ao usuário que digite seu nome, que é atribuído à variável name. Como essa é a última linha do bloco , a execução retorna ao início do loop while e avalia a condição novamente. Se o valor em name for diferente da string 'your name', a condição será True e a execução entrará novamente na cláusula while. 4 - Quando o usuário digitar your name, a condição do loop while será 'your name' != 'yor name', que será avaliada como False. A execução do programa ignorará a cláusula loop while e executará o restante do programa. 44
  • 45. Instruções break • Atalho para fazer a execução do programa sair previamente de uma cláusula de loop while. Se uma instrução break for alcançada, a execução sairá imediatamente da cláusula do loop while. 45
  • 46. Instruções break while True: print('Please type your name.') name = input() if name == 'your name': break print('Thank you!') 46
  • 47. Explicando 1- A primeira linha cria um loop infinito; é um loop while cuja condição é sempre True. A execução do programa sempre entrará no loop e sairá somente quando uma instrução break for executada. 2- Como antes, esse programa pede que o usuário digite your name, agora enquanto a execução ainda está no loop while, uma instrução if é executada, para verificar se name é igual a your name. 3- Se essa condição for True, a instrução break será executada 4- E a execução sairá do loop para exibir print ('Thank you!') 47
  • 48. Explicando 5- Caso contrário, a cláusula da instrução if com a instrução break será ignorada, o que colocará a execução no final do loop while. A execução retorna ao início da instrução while, para verificar novamente a condição. 1- Como essa condição é simplesmente o valor booleano True, a execução entra no loop para pedir ao usuário que digite your name novamente. 48
  • 49. 49
  • 50. Instruções continue • Assim como as instruções break, as instruções continue são usadas nos loops. • Quando alcançar uma instrução continue, a execução do programa retornará imediatamente ao início do loop e a condição será avaliada novamente. O que também acontece quando a execução alcança o final do loop.) 50
  • 51. Preso em um loop infinito? Se você executar um programa com um bug que o faça ficar preso em um loop infinito, TECLE CTRL-C. Testando: while True: print('Hello world!') Outra maneira de encerrar o programa é indo em Shell > Restart Shell 51
  • 52. Utilizando continue para escrever um programa que peça um nome e uma senha: while True: print('Who are you?') name = input() if name != 'Joe': continue print('Hello, Joe. what is the password? (It is a fish.)') password = input() if password == 'swordfish': break print('Access granted.') 52
  • 53. Explicando • Se o usuário fornecer qualquer nome que não seja Joe, a instrução continue fará a execução do programa retornar ao início do loop. • Se o usuário conseguir passar pela instrução if, uma senha será solicitada. • Se a senha fornecida for swordfish, a instrução break será executada e a execução sairá do loop while para exibir Access granted • Caso contrário, a execução continuará até o final do loop while, quando retornará ao início do loop 53
  • 54. 54
  • 55. Exemplo de entrada Who are you? I'm fine, thanks. Who are you? Who are you? Joe Hello, Joe. What is the password? (It is a fish.) Mary Who are you? Joe Hello, Joe. What is the password? (It is a fish.) swordfish Access granted. 55
  • 56. Valores “Truthy” e “Falsey” name = ' ' while not name: print('Enter your name:') name = input() print('How many guests will you have?') numOfGuests = int(input()) if numOfGuests: print('Be sure to have enough room for all your guests.') print('Done') 56
  • 57. Loops for e a função range() • O loop for e a função range() são usados para executar um bloco de código somente determinado número de vezes. 57
  • 58. No código, uma instrução for é semelhante a for i in range(5): sempre inclui as partes a seguir: • a palavra-chave for; • um nome de variável; • a palavra-chave in; • uma chamada ao método range() com até três inteiros passados a ele; • dois-pontos; • começando na próxima linha, um bloco de código indentado (chamado de cláusula for). 58
  • 59. Loop for em ação print('My name is') for i in range(5): print('Jimmy Five Times (' + str(i) + ')') 59
  • 60. Explicando • O código da cláusula do loop for é executado cinco vezes. • Na primeira vez, a variável i é definida como 0. • A chamada print() na cláusula exibirá Jimmy Five Times (0). • Depois que o Python finalizar uma iteração, a execução retornará ao início do loop e a instrução for incrementará i de um, começando pelo 0, em seguida 1, 2, 3 e 4. • A variável i assumirá os valores até o inteiro passado para range() 60
  • 61. My name is Jimmy Five Times (0) Jimmy Five Times (1) Jimmy Five Times (2) Jimmy Five Times (3) Jimmy Five Times (4) 61
  • 62. 62
  • 63. NOTA As instruções break e continue podem ser usadas em loops for. A instrução continue continuará com o próximo valor do contador do loop for , como se a execução do programa tivesse alcançado o final do loop e retornado ao início. De fato, as instruções continue e break podem ser usadas somente em loops while e for. Se você tentar usar essas instruções em outros lugares, o Python exibirá uma mensagem de erro. 63
  • 64. História de Gauss total = 0 for num in range(101): total = total + num print(total) O resultado deve ser 5.050. 64
  • 65. Explicando • A variável total é definida com 0; • O loop for então executa total = total + num 100 vezes; • Quando o loop terminar de executar todas as 100 iterações, todos os inteiros de 0 a 100 terão sido somados a total; • Total será exibido na tela. 65
  • 66. Um equivalente ao loop while print ('My name is') i = 0 while i < 5: print('Jimmy Five Times (' + str(i) + ')') i = i + 1 66
  • 67. Argumentos de início, fim e de incremento de range() • Algumas funções podem ser chamadas com vários argumentos separados por uma vírgula, e range() é uma delas. Isso permite alterar o inteiro passado para range() de modo a seguir qualquer sequência de inteiros, incluindo começar com um número diferente de 0. 67
  • 68. for i in range(12, 16): print(i) O primeiro argumento será o ponto em que a variável do loop for deve iniciar ; o segundo argumento será o número com o qual o loop deve terminar, sem incluí-lo. 12 13 14 15 68
  • 69. • A função range() também pode ser chamada com três argumentos. Os dois primeiros argumentos serão os valores de início e fim, e o terceiro será o argumento de incremento. O incremento é a quantidade somada à variável após cada iteração. for i in range(0, 10, 2): print(i) 69
  • 70. Chamar range(0, 10, 2) fará uma contagem de zero a oito em intervalos de dois. 0 2 4 6 8 70
  • 71. • A função range() é flexível quanto à sequência de números gerados em loops for. Usando números negativos para o argumento de incremento o contador do loop for diminui em vez de aumentar. for i in range(5, -1, -1): print(i) 71
  • 72. A execução de um loop for para exibir i com range(5,-1, -1) deverá exibir de cinco a zero. 5 4 3 2 1 0 72
  • 73. Importando módulos • Todos os programas Python podem chamar um conjunto básico de funções denominado funções internas (built-in), incluindo as funções print(), input() e len(). • O Python também vem com um conjunto de módulos chamado biblioteca-padrão (standard library). • Cada módulo corresponde a um programa Python que contém um grupo relacionado de funções que pode ser incluído em seus programas. • Por exemplo, o módulo math contém funções relacionadas à matemática, o módulo random contém funções relacionadas a nº aleatórios. 73
  • 74. Antes de usar as funções de um módulo, você deve importá-lo usando uma instrução import. No código, uma instrução import é constituída das seguintes partes: • a palavra-chave import; • o nome do módulo; • opcionalmente, mais nomes de módulos, desde que estejam separados por vírgula. 74
  • 75. Após ter importado um módulo, você poderá usar todas as suas funções. módulo: random função: random.randint() import random for i in range(5): print(random.randint(1, 10)) 4 1 8 4 1 75
  • 76. Explicando A função random.randint() é avaliada com um valor aleatório entre os dois inteiros passados a ela. Como randint() está no módulo random, você deve digitar random. na frente do nome da função para informar o Python que essa função deve ser procurada no módulo random. 76
  • 77. Instrução import que importa quatro módulos diferentes: import random, sys, os, math Agora podemos utilizar qualquer uma das funções contidas nesses quatro módulos. 77
  • 78. Instruções from import • Uma forma alternativa para a instrução import é composta da palavra-chave from seguida do nome do módulo, a palavra-chave import e um asterisco; por exemplo, from random import*. • As chamadas às funções em random não precisarão do prefixo random. • Entretanto usar o nome completo deixa o código mais legível, é melhor usar a forma normal da instrução import. 78
  • 79. Encerrando um programa previamente com sys.exit() import sys while True: print('Type exit to exit.') response = input() if response == 'exit': sys.exit() print('You typed' + response + '.') 79
  • 80. Explicando O programa contém um loop infinito sem uma instrução break. A única maneira de esse programa terminar será o usuário digitar exit, fazendo sys.exit() ser chamado. Quando response for igual a exit, o programa será encerrado. Como a variável response é definida pela função input(), o usuário deverá fornecer exit para interromper o programa. 80
  • 81. Resumo • Ao usar expressões que são avaliadas como True ou False (também chamadas de condições), podemos criar programas que tomem decisões em relação ao código a ser executado e ignorado. • Também podemos executar códigos repetidamente em um loop enquanto determinada condição for avaliada como True. 81
  • 82. Resumo • As instruções break e continue serão úteis caso você precise sair de um loop ou voltar para o início. • Essas instruções de controle de fluxo permitirão escrever programas muito inteligentes. 82
  • 83. Exercícios práticos 1- Quais são os dois valores do tipo booleano? Como eles são escritos? 2- Quais são os três operadores booleanos? 3- Escreva as tabelas verdade de cada operador booleano (ou seja, todas as combinações possíveis de valores booleanos para o operador e como elas são avaliadas). 83
  • 84. 1- True e False 2- And, or e not 84
  • 85. Exercícios práticos 4- Para que valores as expressões a seguir são avaliadas? (5 > 4) and (3 == 5) not (5 > 4) not ((5 > 4) or ( 3 == 5)) (True and True) and (True == False) (not False) or (not True) 85
  • 86. Exercícios práticos 5- Quais são os seis operadores de comparação? 6- Qual é a diferença entre o operador “igual a” e o operador de atribuição? 7- Explique o que é uma condição e quando você usaria uma. 86
  • 87. 5- ==, !=, <, >, <= e >= 6- == é operador que compara dois valores e é avaliado como um booleano, enquanto = é o operador de atribuição, que armazena um valor em uma variável. 7- Uma condição é uma expressão usada em uma instrução de controle de fluxo e é avaliada como um valor booleano. 87
  • 88. Exercícios práticos 8- Identifique os três blocos no código a seguir: spam = 0 if spam == 10: print('eggs') if spam > 5: print('bacon') else: print('ham') print('spam') print('spam') 88
  • 89. Exercícios práticos 9- Escreva um código que exiba Hello se 1 estiver armazenado em spam , Howdy se 2 estiver armazenado em spam e Greetings! se outro valor estiver armazenado em spam. 10- Que tecla você deve pressionar se o seu programa estiver preso em um loop infinito? 11- Qual é a diferença entre break e continue? 12- Qual é a diferença entre range(10), range(0, 10) e range (0, 10, 1) em um loop for? 89
  • 90. 9- if spam == 1: print('Hello') elif spam == 2: print('Howdy') else: print('Greetings!') 11- A instrução break desviará a execução para fora do loop, imediatamente depois dele. A instrução continue desviará a execução para o início do loop. 90
  • 91. Exercícios práticos 13- Crie um pequeno programa que mostre os números de 1 a 10 usando um loop for. Em seguida, crie um programa equivalente que mostre os números de 1 a 10 usando um loop while. 14- Se você tivesse uma função chamada bacon() em um módulo chamado spam, como você chamaria após ter importado spam? 91
  • 92. 13- for i in range(1, 11): print(i) i = 1 while i <= 10: print(i) i = i + 1 92