Você está na página 1de 88

Linguagem de Programação 1

Aula 9 - Funções

Prof. Flávio José Mendes Coelho


flaviojmcoelho@gmail.com

Universidade do Estado do Amazonas


Escola Superior de Tecnologia - EST
Núcleo de Computação
Plano de aula

1. Funções
2. Funções: sem parâmetros, sem retorno
3. Funções: com parâmetros, sem retorno
4. Funções: com parâmetros, com retorno
5. Funções: sem parâmetros, com retorno
6. Funções chamam funções
7. Por que funções?
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 2 / 45
Funções

Exemplo 1. Escreva um programa para calcular


as raízes reais de uma equação do segundo grau
na forma, ax2 + bx + c = 0, dados os coeficientes
reais a, b e c.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 3 / 45


Funções

# Programa 1: Raízes eq. 2a. grau.


from math import sqrt

a, b, c = 1, 5, -2
delta = pow(b, 2) - 4*a*c
if delta >= 0.0:
x1 = (-b + sqrt( delta))/2*a
x2 = (-b - sqrt(delta))/2*a
print("%f, %f" % (x1, x2))

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 4 / 45


Funções

As funções pow e sqrt foram programadas,


testadas e disponibilizadas pelos projetistas do
Python para uso geral.
A função sqrt precisa ser importada da biblioteca
(módulo) de funções matemáticas math.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 5 / 45


Funções

As funções pow e sqrt foram programadas,


testadas e disponibilizadas pelos projetistas do
Python para uso geral.
A função sqrt precisa ser importada da biblioteca
(módulo) de funções matemáticas math.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 5 / 45


Funções

Há módulos Python para:

I Matemática
I Manipulação de arquivos
I Bancos de dados
I Redes e Web
I Jogos, gráficos e multimídia
I Ciência e engenharia, etc.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 6 / 45


Funções

Pense em uma função como uma “máquina” que


para uma certa entrada, processa uma saída
correspondente.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 7 / 45


Funções

Ou como uma “caixa preta” (um programa) que


para uma certa entrada, processa uma saída
correspondente.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 8 / 45


Funções

Definição. Uma função é um bloco de comandos


cuja lógica possui um fim específico, que possui
um nome e uma lista de parâmetros, iniciado pela
palavra reservada def.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 9 / 45


Funções
def <nome-função> (<lista-parâmetros>) :
.....bloco de comandos

I <nome-função>: identificador. Escolha um


nome que tem a ver com o objetivo da função.
I <lista-parâmetros>: nenhum, um ou mais
parâmetros (variáveis) separados por vírgula.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 10 / 45


Funções
def <nome-função> (<lista-parâmetros>) :
.....bloco de comandos

I <nome-função>: identificador. Escolha um


nome que tem a ver com o objetivo da função.
I <lista-parâmetros>: nenhum, um ou mais
parâmetros (variáveis) separados por vírgula.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 10 / 45


Funções
def <nome-função> (<lista-parâmetros>) :
.....bloco de comandos

I <nome-função>: identificador. Escolha um


nome que tem a ver com o objetivo da função.
I <lista-parâmetros>: nenhum, um ou mais
parâmetros (variáveis) separados por vírgula.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 10 / 45


Funções

Tipos de funções:

I Sem parâmetros, sem retorno de valor.


I Sem parâmetros, com retorno de valor.
I Com parâmetros, com retorno de valor.
I Com parâmetros, sem retorno de valor.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 11 / 45


Funções

Tipos de funções:

I Sem parâmetros, sem retorno de valor.


I Sem parâmetros, com retorno de valor.
I Com parâmetros, com retorno de valor.
I Com parâmetros, sem retorno de valor.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 11 / 45


Funções

Tipos de funções:

I Sem parâmetros, sem retorno de valor.


I Sem parâmetros, com retorno de valor.
I Com parâmetros, com retorno de valor.
I Com parâmetros, sem retorno de valor.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 11 / 45


Funções

Tipos de funções:

I Sem parâmetros, sem retorno de valor.


I Sem parâmetros, com retorno de valor.
I Com parâmetros, com retorno de valor.
I Com parâmetros, sem retorno de valor.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 11 / 45


