Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Capítulo 2 - Python

733 views

Published on

Slides - 05/05/2017

Published in: Software
  • Be the first to comment

  • Be the first to like this

Capítulo 2 - Python

  1. 1. Capítulo 2 Controle de Fluxo Natália Francesca 1
  2. 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. 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. 4. •Valores booleanos •Operadores de comparação •Operadores booleanos 4
  5. 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. 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. 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. 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. 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. 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. 11. Operadores booleanos binários •And e or: sempre aceitam dois valores booleanos (ou expressões) são considerados operadores binários 11
  12. 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. 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. 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. 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. 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. 17. Misturando operadores booleanos e de comparação (4 < 5) and (5 < 6) True and (5 < 6) True and True True 17
  18. 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. 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. 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. 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. 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. 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. 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. 25
  26. 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. 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. 28
  29. 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. 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. 31
  32. 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. 33
  34. 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. 35
  36. 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. 37
  38. 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. 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. 40
  41. 41. 41
  42. 42. Um loop while irritante name = ' ' while name != 'your name': print('Please type your name.') name = input() print('Thank you!') 42
  43. 43. 43
  44. 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. 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. 46. Instruções break while True: print('Please type your name.') name = input() if name == 'your name': break print('Thank you!') 46
  47. 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. 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. 49
  50. 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. 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. 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. 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. 54
  55. 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. 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. 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. 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. 59. Loop for em ação print('My name is') for i in range(5): print('Jimmy Five Times (' + str(i) + ')') 59
  60. 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. 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. 62
  63. 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. 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. 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. 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. 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. 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. 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. 70. Chamar range(0, 10, 2) fará uma contagem de zero a oito em intervalos de dois. 0 2 4 6 8 70
  71. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 84. 1- True e False 2- And, or e not 84
  85. 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. 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. 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. 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. 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. 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. 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. 92. 13- for i in range(1, 11): print(i) i = 1 while i <= 10: print(i) i = i + 1 92

×