You are on page 1of 18

Educao Corporativa

Lgica e Inicializao
Programao ADVPL
1
Todos os direitos reservados.
Planejamento e controle oramentrio
Matriz - Av. Braz Leme, 1.717 - 02511-000 - So Paulo - SP - Brasil.
Tel.: 55 (11) 3981 - 7001 www.microsiga.com.br
2 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Processamento de dados 3
Entrada, processamento (algoritmo) e sada 3
Linguagem de programao 3
Programa fonte e executvel 3
Variveis 4
O Contexto de Variveis dentro de um Programa 4
Variveis Locais 4
Variveis Estticas 5
Variveis Privadas 5
Variveis e nomes de campos 6
Variveis Pblicas 6
Operadores Comuns 7
Operadores Matemticos 7
Operadores de String 7
Operadores Relacionais 8
Operadores Lgicos 8
Operadores de Atribuio 8
Atribuio Simples 8
Atribuio em Linha 9
Atribuio Composta 9
Operadores de Incremento/Decremento 9
Operadores Especiais 10
Ordem de Precedncia dos Operadores 11
Alterao da Precedncia 11
Expresses 12
Instrues 12
Diferenas entre Comando e Funo 12
Banco de dados 13
Estruturas de controle 13
Exemplo 1 13
Exemplo 2 14
Exemplo 14
Exemplo 1 15
Exemplo 2 15
Exemplo 3 15
Indentao 16
Funes 16
Exemplo 4 16
Desenhando telas 17
Iniciao de Programas em ADVPL (Algoritmo) 17
S
u
m

