Quando você envia uma variável para um procedimento comum, ela envia apenas uma cópia (xerox) do seu valor. O procedimento pode alterar esse valor internamente à vontade, a variável original na base do código continuará intacta. Chamamos isso de passagem por Valor.
Exemplo de codigoVisuAlg
algoritmo "PassagemPorValor"
procedimento tenta_aumentar(s: real)
inicio
s <- s + 500 // Altera apenas a CÓPIA (s)
escreval("Salário dentro do procedimento: ", s)
fimprocedimento
var
salario: real
inicio
salario <- 1000.0
tenta_aumentar(salario)
escreval("Salário original fora do procedimento: ", salario)
fimalgoritmoSe você quiser que o procedimento modifique o documento original permanentemente, precisa adicionar a palavra var dentro dos parâmetros dele (Passagem por Referência). Mas atenção: na hora de executar no bloco principal, apenas repasse o nome da variável normal.
Exemplo de codigoVisuAlg
algoritmo "PassagemPorReferencia"
procedimento realmente_aumentar(var s: inteiro)
inicio
s <- s + 500
fimprocedimento
var
salario: inteiro
inicio
salario <- 1000
realmente_aumentar(salario)
escreval("Salário original agora é: ", salario)
fimalgoritmoExercício Prático: Crie um procedimento que receba uma variável 'pontuacao' por referência, e some 10 nela a cada execução.