Upload
dinhkiet
View
217
Download
0
Embed Size (px)
Citation preview
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Nesta aula. . .
1 Decisões em Python
2 Funções lógicas
3 Recursão
4 IteraçãoIteração indefinida
5 Ciclo for ou while?
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Valores lógicos: booleanos
Tipo do Python para guardar os valores lógicos, verdadeiro e falso:booleano (George Bool, matemático inglês)Valores lógicos podem ter apenas dois valores: True e False (nãoesquecer a maiúscula)>>> print(True)True>>> print(type(True))<class ’bool’>
bool é mais um tipo, como int, float, . . .expressões de comparação (==, >, . . . ) resultam num valor lógico>>> 5 == 5True>>> 5 == 6Falseconversão entre valores numéricos e lógicos:
0 → Falsevalores diferentes de 0 → True>>> bool(100)True>>> bool(0)False
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Operações lógicas
Há três operadores lógicos: and, or, not;
Semântica: semelhante ao significado em inglês;
Resultadoconjunção P and Q verdadeiro se P e Q forem ambos verdadeirosdisjunção P or Q verdadeiro se pelo menos um de P e Q for verdadeironegação not P verdadeiro se P for falso
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Precedência dos operadores
primeiro as operações aritméticas, depois as de comparação, por fim aslógicas
Nível Categoria Operadores7 (alto) exponenciação **6 multiplicação * / // %5 adição + -4 relação == != <= >= > <3 negação not2 conjunção and1 (baixo) disjunção or
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Execução condicional
Condições em cadeia:
if cond 1:instr 1
elif cond 2:instr 2
...elif cond N-1:
instr N-1else:
instr N
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Funções lógicas
funções podem retornar valores lógicos (bool);
isso permite “esconder” testes complicados dentro de funçõesdef isDivisible(x, y):
if x % y == 0:result = True
else:result = False
return result
nome de funções lógicas devem dar a entender o tipo bool do resultado
forma mais sintética, tirando partido da condição no if resultar numvalor lógico:def isDivisible(x, y):
return x % y == 0
utilização:if isDivisible(x, y):
... # do something ...else:
... # do something else ...
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Exemplo de recursão: factorial
O factorial de um número natural n é n × n − 1 × . . .× 2 × 1:
Definição recursiva:
0! = 1
n! = n × (n − 1)! (para n > 0)
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Função recursiva em Python
def factorial(n):if n==0:
return 1else:
r = factorial(n-1)return n*r
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Iteração e recursão
Computadores são frequentemente utilizados para automatizar tarefasrepetitivas.
Repetição de uma sequência de instruções: iteração.
Recorde:Iteração repetir operações um número variável de vezes
Recursão resolver um problema usando a solução de um problemasemelhante (mas de menor dimensão)
Iteração em Python: ciclos for, ciclos while.
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Ciclos for
processam todos os elementos de uma lista
cada item é atribuído, por ordem, à variável do ciclo, e o corpo do ciclo éexecutadofor f in ["Joe", "Amy", "Brad", "Angelina", "Zuki", "Thandi"]:
invitation = "Hi " + f + ". Please come to my party!"print(invitation)
iteração e o padrão acumulador:def sumTo(aBound):
theSum = 0for aNumber in range(1, aBound+1):
theSum = theSum + aNumberreturn theSum
print(sumTo(4))print(sumTo(1000))
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Acumuladores
def square(x):total = 0for counter in range(x):
total = total + x
return total
toSquare = 10squareResult = square(toSquare)print("The result of", toSquare, "squared is", squareResult)
o que faz?este padrão é muito usado emprogramação
1 inicializar a variável antes deiniciar o ciclo;
2 a cada iteração, atualizar avariável
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Ciclos while
while fornece um mecanismo de iteração mais geral
tal como if, utiliza uma expressão lógica para controlar o fluxo deexecução
o corpo do while será repetido enquanto essa expressão for verdadeiracriamos a variável do ciclo, que é:
1 inicializada a 12 incrementada a cada iteração
def sumTo(aBound):theSum = 0aNumber = 1while aNumber <= aBound:
theSum = theSum + aNumberaNumber = aNumber + 1
return theSum
print(sumTo(4))print(sumTo(1000))
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Ciclos while: fluxo da execução
1 avaliar a condição2 se o resultado for False, sair
da instrução while e continuarna instrução seguinte;
3 se o resultado for True,executar as instruções do corpodo while e voltar ao passo 1;
ciclo é “fechado” do passo 3para o passo 1se a condição for falsa daprimeira vez, as instruções dociclo não são executadasalguma variável deve sermodificada no ciclo, para quetermineciclo infinito: itera para sempre!
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Ciclos for e while
ciclos for iteram sobre uma sequencia de valores, e terminam sempre(iteração definida)
ciclos while dependem da condição para terminar; por vezes é difícilsaber quando terminam iteração indefinida
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Iteração indefinida
Sequência de Collatz:
1 começar com um dado valorinteiro n;
2 o termo seguinte é:
1 se n par: dividir por dois;
2 se n ímpar: multiplicar por trêse somar um;
3 a sequência termina quando nfor 1.
def seq3np1(n):while n != 1:
print(n)if n % 2 == 0:
n = n // 2else:
n = n * 3 + 1print(n)
>>> seq3np1(3)3105168421
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Iteração indefinida
Análise
até agora, não se provou nem que a sequência termina nem o contrário;
com computadores foram testados valores de n muito elevados; aindanão se encontrou nenhum para o qual a sequência não terminasse;
se não terminasse quando se atinge um: ciclo 1,4,2,1,4,2,1,. . .
poderá haver outros ciclos infinitos, que não se conhecem. . .
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Ciclo for ou while?
Ciclo for quando se conhece o número máximo de vezes que se iráiterar; iteração definida.
Ciclo while quando se vai iterar até que determinada condição severifique; iteração indefinida.
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Noções estudadas esta semana
argumento valor passado a uma função, quando é chamada. Esse valoré atribuído ao parâmetro correspondente. O argumento podeser o resultado de uma expressão (que é executada antes dafunção ser chamada)
bloco grupo de instruções consecutivas, com a mesma indentaçãocabeçalho primeira parte de uma instrução composta; começa com uma
palavra reservada do Python, que define o tipo de instrução,e termina com dois pontos (:)
chamada a uma função instrução que executa a função; consiste no nomeda função seguido de uma lista de argumentos entreparêntesis
ciclos for e while;composição de funções utilização do resultado de uma função como input
para outracondição expressão lógica numa instrução de execução condicional,
que determina qual dos ramos será seguidocondições em cadeia conjunto de ramos, em situações em que há mais do
que dois fluxos de execução possíveis; em Python: if ...elif ... else
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Noções estudadas esta semana
corpo segunda parte de uma instrução composta, que consistenuma sequência de instruções (bloco) todas indentadas omesmo número de espaços relativamente ao cabeçalhodessa instrução (o standard do Python é 4 espaços)
definição de função instrução que cria uma nova função, especificando oseu nome, parâmetros, e as instruções que executa
docstring primeira linha do corpo de uma função (veremos mais tardeoutras situações), se for uma string; essa string é depoisutilizada para documentar a função, através do seu atributo__doc__
duração (de variáveis) período entre a criação e a extinção de umavariável
expressão lógica expressão cujo resultado é verdadeiro ou falso
fluxo da execução ordem pela qual as instruções são executadas numprograma
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Noções estudadas esta semana
função sequência de instruções à qual se deu um nome, e queexecuta uma operação útil; pode ter zero ou maisparâmetros, e pode produzir um resultado ou não
função com resultado função que devolve um valor quando é chamada
função lógica função que retorna um valor lógico
função sem resultado função que não devolve nenhum valor quando échamada
imbricar nesting estrutura de programação dentro de uma outra (ex:if dentro de outro if)
import instrução que permite que funções e variáveis definidasnoutro módulo Python sejam utilizadas num programa
João Pedro PEDROSO Introdução à Programação - minor
Decisões em PythonFunções lógicas
RecursãoIteração
Ciclo for ou while?
Noções estudadas esta semana
instrução composta instrução que consiste em duas partes, o cabeçalho e ocorpo
instrução condicional instrução que controla o fluxo de execução,dependendo do resultado de uma expressão lógica (acondição)
operador lógico operador que combina expressões lógicas(and or not)
operadores relacionais (ou de comparação) um dos operadores quecomparam dois valores: == != <= >= > <
parâmetro nome utilizado dentro de uma função para designar um valorque lhe é passado como argumento
ramo um dos caminhos no fluxo de execução condicionalrearranjar reescrever (limpar) o código de um programa para o tornar
mais compreensível (tipicamente depois de o programa jáestar a funcionar)
valor lógico verdadeiro (True) ou falso (False); em Python, tipo boolvariável local variável definida dentro de uma função; pode ser usada
apenas dentro dessa função, sendo destruida quando afunção termina
João Pedro PEDROSO Introdução à Programação - minor