Funções

Tipos de funções:

I Sem parâmetros, sem retorno de valor.


I Sem parâmetros, com retorno de valor.
I Com parâmetros, com retorno de valor.
I Com parâmetros, sem retorno de valor.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 11 / 45


Funções: sem parâmetros, sem retorno

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 12 / 45


Funções: sem parâmetros, sem retorno

Exemplo 2. Escreva uma função que calcule e


imprima a soma dos números inteiros de 1 até
100.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 13 / 45


Funções: sem parâmetros, sem retorno

# Programa 2: soma de 1 a 100.


1 def somaInteirosDe1a100():
2 soma = 0
3 for i in range(1, 101):
4 soma = soma + i
7 print("Soma=%d" % soma)
6
7 somaInteirosDe1a100()

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 14 / 45


Funções: sem parâmetros, sem retorno

No Programa 2:

I Os parênteses vazios indicam que a função


somaInteirosDe1a100 não tem parâmetros.
I Na linha 7 ocorre a chamada da função
somaInteirosDe1a100, ou seja, o momento
em que a função é executada.
I Nenhum valor é retornado de dentro da função
para a ponto de chamada.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 15 / 45
Funções: sem parâmetros, sem retorno

No Programa 2:

I Os parênteses vazios indicam que a função


somaInteirosDe1a100 não tem parâmetros.
I Na linha 7 ocorre a chamada da função
somaInteirosDe1a100, ou seja, o momento
em que a função é executada.
I Nenhum valor é retornado de dentro da função
para a ponto de chamada.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 15 / 45
Funções: sem parâmetros, sem retorno

No Programa 2:

I Os parênteses vazios indicam que a função


somaInteirosDe1a100 não tem parâmetros.
I Na linha 7 ocorre a chamada da função
somaInteirosDe1a100, ou seja, o momento
em que a função é executada.
I Nenhum valor é retornado de dentro da função
para a ponto de chamada.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 15 / 45
Funções: sem parâmetros, sem retorno

No Programa 2:

I Os parênteses vazios indicam que a função


somaInteirosDe1a100 não tem parâmetros.
I Na linha 7 ocorre a chamada da função
somaInteirosDe1a100, ou seja, o momento
em que a função é executada.
I Nenhum valor é retornado de dentro da função
para a ponto de chamada.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 15 / 45
Funções: sem parâmetros, com retorno

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 16 / 45


Funções: sem parâmetros, com retorno

Exemplo 3. Escreva uma função que calcule e


retorne o valor da soma dos números inteiros de 1
até 100.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 17 / 45


Funções: sem parâmetros, com retorno

# Programa 3: retorna soma de 1 a 100.


1 def somaInteirosDe1a100():
2 soma = 0
3 for i in range(1, 101):
4 soma = soma + i
5 return soma
6
7 s = somaInteirosDe1a100()
8 print("Soma=%d" % s)
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 18 / 45
Funções: sem parâmetros, com retorno

No Programa 3:

I O processamento inicia na linha 7, na chamada


da função, e segue para a linha 1.
I A função somaInteirosDe1a100 é executada
e o valor de soma é retornado (e atribuído)
para a variável s no ponto de chamada (linha
7).
I O processamento continua na linha 8.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 19 / 45
Funções: sem parâmetros, com retorno

No Programa 3:

I O processamento inicia na linha 7, na chamada


da função, e segue para a linha 1.
I A função somaInteirosDe1a100 é executada
e o valor de soma é retornado (e atribuído)
para a variável s no ponto de chamada (linha
7).
I O processamento continua na linha 8.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 19 / 45
Funções: sem parâmetros, com retorno

No Programa 3:

I O processamento inicia na linha 7, na chamada


da função, e segue para a linha 1.
I A função somaInteirosDe1a100 é executada
e o valor de soma é retornado (e atribuído)
para a variável s no ponto de chamada (linha
7).
I O processamento continua na linha 8.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 19 / 45
Funções: sem parâmetros, com retorno

No Programa 3:

I O processamento inicia na linha 7, na chamada


