Passagem de parametro por valor e referencia
É o seguinte, eu fiz um algoritmo bem básico só para testar esses tipos de passagens, eu sei o básico sobre cada uma. Foi feito pelo VisualG
var
C, N1, PAR, IMPAR : inteiro
procedimento parouimpar(X, Y, Z : inteiro)
var
inicio
se (X%2 = 0 ) entao
Y <- Y + 1
senao
Z <- Z + 1
FimSe
Limpatela
Escreval (" Foram totalizados ", Y , " numeros pares ")
Escreval (" Foram totalizados ", Z , " numeros impares ")
fimprocedimento
inicio
PAR <- 0
IMPAR <- 0
Para C <- 1 ate 10 faca
Escreva (" Digite um numero : ")
Leia (N1)
parouimpar (N1,PAR,IMPAR)
Fimpara
fimalgoritmo
Eu sei que quando coloca-se o " var " na frente do procedimento significa que a passagem vai ser por referencia, assim, os valores vão ser jogados nas váriaveis do programa principal. A minha duvida é : Porque quando eu removo o " var " e deixando as passagens apenas por valores o algoritmo não funciona direito, ou seja, ele não acumula os valores pares e impares nos parametros Y e Z? Quando eu coloco por referencia funciona tudo certinho, acumula os valores e joga tudo nas variaveis " PAR " e " IMPAR ", mas quando eu coloco coloco as passagens por valores não funciona, é como se os parametros " Y " e " Z " recebessem sempre o valor 0 quando o procedimento e rodado dentro do contador. Não sei se expliquei bem, agradeceria muito se alguem me ajudasse. E uma duvida simples, porem, eu gosto de saber perfeitamente o porque das coisas.
Discussão (1)
Carregando comentários...