r
i
o
3
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
Processamento de dados
Os problemas que sero resolvidos atravs da programao so baseados no conceito bsico de
processamento de dados. As informaes so recebidas pelo programa e so processadas, gerando
uma resposta no nal. A primeira anlise que devemos fazer para buscar a soluo identicar quais
informaes so realmente necessrias (dados de entrada) e quais so as respostas que a soluo pede
(dados de sada).
Entrada, processamento (algoritmo) e sada
Observao: Todo o programa, independente da sua nalidade, trabalha dessa forma. Ou seja: entrada,
processamento e sada.
O primeiro trabalho do programador , a partir do problema proposto, dividir as informaes que sero
manipuladas pelo programa em informaes de entrada e sada e determinar, em linhas gerais, quais
sero os procedimentos para chegar soluo do problema. A denio destes procedimentos o que
chamamos de Algoritmo, e o processamento a execuo destes procedimentos, que transformam e
manipulam os dados de entrada, resultando os dados de sada.
Dentre as formas de representao de algoritmos, podemos citar o uxograma convencional.
Linguagem de programao
Para um programa ser desenvolvido, necessrio que o programador use um programa, que programa?
Uma linguagem de programao. Linguagem de programao nada mais do que um programa que
permite ao programador criar programas.
Existem duas categorias de linguagem de programao:
Linguagem de baixo nvel. Nesta categoria, o programador trabalha com cdigos complexos, ditos
linguagem de mquina.
Linguagem de alto nvel. Nesta categoria, o programador trabalha com cdigos mais simples, pois os
cdigos so em ingls, ou seja, ca muito mais fcil a compreenso.
Exemplos de linguagem de programao: C, C++, Visual basic, Advpl e etc.
Programa fonte e executvel
Quando o programador digita seus programas, ns podemos chamar o mesmo de programa fonte.
Obs.: Apenas o programador, analista tem acesso ao programa fonte. Salvo excees.
O usurio nal ter acesso ao programa executvel. Ou seja, as funcionalidades do sistema em si.
4 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Variveis
Variveis so espaos reservados na memria do computador para armazenar dados durante o
processamento do programa.
Quando se declara, cria-se a varivel, necessrio denir, quais sero os tipos de dados que a mesma
manipular.
Por exemplo: numrico, caractere (string, alfanumrico), lgico ou data.
Tambm e necessrio informar, se a varivel ser: local, privada, pblica, statica ou global.
O Contexto de Variveis dentro de um Programa
As variveis declaradas em um programa ou funo, so visveis de acordo com o escopo onde so
denidas. Como tambm do escopo depende o tempo de existncia das variveis. A denio do escopo
de uma varivel efetuada no momento de sua declarao.
Local nNumero := 10
Esta linha de cdigo declara uma varivel chamada nNumero indicando que seu escopo local.
Os identicadores de escopo so:
LOCAL
STATIC
PRIVATE
PUBLIC
Variveis Locais
Variveis locais so pertencentes apenas ao escopo da funo onde foram declaradas. Devem ser
explicitamente declaradas com o identicador LOCAL, como no exemplo:
Function Pai()
Local nVar := 10, aMatriz := {0,1,2,3}
<comandos>
Filha()
<mais comandos>
Return(.T.)
Neste exemplo, a varivel nVar foi declarada como local e atribuda com o valor 10. Quando a funo Filha
executada, nVar ainda existe mas no pode ser acessada. Quando a execuo da funo Pai terminar, a
varivel nVar destruda. Qualquer varivel com o mesmo nome no programa que chamou a funo Pai
no afetada.
Variveis locais so criadas automaticamente cada vez que a funo onde forem declaradas for ativada.
Elas continuam a existir e mantm seu valor at o m da ativao da funo (ou seja, at que a funo
retorne o controle para o cdigo que a executou). Se uma funo chamada recursivamente (por exemplo,
chama a si mesma), cada chamada em recurso cria um novo conjunto de variveis locais.
5
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
A visibilidade de variveis locais idntica ao escopo de sua declarao. Ou seja, a varivel visvel em
qualquer lugar do cdigo fonte em que foi declarada. Se uma funo chamada recursivamente, apenas
as variveis locais criadas na mais recente ativao so visveis.
Variveis Estticas
Variveis estticas funcionam basicamente como as variveis locais, mas mantm seu valor atravs da
execuo. Variveis estticas devem ser declaradas explicitamente no cdigo com o identicador STATIC.
O escopo das variveis estticas depende de onde so declaradas. Se forem declaradas dentro do corpo
de uma funo ou procedimento, seu escopo ser limitado quela rotina. Se forem declaradas fora do
corpo de qualquer rotina, seu escopo todo o arquivo de programa.
Neste exemplo, a varivel nVar declarada como esttica e inicializada com o valor 10:
Function Pai()
Static nVar := 10
<comandos>
Filha()
<mais comandos>
.Return(.T.)
Quando a funo Filha executada, nVar ainda existe mas no pode ser acessada. Diferente de variveis
declaradas como LOCAL ou PRIVATE, nVar continua a existir e mantm seu valor atual quando a execuo
da funo Pai termina. Entretanto, somente pode ser acessada por execues subseqentes da funo
Pai.
Variveis Privadas
A declarao opcional para variveis privadas. Mas podem ser declaradas explicitamente com o
identicador PRIVATE.
Uma vez criada, uma varivel privada continua a existir e manchem seu valor at que o programa ou
funo onde foi criada termine (ou seja, at que a funo onde foi criada retorne para o cdigo que a
executou). Neste momento, automaticamente destruda.
Em termos mais simples, uma varivel privada visvel dentro da funo de criao e todas as funes
chamadas por esta, a menos que uma funo chamada crie sua prpria varivel privada com o mesmo
nome.
Por exemplo:
Function Pai()
Private nVar := 10
<comandos>
Filha()
<mais comandos>
Return(.T.)
Neste exemplo, a varivel nVar criada como privada e inicializada com o valor 10. Quando a funo Filha
executada, nVar ainda existe e, diferente de uma varivel local, pode ser acessada pela funo Filha.
6 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Quando a funo Pai terminar, nVar ser destruda e qualquer declarao de nVar anterior se tornar
acessvel novamente.
Variveis Pblicas
Podem-se criar variveis pblicas dinamicamente no cdigo com o identicador PUBLIC. As variveis
pblicas continuam a existir e mantm seu valor at o m da execuo.
possvel criar uma varivel privada com o mesmo nome de uma varivel pblica existente. Entretanto,
no permitido criar uma varivel pblica com o mesmo nome de uma varivel privada existente.
Uma vez criada, uma varivel pblica visvel em todo o programa onde foi declarada at que seja
escondida por uma varivel privada criada com o mesmo nome. A nova varivel privada criada esconde a
varivel pblica existente, e esta se tornar inacessvel at que a nova varivel privada seja destruda. Por
exemplo:
Function Pai()
Public nVar := 10
<comandos>
Filha()
<mais comandos>
Return(.T.)
Neste exemplo, nVar criada como pblica e inicializada com o valor 10. Quando a funo Filha executada,
nVar ainda existe e pode ser acessada. Diferente de variveis locais ou privadas, nVar ainda existe aps o
trmino da execuo da funo Pai.
Diferentemente dos outros identifcadores de escopo, quando uma varivel declarada como pblica
sem ser inicializada, o valor assumido falso (.F.) e no nulo (nil).
Variveis e nomes de campos
Muitas vezes uma varivel pode ter o mesmo nome que um campo de um arquivo ou tabela aberto no
momento. Neste caso, o AdvPl privilegiar o campo. Assim uma referncia a um nome que identique
tanto uma varivel como um campo, resultar no contedo do campo.
Para especicar qual deve ser o elemento referenciado, deve-se utilizar o operador de identicao de
apelido (->) e um dos dois identicadores de referncia, MEMVAR ou FIELD.
cRes := MEMVAR->NOME
Esta linha de comando identica que o valor atribudo varivel cRes deve ser o valor da varivel de
memria chamada NOME.
cRes := FIELD->NOME
Neste caso, o valor atribudo varivel cRes ser o valor do campo NOME existente no arquivo ou tabela
aberto na rea atual.
7
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
O identicador FIELD pode ser substitudo pelo apelido de um arquivo ou tabela aberto, para evitar a
necessidade de selecionar a rea antes de acessar o contedo de terminado campo.
cRes := CLIENTES->NOME
Operadores Comuns
Na documentao sobre variveis h uma breve demonstrao de como atribuir valores a uma varivel
da forma mais simples. O AdvPl amplia signicativamente a utilizao de variveis atravs do uso de
expresses e funes. Uma expresso um conjunto de operadores e operando cujo resultado pode ser
atribudo a uma varivel ou ento analisado para a tomada de decises. Por exemplo:
Local nSalario := 1000, nDesconto := 0.10
Local nAumento, nSalLiquido
nAumento := nSalario * 1.20
nSalLiquido := nAumento * (1-nDesconto)
Neste exemplo so utilizadas algumas expresses para calcular o salrio lquido aps um aumento. Os
operando de uma expresso podem ser uma varivel, uma constante, um campo de arquivo ou uma
funo.
Operadores Matemticos
Os operadores utilizados em AdvPl para clculos matemticos so:
Adio
Subtrao
Multiplicao
Diviso
Exponenciao
Mdulo (Resto da Diviso)
+
-
*
/
** ou ^
%
Operadores de String
Os operadores utilizados em AdvPl para tratamento de caracteres so:
+ Concatenao de strings (unio)
- Concatenao de strings com eliminao dos brancos finais das strings
intermedirias
$ Comparao de Substrings (contido em)