da função, e segue para a linha 1.
I A função somaInteirosDe1a100 é executada
e o valor de soma é retornado (e atribuído)
para a variável s no ponto de chamada (linha
7).
I O processamento continua na linha 8.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 19 / 45
Funções: sem parâmetros, com retorno

O que um return pode retonar?

I valores literais: números, strings e valores


lógicos.
I o valor de uma única variáveis.
I resultados de um expressão.
I valores retornados por funções.
I listas e sequências com as possibilidade acima*.
* Veremos como fazer isso mais à frente com listas e tuplas.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 20 / 45
Funções: sem parâmetros, com retorno

O que um return pode retonar?

I valores literais: números, strings e valores


lógicos.
I o valor de uma única variáveis.
I resultados de um expressão.
I valores retornados por funções.
I listas e sequências com as possibilidade acima*.
* Veremos como fazer isso mais à frente com listas e tuplas.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 20 / 45
Funções: sem parâmetros, com retorno

O que um return pode retonar?

I valores literais: números, strings e valores


lógicos.
I o valor de uma única variáveis.
I resultados de um expressão.
I valores retornados por funções.
I listas e sequências com as possibilidade acima*.
* Veremos como fazer isso mais à frente com listas e tuplas.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 20 / 45
Funções: sem parâmetros, com retorno

O que um return pode retonar?

I valores literais: números, strings e valores


lógicos.
I o valor de uma única variáveis.
I resultados de um expressão.
I valores retornados por funções.
I listas e sequências com as possibilidade acima*.
* Veremos como fazer isso mais à frente com listas e tuplas.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 20 / 45
Funções: sem parâmetros, com retorno

O que um return pode retonar?

I valores literais: números, strings e valores


lógicos.
I o valor de uma única variáveis.
I resultados de um expressão.
I valores retornados por funções.
I listas e sequências com as possibilidade acima*.
* Veremos como fazer isso mais à frente com listas e tuplas.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 20 / 45
Funções: sem parâmetros, com retorno

O que um return pode retonar?

I valores literais: números, strings e valores


lógicos.
I o valor de uma única variáveis.
I resultados de um expressão.
I valores retornados por funções.
I listas e sequências com as possibilidade acima*.
* Veremos como fazer isso mais à frente com listas e tuplas.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 20 / 45
Funções: sem parâmetros, com retorno

O que um return pode retonar?

I valores literais: números, strings e valores


lógicos.
I o valor de uma única variáveis.
I resultados de um expressão.
I valores retornados por funções.
I listas e sequências com as possibilidade acima*.
* Veremos como fazer isso mais à frente com listas e tuplas.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 20 / 45
Funções: com parâmetros, com retorno

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 21 / 45


Funções: com parâmetros, com retorno

Exemplo 4. Escreva uma função que calcule e


retorne o valor da soma dos números inteiros de n
até m, n ≤ m.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 22 / 45


Funções: com parâmetros, com retorno

# Programa 4: retorna a soma de n à m.


1 def somaInteiros(n, m):
2 soma = 0
3 for i in range(n, m+1):
4 soma = soma + i
5 return soma
6
7 a, b = 1, 50
8 s = somaInteiros(a, b)
9 print("Soma=%d" % s)
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 23 / 45
Funções: com parâmetros, com retorno

No Programa 4:

I O processamento inicia na linha 7 e segue para


linha 8.
I Na linha 8 ocorre a chamada da função e
cópias dos valores de a e b são passadas
(atribuídos) para os parâmetros n e m da
função somaInteiros (linha 1).
I O restante do processamento ocorre como já
explicado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 24 / 45
Funções: com parâmetros, com retorno

No Programa 4:

I O processamento inicia na linha 7 e segue para


linha 8.
I Na linha 8 ocorre a chamada da função e
cópias dos valores de a e b são passadas
(atribuídos) para os parâmetros n e m da
função somaInteiros (linha 1).
I O restante do processamento ocorre como já
explicado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 24 / 45
Funções: com parâmetros, com retorno

No Programa 4:

I O processamento inicia na linha 7 e segue para


linha 8.
I Na linha 8 ocorre a chamada da função e
cópias dos valores de a e b são passadas
(atribuídos) para os parâmetros n e m da
função somaInteiros (linha 1).
I O restante do processamento ocorre como já
explicado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 24 / 45
Funções: com parâmetros, com retorno

