Funções

Você também pode gostar

Você está na página 1de 25

IOS – Instituto de Desenvolvimento de Sistemas

Oportunidade Social Lógica de Programação – Funções

1
Roteiro da Aula

• Decomposição de Problemas
• Reescrever código?
• Subalgoritmos
• Procedimento
• Função
• Como usar uma função e/ou um procedimento?
• Passagem de Parâmetro
• Passagem de Parâmetro por Valor
• Passagem de Parâmetro por Referencia
• Relembrando

2
Decomposição de Problemas

Você tem um problema grande para solucionar. Por


onde você começa?

• Que tal analisar o problema e dividi-lo em


pequenos problemas?

• Não é mais fácil do que tentar resolver tudo de


uma única vez?

3
Decomposição de Problemas

Dicas para facilitar o processo de decomposição de um


problema:

• Divida o problema em partes principais;


• Analise a divisão obtida para garantir coerência;
• Se alguma parte ainda permanecer complexa,
decomponha ela também;
• Analise o resultado para garantir o entendimento e a
coerência.

4
Decomposição de Problemas

Refinamento Sucessivo: técnica de dividir os


problemas sucessivamente até que eles fiquem
simples e específicos

• Top-Down: analise que parte do geral e chega ao


mais especifico
• Bottom-Up: analise que parte do especifico e
chega ao mais geral

5
Reescrever Código?

Imagine que você está trabalhando em um projeto com mais 4


pessoas. E vai ser necessário em vários momentos diferentes
calcular a formula de baskara. Como você lidaria com isso?

• Cada membro da equipe escreve as instruções pra calcular a


formula toda vez que for necessário?

• Ou é melhor uma pessoa só escrever as instruções para o


calculo e depois os outros usam uma forma pra acessar esse
código que já foi escrito?

6
Reescrever Código?

Quais as vantagens de reutilizar o código que


já foi escrito?
• Diminuição do tempo de solução
• Evita repetição de Código
• Facilita a manutenção do Código

7
Subalgoritmos

Um subalgoritmo é um trecho de programa que


contém início e fim, executa um determinado
conjunto de instruções e possui um identificador,
por meio do qual pode ser chamado em qualquer
parte do algoritmo, como se fosse um comando.

Ele é a solução para os seus problemas para não reescrever mais


código!

8
Subalgoritmos

Elementos de subalgorimo:

Nome – é o identificador pelo qual o subalgoritmo será chamado no algoritmo


principal.

Parâmetros – são os dados que permitem as relações entre o subalgoritmo e o


algoritmo. Ou seja, são os dados que o subalgoritmo precisa receber para
executar suas instruções.

Variáveis locais – são as variáveis declaradas no subalgoritmo e que só podem


ser utilizadas dentro dele.

Tipo – os subalgoritmos podem ser de dois tipos: funções ou procedimentos. A


diferença entre ambos é que uma função retorna sempre a um único valor. Um
procedimento não retorna valores, mas os recebe e pode modificá-los.

9
Procedimento

Um procedimento é um subalgoritmo que é chamado


dentro do algoritmo através da citação de seu nome
(identificador) e pode alterar os valores dos parâmetros
recebidos.

10
Procedimento

Procedimento <Nome_procedimento> (lista de parâmetros)


Var
Parâmetros são valores
Declaração de variáveis que você precisa
Inicio receber para processar
seu procedimento
Instruções
FimProcedimento Essas variáveis são
acessadas e vistas
somente dentro do
procedimento!!

11
Procedimento

procedimento exibeNome (nome:caracter)


var
inicio
escreval(nome)
fimprocedimento

12
Função

Uma função é um subalgoritmo que é chamado dentro


do algoritmo através da citação de seu nome
(identificador) e deve retornar um único valor.

13
Função

Funcao <Nome_funcao> (lista de parâmetros) : tipo de retorno


Var
Declaração de variáveis A diferença da função
Parâmetros são valores para o procedimento é
Inicio que a função retorna
que você precisa
Instruções receber para processar algum valor. E o tipo de
seu procedimento retorno indica qual vai
FimFuncao ser o tipo do valor
retornado pela função
Essas variáveis são
acessadas e vistas
somente dentro da
função!!

14
Função

funcao calculo(ref v1:real; ref v2:real) : real


var
total : real
inicio
total <- v1 + v2
v1 <- 7
retorne total
fimfuncao

15
Como usar um procedimento
e/ou uma função?

Já aprendemos a criar um procedimento e a criar


uma função. Entretanto.. Eles sozinhos fazem
alguma coisa?

Não!

Precisamos de um algoritmo principal que use o


procedimento e/ou a função.

16
Como usar um procedimento
e/ou uma função?
algoritmo "Aula LP12"
// Função : Demonstrar o uso de Procedimentos e Funções
// Autor : Juliane Venteu
// Data : 31/03/2013
var
cContato:caracter