8 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Operadores Relacionais
Os operadores utilizados em AdvPl para operaes e avaliaes relacionais so:
Operadores Lgicos
Os operadores utilizados em AdvPl para operaes e avaliaes lgicas so:
Operadores de Atribuio
Os operadores utilizados em AdvPl para atribuio de valores a variveis de memria so:
< Comparao Menor
> Comparao Maior
= Comparao Igual
== Comparao Exatamente Igual (para
caracteres)
<= Comparao Menor ou Igual
>= Comparao Maior ou Igual
<> ou # ou
!=
Comparao Diferente
.And. E lgico
.Or. OU lgico
.Not. ou ! NO lgico
= Atribuio Simples
:= Atribuio em Linha
+= Adio e Atribuio em Linha
-= Subtrao e Atribuio em Linha
*= Multiplicao e Atribuio em Linha
/= Diviso e Atribuio em Linha
**= ou ^= Exponenciao e Atribuio em Linha
%= Mdulo (resto da diviso) e Atribuio em Linha
Atribuio Simples
O sinal de igualdade utilizado para atribuir valor a uma varivel de memria.
nVariavel = 10
9
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
Operadores de Incremento/Decremento
A linguagem AdvPl possui operadores para realizar incremento ou decremento de variveis. Entende-se
por incremento aumentar o valor de uma varivel numrica em 1 e entende-se por decremento diminuir
o valor da varivel em 1. Os operadores so:
Atribuio em Linha
O operador de atribuio em linha caracterizado por dois pontos e o sinal de igualdade. Tem a mesma
funo do sinal de igualdade sozinho, porm aplica a atribuio s variveis. Com ele pode-se atribuir
mais de uma varivel ao mesmo tempo.
nVar1 := nVar2 := nVar3 := 0
Quando diversas variveis so inicializada em uma mesma linha, a atribuio comea da direita para a
esquerda, ou seja, nVar3 recebe o valor zero inicialmente, nVar2 recebe o contedo de nVar3 e nVar1
recebe o contedo de nVar2 por nal.
Com o operador de atribuio em linha, podem-se substituir as inicializaes individuais de cada varivel
por uma inicializao apenas:
Local nVar1 := 0, nVar2 := 0, nVar3 := 0
por
Local nVar1 := nVar2 := nVar3 := 0
O operador de atribuio em linha tambm pode ser utilizado para substituir valores de campos em um
banco de dados.
Atribuio Composta
Os operadores de atribuio composta so uma facilidade da linguagem AdvPl para expresses de clculo
e atribuio. Com eles pode-se economizar digitao:
Operador Exemplo Equivalente a
+= X += Y X = X + Y
-= X -= Y X = X Y
*= X *= Y X = X * Y
/= X /= Y X = X / Y
**= o u ^= X **= Y X = X ** Y
%= X %= Y X = X % Y
++ Incremento Ps ou Pr-fixado
-- Decremento Ps ou Pr -fixado
10 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Os operadores de decremento/incremento podem ser colocados tanto antes (pr-xado) como depois
(ps-xado) do nome da varivel. Dentro de uma expresso, a ordem do operador muito importante,
podendo alterar o resultado da expresso. Os operadores incrementais so executados da esquerda para
a direita dentro de uma expresso.
Local nA := 10
Local nB := nA++ + nA
O valor da varivel nB resulta em 21, pois a primeira referncia a nA (antes do ++) continha o valor 10 que
foi considerado e imediatamente aumentado em 1. Na segunda referncia a nA, este j possua o valor
11. O que foi efetuado foi soma de 10 mais 11, igual a 21. O resultado nal aps a execuo destas duas
linhas a varivel nB contendo 21 e a varivel nA contendo 11.
No entanto:
Local nA := 10
Local nB := ++nA + nA
Resulta em 22, pois o operador incremental aumentou o valor da primeira nA antes que seu valor fosse
considerado.
Variveis de Memria
Estruturas de Controle
Operadores Especiais
Alm dos operadores comuns, o AdvPl possui alguns outros operadores ou identicadores. Estas so suas
nalidades:
() Agrupamento ou Funo
[] Elemento de Matriz
{} Definio de Matriz, Constante ou Bloco de Cdigo
-> Identificador de Apelido
& Macrosubstituio
@ Passagem de parmetro por referncia
|| Passagem de parmetro por valor
Os parnteses so utilizados para agrupar elementos em uma expresso mudando a ordem de precedncia
da avaliao da expresso (segundo as regras matemticas por exemplo). Tambm servem para envolver
os argumentos de uma funo. Os colchetes so utilizados para especicar um elemento especco de
uma matriz. Por exemplo, A[3,2], refere-se ao elemento da matriz A na linha 3, coluna 2.
As chaves so utilizadas para a especicao de matrizes literais ou blocos de cdigo. Por exemplo,
A:={10,20,30} cria uma matriz chamada A com trs elementos.
O smbolo -> identica um campo de um arquivo diferenciando-o de uma varivel. Por exemplo, FUNC-
>nome refere-se ao campo nome do arquivo FUNC. Mesmo que exista uma varivel chamada nome, o
campo nome que ser acessado.
11
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
O smbolo & identica uma avaliao de expresso atravs de macro e visto em detalhes na documentao
sobre macrossubstituio.
O smbolo @ utilizado para indicar que durante a passagem de uma varivel para uma funo ou
procedimento ela seja tomada como uma referncia e no como valor.
O smbolo || utilizado para indicar que durante a passagem de uma varivel para uma funo ou
procedimento ela seja tomada como um e valor no como referncia.
Ordem de Precedncia dos Operadores
Dependendo do tipo de operador, existe uma ordem de precedncia para a avaliao dos operando. Em
princpio, todas as operaes com os operadores, so realizadas da esquerda para a direita se eles tiverem
o mesmo nvel de prioridade.
A ordem de precedncia, ou nvel de prioridade de execuo, dos operadores em AdvPl :
Operadores de Incremento/Decremento pr-xado
Operadores de String
Operadores Matemticos
Operadores Relacionais
Operadores Lgicos
Operadores de Atribuio
Operadores de Incremento/Decremento ps-xado
Em expresses complexas com diferentes tipos de operadores, a avaliao seguir essa seqncia. Caso
exista mais de um operador do mesmo tipo (ou seja, de mesmo nvel), a avaliao se d da esquerda para
direita. Para os operadores matemticos entretanto, h uma precedncia a seguir:
Exponenciao
Multiplicao e Diviso
Adio e Subtrao
Considere o exemplo:
Local nResultado := 2+10/2+5*3+2^3
O resultado desta expresso 30, pois primeiramente calculada a exponenciao 2^3(=8), ento so
calculadas as multiplicaes e divises 10/2(=5) e 5*3(=15), e nalmente as adies resultando em
2+5+15+8(=30).
Alterao da Precedncia
A utilizao de parnteses dentro de uma expresso altera a ordem de precedncia dos operadores.
Operando entre parnteses so analisados antes dos que se encontram fora dos parnteses. Se existirem
mais de um conjunto de parnteses no-aninhados, o grupo mais a esquerda ser avaliado primeiro e
assim sucessivamente.
12 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Local nResultado := (2+10)/(2+5)*3+2^3
No exemplo acima primeiro ser calculada a exponenciao 2^3(=8). Em seguida 2+10(=12) ser
calculado, 2+5(=7) calculado, e nalmente a diviso e a multiplicao sero efetuadas, o que resulta em
12/7*3+8(=13.14).
Se existirem vrios parnteses aninhados, ou seja, colocados um dentro do outro, a avaliao ocorrer dos
parnteses mais intero em direo ao mais externo.
Expresses
O termo expresso signica um dado ou uma combinao de dois ou mais dados de qualquer tipo. Vamos
abordar quatro tipos de dados:
Tipo caractere: Formado por qualquer conjunto de caracteres que constam na tabela Ascii, sempre
representado entre aspas.
Tipo numrico: Formado por valores negativos, positivos ou iguais a zero, especicamente usado para
operaes matemticas.
Tipo lgico: Existem apenas dois dados possveis: verdadeiro (.T.) ou falso (.F.), sempre intercalados por
ponto.
Tipo data: Aceitam apenas datas coerentes, ou seja, a data checada quanto a durao do ms (28, 29,
30 ou 31) e a existncia do ms (1 a 12).
Tipo memo: Aceita textos de at 64 KB.
Instrues
Instruo tudo aquilo que ordenado ao sistema, esperando-se que o mesmo realize imediatamente
uma operao.
Diferenas entre Comando e Funo
As instrues dividem-se em duas modalidades: comando e funo.
Os conceitos abaixo so muito importantes para que se possam compreender as diferenas entre os
dois.
Comando: uma instruo que executa uma tarefa;
Funo: uma instruo que pode receber um ou mais argumentos. Executa um processamento e
devolve uma expresso.
13
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
Banco de dados
Ns podemos dizer que banco de dados um conjunto de informaes armazenadas de maneira
organizada. Por exemplo. Imagine que uma empresa de materiais de construes deseja ter, a carteira de
fornecedores e produtos que os mesmos fornecem, de uma maneira organizada e de fcil acesso para:
incluses, consultas, alteraes; e excluses.
Para resolver este problema, ns poderamos criar um banco de dados com duas tabelas. Uma para
armazenar apenas as informaes dos fornecedores, tais como: Nome, endereo, contato, cdigo do
fornecedor e etc...
A outra tabela, seria para armazenar as informaes dos produtos, tais como:
Data da validade do produto, nome do produto (descrio), unidade, preo unitrio e etc.
A seguir, seria criado um relacionamento entre as tabelas e desta maneira, seu eu precisar saber quais
produtos um fornecedor me fornece, com o banco de dados seria muito mais simples e rpido.
Observao: Quando o programador, cria um programa, o mesmo precisa vincular o mesmo, a um
banco de dados, de modo que os dados gerados ou informados pelo programa, quem armazenados.
Estruturas de controle
As estruturas de controle so fundamentais em qualquer linguagem de programao. atravs das
mesmas que se controlam: quantas vezes uma determinada rotina dever ser executada, que caminho o
programa dever seguir, seguindo condies estabelecidas pelo programa e etc....
As principais so: If, While, For e etc...
If (se)
Else ( Se no)
Endif (Fim se)
Toda vez que for usada o If, dever ser usado o EndIf. possvel ter vrios If dentro do outro.
Porm, no se esquea, se voc abrir trs If, dever usar o EndIf trs vezes.
Observao: Crie ou use uma congurao (ambiente) no Ide e tambm no se esquea de abrir ou criar
um projeto no mesmo.
Exemplo 1
#Include Rwmake.ch
User Function ExercIf()
nN1:=3
nN2:=8
If nN1>nN2
14 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
MsgAlert("O numero " + AllTrim(Str(nN1) + " e maior que " + AllTrim(Str(nN2))))
Else
MsgAlert("O numero " + AllTrim(Str(nN2) + " e maior que " + AllTrim(Str(nN1))))
EndIf
Return()
Exemplo 2
Usando o Elseif
User Function ExercIf2()
cEst="MA"
If cEst="RJ"
Alert("Estado RJ, Icms de 3%")
Elseif (cEst="SP")
Alert("Estado SP, Icms de 5%")
Elseif(cEst="MG")
Alert("Estado MG, Icms de 6%")
Elseif(cEst="MA")
Alert("Estado MA, Icms de 2%")
Else
Alert("Estado invalido")
Endif
Return()
While / EndDo
While(Enquanto)
O cdigo que estiver abaixo do While, ser executado enquanto a condio dentro o mesmo for
verdadeira.
Exemplo
User Function TesteWhile()
Local nCnt:=1
Local aX
While nCnt<=10
For
For (Para) Next
O Cdigo que estiver dentro do For ser executado por um nmero determinado de vezes.
15
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
Exemplo 1
User Function TFor()
nI:=0
For nI:=1 to 5

