CAPÍTULO 2
Programação visual com Software Livre
EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo.  Prólogo de Benoit Minisini


Subrotinas e Funções


             
E impensável escrever todo o código de um programa sem a mínima organização. Em BASIC o código se organiza dividindo-o em procedimentos. Existem dois tipos de procedimentos: subrotinas e funções. Uma subrotina é um procedimento que executa algo, mas não devolve nenhum valor. Exemplos de subrotinas seriam procedimentos para desenhar algo na tela, tocar um som, etc. No entanto, uma função é um procedimento que sempre devolve algo ao terminar sua execução. Exemplos de funções seriam os cálculos de uma operação matemática  que devolve um resultado, o processo para pedir dados ao usuário da aplicação, etc.

Já temos visto no capitulo anterior a sintaxe para declarar as subrotinas, já que  que o ambiente de desenvolvimento escreve automaticamente as subrotinas que o programa executa ao darmos um click sobre um botão. A sintaxe completa é:

(PUBLIC | PRIVATE)  SUB nome_da_subrotina (p1 AS tipo_da_variável, p2 AS tipo_da_variável, ......)

...código que a subrotina executa

END   

As palavras PUBLIC e PRIVATE significa exatamente o mesmo que quando se define variáveis: determina se a subrotina pode ser chamada só do arquivo onde foi codificado (PRIVATE) ou de qualquer arquivo da mesma aplicação (PUBLIC).

As variáveis p1, p2, etc., permite passar parâmetros à subrotina, que se comportam dentro dela como variáveis declaradas dentro da própria subrotina. Quer dizer, desaparecem ao executar o END final. Pode se passar tantos parâmetros quando se desejar numa subrotina, declarando todos, obviamente

Existem algumas subrotinas com nomes especiais no Gambas, portanto o programador não deve usar esses nomes. São as seguintes:

Main: existe em todas as aplicações do Gambas, que são no modo texto, não no modo gráficos. Este é o ponto onde começa a executar o programa. Se não houvesse a subrotina Main, Gambas daria uma mensagem de erro ao iniciar já que não saberia por onde começar.

New e Free: se executam, respectivamente, ao criar-se e destruir-se um objeto. Só se encontram nos arquivos de classe.

Objeto_evento: executa-se automaticamente quando no Objeto ocorre um evento. Já  foi visto alguns exemplos no capitulo anterior,  como btnsair_Click(), que executa quando o usuário da aplicação da um click com o botão do mouse sobre o botão btnsair. Nas aplicações gráficas, o evento Open do formulário, que inicia a aplicação, é a primeira subrotina que o programa executará. No ultimo paragrafo deste capitulo trataremos especificamente destes eventos,  seus significados e utilidades.

Vejamos um programa de exemplo. Para testarmos, vamos criar um novo programa de texto seguindo os passos explicados no Capitulo 1, paragrafo O primeiro exemplo:

PUBLIC SUB Main ( )

    Print_Media ( 4,  8 )   

END

PUBLIC SUB Print_Media ( Valor1  AS   Integer,  Valor2  AS  Integer )

    PRINT  ( Valor1 + Valor2 )  /  2

END

Mesmo que este seja um programa pouco útil, serve para expressar com simplicidade a forma de funcionar das subrotinas. Começa executando a subrotina Main, nela só existe uma chamada para executar a subrotina Print_media passando os números inteiros 4 e 8 como parâmetro. A subrotina Print_media mostra no console o resultado da média entre os dois valores  que foi passado como parâmetros.

As sintaxes para declarar uma função é a seguinte:

(PUBLIC | PRIVATE) FUNCTION nome_função (p1 AS Tipo_Variável, p2 AS Tipo_Variável....) AS Tipo_Dados

    ......código que a função executa

    RETURN resultado_que_a_função_executou

END

A declaração é quase idêntica a da subrotina, acrescentando mais duas coisas: o tipo de dado que a função devolve na primeira linha e a necessidade de usar a sentença  RETURN do BASIC para indicar o valor a devolver.

Vamos a outro exemplo que produz o mesmo resultado que o anterior, porem usando uma função:

PUBLIC SUB Main ( )

    DIM Final AS Single
    Final = Calcula_Media ( 4, 8 )
    PRINT Final   

END

PUBLIC FUNCTION Calcula_Media ( Valor1 AS  Integer,  Valor2  AS  Integer ) AS Single

    RETURN ( Valor1 + Valor2 )   /  2

END

Neste caso é a subrotina Main que se encarrega de mostrar no console o resultado da operação. É muito importante destacar a diferença entre a forma de chamar uma subrotina e chamar uma função. No exemplo anterior vimos que para chamar a subrotina era só escrever seu nome com seus parâmetros entre parenteses. Agora vemos que para chamar a função usamos uma designação, Final = Calcula_Media(4,8). Isto deve ser feito sempre ao chamar uma função: a designação serve para recolher o valor devolvido. Por motivos óbvios, a variável que recolhe o valor da função deve ser declarada do mesmo tipo de dado que o devolvido pela função. No exemplo anterior a função devolve um dado tipo Single (um numero real com decimais) e a variável Final e declarada portanto, do tipo Single.




Cópia literal

Extraído do livro “GAMBAS, programação visual com software Livre”, da editora EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoît Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativos. Toda cópia total ou parcial devera expressar o nome do autor e da editora e incluir esta mesma licença, adicionando se é uma cópia literal “Cópia literal”. Se é autorizada a modificação e tradução da obra  sem fins lucrativos sempre se deve constar na obra resultante  a modificação o nome da obra original o autor da obra original e o nome da editora e a obra resultante também deverá ser livremente reproduzida, distribuída, ao publico e transformada em termos similares ao exposto nesta licença.

Tradução

Cientista
 (Antonio Sousa)