Documento: Sequência de Instruções


A sequência simples de instruções é a estrutura de programação mais natural, pois consiste apenas na colocação das instruções numa ordenação sequencial, lógica e precisa. Trabalhando isoladamente, as instruções são executadas uma única vez, uma após a outra, sem mudança no fluxo de execução. Por exemplo:

// Função Sequencial
FUNCTION CalcGrao()

LOCAL nPesoSac := 60,00
LOCAL nCotacao := 37,56
LOCAL nSacas := 1.900,00
LOCAL nPesTot := 0
LOCAL nVlrTot := 0

nPesTot := nSacas * nPesoSac  // Calcula o peso total por meio da multiplicação do número de sacas de grãos pelo peso unitário de cada saca.
nVlrTot := nPesTot * nCotacao  // Calcula o valor total dos grãos por meio da multiplicação do peso total pela cotação do grão no dia.

// Mostra na tela o valor total dos grãos em estoque
MsgAlert("O valor total dos grãos, de acordo com o estoque e a cotação do dia, é de R$ " + Str(nVlrTot, 12, 2))

RETURN nVlrTot

Uma forma mais sofisticada dessa estrutura de programação é a sequência com desvio. Nesse caso, as instruções que formam a sequência são colocadas em um bloco delimitado pelo comando BEGIN SEQUENCE ... END (INÍCIO DA SEQUÊNCIA ... FIM). Trabalhando isoladamente, as instruções são executadas sequencialmente, uma única vez. Contudo, pode haver mudança no fluxo de execução do programa. Caso o comando BREAK ou a função BREAK() sejam encontrados, a sequência é interrompida e o fluxo de execução passa para a primeira instrução após o comando RECOVER ou para a primeira instrução após o final da sequência. Por exemplo:

// Função Sequencial
FUNCTION CalcGrao()

LOCAL nPesoSac := 60,00
LOCAL nCotacao := 37,56
LOCAL nSacas := 1.900,00
LOCAL nPesTot := 0
LOCAL nVlrTot := 0

BEGIN SEQUENCE
               nPesTot := nSacas * nPesoSac  // Calcula o peso total por meio da multiplicação do número de sacas de grãos pelo peso unitário de cada saca.
               nVlrTot := nPesTot * nCotacao  // Calcula o valor total dos grãos por meio da multiplicação do peso total pela cotação do grão no dia.

               IF nVlrTot < 5.000
                         // O desvio é realizado caso o valor total seja menor que R$ 5.000,00.
                         BREAK
               ENDIF

               // Mostra na tela o valor total dos grãos em estoque
               MsgAlert("O valor total dos grãos, de acordo com o estoque e a cotação do dia, é de R$ " + Str(nVlrTot, 12, 2))
END

RETURN nVlrTot

O comando BEGIN SEQUENCE ... END é uma estrutura de controle apropriada para o tratamento de condições de erro de execução. Nessas situações, a sequência pode ser interrompida por meio do comando BREAK e as instruções para a recuperação do erro podem ser colocadas entre o comando RECOVER e o fim da sequência.

O AdvPL possui funções de recuperação de erros, como a função ERRORBLOCK(), que podem ser utilizadas em conjunto com essa estrutura de controle do fluxo de programação.

  • Sem rótulos