Dúvida sobre Funções Com Retorno e Sem Retorno

Home Fóruns Programação Básica Dúvida sobre Funções Com Retorno e Sem Retorno

Visualizando 1 resposta da discussão
  • Autor
    Posts
    • #74939

      Bom dia fiz todos os exercícios, mas ainda estou com dúvida sobre o Retorno em funções, segue esses dois exercícios como exemplo…

      Desenvolva um algoritmo que leia dois valores pelo teclado e passe esses valores para um procedimento Somador() que vai calcular e mostrar a soma entre eles.

      Refaça o exercício anterior, só que agora em forma de função Somador(), que vai receber dois parâmetros e vai retornar o resultado da soma entre eles para o programa principal.

      Usando esses dois exercícios como exemplo, poderia me mostrar como os dois ficariam prontos, pra eu poder ver a diferença do resultado final?

    • #74957
      IcaroFilho
      Moderador
      programa
      {
      	
      	funcao inicio()
      	{
      		escreva("Digite o primeiro valor: ")
      		inteiro num1
      		leia(num1)
      
      		escreva("Digite o segundo valor: ")
      		inteiro num2
      		leia(num2)
      
      		escreva("Exercicio 1\n")
      		somador1(num1,num2)
      		escreva("\nExercicio 2\n")
      		escreva(somador2(num1,num2))
      	}
      	
      	funcao somador1(inteiro a, inteiro b){
      			escreva("A soma entre os números é de: " + (a + b))
      		}
      		
      	funcao inteiro somador2(inteiro a, inteiro b){
      		inteiro soma = a + b
      		retorne soma
      	}
      }

      Basicamente funções com retorno são utilizadas para se trabalhar com os dados oriundos dela, pois estas fazem quem que as variáveis sejam acessadas em escopos diferentes.
      No seu exemplo é possível acessar a variável SOMA da função somador2 e atribui-la a outra variável de escopo local se quiser.

      Já e sem retorno vc trata apenas como procedimento (para mostrar algo).

      Em resumo, tudo depende do motivo que irá usar e seu escopo.
      para exemplificar posso dizer assim:

      programa
      {
      	inteiro a = 1
      	funcao inicio()
      	{
      		inteiro b = 2
      		escreva(a)
      		escreva("\n")
      		inteiro a =2
      		escreva(a)
      		escreva("\n")
      		escreva(b)
      		escreva("\n")
      		escreva(c())
      		escreva("\n")
      		escreva(d())
      	
      	}
      	funcao c(){
      		inteiro c = 3
      	}
      	
      	funcao inteiro d(){
      		inteiro d = a
      		retorne d
      	}
      }
      • a primeira variável a tem escopo global e pode ser acessada em todo o projeto.
      • quando pedimos para escrever o primeiro a, ela possuirá o valor de 1, pois trata-se da variável global sendo usada no escopo da função.
        Ao declararmos uma variável com o mesmo nome, esta terá prioridade pois trata-se do escopo local, então ao mandarmos escrever a novamente, irá exibir o valor de 2
      • Se chamarmos a função c desta maneira, irá ocorrer um erro. pois esta função sem retorno não pode ser passada para um ESCREVA().
        Também não podemos atribui-la a uma variável, uma vez que essa função não “possui valor a ser passado”
        Para escrevermos na tela teríamos que fazer direto na função:

        	funcao c(){
        		escreva(3)
        	}

        e trocariamos a chamada de:
        escreva(c()) para c()

      • Por ultimo, temos a função d(). Trata-se de uma função com retorno e traz o valor do retorno para o escopo onde for trabalhada. Sendo assim, podendo ser reutilizada.
        É possível fazer, por exemplo:
        operações: 9 * d()
        atribuições:inteiro novo_numero = d()

      Espero ter dado uma luz e desculpe qualquer confusão.

Visualizando 1 resposta da discussão
  • Você deve fazer login para responder a este tópico.