Variáveis
Globais são aquelas declaradas no início de um algoritmo. São visíveis, ou
seja, podem ser utilizadas no algoritmo principal e por todos os outros
subalgoritmos.
Variáveis
Locais são aquelas declaradas no início de um subalgoritmo. São visíveis,
ou seja, podem ser utilizadas somente pelo subalgoritmo onde foram declaradas. Outros
subalgoritmos ou mesmo o algoritmo principal não podem utiliza-las.
Exemplo:
Algoritmo EXEMPLO_VARIAVEIS
Var X : real
I : inteiro
Função FUNC( ) : real
Var X : conjunto[5] de inteiro
Y : literal[10]
. . .
Procedimento PROC( )
Var Y
: lógico
X ß 4 * X
I ß I
+ 4
Y ß X = I
Se Y
Então
Escreva “X =
I”
Senão
Escreva “X
<> I”
Fim_se
. . .
X
ß 3.5
I ß 10
PROC( )
Parâmetros
são canais por onde os dados são transferidos pelo algoritmo chamador a um
subalgoritmo, e vice-versa.
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.
Exemplo:
Algoritmo EXEMPLO_PARAMETROS
Var Z : real
Função MEDIA (X, Y
: real) : real
Retorne (X + Y) / 2
Z ß MEDIA(8, 7)
Escreva “A Média é igual a “, Z
No exemplo acima, X e Y são parâmetros formais da função MEDIA, enquanto 8 e 7 são parâmetros reais do algoritmo principal que substituirão X e Y quando da chamada da função MEDIA.
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 e pode se dar por dois mecanismos distintos: passagem por valor (ou por cópia) e passagem por referência.
-
Passagem de Parâmetros por Valor
No ato da invocação do subalgoritmo, o parâmetro real é calculado e uma cópia do seu valor é substituída pelo parâmetro formal. Quando o subalgoritmo é executado, as modificações efetuadas no parâmetro formal não afetam o parâmetro real, pois trabalha-se apenas com uma cópia do mesmo.
Exemplo:
Algoritmo
EXEMPLO_PAR_VAL
Var X : inteiro
Procedimento PROC(Y : inteiro)
Y ß Y + 1
Escreva “Durante Y = “, Y
X ß 1
Escreva “Antes X = “,
X
PROC(X)
Escreva
“Depois X = “, X
-
Passagem de Parâmetros por Referência
Quando da invocação de um subalgoritmo com parâmetros passados por referência, o espaço de memória ocupado pelos parâmetros reais é compartilhado pelos parâmetros formais correspondentes, portanto as modificações efetuadas nos parâmetros formais também afetarão os parâmetros reais.
Exemplo:
Algoritmo
EXEMPLO_PAR_REF
Var X : inteiro
Procedimento PROC(Var Y
: inteiro)
Y ß Y + 1
Escreva “Durante Y = “, Y
X ß 1
Escreva “Antes X = “, X
PROC(X)
Escreva
“Depois X = “, X
Exercícios:
1 – Escreva um subalgoritmo para determinar se um dado número é ou não impar.
Função IMPAR(n : inteiro) : lógico
Se (n – (n / 2) * 2)
<> 0
Então
Retorne .V.
Senão
Retorne .F.
Fim_se
2 – Escreva um subalgoritmo para realizar a escrita de um vetor de n componentes reais (n <= 100).
Procedimento ESCR_VETOR(V : conjunto[100]
de real, n : inteiro)
Var I : inteiro
Para I de 1 até n faça
Escreva “V[“, I, “] = “, V[I]
Fim_para
3 – Escreva um subalgoritmo para realizar a leitura de um vetor de n componentes reais (n <= 100).
Procedimento LE_VETOR(Var V
: conjunto[100] de
real, n : inteiro)
Var I : inteiro
Para I de 1 até n faça
Escreva “V[“, I, “] = “
Leia V[I]
Fim_para