Funções

Quando estamos desenvolvendo um projeto, freqüentemente percebemos funcionalidades cujo uso se repete em vários lugares.

Linguagens de programação possibilitam que agrupemos trechos de código em funções, podendo assim utilizar aquele mesmo trecho em diversos lugares, apenas invocando a função que definimos.

Funções agrupam um conjunto de comandos que você define para realizar uma determinada tarefa.

Quando você define uma função você também pode definir parâmetros para ela. Parâmetros são valores que você pode enviar a função quando a invoca (chama). Isso permite que a função possua um comportamento customizado e retorne resultados específicos aos parâmetros que nós passamos.

O uso de funções oferece diversas vantagens:
- Reduzem a quantidade de linhas de código.
- Facilitam o entendimento do código.
- Facilitam a manutenção, uma vez que caso seja necessária alguma alteração, precisamos fazê-la em apenas um lugar.
- Favorecem uma melhor organização e documentação do projeto.
- Permite que agrupemos trechos que representam um mesmo bloco lógico.

A definição de funções em Action Script segue a seguinte sintaxe:


// Sintaxe para definição de funções em Action Script 3.
function NomeDaFuncao (    [nomeDoParametro1: tipoDoParametro1][,nomeDoParametro2: tipoDoParametro2]...,[,nomeDoParametroN: tipoDoParametro3]    )
{
	// Aqui entra o código da função.
	//...
	[return valorDeRetorno];
}

Observe a forma de definição. Primeiro devemos escolher um nome para a função, nome que utilizaremos quando desejarmos invocá-la. O nome deve ser simples e refletir bem o que a função faz.

Em seguinda, devemos definir os parâmetros que a função recebe. Se definirmos parâmetros ao invocarmos essa função devemos obrigatoriamente fornecer um valor para cada parâmetro (depois veremos parâmetros opcionais, mas por enquanto tome isso como verdade). Assim, podemos por exemplo criar uma função que calcule o valor do fatorial de um número. Essa função, receberá como parâmetro o número a ter o fatorial calculado.

Por fim devemos fornecer o código Action Script da função. Ele será responsável por fazer o que desejamos que a função faça. No exemplo citado (cálculo de fatorial) deveríamos escrever um código que multiplicasse o número passado como parâmetro por todos os seus anteriores exceto zero.

Vejamos um exemplo bem simples, uma função que calcula o valor de um número elevado ao quadrado.

// Definição da função que realiza o cálculo de um número elevado ao
// quadrado.
function ElevaAoQuadrado(numero: int)
{
	// Criamos um variáveis para armzenar o valor do resultado do cálculo
	// do número elevado ao quadrado.
	var resultado: int;

	// Fazemos o calculo (multiplicamos o número por ele mesmo uma vez) e
	// armazenamos em resultado. Lembrando que o sinal '*' (asterisco) é
	// o símbolo da operação de multiplicação.
	resultado = numero * numero;

	// Retornamos o resultado (o quadrado do número) para quem nos chamou.
	return resultado;
}

// Criamos uma variavel para armazenar o resultado do calculo.
var resultadoDeDois;

// Chamamos (invocamos) a função passando como parâmetro o número que
// desejamos que seja calculado (2), armazenando o resultado na
// variavel.
resultadoDeDois = ElevaAoQuadrado(2);

// Imprimimos o resultado (imprimirá 4).
trace(resultadoDeDois);

No artigo anterior comentamos sobre o escopo de um código Action Script. O conceito de escopo também se aplica a variáveis dentro de funções. Assim, observe no exemplo anterior que dentro da função de nome “ElevaAoQuadrado” criamos uma variavel chamada “resultado”. Tal variável só estará disponível dentro da função “ElevaAoQuadrado”, ou seja, dentro do escopo onde ela foi declarada.

Usando o exemplo anterior, caso desejemos acessar a variável resultado fora da função, por exemplo, adicionando a linha a seguir no final do nosso código

trace(resultado);

não obteremos êxito, pois o escopo dessa variável é restrito a função onde foi declarada. Variáveis declaradas dentro de funções são chamadas variáveis locais, indicando que só podem ser acessadas localmente (no escopo).

Por outro lado, variáveis declaradas fora de funções podem ser acessadas fora e dentro de funções (respeitando-se o escopo de timeline, conforme discutido no artigo anterior), e são chamadas variáveis globais.

Podemos reescrever o exemplo anterior de outra forma:


// Criamos uma variável global para armazenar o resultado.
var resultado;

// Definição da função que realiza o cálculo de um número elevado ao
// quadrado.
function ElevaAoQuadrado(numero: int)
{
	// Fazemos o calculo (multiplicamos o número por ele mesmo uma vez) e
	// armazenamos em resultado. Lembrando que o sinal '*' (asterisco) é
	// o símbolo da operação de multiplicação.
	resultado = numero * numero;
}

// Chamamos (invocamos) a função passando como parâmetro o número que
// desejamos que seja calculado (2), armazenando o resultado na
// variavel.
ElevaAoQuadrado(2);

// Imprimimos o resultado (imprimirá 4). O resultado ficou armazenado na
// variavel global.
trace(resultado);

Este exemplo, além de ilustrar o conceito de variável global nos mostra que uma função não precisa necessariamente retornar um valor. O valor pode ser armazenado em uma variável global, acessada logo em seguida, ou simplesmente a função pode realizar operações sobre elementos do projeto e não retornar valor algum.

Infelizmente não existem regrar precisas para determinar que tipo de abordagem utilizar em funções (variáveis globais ou locais). A orientação que dou é que você deve buscar a abordagem que necessite de menos variáveis globais.

No próximo artigo introduziremos os métodos, que são como funções só que no contexto de objetos. Até lá.

resultado

Tags: , , , ,

segunda-feira, junho 15th, 2009 1. Básico

Deixe o seu comentário

Spam Protection by WP-SpamFree