22 de setembro de 2008

Mais sobre Funções

Olá! Vamos para a 2ª parte sobre funções.
No final do último post, deixei escrito que "Pode-se construir uma função que faça alguma coisa apenas (do tipo void) ou uma função que faça alguma coisa e te traga de volta o resultado (do tipo int, string, double, etc..)" , e vou explicar agora como funciona isso.

Para começar, vou lembrar um pouco das variáveis.
Quando vamos escrever algum algoritmo, usamos muito as famosas váriaveis. Por exemplo, num algoritmo de soma. Ele pega dois números, a e b e traz a soma deles. Esses números não são sempre os mesmos certo? São as váriaveis a e b, ou seja, podem admitir diversos valores, sendo eles vindo diretamente do código, vindo de algum input pro usuário, etc.

Mas porque falei das variáveis? Porque ao declarar uma variável, você tem que dizer de qual tipo ela é, para o computador saber como representá-la na memória. Há vários tipos de representação de dados para o computador, os principais são: Boolean, Char, String, Int, Double e Float, onde são, respectivamente: Verdadeiro ou Falso, um Caractere, Um conjunto de caracteres ( uma palavra, uma frase ), um número inteiro, um número decimal de certo tamanho, número com ponto flutuante de certo tamanho.

E é quase a mesma coisa para as funções. Toda função, ao ser declarada, tem que ser de um tipo especifico. Só que o tipo da função determina qual o tipo de retorno que eu estou aguardando dela, ou até mesmo se eu não preciso aguardar nenhum retorno. Além dos tipos de representação de dados que mostrei acima, há mais um para funções: O tipo void. Que seria o tipo sem retorno.

Então, é como eu disse no começo, pode-se construir uma função que faça alguma coisa apenas (que retone um tipo void, ou seja, nada) ou uma função que faça alguma coisa e te traga de volta o resultado (que retorne algo do tipo int, string, double, etc..).
Vou descrever três funções, uma com tipo de retorno void , uma com int e outra com string:

Obs.: Vamos adotar essas funções como se estivessem dentro de uma classe, na orientação a objetos, só para o "public" não ficar errado.

As três funções não possuem argumentos, ou seja, não precisam de nenhum dado para executar.
A primeira, quando chamada, apenas escreve na tela (com a sintaxe de Console Application do C#) a palavra Void. A segunda, quando chamada, apenas traz o número 4. A terceira traz a sigla PP. E perceba que a primeira é a única que não possue a palavra return. As outras se não possuirem essa palavra, estariam erradas, ja que foram declaradas com tipos de retorno diferentes do void.

Agora, para ficar mais claro: Eu poderia escrever um código para escrever na tela a sigla PP do tipo void, da mesma forma que a primeira função, ou escrever um Console.WriteLine(ex3()) que daria o mesmo resultado, ja que a sua instrução diz: "Eu quero escrever na tela o que a função ex3 tem para me retornar".

E é isso ai! Fica então que, além de executar um bloco de instruções, as funções podem trazer retornos, que são importantes quando se precisa trabalhar com eles.
Até o próximo post!

obs.: Obrigado aos meus amigos de trabalho, Marcos Sabino e Érico Neto, que me alertaram quanto ao uso do termo "função do tipo tal", porque na realidade o tipo especifica o tipo do retorno, e não da função. As funções não possuem tipos, apesar do costume de se falar "função do tipo tal". =D

Um comentário:

  1. agora eu quero ver uma função que recebe duas strings, compara o tamanho delas e retorna a menor
    :)

    ResponderExcluir