Pesquisar este blog

quarta-feira, 30 de outubro de 2013

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – ON...GOSUB, ON...GOTO

On...GoSub, On...GoTo


    Instruções empregadas para criar um desvio de código para uma ou maus linhas, dependendo do valor lógico da expressão testada, utilizando a seguinte sintaxes:

On expressão GoSub RótulosDeDestino
On expressão GoTo RótulosDeDestino

Onde,
  • Expressão: argumento obrigatório, indicando qualquer expressão numérica cujo valor seja avaliado para um número inteiro entre 0 e 255. Números reais serão arredondados para o mais próximo inteiro disponível. O valor de expressão será utilizado para determinar quais os rótulos ou números de linha existentes na lista será utilizado como desvio para o fluxo de código;
  • RótulosDeDestino: argumento obrigatório, indicando uma lista de números de linha ou rótulos de destino, separados por vírgulas.
As seguintes considerações são válidas para as instruções On...GoSub e On...GoTo:
  • Esta instrução existe apenas para compatibilidade para trás com versões anteriores do Basic. Seu emprego torna o código extremamente difícil de seguir e depurar, sendo mais aconselhado empregar uma instrução Select Case que faça chamadas a outros procedimentos existentes no projeto;
  • Se Expressão for igual zero ou for um número maior do que o número de itens na lista, o controle será transferido para a primeira instrução após a instrução On...GoSub ou On...GoTo;
  • Se Expressão for um número negativo ou maior do que 255, ocorrerá um erro em tempo de execução;
  • É possível misturar números de linha e rótulos na mesma lista, até um máximo de 255 possíveis pontos de desvio de código;
  • Use uma instrução Return para fazer com que o código retorne à linha que sucede a instrução On...GoTo ou On...GoSub correspondente, sem que outras linhas de código sejam executadas.
Exemplo: O exemplo a seguir demonstra como empregar as instruções On...GoSub e On...GoTo para alterar o fluxo de código do procedimento, retornando o dia da semana correspondente ao número recebido como argumento (você poderia empregar a função Wday() associada a função Format() para obter o mesmo resultado, de forma muito mais elegante):

Public Function DiaDaSemana(intDia as integer) as string

   On intDia GoTo Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado
   Exit Function

Domingo:
   DiaDaSemana = “Domingo”: Return
Segunda:
   DiaDaSemana = “Segunda-feira”: Return
Terça:
   DiaDaSemana = “Terça-feira”: Return
Quarta:
   DiaDaSemana = “Quarta-feira”: Return
Quinta:
   DiaDaSemana = “Quinta-feira”: Return
Sexta:
   DiaDaSemana = “Sexta-feira”: Return
Sábado:
   DiaDaSemana = “Sábado”: Return

Exit Function

Até a Próxima!!

Nenhum comentário:

Postar um comentário