Home › Fóruns › Programação Básica › Dúvida sobre Funções Com Retorno e Sem Retorno
- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 3 anos, 2 meses atrás por IcaroFilho.
-
AutorPosts
-
-
8 de setembro de 2021 às 10:35 #74939Marcos Felipe Dantas da CostaParticipante
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?
-
8 de setembro de 2021 às 16:25 #74957IcaroFilhoModerador
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ávelSOMA
da funçãosomador2
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 escrevera
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())
parac()
- 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.
- a primeira variável
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.