Histórico da Página
...
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.
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 repetição
TIPOS DE FUNÇÕES USER FUNCTION - Funções de usuário, não necessita de chave de compilação (Autorização TOTVS) Declara uma função de usuário que poderá ser invocada apenas por outras funções declaradas no mesmo programa. Ou seja, no mesmo arquivo .PRW que contém o seu código. FUNCTION - Funções do produto padrão (E obrigatório ter chave de compilação especial para compilar no repositório) O comando FUNCTION permite a declaração e a construção de funções definidas pelo próprio usuário, utilizando os recursos da linguagem AdvPL. Este comando praticamente abre a arquitetura da linguagem AdvPL para o usuário, pois através dele é possível expandi-la, criando funções próprias, de acordo com a necessidade. STATIC FUNCTION - Funções que somente são utilizadas dentro de seu fonte. Declara uma função de usuário específica, que não pertence ao padrão do Protheus. Ela poderá ser invocada por qualquer outra função pertencente ao Protheus. Quando o Help NOFUNCW for exibido na tela do Microsiga Protheus indica que o sistema esta chamando a execução de uma Function/Static Function e/ou User Function que NÃO existe no repositório do ambiente (RPO). 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. 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
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 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 Caractere
Uma variável do tipo caractere pode conter strings com no máximo 1 MB, ou seja, 1048576 caracteres. Array Bloco de Código TIPOS DE OPERADORES MATEMÁTICOS Os operadores utilizados em ADVPL para cálculos matemáticos são: Veja o exemplo abaixo com os operadores de Adição e Multiplicação: #INCLUDE "PROTHEUS.CH" IF MsgYesNo("(Sim) - Teste de Adição / (Não) - Subtração)"," OPERADORES MATEMATICOS") RETURN
TIPOS DE OPERADORES DE STRING Os operadores utilizados em ADVPL para tratamento de caracteres são: Veja o exemplo abaixo com os operadores de Concatenação de Strings: #INCLUDE "PROTHEUS.CH" //Concatenando Strings RETURN Veja o exemplo abaixo com os operadores de Concatenação de Comparação: #INCLUDE "PROTHEUS.CH" IF MsgYesNo("(Sim) - Procurar por SILVA / (Não) - Procurar por FERREIRA"," OPERADOR DE COMPARAÇÃO") RETURN 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:
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. Atribuição em Linha O operador de atribuição em linha é caracterizado por dois pontos e o sinal de igualdade. 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 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:
ESCOPO DE VARIAVEIS O ADVPL não é uma linguagem de tipos rígidos para variáveis, ou seja, não é necessário informar o tipo de dados que determinada variável irá conter no momento de sua declaração, e o seu valor pode mudar durante a execução do programa. Também não há necessidade de declarar variáveis em uma seção específica do seu código fonte, embora seja aconselhável declarar todas as variáveis necessárias no começo, tornando Para declarar uma variável é necessário utilizar um identificador de escopo. Um identificador de escopo é uma palavra chave que indica a que contexto do programa a variável declarada pertence. O contexto de variáveis pode ser local (visualizadas apenas dentro do programa atual), público (visualizadas por qualquer outro programa), entre outros. O Contexto de Variáveis dentro de um Programa As variáveis declaradas em um programa ou função são visíveis de acordo com o escopo onde são definidas. Como também do escopo depende o tempo de existência das variáveis. A definição do escopo de uma variável é efetuada no momento de sua declaração. Local nNúmero := 10 Esta linha de código declara uma variável chamada nNúmero, indicando que aonde pertence seu escopo é local. Os identificadores de escopo são:
Quando um valor é atribuído a uma variável em um programa ou função, o ADVPL criará a variável se ela não tiver sido declarada anteriormente. A variável então é criada como se tivesse sido declarada como Private. Devido a essa característica, quando se pretende fazer uma atribuição a uma variável declarada previamente, mas escreve-se o nome da variável de forma incorreta, o ADVPL não gerará nenhum erro de compilação ou de execução. Assim, compreenderá o nome da variável escrito de forma incorreta como se fosse a criação de uma nova variável. Dessa forma, será alterada a lógica do programa, e é um erro muitas vezes difícil de identificar.
Variáveis de escopo local Neste exemplo, a variável nVar foi declarada como local e atribuída com o valor 10. Quando a função Filha é executada, nVar ainda existe mas não pode ser acessada. Quando a execução da função Pai terminar, a variável nVar é destruída. Qualquer variável, com o mesmo nome no programa que chamou a função Pai, não é afetada. Variáveis de escopo local são criadas automaticamente, cada vez que a função onde forem declaradas for ativada. Elas continuam a existir e mantêm seu valor até o fim da ativação da função (ou seja, até que a função retorne o controle para o código que a executou). Se uma função é chamada recursivamente (por exemplo, chama a si mesma), cada chamada em recursão cria um novo conjunto de variáveis locais. A visibilidade de variáveis de escopo locais é idêntica ao escopo de sua declaração, ou seja, a variável é visível em qualquer lugar do código fonte em que foi declarada. Se uma função é chamada recursivamente, apenas as variáveis de escopo local criadas na mais recente ativação são visíveis. Variáveis de escopo private Adicionalmente, a atribuição de valor a uma variável não criada anteriormente, de forma automática cria-se a variável como privada. Uma vez criada, uma variável privada continua a existir e mantém seu valor até que o programa ou função onde foi criada termine (ou seja, até que a função onde foi feita retorne para o código que a executou). Neste momento, é automaticamente destruída. É possível criar uma nova variável privada com o mesmo nome de uma variável já existente. Entretanto, a nova (duplicada) variável pode apenas ser criada em um nível de ativação inferior ao nível onde a variável foi declarada pela primeira vez (ou seja, apenas em uma função chamada pela função onde a variável já havia sido criada). A nova variável privada esconderá qualquer outra variável privada ou pública (veja a documentação sobre variáveis públicas) com o mesmo nome enquanto existir. Uma vez criada, uma variável privada é visível em todo o programa, enquanto não for destruída automaticamente. Quando a rotina que a criou terminar, ou uma outra variável privada com o mesmo nome for criada em uma subfunção chamada (neste caso, a variável existente torna-se inacessível até que a nova variável privada seja destruída). Em termos mais simples, uma variável privada é visível dentro da função de criação e todas as funções chamadas por esta, a menos que uma função chamada crie sua própria variável privada com o mesmo nome. Neste exemplo, a variável nVar é criada com escopo private e inicializada com o valor 10. Quando a função Filha é executada, nVar ainda existe e, diferente de uma variável de escopo local, pode ser acessada pela função Filha. Quando a função Pai terminar, nVar será destruída e qualquer declaração de nVar anterior se tornará acessível novamente.
| ||||||