Nesta aula. . . Valores lógicos: booleanos Operações lógicas

Propaganda
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Nesta aula. . .
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ão
esquecer a maiúscula)
1
Decisões em Python
2
Funções lógicas
3
Recursão
bool é mais um tipo, como int, float, . . .
expressões de comparação (==, >, . . . ) resultam num valor lógico
4
Iteração
Iteração indefinida
>>> 5 == 5
True
>>> 5 == 6
False
5
Ciclo for ou while?
>>> print(True)
True
>>> print(type(True))
<class ’bool’>
conversão entre valores numéricos e lógicos:
0 → False
valores diferentes de 0 → True
>>> bool(100)
True
>>> bool(0)
False
João Pedro PEDROSO
Introdução à Programação - minor
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Operações lógicas
Precedência dos operadores
Há três operadores lógicos: and, or, not;
Semântica: semelhante ao significado em inglês;
conjunção
disjunção
negação
Introdução à Programação - minor
Resultado
verdadeiro se P e Q forem ambos verdadeiros
verdadeiro se pelo menos um de P e Q for verdadeiro
verdadeiro se P for falso
P and Q
P or Q
not P
João Pedro PEDROSO
primeiro as operações aritméticas, depois as de comparação, por fim as
lógicas
Nível
7 (alto)
6
5
4
3
2
1 (baixo)
Introdução à Programação - minor
Categoria
exponenciação
multiplicação
adição
relação
negação
conjunção
disjunção
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Operadores
**
* / // %
+ == != <= >=
not
and
or
>
<
Introdução à Programação - minor
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Execução condicional
Funções lógicas
funções podem retornar valores lógicos (bool);
isso permite “esconder” testes complicados dentro de funções
Condições em cadeia:
def isDivisible(x, y):
if x % y == 0:
result = True
else:
result = False
return result
if cond 1:
instr 1
elif cond 2:
instr 2
.
.
.
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 num
valor lógico:
elif cond N-1:
instr N-1
else:
instr N
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 Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Introdução à Programação - minor
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Exemplo de recursão: factorial
Função recursiva em Python
O factorial de um número natural n é n × n − 1 × . . . × 2 × 1:
Definição recursiva:
0! = 1
n! = n × (n − 1)!
João Pedro PEDROSO
João Pedro PEDROSO
(para n > 0)
Introdução à Programação - minor
def factorial(n):
if n==0:
return 1
else:
r = factorial(n-1)
return n*r
João Pedro PEDROSO
Introdução à Programação - minor
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Iteração indefinida
Iteração e recursão
Iteração indefinida
Ciclos for
processam todos os elementos de uma lista
Computadores são frequentemente utilizados para automatizar tarefas
repetitivas.
cada item é atribuído, por ordem, à variável do ciclo, e o corpo do ciclo é
executado
for f in ["Joe", "Amy", "Brad", "Angelina", "Zuki", "Thandi"]:
invitation = "Hi " + f + ". Please come to my party!"
print(invitation)
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 problema
semelhante (mas de menor dimensão)
iteração e o padrão acumulador:
def sumTo(aBound):
theSum = 0
for aNumber in range(1, aBound+1):
theSum = theSum + aNumber
return theSum
Iteração em Python: ciclos for, ciclos while.
print(sumTo(4))
print(sumTo(1000))
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Introdução à Programação - minor
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Iteração indefinida
Acumuladores
Introdução à Programação - minor
Iteração indefinida
Ciclos while
while fornece um mecanismo de iteração mais geral
def square(x):
total = 0
for counter in range(x):
total = total + x
return total
o que faz?
este padrão é muito usado em
programação
1
2
inicializar a variável antes de
iniciar o ciclo;
a cada iteração, atualizar a
variável
toSquare = 10
squareResult = square(toSquare)
print("The result of", toSquare, "squared is", squareResult)
tal como if, utiliza uma expressão lógica para controlar o fluxo de
execução
o corpo do while será repetido enquanto essa expressão for verdadeira
criamos a variável do ciclo, que é:
1
2
inicializada a 1
incrementada a cada iteração
def sumTo(aBound):
theSum = 0
aNumber = 1
while aNumber <= aBound:
theSum = theSum + aNumber
aNumber = aNumber + 1
return theSum
print(sumTo(4))
print(sumTo(1000))
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Introdução à Programação - minor
2
3
Iteração indefinida
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ícil
saber quando terminam iteração indefinida
ciclo é “fechado” do passo 3
para o passo 1
se a condição for falsa da
primeira vez, as instruções do
ciclo não são executadas
alguma variável deve ser
modificada no ciclo, para que
termine
ciclo infinito: itera para sempre!
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Introdução à Programação - minor
Ciclos for e while
avaliar a condição
se o resultado for False, sair
da instrução while e continuar
na instrução seguinte;
se o resultado for True,
executar as instruções do corpo
do while e voltar ao passo 1;
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Iteração indefinida
Ciclos while: fluxo da execução
1
João Pedro PEDROSO
Introdução à Programação - minor
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Iteração indefinida
Iteração indefinida
Introdução à Programação - minor
Iteração indefinida
Análise
Sequência de Collatz:
1
começar com um dado valor
inteiro n;
2
o termo seguinte é:
3
1
se n par: dividir por dois;
2
se n ímpar: multiplicar por três
e somar um;
a sequência termina quando n
for 1.
João Pedro PEDROSO
def seq3np1(n):
while n != 1:
print(n)
if n % 2 == 0:
n = n // 2
else:
n = n * 3 + 1
print(n)
>>> seq3np1(3)
3
10
5
16
8
4
2
1
Introdução à Programação - minor
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; ainda
nã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 Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Ciclo for ou while?
Noções estudadas esta semana
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 se
verifique; iteração indefinida.
João Pedro PEDROSO
argumento valor passado a uma função, quando é chamada. Esse valor
é atribuído ao parâmetro correspondente. O argumento pode
ser o resultado de uma expressão (que é executada antes da
função ser chamada)
bloco grupo de instruções consecutivas, com a mesma indentação
cabeç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 nome
da função seguido de uma lista de argumentos entre
parêntesis
ciclos for e while;
composição de funções utilização do resultado de uma função como input
para outra
condição expressão lógica numa instrução de execução condicional,
que determina qual dos ramos será seguido
condiçõ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
Introdução à Programação - minor
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Introdução à Programação - minor
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Noções estudadas esta semana
Noções estudadas esta semana
corpo segunda parte de uma instrução composta, que consiste
numa sequência de instruções (bloco) todas indentadas o
mesmo número de espaços relativamente ao cabeçalho
dessa instrução (o standard do Python é 4 espaços)
definição de função instrução que cria uma nova função, especificando o
seu nome, parâmetros, e as instruções que executa
docstring primeira linha do corpo de uma função (veremos mais tarde
outras situações), se for uma string; essa string é depois
utilizada 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 uma
variável
expressão lógica expressão cujo resultado é verdadeiro ou falso
função sequência de instruções à qual se deu um nome, e que
executa uma operação útil; pode ter zero ou mais
parâ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 definidas
noutro módulo Python sejam utilizadas num programa
fluxo da execução ordem pela qual as instruções são executadas num
programa
João Pedro PEDROSO
Introdução à Programação - minor
João Pedro PEDROSO
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Noções estudadas esta semana
Próxima aula
instrução composta instrução que consiste em duas partes, o cabeçalho e o
corpo
instrução condicional instrução que controla o fluxo de execução,
dependendo do resultado de uma expressão lógica (a
condição)
operador lógico operador que combina expressões lógicas
(and or not)
operadores relacionais (ou de comparação) um dos operadores que
comparam dois valores: == != <= >= > <
parâmetro nome utilizado dentro de uma função para designar um valor
que lhe é passado como argumento
ramo um dos caminhos no fluxo de execução condicional
rearranjar 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 bool
variável local variável definida dentro de uma função; pode ser usada
apenas dentro dessa função, sendo destruida quando a
função termina
João Pedro PEDROSO
Introdução à Programação - minor
Introdução à Programação - minor
Algoritmos
João Pedro PEDROSO
Introdução à Programação - minor
Download