No Programa 4:

I O processamento inicia na linha 7 e segue para


linha 8.
I Na linha 8 ocorre a chamada da função e
cópias dos valores de a e b são passadas
(atribuídos) para os parâmetros n e m da
função somaInteiros (linha 1).
I O restante do processamento ocorre como já
explicado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 24 / 45
Funções: com parâmetros, com retorno

No Programa 4:

I Uma possível modificação dos valores de m e n


em somaInteiros, não afeta os valores de a
e b.
I Este tipo de passagem de parâmetros chama-se
“passagem de parâmetro por valor” (ou “por
cópia”).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 25 / 45


Funções: com parâmetros, com retorno

No Programa 4:

I Uma possível modificação dos valores de m e n


em somaInteiros, não afeta os valores de a
e b.
I Este tipo de passagem de parâmetros chama-se
“passagem de parâmetro por valor” (ou “por
cópia”).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 25 / 45


Funções: com parâmetros, com retorno

No Programa 4:

I Uma possível modificação dos valores de m e n


em somaInteiros, não afeta os valores de a
e b.
I Este tipo de passagem de parâmetros chama-se
“passagem de parâmetro por valor” (ou “por
cópia”).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 25 / 45


Funções: com parâmetros, com retorno

Note que a passagem de parâmetros é uma forma


de “comunicar” o programa principal com a
função por meio do envio de dados.
O retorno de valores da função (return) para o
programa principal também é um forma de troca
de dados entre o programa principal e a função.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 26 / 45


Funções: com parâmetros, com retorno

Note que a passagem de parâmetros é uma forma


de “comunicar” o programa principal com a
função por meio do envio de dados.
O retorno de valores da função (return) para o
programa principal também é um forma de troca
de dados entre o programa principal e a função.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 26 / 45


Funções: com parâmetros, sem retorno

Exemplo 5. Escreva uma função que calcule e


mostre o valor da soma dos números inteiros de n
até m, n ≤ m.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 27 / 45


Funções: com parâmetros, sem retorno

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 28 / 45


Funções: com parâmetros, sem retorno

# Programa 5: mostra a soma de n à m.


1 def somaInteiros(n, m):
2 soma = 0
3 for i in range(n, m+1):
4 soma = soma + i
5 print("Soma=%d" % soma)
6
7 a, b = 1, 50
8 somaInteiros(a, b)
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 29 / 45
Funções: com parâmetros, sem retorno

No Programa 5:

I Uma função sem um comando return, não


retorna valor algum.
I O programa inicia na linha 7.
I Na linha 8 ocorre a chamada da função e os
valores de a e b são passados por valor para a
função somaInteiros (linha 1).
I Após a execução da função (linha 8), nenhum
valor é retonado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 30 / 45
Funções: com parâmetros, sem retorno

No Programa 5:

I Uma função sem um comando return, não


retorna valor algum.
I O programa inicia na linha 7.
I Na linha 8 ocorre a chamada da função e os
valores de a e b são passados por valor para a
função somaInteiros (linha 1).
I Após a execução da função (linha 8), nenhum
valor é retonado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 30 / 45
Funções: com parâmetros, sem retorno

No Programa 5:

I Uma função sem um comando return, não


retorna valor algum.
I O programa inicia na linha 7.
I Na linha 8 ocorre a chamada da função e os
valores de a e b são passados por valor para a
função somaInteiros (linha 1).
I Após a execução da função (linha 8), nenhum
valor é retonado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 30 / 45
Funções: com parâmetros, sem retorno

No Programa 5:

I Uma função sem um comando return, não


retorna valor algum.
I O programa inicia na linha 7.
I Na linha 8 ocorre a chamada da função e os
valores de a e b são passados por valor para a
função somaInteiros (linha 1).
I Após a execução da função (linha 8), nenhum
valor é retonado.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 30 / 45
Funções chamam funções

Uma função pode chamar uma ou mais funções.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 31 / 45


Funções chamam funções

Uma função pode chamar uma ou mais funções.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 32 / 45


Funções chamam funções

Exemplo.