procedimento exibeNome(nome:caracter)
var
Definição do
inicio
procedimento
escreval(nome)
fimprocedimento

inicio
escreval("Digite o nome do usuário do programa")
Definição do
leia(cContato) “programa
exibeNome(cContato) principal”
fimalgoritmo

17
Como usar um procedimento
e/ou uma função?
algoritmo "Aula LP12"
// Função : Demonstrar o uso de Procedimentos e Funções
// Autor : Juliane Venteu
// Data : 31/03/2013
Var
valor1, valor2 : real

funcao calculo(v1:real; v2:real) : real


var
total : real
inicio
Definição da
total <- v1 + v2 função
retorne total
fimfuncao

inicio
Escreval("Digite um valor")
leia(valor1) Definição do
Escreval("Digite outro valor")
leia(valor2)
“programa
escreval("A soma dos valores e: ", calculo(valor1, valor2) ) principal”
fimalgoritmo

18
Passagem de Parâmetro

Em um subalgoritmo deve haver uma comunicação entre ele e o programa principal. A


essa comunicação, damos o nome de passagem de parâmetros.

Parâmetros formais – são aquelas variáveis locais que declaramos entre parêntesis no
subalgoritmo.
Parâmetros reais – são os valores que substituem os parâmetros formais no momento
da chamada de um subalgoritmo.

Exemplo:
Funcao fsoma (a1, b1 : inteiro) : inteiro
As variáveis a1 e b1 são os parâmetros formais
Veja, agora, o seguinte trecho do algoritmo que chama essa função:
leia (a)
leia (b)
soma <- fsoma (a,b)
As variáveis a e b são os parâmetros reais

19
Passagem de Parâmetro por
Valor

A passagem de parâmetro por valor indica que os parâmetros formais vão


receber uma cópia dos valores que estiverem nos parâmetros reais.
Na memória serão criados espaços para cada um dos parâmetros formais.

Ex: funcao calculo(v1: real; v2:real) : real

Na memória serão criados espaços para guardar os valores que os parâmetros


v1 e v2 receberem

20
Passagem de Parâmetro por
Valor
algoritmo "Aula LP12"
// Função : Demonstrar o uso de Procedimentos e Funções
// Autor : Juliane Venteu
// Data : 31/03/2013
Var
valor1, valor2 : real Supondo que o valor1 é
funcao calculo(v1:real; v2:real) : real
3 e que o valor2 é 4.
var Quais valores serão
total : real impressos no final do
inicio algoritmo?
total <- v1 + v2
retorne total
fimfuncao

inicio
Escreval("Digite um valor")
leia(valor1)
Escreval("Digite outro valor")
leia(valor2)
escreval("A soma dos valores e: ", calculo(valor1, valor2) )
escreval(“Valor1 : “, valor1)
escreval(“Valor2 : “, valor2)
fimalgoritmo
21
Passagem de Parâmetro por
Referência
A passagem de parâmetro por valor indica que os parâmetros formais vão
apontar para o mesmo endereço de memória dos parâmetros reais.

Ex: funcao calculo(var v1: real; var v2:real) : real

Chamada da função
Leia(a)
Leia(b)
Calculo(a, b)

Os parâmetros v1 e v2 vão apontar para o endereço de memória dos


parâmetros a e b. Na prática isso significa que se você alterar o conteúdo da
variável v1 você vai estar alterando também o conteúdo da variável a.

22
Passagem de Parâmetro por
Referência

Existe uma notação específica para representar os parâmetros


passados por referência, ela deve ser feita na definição da função.

Definição da função:
Funcao <nome da função>(var<identificador da variável>:
<tipo>): <tipo de retorno>

Exemplo:
funcao calculo(var v1:real; v2:real) : real

23
Passagem de Parâmetro por
Referência
algoritmo "Aula LP12"
// Função : Demonstrar o uso de Procedimentos e Funções
// Autor : Juliane Venteu
// Data : 31/03/2013
Var
valor1, valor2 : real
Supondo que o valor1 é
funcao calculo(var v1:real; v2:real) : real 3 e que o valor2 é 4.
var
total : real
Quais valores serão
inicio impressos no final do
total <- v1 + v2 algoritmo?
v1 <- 7
retorne total
fimfuncao

inicio
Escreval("Digite um valor")
leia(valor1)
Escreval("Digite outro valor")
leia(valor2)
escreval("A soma dos valores e: ", calculo(valor1, valor2) )
escreval("Valor1 : ", valor1)
escreval("Valor2 : ", valor2)
fimalgoritmo

24
Relembrando

• Porque devo usar e abusar de subprogramas no meu


algoritmo?

• Qual a diferença entre função e procedimento?

• Qual a diferença entre passagem de parâmetro por


valor e referencia?

25

Você também pode gostar