Sei sulla pagina 1di 14

Algoritmia e Programação

Procedimentos e Funções

Departamento de Engenharia Química

F. Jorge Duarte © 2009


1
Conteúdo
 Rotina Principal e Subrotinnas
 Subrotinas
 Procedimentos e Funções
 Sintaxe dos Procedimentos em Português Estruturado
 Algoritmo com um Procedimento
 Síntaxe dos Procedimentos em VBA
 Exemplo de um Procedimento em VBA
 Sintaxe das Funções em Português Estruturado
 Algoritmo com uma Função
 Sintaxe das Funções em VBA
 Exemplo de uma Função em VBA

ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

2
Rotina Principal e Subrotinnas
 Os algoritmos que vimos até agora eram constituídos apenas
por um módulo, a que se chama Rotina Principal, ou
simplesmente Rotina. No entanto, é possível criar Rotinas que
podem ser chamadas dentro de outras Rotinas. A essas Rotinas
que podem ser chamadas a partir de outras, chama-se
Subrotinas

 Vamos estudar dois tipos de Subrotinas, Procedimentos e


Funções. A utilização de Subrotinas permite modularizar os
programas e encapsular processamento o que resulta em
programas mais simples de desenvolver e ler. Quanto mais
independentes as Subrotinas (módulos) mais atentamente nos
podemos concentrar sobre cada uma ignorando as restantes

 Com a chamada de uma Subrotina é transferido o controlo para


essa Subrotina

ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

3
Subrotinas

 As Subrotinas executam operações sobre dados que lhes são


passados, pelo que as Subrotinas possuem normalmente
parâmetros

 Por exemplo, a função embutida SQR(valor) tem definido um


parâmetro, o do valor para o qual se pretende calcular a raiz
quadrada

 Quando se define na Subrotina os dados que recebe, chama-se


a esses dados parâmetros formais, ou simplesmente
parâmetros. Quando se fala desses dados na chamada
(utilização) da Subrotina, chama-se argumentos a esses dados

 As variáveis (locais) definidas nas Subrotinas são criadas no


momento em que se inicia a execução da Subrotina e destruídas
no momento em que a Subrotina termina a sua execução

ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

4
Procedimentos e Funções
 No Visual Basic existem procedimentos que são executados em
resposta às acções do utilizador. Esses procedimentos são
conhecidos por "event procedures" - procedimentos de evento
 No entanto, existem outros procedimentos que não estão
directamente associados a qualquer evento e que para serem
executados têm que ser explicitamente invocados. Esses
procedimentos são conhecidos por “general procedures" -
procedimentos mais gerais
 A principal razão para se usar este tipo de procedimentos tem a
ver com o facto de, por vezes, diferentes procedimentos de
evento necessitarem de executar o mesmo conjunto de
instruções. Nestas situações o ideal é colocar esse conjunto de
instruções num procedimento para evitar a duplicação de código
e tornar a manutenção da aplicação mais fácil
 A finalidade das funções é idêntica à dos procedimentos mas a
diferença entre eles consiste no facto de as funções retornarem
um valor, e os procedimentos não

ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

5
Sintaxe dos Procedimentos em
Português Estruturado

PROCEDIMENTO nome_do_procedimento ([lista_argumentos])

<acção/bloco de instruções>

FIM

 A lista de argumentos (lista_argumentos) é o conjunto de variáveis


às quais são passados valores no momento da chamada do
procedimento, valores esses que serão usados pelo procedimento
durante as suas operações. Para cada argumento deve ser
indicado o seu tipo e no caso de haver mais do que um argumento
devem ser separados por vírgulas

ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

6
Algoritmo com um Procedimento

INICIO
DEF Custo : INTEIRO
DEF Desconto : REAL
Custo ← 1000
Desconto ← 0.2
CalcularDesconto Custo, Desconto
ESCREVER(Custo)
FIM

PROCEDIMENTO CalcularDesconto(C : INTEIRO, D : REAL)


C = C * (1 - D)
ESCREVER(C)
FIM

ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

7
Síntaxe dos Procedimentos em VBA
VBA
Sub nome_do_procedimento ([lista_argumentos])
<acção/bloco de instruções>
End Sub

 Nos procedimentos, os argumentos podem ser passados de duas


maneiras: por referência ou por valor

 Quando uma variável é passada por referência quaisquer


alterações feitas ao conteúdo dessa variável dentro do
procedimento far-se-ão reflectir na variável usada na chamada ao
procedimento

 Quando não se pretende que uma determinada variável seja


devolvida alterada esta terá de ser passada ao procedimento por
valor. Para isso é necessário usar a palavra ByVal na lista de
argumentos quando o procedimento for declarado
ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

8
Exemplo de um Procedimento em VBA
Private Sub CommandButton1_Click()
Dim Custo As Integer
Dim Desconto As Single

Custo = 1000
Desconto = 0.2
CalcularDesconto Custo, Desconto
MsgBox Custo
End Sub

Sub CalcularDesconto(C As Integer, D As Single)


C = C * (1 - D)
MsgBox C
End Sub

Produz o resultado 800/800


ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

9
Exemplo de um Procedimento em VBA
Private Sub CommandButton1_Click()
Dim Custo As Integer
Dim Desconto As Single

Custo = 1000
Desconto = 0.2
CalcularDesconto Custo, Desconto
MsgBox Custo
End Sub

Sub CalcularDesconto(ByVal C As Integer, D As Single)


C = C * (1 - D)
MsgBox C
End Sub

Produz o resultado 800/1000


ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

10
Sintaxe das Funções em Português
Estruturado
Português Estruturado

FUNÇÃO nome_da_função ([lista_argumentos]) : TIPO


<acção/bloco de instruções>
nome_da_função ← expressão
FIM

 TIPO é o tipo de dado do valor a retornar pela função

 expressão é o valor a retornar pela função

 Uma das instruções da função inclui a atribuição do valor a retornar


a uma variável com o mesmo nome da função
ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

11
Algoritmo com uma Função
INICIO
DEF num : INTEIRO
ESCREVER("Introduza um número“)
LER(num)
SE (Par(num) = VERDADE) ENTÃO
ESCREVER("Número par“)
SENÃO
ESCREVER("Número ímpar“)
FIMSE
FIM

FUNÇÃO Par(Valor : INTEIRO) : BOOLEANO


SE (Valor Mod 2 = 0) ENTÃO
Par ← VERDADE
SENÃO
Par ← FALSO
FIMSE
FIM
ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

12
Sintaxe das Funções em VBA

VBA

Function nome_da_função ([lista_argumentos]) As TIPO

<acção/bloco de instruções>

nome_da_função = expressão

End Function

ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

13
Exemplo de uma Função em VBA
Private Sub CommandButton1_Click()
Dim num As Integer
num = Val(InputBox("Introduza um número", "Entrada de dados"))
If (Par(num) = True) Then
MsgBox "Número par"
Else
MsgBox "Número ímpar"
End If
End Sub

Function Par(Valor As Integer) As Boolean


If Valor Mod 2 = 0 Then
Par = True
Else
Par = False
End If
End Function
ISEP – DEQ, F. Jorge Duarte Procedimentos e Funções

14