1 def h ():
2 print ( " 3 " )
3 def g ():
4 print ( " 2 " )
5 h ()
6 print ( " 4 " )

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 33 / 45


Funções chamam funções

Exemplo.

1 def h ():
2 print ( " 3 " )
3 def g ():
4 print ( " 2 " )
5 h ()
6 print ( " 4 " )

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 33 / 45


Funções chamam funções

Exemplo.

7 def f ():
8 print ( " 1 " )
9 g ()
10 print ( " 5 " )
11
12 f ()
13 print ( " Fim do prog . principal " )

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 34 / 45


Funções chamam funções

1. O processamento inicia no programa principal


(linha 12).
2. O programa principal chama a função f (linha
7).
3. A função f processa o print da linha 8, e na
linha 9, chama a função g (linha 3).
4. A função g processa o print da linha 4, e na
linha 5, chama a função h (linha 1).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 35 / 45


Funções chamam funções

1. O processamento inicia no programa principal


(linha 12).
2. O programa principal chama a função f (linha
7).
3. A função f processa o print da linha 8, e na
linha 9, chama a função g (linha 3).
4. A função g processa o print da linha 4, e na
linha 5, chama a função h (linha 1).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 35 / 45


Funções chamam funções

1. O processamento inicia no programa principal


(linha 12).
2. O programa principal chama a função f (linha
7).
3. A função f processa o print da linha 8, e na
linha 9, chama a função g (linha 3).
4. A função g processa o print da linha 4, e na
linha 5, chama a função h (linha 1).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 35 / 45


Funções chamam funções

1. O processamento inicia no programa principal


(linha 12).
2. O programa principal chama a função f (linha
7).
3. A função f processa o print da linha 8, e na
linha 9, chama a função g (linha 3).
4. A função g processa o print da linha 4, e na
linha 5, chama a função h (linha 1).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 35 / 45


Funções chamam funções

5. A função h, processa o print da linha 2, e


termina. O processamento retorna para a linha
5 da função chamadora g.
6. A função g processa o print da linha 6, e
termina. O processamento retorna para a linha
9 da função chamadora f.
7. A função f processa o print da linha 10, e
termina. O processamento retorna para a linha
12 do programa principal.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 36 / 45
Funções chamam funções

5. A função h, processa o print da linha 2, e


termina. O processamento retorna para a linha
5 da função chamadora g.
6. A função g processa o print da linha 6, e
termina. O processamento retorna para a linha
9 da função chamadora f.
7. A função f processa o print da linha 10, e
termina. O processamento retorna para a linha
12 do programa principal.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 36 / 45
Funções chamam funções

5. A função h, processa o print da linha 2, e


termina. O processamento retorna para a linha
5 da função chamadora g.
6. A função g processa o print da linha 6, e
termina. O processamento retorna para a linha
9 da função chamadora f.
7. A função f processa o print da linha 10, e
termina. O processamento retorna para a linha
12 do programa principal.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 36 / 45
Funções chamam funções

8. O programa principal processa o print da


linha 13, e termina.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 37 / 45


Por que usar funções?

Vantagens:

I Funções quebram um problema grande em


pequenos problemas mais simples, onde cada
um destes problemas é resolvido por uma
pequena função.
I Funções podem formar classes e módulos, e
serem reutilizadas em outros programas (não
reinvente a roda!).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 38 / 45


Por que usar funções?

Vantagens:

I Funções quebram um problema grande em


pequenos problemas mais simples, onde cada
um destes problemas é resolvido por uma
pequena função.
I Funções podem formar classes e módulos, e
serem reutilizadas em outros programas (não
reinvente a roda!).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 38 / 45


Por que usar funções?

Vantagens:

I Funções quebram um problema grande em


pequenos problemas mais simples, onde cada
um destes problemas é resolvido por uma
pequena função.
I Funções podem formar classes e módulos, e
serem reutilizadas em outros programas (não
reinvente a roda!).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 38 / 45


Por que usar funções?

Vantagens:

I Funções quebram um problema grande em


pequenos problemas mais simples, onde cada
um destes problemas é resolvido por uma
pequena função.
I Funções podem formar classes e módulos, e
serem reutilizadas em outros programas (não
reinvente a roda!).

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 38 / 45


