Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Treinamento:

Linguagem de Programação nível básico

Público Alvo:

Analistas de Suporte Técnico e/ou Negócios

Conhecimentos Exigidos:

Estrutura básica do produto Microsiga Protheus

Conteúdo:

O que é uma linguagem de programação?

Uma linguagem de programação é um método padronizado para comunicar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador.

 

(ideia) Antes de Iniciar o treinamento vamos preparar o ambiente de desenvolvimento, para isto peço que configurem suas maquinas com o passo-a-passo contido no link abaixo:

http://tdn.totvs.com/pages/viewpage.action?pageId=284465676


ESTRUTURA DE DECISÃO E REPETIÇÃO


Estruturas de decisão

        • IF...ELSE (Documentação http://tdn.totvs.com.br/display/framework/IF+...+ELSEIF+...+ELSE+...+ENDIF)

          #INCLUDE "PROTHEUS.CH"

          USER FUNCTION TESTE001

          //Exemplo IF/ELSE
          IF MsgYesNo("HOJE ESTA FRIO ?"," PERGUNTA")
          ALERT("Respondeu SIM, VERDADEIRO")
          ELSE

          ALERT("Respondeu NAO, FALSO")
          ENDIF

          RETURN

        • DO CASE ... CASE (Documentação http://tdn.totvs.com.br/display/framework/DO+CASE)

          #INCLUDE "PROTHEUS.CH"

          USER FUNCTION TESTE001
          Local cOpcao := ' '
          Local oDlg := Nil
          Local oMsGet := NIL
          Local oBtn := NIL

          // Montando a tela para seleção da opçao desejada
          DEFINE MSDIALOG oDlg TITLE "Testando o DO CASE" From 09,0 To 20,50
          DEFINE SBUTTON oBtn FROM 20,50 TYPE 1 ENABLE OF oDlg
          @ 5, 1 Say "Escolha sua Opção de 1 a 9 : " OF oDlg PIXEL
          @ 5, 80 MSGET oMsGet Var cOpcao OF oDlg PIXEL
          ACTIVATE MSDIALOG oDlg CENTERED

          //Exemplo DO CASE/CASE
          DO CASE
          CASE cOpcao == '1'
          ALERT("ESCOLHEU A OPÇÃO 1")
          CASE cOpcao == '2'
          ALERT("ESCOLHEU A OPÇÃO 2")
          CASE cOpcao == '3'
          ALERT("ESCOLHEU A OPÇÃO 3")
          OTHERWISE
          ALERT("ESCOLHEU UMA OPCAO DIFERENTE DE 1, 2 e 3")
          END CASE

          RETURN


 

Estruturas de repetição

        • WHILE...END (Documentação http://tdn.totvs.com.br/display/framework/WHILE+...+ENDDO)

          #INCLUDE "PROTHEUS.CH"
          USER FUNCTION TESTE001
          //Exemplo WHILE/DO
          DO WHILE .T.

          IF MsgYesNo("PERGUNTA","DESEJA SAIR DO LAÇO ? ")
          ALERT("Respondeu SIM, VAMOS SAIR")
          EXIT
          ELSE
          ALERT("Respondeu NAO, VAMOS CONTINUAR")
          ENDIF
          ENDDO

          RETURN

           

           

      • FOR...NEXT (Documentação http://tdn.totvs.com.br/display/framework/FOR+...+NEXT)

        #INCLUDE "PROTHEUS.CH"
        USER FUNCTION TESTE001
        Local nX := 0

        //Exemplo FOR/NEXT
        FOR nX :=1 To 4
        IF MsgYesNo("INTERAÇÃO: " + Alltrim(STR(nX)),"DESEJA SAIR DO NEXT ? ")
        ALERT("Respondeu SIM, VAMOS SAIR")
        EXIT
        ELSE
        ALERT("Respondeu NAO, VAMOS CONTINUAR")
        ENDIF
        NEXT
        RETURN

 


TIPOS DE FUNÇÕES

 

TIPOS DE VARIÁVEIS

ADVPL não é uma linguagem de tipos rígidos, o que significa que variáveis de memória podem receber diferentes tipos de dados durante a execução do programa.
As variáveis podem também conter objetos, mas os tipos primários da linguagem são:

Numérico

O ADVPL não diferencia valores inteiros de valores com ponto flutuante. Portanto, é possível criar variáveis numéricas com qualquer valor dentro do intervalo permitido. Os seguintes
elementos são do tipo de dado numérico:

2
43.53
0.5
0.00001
1000000

Uma variável do tipo de dado numérico pode conter um número de dezoito dígitos, incluindo o ponto flutuante, no intervalo de 2.2250738585072014 E–308 até 1.7976931348623158
E+308.

Data

O ADVPL tem um tipo de dados específico para datas. Internamente as variáveis desse tipo de dado são armazenadas como um número correspondente à data Juliana. Variáveis do tipo de dados Data não podem ser declaradas diretamente, e sim com a utilização de funções específicas como, por exemplo, CTOD() que converte uma string para data.

Lógico
Valores lógicos em ADVPL são identificados através de .T. ou .Y. para verdadeiro e .F. ou .N. para falso (independentemente se os caracteres estiverem em maiúsculo, ou minúsculo).

Caractere
Strings ou cadeias de caracteres são identificadas em ADVPL por blocos de texto entre aspas duplas (") ou aspas simples ('):

 

"Olá mundo!"
'Esta é uma string'
"Esta é 'outra' string"

 

Uma variável do tipo caractere pode conter strings com no máximo 1 MB, ou seja, 1048576 caracteres.

Array
O Array é um tipo de dado especial. É a disposição de outros elementos em colunas e linhas. O ADVPL suporta arrays unidimensionais (vetores) ou multidimensionais (matrizes). Os elementos de um array são acessados através de índices numéricos iniciados em 1, identificando a linha e coluna para quantas dimensões existirem. Arrays devem ser utilizadas com cautela, pois se forem muito grandes podem exaurir a memória do servidor.

Bloco de Código
O bloco de código é um tipo de dado especial. É utilizado para armazenar instruções escritas em ADVPL que poderão ser executadas posteriormente.



TIPOS DE OPERADORES MATEMÁTICOS

Os operadores utilizados em ADVPL para cálculos matemáticos são:

 

TIPOS DE OPERADORES DE STRING

Os operadores utilizados em ADVPL para tratamento de caracteres são:


TIPOS DE OPERADORES RELACIONAIS

Os operadores utilizados em ADVPL para operações e avaliações relacionais são:


TIPOS DE OPERADORES LÓGICOS

Os operadores utilizados em ADVPL para operações e avaliações lógicas são:

 

TIPOS DE OPERADORES ESPECIAIS

Além dos operadores comuns, o ADVPL possui alguns outros operadores, ou identificadores. Estas são suas finalidades:

    • Os parênteses são utilizados para agrupar elementos em uma expressão, mudando a ordem de precedência da avaliação da expressão (segundo as regras matemáticas, por exemplo). Também servem para envolver os argumentos de uma função.

    • Os colchetes são utilizados para especificar um elemento específico de uma matriz. Por exemplo, A[3,2] refere-se ao elemento da matriz A na linha 3, coluna 2.
    • As chaves são utilizadas para a especificação de matrizes literais, ou blocos de código.


Por exemplo, A:={10,20,30} cria uma matriz chamada A com três elementos.


O símbolo -> identifica um campo de um arquivo, diferenciando-o de uma variável.
Por exemplo, FUNC->nome refere-se ao campo nome do arquivo FUNC. Mesmo que exista uma variável chamada nome, é o campo nome que será acessado.

O símbolo & identifica uma avaliação de expressão através de macro e é visto em detalhes na documentação sobre macro substituição.

O símbolo @ é utilizado para indicar que durante a passagem de uma variável para uma função, ou procedimento ela seja tomada como uma referência e não como valor.

O símbolo || é utilizado para indicar que durante a passagem de uma variável para uma função ou procedimento, ela seja tomada como um e valor não como referência.


ATRIBUIÇÃO A VARIÁVEIS


Atribuição Simples

O sinal de igualdade é utilizado para atribuir valor a uma variável de memória.
nVariavel := 10


Atribuição em Linha

O operador de atribuição em linha é caracterizado por dois pontos e o sinal de igualdade.
Tem a mesma função do sinal de igualdade sozinho, porém aplica a atribuição às variáveis.
Com ele é possível atribuir mais de uma variável ao mesmo tempo.

Quando diversas variáveis são inicializadas em uma mesma linha, a atribuição começa da direita para a esquerda, ou seja, nVar3 recebe o valor zero inicialmente, nVar2 recebe o
conteúdo de nVar3 e nVar1 recebe o conteúdo de nVar2 por final.
Com o operador de atribuição em linha, é possível substituir as inicializações individuais de cada variável por uma inicialização apenas:

O operador de atribuição em linha também pode ser utilizado para substituir valores de campos em um banco de dados.

 

Atribuição Composta

Os operadores de atribuição composta são uma facilidade da linguagem ADVPL para expressões de cálculo e atribuição. Dessa forma é possível economizar digitação: