Jump to content

Question

Boa noite, comecei a estudar lógica de programação a  pouco tempo, e estou com uma dúvida sobre passagem de parâmetros por valor e por referência. Sei a estrutura de cada um e como funciona, porém não sei quando devo usar um ou outro. Será que alguém poderia tentar exemplificar para mim? Estou aprendendo no Visualg.

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Passagem de parâmetro por valor é quando você não deseja modificar o valor da variável.

Ex :

algoritmo "Valor"

var

	A : inteiro

procedimento Valor(B:inteiro)
	
inicio

	Escreval("O argumento ",B,"está sendo passado por valor")	
	B <- 10
	Escreval("Valor atual argumento A ",B)

fimprocedimento



inicio
	
	Valor(A)
	Escreval("Valor atual do argumento A ", A)
	

fimalgoritmo

No exemplo de cima a variável A foi passada como argumento para o procedimento Valor,o argumento A recebeu o valor 10 durante a execução do procedimento,quando o procedimento foi encerrado o valor da variável A Voltou a ser 0.

 

 

Passagem de parâmetro por referência o valor da variável  é modificado.

Ex:

algoritmo "Referência"

var

	A : inteiro

procedimento Referencia(var B:inteiro)
	
inicio

	Escreval("O argumento ",B,"está sendo passado por referência")	
	B <- 10
	Escreval("Valor atual argumento A ",B)

fimprocedimento



inicio
	
	Valor(A)
	Escreval("Valor atual do argumento A ", A)
	

fimalgoritmo

No exemplo de cima irá fazer o mesmo do primeiro procedimento chamado Valor,porém agora a variável A assumirá outro valor.

 

Enfim você irá utilizar a passagem por valor quando você desejar manter o valor da variável original intacta sem alterações,Agora com a passagem por referência é quando você desejar que o valor da variável sofra alterações.

espero que tenha sido claro,bons estudos.

  • Gostei 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By slaoxx
      Não conseguir obter êxito, minha sintaxe foi a seguinte:
       
      CREATE FUNCTION precomed ()
      RETURNS decimal
      SELECT AVG(preco_cd);
       
      SELECT precomed ();
       
    • By daniele_c
      O professor em sala de aula, solicitou o seguinte trabalho de algoritmos 1:
      Escreva um algoritmo que utilize a biblioteca Util e gere uma cartela de BINGO com números aleatórios. Por exemplo, na coluna B temos números de 1-15, já na coluna I temos números de 16-30, etc. conforme imagem. No fim o algoritmo deve imprimir a cartela de bingo.
      Eu consegui gerar a tabela normalmente, mas eu não faço ideia de como não fazer com que em cada coluna, os números não se repitam. 
      Meu andamento abaixo:
       
      programa
      {
          inclua biblioteca Util --> u
          
          funcao inicio()
          {
              inteiro matriz[5][5], coluna, linha
              const inteiro tamanho=5
              para(linha=0; linha<tamanho; linha++){
                  para(coluna=0; coluna<tamanho; coluna++){
                  se(coluna==0){
                      matriz[linha][coluna]=u.sorteia(1,15)
                  }
                  se(coluna==1){
                      matriz[linha][coluna]=u.sorteia(16,30)
                  }
                  se(coluna==2){
                      matriz[linha][coluna]=u.sorteia(31,45)
                  }
                  se(coluna==3){
                      matriz[linha][coluna]=u.sorteia(46,60)
                  }
                  se(coluna==tamanho-1){
                      matriz[linha][coluna]=u.sorteia(61,75)
                  }
                  se (coluna==tamanho-1){
                      escreva(matriz[linha][coluna])
                  }
                  senao {
                      escreva(matriz[linha][coluna], ",")
                  }
                  }
                  escreva("\n")
          }
          }
      }
       
      E seguindo as questões, na nº2, ele pede o seguinte: Após, gerada uma cartela e impressa (parte 1) Adicione no algoritmo um código que faça automaticamente o sorteio de números aleatórios de 1 a 75. Após cada número sorteado, verificar se a cartela gerada fez um bingo de linha ou de coluna. Em seguida, deve-se imprimir o Bingo!
       
      sei gerar os 75 números tbm, mas, não sei como fazer para que faça as comparações e verificar se ocorreu o bingo. 
       
      Gostaria de algumas ideias, pliss
       
    • By g.dmatos
      Preciso desenvolver um algoritmo no Visualg, da função y=3x+8, onde, a partir da informação de um valor para a variável independente x, o sistema automaticamente informe o valor da variável dependente y.
       
      porém quando vou executar da erro no código:
      var x, y: real inicio escreval("Digite o valor do coeficiente x") leia(x) Escreval ("O valor da conta é igual a:" + y) Leia (y) y=(3.x)+8 fimdoalgoritmo  
    • By TEC2587
      Quando eu excuto o algoritmo, a primeira condição comporta-se bem, mas apartir da segunda aparece o erro:
       
      Esperava-se encontrar ENTAO na linha  "se((med=<8.9) e (med>=8))entao"
      Esperava-se encontrar ENTAO na linha  "escreval("Seu rendimento foi muito bom"
       
      Algoritmo "semnome"
       
       
      Var
         med: real
      Inicio
         escreval("-------------------")
         escreval(" RENDIMENTO ESCOLAR")
         escreval("--------------------")
         escreval("Qual é a sua média: ")
         leia(med)
         se ((med=10) ou (med>=9))entao
            escreval ("Seu rendimento foi excelente")
         senao
            se ((med=<8.9) e (med>=8))entao
               escreval("Seu rendimento foi muito bom")
            senao
               se ((med= 7.9) e (med>=7))entao
                  escreval("Seu rendimento foi bom")
               senao
                  se ((med=6.9) e (med>=6))entao
                     escreval("Seu rendimento foi regular")
                  senao
                     se ((med=5.9) e (med>=5))entao
                        escreval("Seu rendimento foi insuficiente")
                     senao
                        escreval("Seu rendimento foi ruim")
                     fimse
                  fimse
               fimse
            fimse
         fimse
      Fimalgoritmo
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.