Você está na página 1de 47

Lógica de Programação

Funções e Procedimentos

Universidade Federal de Santa Catarina


Campus Araranguá
Prof. Jim Lau

1
SUBPROGRAMAS
• Também chamados de subalgoritmos
• São trechos de algoritmos que efetuam um ou mais cálculos
determinados
• Ao invés de escrever um código grande, pode-se escrever vários
algoritmos menores (Modularização)
• Em conjunto, resolvem o problema proposto
• É conveniente utilizá-los quando uma tarefa é efetuada em
diversos lugares no mesmo algoritmo
• Ao invés de escrever um trecho diversas vezes, escreve-se um
subalgoritmo e chama-o diversas vezes

2
SUBPROGRAMAS

• Reduzem o tamanho do algoritmo


• Facilitam a compreensão e visualização do algoritmo
• São declarados no início do algoritmo e podem ser
chamados em quaisquer pontos após sua declaração
• Podem ser:
− Funções que retornam algum valor
− Procedimento (ou sub-rotina) que não retorna
nada

3
SUBPROGRAMAS
• Subprograma é um programa que auxilia o programa principal
através da realização de uma determinada subtarefa (sub-rotina,
procedimento, método ou módulo)
• Cada subprograma, além de ter acesso às variáveis do programa
que o chamou (são as variáveis globais), podem ter suas
próprias variáveis (são as variáveis locais), que existem apenas
durante sua chamada).
• Ao se chamar um subprograma, também é possível passa-lhe
determinadas informações que recebem o nome de parâmetros
(são valores que, na linha de chamada, ficam entre os parênteses
e que estão separados por virgulas).

4
Funções
• Uma função é um bloco de comandos que tem por objetivo
retornar um valor ou uma informação
• A chamada de uma função é feita através da citação do seu nome
seguido, opcionalmente, de seus argumentos iniciais entre
parênteses
• As funções podem ser predefinidas pela linguagem ou criadas
pelo programador

5
Declaração de Funções
• Função – é um subprograma que retorna um valor
• Para declararmos um vetor utilizaremos a seguinte sintaxe
(VisuAlg):

funcao <nome da função> (<variável> : <tipo>) : <tipo do retorno>


inicio
<sequência de comandos>

fimfuncao

6
Funções
• Funções predefinidas
− A linguagem do Visualg possui diversas funções predefinidas que podem
ser usadas na construção de algoritmos
• Exemplo 1: Criar um algoritmo que calcule o valor da raiz
quadrada de um número.
− O Visualg possui uma função predefinida que recebe como parâmetro
uma variável (do tipo real) e retorna um valor (também do tipo real)
referente à raiz quadrada do número.

7
Funções
• Funções predefinidas
− Como utilizar

Chamada da função
passando a variável
número (do tipo
real) como
parâmetro da função
Raizq

8
Funções
• Funções predefinidas
− Como utilizar

Atribuindo à variável
raiz (do tipo real) o
retorno da função
Raizq

9
Funções
• Funções predefinidas
− A linguagem do Visualg possui diversas funções predefinidas que podem
ser usadas na construção de algoritmos
• Exemplo 2:: Criar um algoritmo que, dada uma palavra qualquer,
informe ao usuário quantas letras essa palavra possui.
− O Visualg possui uma função predefinida que recebe como parâmetro
uma variável (tipo caractere) e retorna um valor (inteiro) correspondente
à quantidade de caracteres existentes

10
Funções
• Funções predefinidas
− Como utilizar

Chamada da função
passando a variável
palavra (do tipo real)
como parâmetro da
função Compr

11
Funções
• Lista das Funções Predefinidas do Visualg
− Funções numéricas, algébricas e trigonométricas

12
Funções
• Lista das Funções Predefinidas do Visualg
− Funções numéricas, algébricas e trigonométricas

13
Criando Funções
• A criação de uma função deve ser realizada dentro da seção de
variáveis
• Esse tipo de subalgoritmo sempre retorna apenas um valor para o
algoritmo que o chamou
• As funções possuem um tipo de retorno associado
• Uma função pode possui 0, 1 ou mais parâmetros
• Sintaxe:

14
Criando Funções
• Sintaxe da função

