Pesquisar este blog

quarta-feira, 30 de outubro de 2013

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO - GOSUB...RETURN

GoSub...Return


    Instrução tradicional das linguagens Basic, empregada para causar uma quebra no fluxo linear de execução do código de um procedimento para uma sub-rotina dentro do procedimento, utilizando esta sintaxe:

GoSub LinhaOuRótulo
...
LinhaOuRótulo
...
Return

Onde,
  • LinhaOuRótulo: pode ser qualquer número de linha dentro do código, ou qualquer rótulo definido com o emprego de um nome seguido por “-“.
As seguintes considerações são válidas para a instrução GoSub...Return:
  • GoSub e Return existem apenas por compatibilidade para trás com outras versões do Basic, pois provocam a quebra na seqüência lógica e estruturada de execução do código de um procedimento, devendo ser evitado o seu emprego. Em seu lugar, empregue uma instrução Call que faça uma chamada a um outro procedimento;
  • GoSub e Return podem ser empregados em qualquer ponto do procedimento. Tão logo uma instrução GoSub seja encontrada, o fluxo de código será desviado para a linha ou rótulo determinado. Após esta linha ou rótulo, você poderá empregar uma instrução Return para retornar a execução do código para a linha subseqüente àquela na qual foi colocada a instrução GoSub;
  • Você não pode empregar GoSub para executar outros procedimentos. Empregue esta instrução apenas para desviar o fluxo de código dentro de um procedimento qualquer;
  • Para impedir que o fluxo normal do código entre no fluxo de código de uma sub-rotina (como uma sub-rotina de manipulação de erros em tempo de execução), empregue uma instrução Exit Sub antes do rótulo ou linha que define o início da sub-rotina.
Exemplo: O exemplo a seguir demonstra como empregar a instrução GoSub para retornar a raiz quadrada de números capturados por uma instrução InputBox(). Note que quando o valor fornecido não for um número ou for um número negativo, o procedimento é terminado.

Public Sub CalculaRaizQuadrada()
   Dim strValor As Srting

TentaDeNovo:

StrValor = InputBox(“Forneça o número cuja raiz quadrada você deseja”, “Número?”)

If Not IsNumeric(strValor) Or Val(strValor) < 0 Then
   Exit Sub

Else

   GoSub Calcula
   GoSub TentaDeNovo

End If
Exit Sub

Calcula:

   MsgBox “A raiz quadrada de “ & strValor & “ é “ & Sqr(Val(strValor))
   Return

End Sub

Até a Próxima!!

Nenhum comentário:

Postar um comentário