Variáveis Globais e Locais

 

         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]

Início

            . . .

Fim

Procedimento  PROC( )

Var  Y  :  lógico

Início

         X ß 4 * X

         I  ß  I + 4

         Y ß X = I

         Se Y

                  Então

                            Escreva  “X = I”

                  Senão

                            Escreva  “X <> I”

         Fim_se

Fim

Início

            . . .

         X ß 3.5

          I ß 10

         PROC( )

Fim

 

 

Parâmetros

 

         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

Início

         Retorne  (X + Y) / 2

Fim

Início

         Z ß MEDIA(8, 7)

         Escreva  “A Média é igual a “, Z

Fim

 

         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.

 

 

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 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)

Início

Y ß Y + 1

         Escreva  “Durante Y = “, Y

Fim

Início

         X ß 1

         Escreva  “Antes X = “, X

         PROC(X)

         Escreva  “Depois X = “, X

Fim

 

-         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)

Início

Y ß Y + 1

         Escreva  “Durante Y = “, Y

Fim

Início

         X ß 1

         Escreva  “Antes X = “, X

         PROC(X)

         Escreva  “Depois X = “, X

Fim

 

 

Exercícios:

 

1 – Escreva um subalgoritmo para determinar se um dado número é ou não impar.

 

Função  IMPAR(n  : inteiro)  :  lógico

Início

         Se  (n – (n / 2) * 2)  <>  0

                  Então

                            Retorne  .V.

                  Senão

                            Retorne  .F.

         Fim_se

Fim

 

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

Início

         Para I de 1 até n faça

                  Escreva  “V[“, I, “] = “, V[I]

         Fim_para

Fim

 

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

Início

         Para I de 1 até n faça

                  Escreva  “V[“, I, “] = “

Leia  V[I]

         Fim_para

Fim