MsgAlert(nI)

Next
Return()
Observao: Na estrutura For, quando o uxo executado pela segunda vez, a varivel inicial, que no
nosso exemplo nI, ca valendo dois, na terceira, trs e assim por diante, no precisa usar nI++.
Porm, se for necessrio que o incremento no seja de um em um pode ser usado o Step. O Step pode ser
usado tanto para incrementar o contador como o contrrio.
Exemplo 2
User Function TFor2()
nI:=0
For nI:=1 to 5 Step 2

MsgAlert(nI)
Next
Return()
Exemplo 3
User Function TFor2()
nI:=0
For nI:=1 to 5 Step 2

MsgAlert(nI)

Next
Return()
16 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Exemplo 4
User Function TFor3()
nI:=0
For nI:=5 to 1 Step -2

MsgAlert(nI)

Next
Return()
Indentao
Todo programa, deve estar muito bem documentado. Desta forma, facilita o entendimento para quem for
analisar o cdigo e at mesmo para fazer ajustes no mesmo.
Tambm muito importante que o programa seja indentado. Desta forma, ca muito mais fcil de analisar
o mesmo.
Veja este exemplo sem indentao e a seguir, com.
If nN1>nN2
MsgAlert("O numero " + AllTrim(Str(nN1) + " e maior que " + AllTrim(Str(nN2))))
Else
MsgAlert("O numero " + AllTrim(Str(nN2) + " e maior que " + AllTrim(Str(nN1))))
EndIf
If nN1>nN2
MsgAlert("O numero " + AllTrim(Str(nN1) + " e maior que " + AllTrim(Str(nN2))))
Else
MsgAlert("O numero " + AllTrim(Str(nN2) + " e maior que " + AllTrim(Str(nN1))))
EndIf
Funes
Algumas funes
SRT Converte nmero em caractere.
SQRT Calcula a raiz quadrada do nmero ou varivel informada como parmetro.
ALLTRIM Tira todos os espaos em branco.
17
Todos os direitos reservados.
Lgica e Inicializao Programao ADVPL
Desenhando telas
Exemplo
Dene MSDialog oDlg Title "Consulta de Produtos" From 0,0 To 200,500 Pixel
@ 020,192 SAY TIME()
@ 030,130 SAY "MICROSIGA"
@ 040,100 SAY "CONSULTA DE PRODUTOS"
@ 050,010 SAY "CODIGO DO PRODUTO" //"Etiqueta que aparecer na tela
@ 050,080 GET cCODIGO PICTURE "@!" VALID ValCodProd()
@ oDlg:nHeight/2-30,oDlg:nClientWidth/2-70 Button oBtnOk Prompt "&Ok" Size 30,15 Pixel Action
Conrma() Message "Clique aqui para Conrmar" Of oDlg
@ oDlg:nHeight/2-30,oDlg:nClientWidth/2-35 Button oBtnCancel Prompt "&Cancelar" Size 30,15 Pixel
Action oDlg:End() Cancel Message "Clique aqui para Cancelar" Of oDlg
Activate MSDialog oDlg Centered
Digite este cdigo no ide. Compile e execute o mesmo.
Observao: Em primeiro lugar, necessrio denir a tela, com o Dene MsDialog.
Quantos todos os elementos da janela estiverem na mesma, necessrio usar o Activete MsDialog, que
ativar a tela.
Iniciao de Programas em ADVPL (Algoritmo)
Observao: Um dos grandes erros dos prossionais como um todo, no s os de tecnologia : achar que
conhece muito e acaba menosprezando os procedimentos que a cautela manda seguir.
Por exemplo: comum o prossional sentar na frente do computador e comear a digitar sem parar.
claro que eu no estou generalizando.
Porm, a maioria se esquece do principal, que o trabalho de anlise.
Ns no podemos nos esquecer que todo programa de computador, independente da: nalidade, preo
e funo trabalham com o famoso E P S.
Entrada, Processamento e Sada. Se os dados de entrada no forem preenchidos corretamente o
processamento ser deciente e os relatrios apenas nos mostraro isso.
Por isso, o trabalho de anlise fundamental.
Por estes motivos, eu recomendo que antes de ns comear-mos a digitar, vamos trabalhar com o
algoritmo.
Use o que ns chamamos de portugol para resolver estes exerccios.
S depois o Advpl.
18 Todos os direitos reservados. Lgica e Inicializao Programao ADVPL
Exerccios
Exerccio 01 Crie uma funo para solucionar o seguinte problema.
Desenvolva uma funo que calcule a mdia de trs notas.
Exerccio 02 Desenvolva uma funo que calcule a raiz quadrada do nmero 49.
Exerccio 03 Agora, use a funo anterior como base, e calcule a raiz quadrada do nmero digitado
pelo usurio.
Exerccio 04 Desenvolva uma funo que calcule a tabuada do nmero 2.
Exerccio 05 Desenvolva uma funo que calcule a tabuada do nmero desejado (informado).
Exerccio 06 - Agora, desenvolva quatro programas: Incluso, Consulta, Alterao e Excluso.
O objetivo principal destes exerccios : colocar em prtica o que foi apresentado na teoria, e
alimentar o SZ6. No se esquea de usar algoritmos.
Anotaes
Nmero de registro: XBAP10270707