Por que usar funções?

Vantagens:

I Permite a escrita de menos código.


I Código mais inteligível e organizado.
I Facilita testes e correções.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 39 / 45


Por que usar funções?

Vantagens:

I Permite a escrita de menos código.


I Código mais inteligível e organizado.
I Facilita testes e correções.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 39 / 45


Por que usar funções?

Vantagens:

I Permite a escrita de menos código.


I Código mais inteligível e organizado.
I Facilita testes e correções.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 39 / 45


Por que usar funções?

Preço a pagar:

I Necessário o uso de técnicas sofisticadas para


modelar, definir, organizar e modificar módulos
(programação orientada a objetos, padrões de
projeto, etc).
I Funções mal definidas e escritas podem tornar
o código mais difícil de entender, modificar,
testar e corrigir.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 40 / 45


Por que usar funções?

Preço a pagar:

I Necessário o uso de técnicas sofisticadas para


modelar, definir, organizar e modificar módulos
(programação orientada a objetos, padrões de
projeto, etc).
I Funções mal definidas e escritas podem tornar
o código mais difícil de entender, modificar,
testar e corrigir.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 40 / 45


Exercícios

1) Escreva um programa que leia um número e


verifique se ele é ou não um número primo. Um
número primo é divisível somente por 1 e por ele
mesmo. Note que 0 e 1 não são primos e 2 é o
único primo par.

* Dica: calcule o resto da divisão do número por 2, e verifique para todos os


números ímpares até o número lido. Se o resto de uma dessas divisões for igual a
zero, o número não é primo.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 41 / 45


Exercícios

1) Escreva um programa que leia um número e


verifique se ele é ou não um número primo. Um
número primo é divisível somente por 1 e por ele
mesmo. Note que 0 e 1 não são primos e 2 é o
único primo par.

* Dica: calcule o resto da divisão do número por 2, e verifique para todos os


números ímpares até o número lido. Se o resto de uma dessas divisões for igual a
zero, o número não é primo.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 41 / 45


Exercícios

2) Modifique o programa anterior para apresentar


os n primeiros primos. O valor de n deve ser lido.
3) Escreva um programa que leia uma string e
verifique se ela é um palídromo. Exemplo: "ana",
"ovo", "abbcddcbba", "0ac11ca0", "xx", "z", etc.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 42 / 45


Exercícios

2) Modifique o programa anterior para apresentar


os n primeiros primos. O valor de n deve ser lido.
3) Escreva um programa que leia uma string e
verifique se ela é um palídromo. Exemplo: "ana",
"ovo", "abbcddcbba", "0ac11ca0", "xx", "z", etc.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 42 / 45


Exercícios

4) Seja a sequência de Fibonacci


0, 1, 1, 2, 3, 5, 8, . . ., onde cada termo é obtido pela
soma dos dois termos anteriores (com exceção de
0 e 1). Escreva um programa que leia um número
e verifique se ele é ou não um número da
sequência de Fibonacci.
5) Escreva um programa que leia um número
n > 0, e imprima os n primeiros números da
sequência de Fibonacci.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 43 / 45
Exercícios

4) Seja a sequência de Fibonacci


0, 1, 1, 2, 3, 5, 8, . . ., onde cada termo é obtido pela
soma dos dois termos anteriores (com exceção de
0 e 1). Escreva um programa que leia um número
e verifique se ele é ou não um número da
sequência de Fibonacci.
5) Escreva um programa que leia um número
n > 0, e imprima os n primeiros números da
sequência de Fibonacci.
Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 43 / 45
Bibliografia
Nilo Ney Coutinho Menezes. Introdução à Programação com Python -
Algoritmos e lógica de programação para iniciantes. Novatec, 2014.
Allen B. Downey. Think Python - How to Think Like a Computer
Scientist. O’Reilly, 2015.

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 44 / 45


Onde obter este material:
sites.google.com/site/flaviojmcoelho/disciplinas/lp1

Flávio José M. Coelho (UEA/EST) Linguagem de Programação 1 Núcleo de Computação 45 / 45

Você também pode gostar