Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo_Silva

[Resolvido] Caracteristicas das funções

Recommended Posts

Estou fazendo alguns exerc. e percebi maneiras diferente de se usar função.

 

Pode invocar a função onde quiser?

 

Diferente, salvar um valor (o retorno) no nome da função e depois usar esse retorno sem atribuir em outra variavel.

 

Por exemplo esse aqui; já chamou e retornou dentro de um decisão.

 

algoritmo "comparacao"

funcao compara(a, b : real) : logico
inicio
  retorne a = b
fimfuncao

var
  n1, n2 : real
inicio

  escreva("N° 1: ")
  leia(n1)
  escreva("N° 2: ")
  leia(n2)
  
  se (compara(n1, n2)) entao  //AKI
    escreva("Iguais")
  senao
    escreva("Diferentes")
  fimse
fimalgoritmo

É assim mesmo, já chamar e logo em seguida já utilizar do valor retornado?

 

Faria assim:

comparacao <- compara(n1, n2) //coloca na var 
  se (comparacao) entao //depois que utiliza ela

Obrigadão e malz pelas dúvidas básicas. Pq é complicado não ter ninguem para auxiliar. http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom não sei se o visualg(pois n mecho nele) aceita desse jeito.

+ eu geralmente faço do jeito q você fez qnd programo em outras linguagens..

eu acho + bonito tbm ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza é possível fazer isso!

Se o visualG não suportar, ele está seriamente defasado e precisando de uma atualização...

 

Além de ser mais elegante, é mais eficiente.

Note que economiza-se uma variável!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dae Rapaziada . http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

 

O VisualG faz é coisas alem do comum hauahaua, como zerar as variaveis..etc.

 

Sempre que finaliza as funções ela retorna algo, mas pensava que tinha que se em variaveis.

 

Não sabia que retornava no direto no escreva.

 

Qual outra coisa bacana que da para fazer com função?

 

Outra coisa:

 

a = b
Esta retornando: a = b ou true/false?

Retorno é logico, mas tbm poderia ser a expressão.

 

Se for true/false, isso é mto loko. http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o sinal de igual ('=') no visualG é um operador de relação.

Isto é, estabelece uma relação entre duas coisas.

 

Logo, o tipo de retorno é um valor lógico.

é perfeitamente válido você escrever:

se a = b entao
    ...
senao
    ...
fimse

E também pode fazer:

 

var
    a : logico
    x, y: real
inicio

   //...
   //...

   a := x = y

   //...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa deu para sacar.

 

A variavel c por exemplo:

 

a <- 5
 
b <- 2 
 
c <- a = b  

d <- 20 < c

A variavel C salva a expressão ou verd/falso?

 

Ae beteu a duvida, qual dos 2 modos a var d ficaria:

 

d <- 20 < falso
d <- 20 < a = b

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você só pode comparar cachorros com cachorros, ou cabelo com cabelo.

Não faz sentido comparar cachorro com cabelo, não é?

 

Portando, a expressão:

20 < a = b
É ambigua.

 

Se for:

(20 < a) = b
Onde a é do tipo Int, e b é do tipo lógico, então faz sentido.

 

Mas, se for:

20 < (a = B)
Ja não faz sentido...

Não da pra comparar um número com um valor lógico.

 

Não entendi a sua dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Correto Victor, mas estou dizendo sobre o que fica guardado na variavel.

 

Temos as var A e B, com valores predefinidos sendo inteiro. a <- 5 e b <- 5

 

Temos a 3° var C, sendo logica, recebendo a e b, depois verificando igualdade.

 

Nessa hora o que vai estar armazenado:

 

c <- a = b

 

ou

 

c <- verdadeiro

 

Pq pelo livro, estou achando que fica na var a expressão.

 

malz pelo exemplo mal feito. http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se C é do tipo lógico, como pode ficar guardado uma expressão?

Na variável C só podemos guardar dados do tipo lógico, portanto, ficará com "verdadeiro"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não da pra salvar a expressão.

Quer dizer, até dá pra fazer umas gambiarras e salvar uma espécie de expressão, mas fica beeeem mais complicado e com certeza no visualG não da pra fazer isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha ate pensado em salvar como caracter, mas não teria como manipular...

 

Malz a demora tinha viajado, bom Dois Milí e Dez para todos http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

 

 

 

Voltei a estudar funções e deu uma dúvida, teria como pegar o valor do retorno e manipular dentro dessa mesma função?

 

function desligarTv () : logico 
var respDesligar : caracter 
inicio  
  escreval("Desligar Tv e dar uma volta..?")  
  leia(respDesligar)    
   return respDesligar = "sim"   
  //AKI   
  se (return = verdadeiro) entao
    escreva("Desligada")   
  senao    
    escreva("Continua a programação")   
  fimse 
fimfuncao

Pq dependendo do retorno quero um escreva diferente, mas por conhecimento queria ver se é possivel sem uma var adicional ou usar respDesligar.

 

Vai que em outras situações não tem uma var de resposta.

 

Obrigadão de novo ae, topico vai ser referencia sobre funções rs. http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

não...

uma vez que a função retorna não há volta.

Trate o resultado fora da função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara para fechar o topico com chave de ouro...

 

ok, pq tinha visto funções recursivas ae parece chamar ela mesma, mas são ooooutra coisa ?

 

funcao compara(a, b : real) : logico
inicio
  retorne a = b
  escreva("Opa um texto")
fimfuncao

Isso em uma linguagem que presta seria impossivel, algo depois do retorne?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é questão de a linguagem prestar ou não.

simplesmente não faz sentido pedir pra executar algo após o retorno da função.

 

Funções recursivas precisam obedecer algumas regras, caso contrário elas nunca param de se chamar.

Vamos falar muito sobre elas no curso de programação funcional.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.