Sub-rotinas É um bloco de código que tem uma função de executar uma tarefa específica. As sub-rotinas, assim como as funções, servem como um atalho para um bloco de código. É uma maneira de se evitar a repetição de código. Sub-rotinas é comum em todas as linguagens de programação. Além do programador poder criar suas próprias sub-rotinas, o próprio Gambas tem sub-rotinas nativas, como exemplo, podemos citar funções matemáticas para cálculo de seno e cosseno, sub-rotinas para transformar texto em maiúsculo, contar caracteres e etc. Em alguns casos o ambiente de desenvolvimento escreve automaticamente as sub-rotinas um exemplo disso é quando damos um duplo clique sobre um botão. As vantagens se utilizar sub-rotinas são: • Utilizadas para melhorar a organização e redução dos códigos. • Poderão ser reutilizadas em várias partes do programa, evitando assim que um mesmo código tenha que ser escrito várias vezes. • Facilita a manutenção do programa. Já que teremos apenas que alterar a sub-rotina e dessa forma, todos os locais onde ela é chamada já estarão corrigidos. A principal diferença entre uma função e uma sub-rotina está no fato de que uma função obrigatoriamente retorna um valor, enquanto que uma sub-rotina não retorna valor algum, ou seja, a sub-rotina apenas executa uma ação. Uma sub-rotina é constituída por 2 partes: Cabeçalho e Corpo. No cabeçalho definimos o nome da sub-rotina e os parâmetros que serão passados para a mesma. Os parâmetros não são obrigatório podemos criar sub-rotinas sem eles. No caso de ser necessário definir variáveis para receber os parâmetros de apoio, estas só poderão ser utilizadas dentro da sub-rotina. Os valores dessas variáveis são automaticamente eliminados quando a sub-rotina termina. O Corpo contém o bloco de código que resolve o problema proposto. A sintaxe completa para declarar uma sub-rotina é: (Public|Private) Sub Nome_Sbrotina(Va_1 As Tipo, Va_2 AS Tipo, …) … Código que … a sub-rotina … executa End Public - Esta palavra significa exatamente o mesmo que quando se define variáveis. Quando declaramos a sub-rotina como Public, podemos chamá-la de qualquer arquivo da mesma aplicação Private - Determina que a sub-rotina só pode ser chamada do arquivo onde foi escrita. Va_1 e Va_2 - São variáveis que permitem a passagem de parâmetros para a sub-rotina, comportando-se como variáveis declaradas dentro da própria sub-rotina, quer dizer, desaparecem ao executar o End. Podemos passar a quantidade de parâmetros que desejarmos em uma sub-rotina, desde que declaremos as varáveis para recebê-los. 3 Existem algumas sub-rotinas com nomes especiais no Gambas, portanto o programador não pode usar esses nomes em suas próprias sub-rotinas. Main: Rotina principal. Existe em todas as aplicações do Gambas, que são executadas no modo texto, ou seja, no terminal e sem interface gráfica. Este é o ponto onde começa a executar o programa, se não existir a sub-rotina Main, Gambas exibe uma mensagem de erro ao tentarmos executar a aplicação, pois sem ela, o Gambas não sabe por onde começar. Public Sub Main() … End New - é executada quando um objeto é criado. Dim Notas As New Float[5] Free: é executada quando um objeto é destruído. Objeto_Evento - executada automaticamente quando em um objeto ocorre um evento. Objeto_Click(), por exemplo, é executada quando o usuário dá um clique com o botão do mouse sobre um botão. No capítulo apropriado trataremos especificamente destes eventos, seus significados e suas utilidades. Vejamos alguns exemplos para entendermos na prática como criar sub-rotinas. Podemos observar a sub-rotina Main que utilizamos em todos os exemplos passados e geralmente já vem declarada quando criamos um projeto de linha de comando. Public Sub Main() Soma_T(75, 10, 45.5) End O passo seguinte e declarar uma sub-rotina de nome 'Soma_T ' Public Sub Soma_T(V1 As Short, V2 AS Integer, V3 AS Float) Print V1 + V2 + V3 '130,5 End Mesmo que este seja um programa pouco útil, serve para demostrar a simplicidade como as sub-rotinas funcionam. Na sub-rotina Main existe uma chamada para executar a sub-rotina Soma_T passando como parâmetros os valores 75, 10, 45.5. A sub-rotina Soma_T mostra no Terminal o resultado da soma dos valores que foi passado como parâmetros, cujo resultado é 130,5. 4