22
Decisões em Python Funções lógicas Recursão Iteração Ciclo for ou while? Nesta aula. . . 1 Decisões em Python 2 Funções lógicas 3 Recursão 4 Iteração Iteração indefinida 5 Ciclo for ou while? João Pedro PEDROSO Introdução à Programação - minor

Introdução à Programação - minorjpp/ip/slides-07.pdf · Decisões em Python Funções lógicas Recursão Iteração Ciclo for ou while? Iteração indefinida Ciclos for processam

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

Decisões em PythonFunções lógicas

RecursãoIteração

Ciclo for ou while?

Próxima aula

Algoritmos

João Pedro PEDROSO Introdução à Programação - minor