Introdução à Programação

Propaganda
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
Decisões em Python
Funções lógicas
Recursão
Iteraçã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ão
esquecer 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 == 5
True
>>> 5 == 6
False
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
Decisões em Python
Funções lógicas
Recursão
Iteraçã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;
conjunção
disjunção
negação
P and Q
P or Q
not P
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
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?
Precedência dos operadores
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)
Categoria
exponenciação
multiplicação
adição
relação
negação
conjunção
disjunção
João Pedro PEDROSO
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
Condições em cadeia:
if cond 1:
instr 1
elif cond 2:
instr 2
.
.
.
elif cond N-1:
instr N-1
else:
instr N
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?
Funções lógicas
funções podem retornar valores lógicos (bool);
isso permite “esconder” testes complicados dentro de funções
def 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 num
valor 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 Python
Funções lógicas
Recursão
Iteraçã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)!
João Pedro PEDROSO
(para n > 0)
Introdução à Programação - minor
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Função recursiva em Python
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?
Iteração indefinida
Iteração e recursão
Computadores são frequentemente utilizados para automatizar tarefas
repetitivas.
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 em Python: ciclos for, ciclos while.
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?
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 é
executado
for 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 = 0
for aNumber in range(1, aBound+1):
theSum = theSum + aNumber
return theSum
print(sumTo(4))
print(sumTo(1000))
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?
Iteração indefinida
Acumuladores
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)
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?
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 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
Introdução à Programação - minor
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
2
3
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;
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!
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?
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ícil
saber quando terminam iteração indefinida
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?
Iteração indefinida
Iteração indefinida
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
Decisões em Python
Funções lógicas
Recursão
Iteraçã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; 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?
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 se
verifique; iteração indefinida.
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?
Noções estudadas esta semana
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
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?
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
fluxo da execução ordem pela qual as instruções são executadas num
programa
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?
Noções estudadas esta semana
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
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?
Noções estudadas esta semana
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
Decisões em Python
Funções lógicas
Recursão
Iteração
Ciclo for ou while?
Próxima aula
Algoritmos
João Pedro PEDROSO
Introdução à Programação - minor
Download