15
Criando Funções
• Variáveis Locais:
− Declaradas dentro dos subalgoritmos (funções ou procedimentos)
− Podem ser usadas APENAS dentro das funções
− O algoritmo que chamou a função/procedimento não tem acesso à estas
funções
• Variáveis Globais
− São variáveis declaradas na seção var do algoritmo.
− Qualquer função/procedimento pode alterar o valor ou utilizá-la durante
o seu processamento.

16
Criando Funções
• Exemplo 1: Criar uma função para calcular o dobro de um
número passado como parâmetro

Variáveis Globais
Tipo de Retorno
Nome da Função

Declaração de Funções

Declaração de
Variáveis Locais

Comandos

17
Criando Funções

• Os algoritmos podem possuir


várias funções:

18
Criando Funções

• As funções podem possuir mais


de um parâmetro
• Parâmetros de um mesmo
tipo são separados por
vírgula
• Parâmetros de tipos
diferentes são separados
por ponto e vírgula

• Funções podem ser


chamadas várias vezes
durante a execução de um
algoritmo:

19
Criando Funções

• As funções podem
não possuir
parâmetros.

20
Exemplo - Função
• Em visualg, as funções são declarados da seguinte forma:
algoritmo "Equacao_do_Segundo_Grau" delta := calcula_delta()
var SE ( delta < 0 ) ENTAO
a, b, c, delta, x1, x2: REAL ESCREVA ("Esta equação não possui
raízes reais.")
funcao calcula_delta(): REAL SENAO
var SE (delta = 0) ENTAO
delta : REAL x1 := (-b + RAIZQ(delta)) / (2*a)
inicio ESCREVA ("Esta equação possui
delta := b*b - 4*a*c apenas uma raiz: ", x1)
RETORNE delta SENAO
fimfuncao x1 := (-b + RAIZQ(delta)) / (2*a)
inicio x2 := (-b - RAIZQ(delta)) / (2*a)
ESCREVA ("Informe o valor de A: ") ESCREVA ("Esta equação possui
LEIA (a) duas raízes: ", x1, " e ", x2)
ESCREVA ("Informe o valor de B: ") FIMSE
LEIA (b) FIMSE
ESCREVA ("Informe o valor de C: ") Fimalgoritmo
LEIA (c)

21
Local de Implementação

Algoritmo “<nome de algoritmo>”


Var
<nomes das variáveis e seus tipos>

<declaração de funções e procedimento>

Inicio

<sequencia de comando>

finalgorimtmo

22
Procedimentos

23
Procedimento
• Procedimentos – é um subprograma que não retorna nenhum
valor.
• Em Visualg, os procedimentos diferem das funções apenas por
não retornarem valor nenhum
• A sintaxe utilizada na criação de procedimentos é:

24
Procedimentos
Passagem de Parâmetros
• Parâmetros são canais por onde os dados são transferidos pelo
algoritmo chamador a um subalgoritmo.
− Parâmetros Formais são os nomes simbólicos usados na definição dos
parâmetros de um subalgoritmo.

− Parâmetros Reais são aqueles que substituem os parâmetros formais


quando da chamada de um subalgoritmo.

25
Procedimentos

Mecanismos de passagem de parâmetros


• A substituição dos parâmetros formais pelos parâmetros
reais no ato da invocação de um subalgoritmo é
denominada de passagem de parâmetros
• Pode se dar por dois mecanismos distintos:
− Passagem por valor (ou por cópia)
− Passagem por referência

26
Procedimentos

Passagem por valor (ou por cópia)


• Na passagem por valor, é criada uma cópia dos parâmetros reais
• As modificações efetuadas no parâmetro formal não afetam o parâmetro real,
pois trabalha-se apenas com uma cópia.

27
Passagem por Valor

28
Procedimentos

Passagem por referência


• O espaço de memória ocupado pelos parâmetros reais é compartilhado pelos
parâmetros formais correspondentes
• As modificações efetuadas nos parâmetros formais também afetarão os
parâmetros reais
• Na linguagem do Visualg, utiliza-se a palavra var antes do nome do parâmetro
na declaração da função para informar que a passagem será por referência

29
Passagem por referência

30
Passagem por referência

31
Procedimentos
VARIÁVEIS LOCAIS E GLOBAIS
• As variáveis locais são visíveis apenas dentro dos
subalgoritmo que as criou
• Já as variáveis globais são visíveis tanto no algoritmo
principal como nos subalgoritmos
− Por esse motivo, é importante que as
funções/procedimentos sejam declarados na seção var
após a declaração das variáveis globais
• É importante não criar variáveis locais e globais com o
mesmo nome para evitar ambiguidades

32
Procedimentos

33
Procedimentos

34
Procedimentos

35
Procedimentos
Variáveis locais e globais
• O Visualg ainda não permite a passagem de Vetores e Matrizes
como parâmetros de subalgoritmos
• Para criar subalgoritmos que precisam de vetores e matrizes,
utilize variáveis globais

36
Procedimentos

37
Procedimento
• Exemplo 1: Crie um procedimento que receba um valor como
parâmetro e escreva o dobro desse número.

Não possui tipo de


retorno e não
retorna nada.
Apenas executa o
que está na seção
de comandos

38
Procedimento
• Exemplo 1: Crie um procedimento que receba um valor como
parâmetro e escreva o dobro desse número.

É feita apenas a
chamada do
procedimento, sem
precisar atribuir a
nenhuma variável.

39
Procedimento
• Exemplo 2: Crie um procedimento que receba um número como
parâmetro e escreva a tabuada desse número.

É feita apenas a
chamada do
procedimento, sem
precisar atribuir a
nenhuma variável.

40
Exemplo - Função
• O que será impresso no programa ao lado?
algoritmo "Soma" inicio
var exibir()
n1, n2: real escreva("Digite 1 número: ")
//----------------------------------------- leia(n1)
funcao soma(a, b: real): real escreva("Digite 2 número: ")
var leia(n2)
soma1 : real escreva("Soma: ", soma(n1, n2))
inicio fimalgoritmo
soma1 := a + b
retorne soma1
fimfuncao
//------------------------------------------
procedimento exibir ()
inicio
escreval("Operação de soma
digite dois numeros")

fimprocedimento
//------------------------------------------ 41
Exemplo - Procedimento
• Em visualg, os procedimentos são declarados da seguinte forma:
algoritmo "Procedimento"

var
x, n1, n2: inteiro

procedimento lerDados( )
inicio
n1 := 10
n2 := 20
x := n1 + n2
escreval("x1: ", x)
fimprocedimento

inicio
lerDados()
//escreval("x2: ", x)
fimalgoritmo
42
Exercício
1. Criar um algoritmo que possa entrar com três números e, para
cada um, imprimir o dobro. Usar função que retorne valor.
2. Criar um algoritmo que receba notas de três provas e calcular a
média, mas utilizando uma função.
3. Fazer um procedimento para calcular o fatorial de um número

4. Faca um algoritmo que converta graus em Fahrenheit. Usando


função.
− °F = °C × 1, 8 + 32
5. Faça um algoritmo que calcule a equação do segundo grau
usando função. Faça o tratamento do delta quanto for negativo.
+ +c=0
43
Exercício
6. Crie um procedimento que receba um número como parâmetro
e escreva a tabuada desse número.
7. Criar um algoritmo que receba um número que corresponda a
um mês do 1 trimestre e escreva o mês correspondente. Caso o
usuário digite fora do intervalo deverá aparecer inválido, mas
utilizando uma função
8. Criar um algoritmo para calcular o logaritmo para três números
em qualquer base, usando uma função. Faça o tratamento
quando o valor do logaritmando for menor que zero e a base tem
que ser maior que zero e diferente de 1.
9. Faça um algoritmo que possa calcular a raiz quadrada para
quatro números, usando função, que será mostrado na tela. Além
disso, o resultado multiplique por 3 em uma chamada de uma
outra função mult.
44
Exercício
10. Faça um algoritmo que calcule o fatorial de um número, usando
uma função que receba um valor e retorne o fatorial desse valor.
11. Faça uma função que verifique quantas vezes um número é
divisível por outro.
12. Faça uma calculadora que execute as quatros operações (soma,
subtração, multiplicação e divisão) usando função.

45
46
Exemplo

var n1, n2: inteiro

procedimento lerDados(var num1: inteiro; var num2:


inteiro)

inicio
num1 <- 10
num2 <- 20
fimprocedimento
inicio
lerDados(n1, n2)
fimalgoritmo

47

Você também pode gostar