Você está na página 1de 60

Lógica de Programação

ADVPL em 7 Passos

Rogério Onishi Candisani


Lógica de Programação ADVPL em 7 Passos

Sabe o que me serviu isto? Busca de novos


Introdução conhecimentos.

Meu nome é Rogério Onishi Candisani sou consultor Acendeu uma luz dentro de mim.
de sistemas há mais de 20 anos.
Queria ter o controle da minha própria vida não
Um breve relato de como comecei a minha carreira. dependendo de ninguém.

Servirá de incentivo para você. Fiz um curso de computador, programação, na SOS


Computadores.

Em 1982 estava saindo do Colégio Mackenzie aonde


z Engenharia Eletrônica. A partir dai gostei da lógica de programação.

Neste momento decidi empreender a minha O primeiro programa que z foi um desenho
própria carreira. chamado Knight Rider.

O fato de ser inquieto, acho, busquei outra coisa Lógico somente as letras rs
para fazer voltado para a área de tecnologia, pois ali
não me sentia feliz.

Nada a ver com a minha área de formação


Engenharia Eletrônica.

Nesta época área de TI era quase que impossível


conseguir algum emprego. Nem livros tínhamos em
português .

Para se ter uma ideia comecei aprender Lotus 123, Naquela época anunciava-se muito em jornal e foi ai
ferramenta semelhante ao Excel, totalmente em a minha grande sacada.
inglês.

Fiz um curso de manutenção de micro e comecei


Sabe quando a gente compra alguma coisa e ca anunciar na folha de São Paulo - sessão de
ansioso para receber, foi desta forma. Li todo o informática para dar manutenção em micros nas
material em inglês. residências.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Chegando nas residências via que o cliente não En m vamos ao que interessa!
precisava apenas de manutenção no micro pois não
adiantava o micro estar em ordem se não
soubessem usar as ferramentas.
PASSO 1
Vi este nicho de mercado muito carente e comecei a Linguagem de
ensinar Word, Excel, Lotus 123... (Hoje em dia está
carente da mesma forma só que outros programas, Programação
aplicativos, comunidades.)
História
Só com esta atitude tripliquei o meu faturamento
em relação à manutenção de micros.

Agora já havia agregado valor ao meu cliente:

1- Programação

2 - Manutenção

3- Treinamento particular

Alguns anos depois comecei a focar mais em


Treinamentos e Programação.

A manutenção de micro já não estava sendo uma


boa fonte de renda, pois os computadores
começaram a car mais "inteligentes". O primeiro trabalho de linguagem de programação
foi criado por Ada Lovelace, grande amiga de
Não precisava mais de manutenção, softwares que Charles Babbage.
se instalavam sozinho, o famoso "next", "next",
" nish". O projeto da primeira calculadora mecânica
programável foi idealizado por Charles Babbage
Só me procuravam quando dava erro. que, após gastar fortunas e um longo tempo, não
conseguiu concretizar o projeto.
Aprendi a desenvolver em Clipper, Visual Basic, uma
das linguagens mais utilizadas na época. A linguagem de programação ADA foi batizada em
homenagem a esta primeira programadora.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Uma das primeiras linguagens de programação A linguagem Simula 67 introduz o conceito de


para classes.

computadores foi provavelmente Plankalkül, criada A linguagem Smalltalk expande o conceito de


por Konrad Zuse na Alemanha Nazista, mas que classes e se torna a primeira linguagem de
teve pouco ou nenhum impacto no futuro das programação que oferecia suporte completo à
linguagens de programação. programação orientada a objetos.

O primeiro compilador foi escrito por Grace Hopper A linguagem C++ (originalmente conhecida como C
em 1952, para a linguagem de programação com classes) populariza a orientação a objetos.
Sistema A-0.
Diversas linguagens de programação surgiram
A primeira linguagem de programação de alto nível desde então.
amplamente usada foi Fortran, criada em 1954.
Entre estas incluem-se C ♯ , VB.NET, Linguagem de
Em 1957 foi criada B-0, sucessora da A-0, que daria programação
origem a Flow-Matic (1958), antecessor imediato de
COBOL, de 1959. Java, Object Pascal, Objective-C, PHP, Python,
SuperCollider, D
O COBOL foi uma linguagem de ampla aceitação
para uso comercial. (linguagem de programação) e Ruby (linguagem de
programação).
A linguagem ALGOL foi criada em 1958-1960. O
ALGOL-60 teve grande in uência no projeto de Alguns Softwares de Gestão Empresarial “ERP”
muitas linguagens posteriores. (Enterprise Resource Planning) que são
conceituados no mercado como Microsiga,
A linguagem Lisp foi criada em 1958 e se tornou possuem linguagem própria de programação.
amplamente utilizada na pesquisa na área de
Ciência da computação mais proeminentemente na A linguagem da Microsiga é o ADVPL (Advanced
área de Inteligência Arti cial. Protheus Language). Ministro aulas também de
Microsiga em con guração e programação. O
Outra linguagem relacionada ao campo da IA que requisito básico e ter conhecimento com este e-
surge em 1972 é a linguagem Prolog, uma book sobre lógica de programação. No nal estará
linguagem do paradigma lógico. apto a evoluir.

A Orientação a objetos é outro marco importante na


história das linguagens de programação.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Uma linguagem de programação, conforme Linguagens de programação são ferramentas


Wikipedia, é um método padronizado para importantes para que Programação de
comunicar o código de maquina para um computadores e Engenharia de software possam
computador escrever programas mais organizados e com maior
rapidez.
É um conjunto de sintaxe e semânticas usadas para
de nir um programa de computador. Linguagens de programação também tornam os
programas menos dependentes de computadores
Permite que um programador especi que ou ambientes computacionais especí cos
precisamente sobre quais dados um computador (propriedade chamada de portabilidade).
vai atuar, como estes dados serão armazenados ou
transmitidos e quais ações devem ser tomadas sob Isto acontece porque programas escritos em
várias circunstâncias. linguagens de programação são traduzidos para o
código de máquina do computador no qual será
Linguagens de programação podem ser usadas executado em vez de ser diretamente executado.
para expressar Algoritmo com precisão.
Uma meta ambiciosa do Fortran, uma das primeiras
O conjunto de palavras (lexemas classi cados em linguagens de programação, era esta independência
tokens), compostos de acordo com essas regras, da máquina onde seria executada.
constitui o código fonte de um software.

Esse código fonte é depois traduzido para


Interpretação e
linguagem do Código de maquina, que é executado
pelo Processador.
Compilação
Uma linguagem de programação pode ser
Uma das principais metas das linguagens de convertida, ou traduzida, em código de máquina por
programação é que programadores tenham uma Compilador ou interpretada por um processo
maior produtividade, permitindo expressar suas denominado Interpretadores.
intenções mais facilmente do que quando
comparado com a linguagem que um computador Em ambas ocorre a tradução do código fonte para
entende nativamente (código de máquina). código de máquina.

Assim, linguagens de programação são projetadas Se o método utilizado traduz todo o texto do
para adotar uma sintaxe de nível mais alto, que programa (também chamado de código), para só
pode ser mais facilmente entendida por depois executar o programa, então se diz que o
programadores humanos. programa foi compilado e que o mecanismo
utilizado para a tradução é um compilador (que por
sua vez nada mais é do que um programa).

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

A versão compilada do programa tipicamente é E também há outras formas de interpretar em que


armazenada, de forma que o programa pode ser os Códigos fontes, ao invés de serem interpretados
executado um número inde nido de vezes sem que linha-a-linha, têm blocos "compilados" para a
seja necessária nova compilação, o que compensa o memória, de acordo com as necessidades, o que
tempo gasto na compilação. aumenta a performance dos programas quando os
mesmos módulos são chamados várias vezes,
Isso acontece com linguagens como Pascal técnica esta conhecida como JIT.
(linguagem de programação).
Como exemplo, podemos citar a linguagem Java.
Se o texto do programa é executado à medida que Nela, um compilador traduz o código java para o
vai sendo traduzido, como em BASIC, JavaScript, código intermediário (e portável) da Java Virtual
Python, Perl, num processo de tradução de trechos Machine “JVM”. As JVMs originais interpretavam esse
seguidos de sua execução imediata, então diz-se código, de acordo com o código de máquina do
que o programa foi interpretado e que o computador hospedeiro, porém atualmente elas
mecanismo utilizado para a tradução é um compilam, segundo a técnica JIT, o código JVM para
interpretador. código hospedeiro.

Programas interpretados são geralmente mais A tradução é tipicamente feita em várias fases,
lentos do que os compilados, mas são também sendo as mais comuns a Análise léxica, a Análise
geralmente mais exíveis, já que podem interagir sintática (ou Parser ), a Geração de código e a
com o ambiente mais facilmente. Embora haja essa Otimização Em compiladores também é comum a
distinção entre Linguagem interpretada e geração de código intermediário.
Linguagem compilada, as coisas nem sempre são

PASSO 2
tão simples.

Há linguagens compiladas para um código de


Estruturas de
máquina virtual (sendo esta Máquina virtual apenas
mais um software, que emula a máquina virtual
sendo executado em uma máquina real, como Java Programação
(linguagem de programação) compila para a
plataforma Java). Programação estruturada é uma forma de
programação de computadores que preconiza que
todos os programas possíveis podem ser reduzidos
a apenas três estruturas: Sequência, Decisão.

Repetição.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Um dos primeiros a preconizar a programação Programação modular é uma forma de


estruturada foi Haskell Curry.(fonte Wikipedia) programação no qual o desenvolvimento das
rotinas de programação é feito através de módulos,
Tendo, na prática, sido transformada na que são interligados entre si através de uma
Programação modular, a Programação estruturada interface comum.
orienta os programadores para a criação de
estruturas simples em seus programas, usando as Foi apresentado originalmente pela Information &
sub-rotinas e as funções. Systems Institute, Inc. no National Symposium on
Modular Programming em 1968, com a liderança de
Foi a forma dominante na criação de software entre Larry Constantine.
a programação linear e a programação orientada
por objetos. Exemplos de linguagens que orientaram seu projeto
para este aspecto estão as linguagens Modula-
Apesar de ter sido sucedida pela programação 2,linguagem de programa desenvolvida por
orientada por objetos, pode-se dizer que a Niklaus_Wirth e a Modula-3.
programação estruturada ainda é marcantemente
in uente, uma vez que grande parte das pessoas Programação orientada a objetos
ainda aprendem programação através dela.
Programação Orientada a Objetos (POO), ou ainda
Porém, a orientação a objetos superou o uso das em inglês Object-Oriented Programming (OOP) é
linguagens estruturadas no mercado. um Paradigma de programação de sistemas de
software baseado na composição e interação entre
Programação modular diversas unidades de software chamadas de Objeto
(ciência da computação).

Criador da linguagem
O extensivo uso de objetos, particularmente em
conjunção com o mecanismo de programação,
Pascal entre outras caracteriza o estilo de programação orientada a
objetos.

Em alguns contextos, prefere-se usar UML, em vez


de programação.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

De fato, o paradigma "orientação a objetos" tem Na programação orientada a objetos, implementa-


bases conceituais e origem no campo de estudo da se um conjunto de Classe (programação) que
cognição, que in uenciou a área de inteligencia de nem os objetos presentes no sistema de
arti cial e da lingüística no campo da abstração de software.
conceitos do mundo real.
Programação Linear é uma importante área da
Cada classe determina o comportamento (de nido otimização por várias razões. Muitos problemas
nos Método (programação) e estados possíveis práticos em pesquisa operacional podem ser
(Atributo (programação) de seus objetos, assim expressos como problemas de programação linear.
como o relacionamento com outros objetos.
Certos casos especiais de programação linear, tais
Programação linear como problemas de network ow e problemas de
multicommodity ow são considerados importantes
Em matemática, problemas de Programação Linear o su ciente para que se tenha gerado muita
são problemas de otimização nos quais a função pesquisa em algoritmos especializados para suas
objetivo e as restrições são todas lineares. soluções. Vários algoritmos para outros tipos de
problemas de otimização funcionam resolvendo
problemas de PL como subproblemas.
Na qualidade de método de modelagem, é tida
como a melhor estratégia, e mais natural, para se
eliminar o "gap semântico", di culdade recorrente Historicamente, ideias da programação linear
no processo de modelar o mundo real, no domínio inspiraram muitos dos conceitos centrais de teoria
do problema, em um conjunto de componentes de da otimização, tais como dualidade, decomposição,
software que seja o mais el na sua representação e a importância da convexidade e suas
deste domínio. generalizações.

Facilitaria a comunicação do pro ssional modelador Linguagem de Programação Microsiga


e do usuário da área alvo, na medida em que a
correlação da simbologia e conceitos abstratos do Quem é a Microsiga
mundo real e da ferramenta de modelagem
(conceitos, terminologia, símbolos, gra smo e A Microsiga é uma empresa do Brasil
estratégias) fosse a mais óbvia, natural e exata desenvolvedora de Tecnologia e Software. É
possível. A análise e projeto orientados a objetos considerada uma das maiores empresas de
tem como meta identi car o melhor conjunto de softwares destinados à Gestão empresarial da
objetos para descrever um sistema de software. América Latina.

O funcionamento deste sistema se dá através do


relacionamento e troca de Mensagem
(programação) entre estes objetos.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Os softwares desenvolvidos pela Microsiga

Sequencia Lógica
destinam-se a automatizar e gerenciar processos,
tais como Finanças, Recursos humanos, Logística,
Manufatura, CRM, dentre outros. Tem como seu
Estes pensamentos podem ser descritos como uma
principal produto o software denominado ERP
sequencia de instruções, que devem ser seguidas
Protheus. A empresa tem como foco em Empresas e
para se cumprir uma determinada tarefa.
Pequenas empresas. Ela transfere a sua tecnologia
ao cliente, ou seja, a Microsiga possui uma
tecnologia própria de desenvolvimento que envolve Sequencia Lógica são passos executados até atingir
a sua linguagem e seu compilador. um objetivo ou solução de um problema.

Um cliente Microsiga pode disponibilizar a seu


funcionário uma certi cação em ADVPL, podendo Instruções
assim realizar implementações em seu sistema, pois Na linguagem comum, entende-se por instruções
ele não ca dependente da Microsiga. “um conjunto de regras ou normas de nidas para a
realização ou emprego de algo”.
Tal diferencial de "independência" em
personalizações do sistema foi o que alavancou a Em julho de 2008 foi anunciada a incorporação da
Microsiga a ser uma das maiores do Brasil em seu Datasul pela TOTVS, controladora da Microsiga,
segmento. numa operação com valor aproximado de 700
milhões de reais, que formará a maior empresa de
O software Protheus desenvolvido pela Microsiga softwares de gestão empresarial do Brasil e uma
possui independência de Banco de dados, podendo das maiores do mundo.
assim conectar-se a outros softwares como Oracle,
PostgreSQL, SQL, DB2 etc, e também possui Explicaremos adiante a estrutura da linguagem de
independência de sistema operacional rodando programação da Microsiga ADVPL.
tanto em Windows como em Linux (embora apenas
versões antigas) além de outros sistemas
PASSO 3 Lógica de Programação
operacionais homologados.

A lógica de programação é necessária para pessoas


Trata-se de uma aplicação onde seu processamento
que desejam trabalhar com desenvolvimento de
não ca restrito somente à estação, e sim ao
sistemas e programas, ela permite de nir a
servidor Protheus, servidor de banco de dados e
sequencia lógica para o desenvolvimento.
estação.

Então o que é lógica?


Lógica de programação é a técnica de encadear
pensamentos para atingir determinado objetivo.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Instruções é um conjunto de regras ou normas Estas tarefas não podem ser redundantes nem
de nidas para a realização ou emprego de algo. Em subjetivas na sua de nição, devem ser claras e
informática, é o que indica a um computador uma precisas.
ação elementar.
Como exemplos de algoritmos podemos citar os

Algoritmo algoritmos das operações básicas (adição,


multiplicação, divisão e subtração) de números reais
decimais.
Um algoritmo é formalmente uma sequencia nita
de passos que levam a execução de uma tarefa.
Outros exemplos seriam os manuais de aparelhos
eletrônicos, como um celular, que explicam passo a
Podemos pensar em algoritmo como uma receita,
passo como, por exemplo, instalar aplicativos.
uma sequencia de instruções que dão cabo de uma
meta especí ca.
Até mesmo as coisas mais simples, podem ser
descritas por sequencias lógicas.
Em informática, porém, instrução é a informação
que indica a um computador uma ação elementar a
executar. Por exemplo:

Convém ressaltar que uma ordem isolada não “Chupar uma bala”.
permite realizar o processo completo, para isso é
necessário um conjunto de instruções colocadas em   egar a bala
P
ordem sequencial lógica.  Retirar o papel
 Chupar a bala
Por exemplo, se quisermos fazer uma omelete de  Jogar o papel no lixo
batatas, precisaremos colocar em prática uma série
Mais a frente falaremos sobre diagrama de bloco.
de instruções:

1. Descascar as batatas,
2. Bater os ovos,
3. Fritar as batatas, etc...

É evidente que essas instruções têm que ser


executadas em uma ordem adequada – não pode
descascar as batatas depois de fritálas. Dessa
maneira, uma instrução tomada em separado não
tem muito sentido; para obtermos o resultado,
precisamos colocar em prática o conjunto de todas
as instruções, na ordem correta.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

“Somar dois números quaisquer”.

  screva o primeiro número N1


E
 Escreva o segundo número N2
 Some o número do retângulo N1 com
número do retângulo N2 e coloque o
resultado no retângulo Total Abaixo descrito
em diagrama de bloco.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Ou seja, ele deve ser o intermediário entre a

Programas
linguagem falada e a linguagem de programação.

Os programas de computadores nada mais são do


que algoritmos escritos numa linguagem de
Regras para
computador (Pascal, C, Cobol, Fortran, Visual Basic
entre outras) e que são interpretados e executados
construção do
por uma máquina, no caso um computador. Algoritmo
Para escrever um algoritmo precisamos descrever a
Notem que dada esta interpretação rigorosa, um
sequencia de instruções, de maneira simples e
programa é por natureza muito especí co e rígido
objetiva.
em relação aos algoritmos da vida real.

Para isso utilizaremos algumas técnicas:


EXERCÍCIOS: colocamos linhas, mas nos próximos
podem escrever livremente.
Usar somente um verbo
1. Crie uma sequencia lógica para tomar banho:
por frase
1. Faça um algoritmo para somar dois números
Neste curso não iremos abordar o “Portugol” que
e multiplicar o resultado pelo primeiro
seria uma outra forma de escrever os algoritmos na
número:
nossa “língua”.
1. Descreva com detalhes a sequencia lógica
para Trocar um pneu de um carro. Este nome é uma alusão à posterior implementação
1. Faça um algoritmo para trocar uma lâmpada. em uma linguagem de programação, ou seja,
Descreva com detalhes: quando formos programar em uma linguagem, por
exemplo Visual Basic, estaremos gerando código em
Visual Basic.
PASSO 4 Algoritmos

Por isso os algoritmos são independentes das


Desenvolvendo algoritmos
linguagens de programação.

Pseudocódigo Ao contrário de uma linguagem de programação


não existe um formalismo rígido de como deve ser
Os algoritmos são descritos em uma linguagem escrito o algoritmo.
chamada pseudocódigo.
O algoritmo deve ser de fácil interpretação e fácil de
codi car.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Imaginar que você está desenvolvendo um


algoritmo para pessoas que não trabalham com
informática

Usar frases curtas e simples

Ser objetivo
Procurar usar palavras que não tenham sentido
dúbio

Vimos que ALGORITMO é uma sequencia lógica de


  uais são os dados de entrada? Quais
Q
instruções que podem ser executadas.
informações precisam para resolver o
problema o R: Os dados de entrada são P1,
É importante ressaltar que qualquer tarefa que siga P2, P3 e P4.
determinado padrão pode ser descrita por um  Qual será o processamento a ser utilizado? As
algoritmo, como por exemplo: TRABALHAR PELA operações que serão feitas com os dados de
MANHÃ (desenvolva um algoritmo) entrada. Mais adiante veremos as operações
que podem não ser apenas as matemáticas. o
CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE R: O procedimento será somar todos os
dados de entrada e dividi-los por 4 (quatro)
 Quais serão os dados de saída. A resolução
Entretanto ao montar um algoritmo, precisamos
do problema neste caso o O dado de saída
primeiro dividir o problema apresentado em três
será a média nal.
fases fundamentais.
Faça um algoritmo baseado na soma de 4 números
Imagine o seguinte problema: e depois divida a somatória por 4 para chegar na
média do aluno.
Calcular a média nal dos alunos da 3ª Série.
o Ex: Algoritmo
Os alunos realizarão quatro provas: P1, P2, P3 e P4.
Onde: Média Final = (P1+ P2 + P3 + P4)/4.

Para montar o algoritmo proposto, faremos três


perguntas:

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

    eceba a nota da prova1


R Nota 1 Nota 2 Nota 3 Nota 4 Média
 Receba a nota de prova2
 Receba a nota de prova3
 Receba a nota da prova4 P1 P2 P3 P4 (P1+ P2+ P3+ P4)/4
 Some todas as notas e divida o
resultado por 4
 Mostre o resultado da divisão
EXERCÍCIOS

Teste de Mesa Identi que os dados de entrada, processamento e


Após desenvolver um algoritmo ele deverá sempre saída no algoritmo abaixo:
ser testado.
Receba código da peça:
Este teste é chamado de TESTE DE MESA, que
signi ca, seguir as instruções do algoritmo de Receba valor da peça
maneira precisa para veri car se o procedimento
utilizado está correto ou não.
Receba Quantidade de peças

Veja o exemplo:
Calcule o valor total da peça (Quantidade * Valor da
peça)
  ota da Prova 1
N
 Nota da Prova 2
 Nota da Prova 3 Mostre o código da peça e seu valor total
 Nota da Prova 4
 Utilize a tabela abaixo: P1, P2, P3, P4, Calcular Faça um algoritmo para “Calcular o estoque médio
a Média de uma peça”, sendo que:

ESTOQUEMÉDIO = (QUANTIDADE MÍNIMA +


QUANTIDADE MÁXIMA) /2 3)

Teste o algoritmo anterior com dados de nidos por


você.

Diagrama de Bloco
O que é um diagrama de bloco?

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

O diagrama de blocos é uma forma padronizada e


e caz para representar os passos lógicos de um
determinado processamento.

Com o diagrama podemos de nir uma sequencia


de símbolos, com signi cado bem de nido,
portanto, sua principal função é a de facilitar a
visualização dos passos de um processamento.

Simbologia
Existem diversos símbolos em um diagrama de
bloco. No decorrer do curso apresentaremos os
mais utilizados. Veja no quadro abaixo alguns dos
símbolos que iremos utilizar: Fluxograma

Fluxograma é um tipo de Diagrama, e pode ser


entendido como uma representação esquemática
de um Processo, muitas vezes feito através de
grá cos que ilustram de forma descomplicada a
transição de informações entre os elementos que o
compõem, ou seja, é a sequência operacional do
desenvolvimento de um processo, o qual
caracteriza: o trabalho que está sendo realizado, o
tempo necessário para sua realização, a distância
percorrida pelos documentos, quem está realizando
o trabalho e como ele ui entre os participantes
deste processo.

Dentro do símbolo sempre terá algo escrito, pois


somente os símbolos não nos dizem nada. Veja no O Diagrama de uxo de dados (DFD) utiliza do
exemplo a seguir: Fluxograma para modelagem e documentação de
sistemas computacionais.

Exemplos de Diagrama de Bloco

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

O termo Fluxograma designa uma representação Os símbolos devem ser dispostos em ordem lógica
grá ca de um determinado processo ou uxo de e com sintaxe correta para atingir o objetivo de
trabalho, efetuado geralmente com recurso a resolver o problema.
guras geométricas normalizadas e as setas unindo
essas guras geométricas. Através desta Os diagramas diferem dos uxogramas por
representação grá ca é possível compreender de representarem pequenas partes de um grande
forma rápida e fácil a transição de informações ou sistema com foco no processo lógico.
documentos entre os elementos que participam no
processo em causa.
Um exemplo de diagramas de blocos são os
Fluxogramas, usados em Engenharia de software.
O uxograma pode ser de nido também como o
grá co em que se representa o percurso ou
caminho percorrido por certo elemento (por Nesse caso o diagrama é usado para descrever o
exemplo, um determinado documento), através dos método e a sequência do processo dos planos num
vários departamentos da organização, bem como o Computador. O diagrama de caso de uso descreve a
tratamento que cada um vai lhe dando. funcionalidade proposta para um novo sistema, que
será projetado.

A existência de uxogramas para cada um dos


processos é fundamental para a simpli cação e Segundo Ivar Jacobson, podemos dizer que um caso
racionalização do trabalho, permitindo a de uso é um "documento narrativo que descreve a
compreensão e posterior otimização dos processos sequência de eventos de um ator que usa um
desenvolvidos em cada departamento ou área da sistema para completar um processo".
organização.
Um caso de uso representa uma unidade discreta
da interação entre um usuário (humano ou
Diferenças entre máquina) e o sistema.
Fluxograma e Diagrama de
bloco Um caso de uso é uma unidade de um trabalho
signi cante.
Diagrama de bloco é a representação grá ca de um
processo ou modelo de um sistema complexo. Por exemplo: o "login para o sistema", "registrar no
sistema" e "criar pedidos" são todos casos de uso.
Através de guras geométricas e ligações, descreve-
se as relações entre cada subsistema e o uxo de Cada caso de uso tem uma descrição da
informação. funcionalidade que irá ser construída no sistema
proposto.
É a representação grá ca da solução de um
problema.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Um caso de uso pode "usar" outra funcionalidade E depois construa o diagrama de blocos do
de caso de uso ou "estender" outro caso de uso algoritmo desenvolvido, e por m faça um teste de
com seu próprio comportamento. mesa.

PASSO 5
Casos de uso são tipicamente relacionados a
"atores". Um ator é um humano ou entidade
máquina que interage com o sistema para executar
um signi cante trabalho. Exemplo de uxograma   eia a cotação do dólar
L
complexo:  Leia um valor em dólares
 Converta esse valor para Real
 Mostre o resultado

2) Desenvolva um diagrama que:

  eia 4 (quatro) números


L
 Calcule o quadrado para cada um
 Somem todos e
 Mostre o resultado

3) Construa um algoritmo para pagamento de


comissão de vendedores de peças, levando-se em
consideração que sua comissão será de 5% do total
da venda e que você tem os seguintes dados:

I denti cação do vendedor


 Código da peça
 Preço unitário da peça
 Quantidade vendida

EXERCÍCIOS

1) Construa um diagrama de blocos que :

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Constantes, Variáveis E Tipo Exemplo (depende da sintaxe da linguagem


usada)
Tipos de Dados

Inteiro Idade: 10
Constantes, Variáveis
e Tipos de Dados Real Peso: 10.2

Variáveis e constantes são os elementos básicos


que um programa manipula.
caracter Nome: “ana”

Uma variável é um espaço reservado na memória


do computador para armazenar um tipo lógico A=B: .F. , .T.
determinado de dado.

Variáveis devem receber nomes para poderem ser


referenciadas e modi cadas quando necessário. As expressões combinam variáveis e constantes
para calcular novos valores.

Um programa deve conter declarações que


especi cam de que tipo são as variáveis que ele
utilizará e às vezes um valor inicial.

Tipos podem ser, por exemplo: será explicado no


curso básico de programação, pois a sintaxe varia
muito de programa para programa.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Tipo Exemplo (depende da sintaxe da linguagem


Constantes usada)

Constante é um determinado valor xo que não se


modi ca ao longo do tempo, durante a execução de Inteiro Idade: 10
um programa.

Conforme o seu tipo, a constante é classi cada Real Peso: 10.2


como sendo numérica, lógica e literal.

Exemplo de constantes:
Caracteres
Variáveis Especí cas para armazenamento de conjunto de
caracteres que não contenham números (literais).
Variável é a representação simbólica dos elementos
de um certo conjunto.
Ex: nomes.

Cada variável corresponde a uma posição de


memória, cujo conteúdo pode se alterado ao longo
do tempo durante a execução de um programa.
Alfanuméricas
Especí cas para dados que contenham letras e/ou
Embora uma variável possa assumir diferentes números.
valores, ela só pode armazenar um valor a cada
instante. Pode em determinados momentos conter somente
dados numéricos ou somente literais.
Exemplos de variáveis 3, N1+N2+N3. N3 pode
receber somente um valor por vez, para o Aluno 1 Especí cas para armazenamento de números, que
N3 = 7, para o Aluno 2 N3 = 5 posteriormente poderão ser utilizados para
cálculos.

Tipos de Variáveis Podem ser ainda classi cadas como Inteiras ou


As variáveis e as constantes podem ser basicamente Reais.
de quatro tipos: Numéricas, caracteres,
Alfanuméricas ou lógicas. As variáveis do tipo inteiro são para
armazenamento de números inteiros e as Reais são

Numéricas para o armazenamento de números que possuam


casas decimais.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Se usado somente para armazenamento de EXERCÍCIOS


números, não poderá ser utilizada para operações
matemáticas. 1. O que é uma constante? Dê dois exemplos.

1. O que é uma variável? Dê dois exemplos.


Tipo Exemplo (depende da sintaxe da
linguagem usada)

Operadores
caracter Nome: “ana” Os operadores são meios pelo qual incrementamos,
decrementamos, comparamos e avaliamos dados
dentro do computador.
alfanumérica Código 123abc
Temos três tipos de operadores:

Operadores Aritméticos
Lógicas Os operadores aritméticos são os utilizados para
Armazenam somente dados lógicos que podem ser obter resultados numéricos.
Verdadeiro ou Falso.

Além da adição, subtração, multiplicação e divisão,


Tipo Exemplo (depende da sintaxe da linguagem podem utilizar também o operador para
usada) exponenciação.

Os símbolos para os operadores básicos aritméticos


lógico A=B: .F. (False)(Falso), .T.(TRUE) (VERDADEIRO) são:
(em linguagem de programação geralmente se
escreve em inglês)

Declaração de
Variáveis
As variáveis só podem armazenar valores de um
mesmo tipo, de maneira que também são
classi cadas como sendo numéricas, lógicas e
literais.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Operação Símbolo Para estabelecer prioridades no que diz respeito a


qual operação executar primeiro, utilize os
parênteses.
Adição +
Os operadores relacionais são:

Subtração -
Descrição Símbolo Símbolo

Multiplicação *
Igual a =

Divisão /
Diferente de <> Ou #

Exponenciação
Maior que >

Hierarquia das Operações Aritméticas Menor que <

1. º ( ) Parênteses
Maior ou igual a >=
2. º Exponenciação
3. º Multiplicação, divisão (o que aparecer
primeiro)
Menor ou igual a <=
4. º + ou – (o que aparecer primeiro)

Operadores Relacionais
Exemplo: Tendo duas variáveis A = 5 e B = 3 Os
Os operadores relacionais são utilizados para resultados das expressões seriam:
comparar String de caracteres e números.

Expressão Resultado
Os valores a serem comparados podem ser
caracteres ou variáveis.
A = B Falso

Estes operadores sempre retornam valores lógicos


A <> B Verdadeiro
(verdadeiro ou falso/ True ou False).

A > B Verdadeiro

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

A < B Falso

A >= B Verdadeiro

A <= B Falso

Operadores Lógicos
Os operadores lógicos servem para combinar
resultados de expressões, retornando se o
resultado nal é verdadeiro ou falso.
Exemplos:

Os operadores lógicos são:


Suponha que temos três variáveis A = 5, B = 8 e C =1

E AND Uma expressão E/AND é verdadeira se Os resultados das expressões seriam: relembrando
todas as condições forem verdadeiras
que depende da linguagem de programação
escolhida, pois a sintaxe varia de uma para outra.

OU OR Uma expressão OU/OR é verdadeira se


pelo menos uma condição for verdadeira

NÃO NOT Uma expressão NOT (NÃO) inverte o valor


da expressão ou

A tabela abaixo mostra todos os valores possíveis


criados pelos três operadores lógicos (AND, OR e
NOT)

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Expressões Resultado SALARIO IR SALLIQ EXPRESSÃO V ou F

A = B AND B > C Falso 100,00 0,00 100,00 (SALLIQ >= 100,00)

A <> B OR B < C Verdadeiro 200,00 10,00 190,00 (SALLIQ < 190,00)

A > B NOT Verdadeiro 300,00 15,00 285,00 SALLIQ =

SALARIO - IR
A < B AND B > C Verdadeiro

A >= B OR B = C Falso 1. Sabendo que A=3, B=7 e C=4, informe se as


expressões abaixo são verdadeiras ou falsas.
a) (A+C) > B ( )
A <= B NOT Falso 1. B >= (A + 2) ( )
2. C = (B –A) ( )
3. (B + A) <= C ( )
4. (C+A) > B ( )
EXERCÍCIOS
1. Sabendo que A=5, B=4 e C=3 e D=6, informe
se as expressões abaixo são verdadeiras ou
1. Tendo as variáveis SALARIO, IR e SALLIQ, e falsas. a) (A > C) AND (C <= D) ( )
considerando os valores abaixo. 1. (A+B) > 10 OR (A+B) = (C+D) ( )
Informe se as expressões são verdadeiras ou falsas. 2. (A>=C) AND (D >= C) ( )

Operações Lógicas
Operações Lógicas são utilizadas quando se torna
necessário tomar decisões em um diagrama de
bloco.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Num diagrama de bloco, toda decisão terá sempre EXERCÍCIOS


como resposta o resultado VERDADEIRO ou FALSO.
Como no exemplo do algoritmo “CHUPAR UMA   1.  Elabore um diagrama de blocos que leia
BALA”. Imaginemos que algumas pessoas não um número.
gostem de chupar bala de Morango, neste caso
teremos que modi car o algoritmo para: Se positivo armazene-o em A, se for negativo, em B.

“Chupar uma bala”. No nal mostrar o resultado

  egar a bala
P   1.  Ler um número e veri car se ele é par
 A bala é de morango? ou ímpar. Quando for par armazenar
 Se sim, não chupe a bala esse valor em P e quando for ímpar
 Se não, continue com o algoritmo armazená-lo em I.
 Retirar o papel
Exibir P e I no nal do processamento.
 Chupar a bala
 Jogar o papel no lixo Exemplo:
  1.  Construa um diagrama de blocos para
Algoritmo “Chupar Bala” utilizando diagrama de ler uma variável numérica N e imprimi-
Blocos la somente se a mesma for maior que

100, caso contrário imprimi-la com o valor zero

  1.  Tendo como dados de entrada a altura


e o sexo de uma pessoa, construa um
algoritmo que calcule seu peso ideal,
utilizando as seguintes fórmulas:

Para homens: (72.7*h) - 58

Para mulheres: (62.1*h) - 44.7 (h = altura) 5)

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Faça um teste de mesa do diagrama de bloco com Com as instruções de SALTO ou DESVIO pode-se
os dados fornecidos: fazer com que o programa proceda de uma ou
outra maneira, de acordo com as decisões lógicas
tomadas em função dos dados ou resultados
PASSO 6 anteriores.

Estrutura de Decisão e As principais estruturas de decisão são: “Se Então”,


“Se então
Repetição
Senão” e “Caso Selecione”

Estrutura de Decisão e SE ENTÃO / IF ... THEN (lembrando da sintaxe de


Repetição cada linguagem que geralmente muda e é em
inglês)
Como vimos anteriormente em “Operações
Lógicas”, veri camos que na maioria das vezes A estrutura de decisão “SE/IF” normalmente vem
necessitamos tomar decisões no andamento do acompanhada de um comando, ou seja, se
algoritmo. determinada condição for satisfeita pelo comando
SE/IF então execute determinado comando.
Essas decisões interferem diretamente no
andamento do programa. Imagine um algoritmo que determinado aluno
somente estará aprovado se sua média for maior
Trabalharemos com dois tipos de estrutura. ou igual a 5.0.

A estrutura de Decisão Veja no exemplo de algoritmo como caria.

Comandos de Decisão SE MEDIA >= 5.0 ENTÃO ALUNO APROVADO

Os comandos de decisão ou desvio fazem parte das Exemplo de código em Visual Basic
técnicas de programação que conduzem a
estruturas de programas que não são totalmente
IF MEDIA >= 5
sequenciais.

Then Text1 = “APROVADO”

ENDIF

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

SE ENTÃO SENÃO / IF ... THEN ... ELSE Como no exemplo abaixo

A estrutura de decisão “SE/ENTÃO/SENÃO”, funciona Em Visual Basic


exatamente como a estrutura “SE”, com apenas
uma diferença, em “SE” somente podemos executar IF MEDIA >= 5
comandos caso a condição seja verdadeira,
diferente de “SE/SENÃO” pois sempre um comando
será executado independente da condição, ou seja, Then IF MEDIA >= 7.0 then Text1 = “Aluno
caso a condição seja “verdadeira” o comando da APROVADO”
condição será executado, caso contrário o comando
da condição “falsa” será executado ELSE Text1 = “Aluno Necessita fazer outra avaliação”

Em algoritmo caria assim: ENDIF

SE MÉDIA >= 5.0 ENTÃO ALUNO APROVADO SENÃO ELSE Text1 = “Aluno REPROVADO”
ALUNO REPROVADO
ENDIF
Em Visual Basic: uma linguagem de programação
será necessário sempre deixar em ordem para CASO SELECIONE / SELECT ... CASE
leitura clara da interpretação do código.

A estrutura de decisão CASO/SELECIONE é utilizada


IF MEDIA >= 5 para testar, na condição, uma única expressão, que
produz um resultado, ou, então, o valor de uma
Then Text1 = “APROVADO” variável, em que está armazenado um determinado
conteúdo.
ELSE Text1 = “REPROVADO”
Compara-se, então, o resultado obtido no teste com
ENDIF os valores fornecidos em cada cláusula “Caso”.

No exemplo acima está sendo executada uma No exemplo do diagrama de blocos abaixo, é
condição que, se for verdadeira, executa o comando recebido uma variável “Op” e testado seu conteúdo,
“APROVADO”, caso contrário executa o segundo caso uma das condições seja satisfeita, é atribuído
comando “REPROVADO”. para a variável Titulo a String “Opção X”, caso
contrário é atribuído a string “Opção Errada

Podemos também dentro de uma mesma condição


testar outras condições. Em Visual Basic utilizamos a seguinte seqüência de
comandos para representar o diagrama anterior.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

TITULO = “” 1. Elabore um diagrama de bloco que leia as


variáveis C e N, respectivamente código e
OP = INPUTBOX(“DIGITE A OPÇÃO”) SELECT CASE OP número de horas trabalhadas de um
operário. E calcule o salário sabendo-se que
ele ganha R$ 10,00 por hora. Quando o
CASE 1 TITULO = “OPÇÃO 1” número de horas exceder a 50 calcule o
excesso de pagamento armazenando-o na
CASE 2 TITULO = “OPÇÃO 2” variável E, caso contrário zerar tal variável. A
hora excedente de trabalho vale R$ 20,00. No
CASE 3 TITULO = “OPÇÃO 3” nal do processamento imprimir o salário
total e o salário excedente.

CASE ELSE TITULO = “OPÇÃO ERRADA” 1. Desenvolva um diagrama que:


1. Leia 4 (quatro) números;
END SELECT 2. Calcule o quadrado de cada um;
3. Se o valor resultante do quadrado do
terceiro for
LABEL1.CAPTION = TITULO
>= 1000, imprima-o e nalize;
EXERCÍCIOS
  1.  Caso contrário, imprima os valores lidos
e seus respectivos quadrados.
1. João Papo-de-Pescador, homem de bem,
comprou um microcomputador para 1. Faça um diagrama de bloco que leia um
controlar o rendimento diário de seu número inteiro e mostre uma mensagem
trabalho. Toda vez que ele traz um peso de indicando se este número é par ou ímpar, e
peixes maior que o estabelecido pelo se é positivo ou negativo.
regulamento de pesca do estado de São Paulo
(50 quilos) deve pagar um multa de R$ 4,00 1. A Secretaria de Meio Ambiente que controla o
por quilo excedente. João precisa que você índice de poluição mantém 3 grupos de
faça um diagrama de blocos que leia a indústrias que são altamente poluentes do
variável P (peso de peixes) e veri que se há meio ambiente. O índice de poluição aceitável
excesso. Se houver, gravar na variável E varia de 0,05 até 0,25. Se o índice sobe para
(Excesso) e na variável M o valor da multa que 0,3 as
João deverá pagar. Caso contrário mostrar
tais variáveis com o conteúdo ZERO.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

indústrias do 1º grupo são intimadas a Utilizamos os comandos de repetição quando


suspenderem suas atividades, se o índice crescer desejamos que um determinado conjunto de
para 0,4 as industrias do 1º e 2º grupo são instruções ou comandos sejam executados um
intimadas a suspenderem suas atividades, se o número de nido ou inde nido de vezes, ou
índice atingir 0,5 todos os grupos devem ser enquanto um determinado estado de coisas
noti cados a paralisarem suas atividades. Faça um prevalecer ou até que seja alcançado.
diagrama de bloco que leia o índice de poluição
medido e emita a noti cação adequada aos Trabalharemos com modelos de comandos de
diferentes grupos de empresas. repetição:

1. Elabore um algoritmo que dada a idade de Enquanto x, processar (Do While ...Loop)
um nadador classi que-o em uma das
seguintes categorias:
Neste caso, o bloco de operações será executado
Infantil A = 5 a 7 anos enquanto a condição x for verdadeira.

Infantil B = 8 a 11 anos O teste da condição será sempre realizado antes de


qualquer operação.
Juvenil A = 12 a 13 anos
Enquanto a condição for verdadeira o processo se
Juvenil B = 14 a 17 anos repete.

Adultos = Maiores de 18 anos Podemos utilizar essa estrutura para trabalharmos


com contadores.

1. Elabore um algoritmo que gera e escreve os


números ímpares dos números lidos entre Em Visual Basic
100 e 200.
Nr = 0
1. Construa um algoritmo que leia 500 valores
inteiros e positivos e: • Encontre o maior valor
• Encontre o menor valor • Calcule a média Do While NOT Nr = 100 Nr = Nr + 1 Loop
dos números lidos
Label1.Caption = Nr

Comandos de Até que x, processar ... (Do Until ... Loop)


Repetição

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Neste caso, o bloco de operações será executado Neste caso, executa-se primeiro o bloco de
até que a condição seja satisfeita, ou seja, somente operações e somente depois é realizado o teste de
executará os comandos enquanto a condição for condição.
falsa.
Se a condição for verdadeira, o uxo do programa
Em Visual Basic continua normalmente.

Nr = 0 Caso contrário é processado novamente os


comandos antes do teste da condição. Em Visual
Do Until Nr = 100 Basic nr = 0

Nr = Nr + 1 Loop Do nr = nr + 1

Label1.Caption = Nr Loop Until nr >= 100

Processar ..., Enquanto x (Do ... Loop While) Label1.Caption = nr

Neste caso primeiro são executados os comandos, e Para ... Até ... Seguinte (For ... To ... Next) Em Visual
somente depois é realizado o teste da condição. Basic nr = 0

Se a condição for verdadeira, os comandos são For nr =1 to 100


executados novamente, caso seja falso é encerrado
o comando DO. Label1.Caption = nr

Em Visual Basic Next nr

Nr = 0 EXERCÍCIOS

Do Nr = Nr + 1 1. Faça um algoritmo que determine o maior


entre N números. A condição de parada é a
Loop While Nr <= 100 entrada de um valor 0, ou seja, o algoritmo
deve car calculando o maior até que a
entrada seja igual a 0 (ZERO).
Label1.Caption = Nr

Processar ..., Até que x (Do ... Loop Until)

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

1. Uma rainha requisitou os serviços de um COD- NOME ENDEREÇO FONE


monge e disse-lhe que pagaria qualquer CLI
preço. O monge, necessitando de alimentos ,
indagou à rainha sobre o pagamento, se
poderia ser feito com grãos de trigo dispostos 00001 MARIA DAS RUA DAS 99-99999-
em um tabuleiro de xadrez, de tal forma que GRAÇAS DORES,1400 9999
o primeiro quadro deveria conter apenas um
grão e os quadros subsequentes , o dobro do
quadro anterior. A rainha achou o trabalho
barato e pediu que o serviço fosse executado, ARQUIVO é um conjunto de registros
sem se dar conta de que seria impossível
efetuar o pagamento. Faça um algoritmo para
Exemplo: O arquivo de Clientes da Empresa, onde
calcular o número de grãos que o monge
estão armazenados os dados de todos os clientes
esperava receber.
da empresa.
1. Faça um algoritmo que conte de 1 a 100 e a
cada múltiplo de 10 emita uma mensagem:
ARQ-CLI
“Múltiplo de 10”.

Arquivos de Dados MARIA DAS GRAÇAS

Os dados manipulados até o momento estavam em


memória, ou seja, após a execução do diagrama os
ANA MARIA
dados se perdiam.

Para resolver esse problema começaremos a


trabalhar com arquivos, onde poderemos guardar
os dados e também manipulalos. Abertura de Arquivos
Toda vez que for necessário trabalhar com arquivo,
Para isso necessitamos rever alguns conceitos primeiramente precisamos ABRIR o arquivo.
como:
CAMPO é um espaço reservado em memória para
  ampos
C receber informações (dados).
 Registros Arquivos.
Exemplo: Campo Nome, Campo Endereço Campo
Conceitos Básicos na memória

REGISTRO é um conjunto de campos Exemplo:

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Abrir o arquivo signi ca alocar o periférico (hd, (BOF – Bottom Of File) ou no nal do arquivo
pendrive) em que o arquivo se encontra, e deixá-lo
disponível para leitura/gravação. (EOF – End Of File). Esse é sempre executado após a
leitura do registro (mudança da posição do

Fechamento de ponteiro).

Arquivos Simbolicamente podemos representar esse passo


da seguinte maneira.
Da mesma maneira que precisamos abrir um
arquivo antes do processamento, também se faz Exemplo de diagrama de bloco
necessário o fechamento do mesmo, para que suas
informações não possam ser violadas ou
dani cadas. Movimentação de registros

Fechar um arquivo signi ca liberar o periférico que Como dito no item anterior, quando um arquivo é
estava sendo utilizado. aberto o ponteiro está no primeiro registro.

A cada leitura do Arquivo o ponteiro se movimenta


Leitura de Arquivos para o próximo registro e assim por diante. Como
mostra a gura abaixo
Após abrir um arquivo é necessário LER os dados
que estão em disco e transferi-los para memória.

Essa transferência é feita por registro.

Esse procedimento é gerenciado pelo próprio


sistema operacional.

Toda vez que abrimos um arquivo ele posiciona o PASSO 7


“ponteiro” no primeiro registro, ou seja, no início do Introdução à linguagem ADVPL
arquivo.

É sua primeira vez com o Protheus?


Para que possamos trabalhar com os dados se
torna necessário sabermos onde está o ponteiro do
registro.

Isso poderemos fazer testando se o ponteiro está


no início

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Mas quantas dúvidas simples já surgem nestes primeiros E é assim que nasce em Setembro de 1983, com os sócios
passos, Laércio

não?! e Ernesto, a Microsiga - Assessoria, Software e


Comércio de

E o que é Totvs? Protheus? Microsiga? ERP? ADVPL? Computadores Ltda.

ERP

Mais tarde passando a ser conhecida como Totvs


ERP - Enterprise Resource Planning ou SIGE - ("totus"). O nome do seu produto (Sistema ERP)
Sistemas Integrados de Gestão Empresarial (no também era conhecido como Microsiga que mais
Brasil) são sistemas de informações que integram tarde mudaria para Protheus.
todos os dados e processos de uma organização em
único sistema.
AdvPL

A integração pode ser vista sob a perspectiva


Nada mais é que a Linguagem de Programação
funcional (sistemas de: nanças, contabilidade,
orientada a objetos e eventos, utilizada para
recursos humanos, fabricação, marketing e vendas,
customizações nos sistema ERP Protheus, como
etc) e sob a perspectiva sistêmica (sistema de
desenvolvimento de novas rotinas (exemplo
processamento de transações, sistemas de
relatórios, cadastros e etc) e também modi cações
informações gerenciais, sistema de apoio à decisão,
de rotinas atuais.
etc).

A Linguagem ADVPL teve seu início em 1994, sendo


Microsiga
na verdade uma evolução na utilização de
linguagens no padrão xBase pela Microsiga
A Siga - Sistemas Integrados de Gerência Software S.A. (Clipper, Visual Objects e depois
Automática Ltda, fundada por Ernesto Haberkorn FiveWin).
no início dos anos 70, foi que deu origem a
Microsiga.
Com a criação da tecnologia Protheus, era
necessário criar uma linguagem que suportasse o
padrão xBase para a manutenção de todo o código
existente do sistema de ERP Siga Advanced.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Foi então criada a linguagem chamada Advanced Em Joinville ca a maior unidade de desenvolvimento de
Protheus

software da Totvs e da América Latina.


Language (ADVPL).

Possui atualmente mais de 220 canais de


No próprio sistema ERP, está disponível o IDE para esse distribuição e está presente em 23 países, como
Brasil, Argentina, Uruguai, Paraguai, Chile, Bolívia,
Peru, Colômbia, Equador, Venezuela, Guatemala,
desenvolvimento. México, Costa Rica, Porto Rico, Estados Unidos da
América, Portugal, Angola e Moçambique.

A TOTVS tem uma trajetória de mais de 26 anos e


A partir de 2012, esse desenvolvimento pode ser foi a primeira do setor na América Latina a abrir
realizado pelo capital, hoje, possui mais 24,2 mil clientes ativos e
conta com 9 mil funcionários que são denominados
pela empresa como participantes.
Eclipse.

História
Totvs Sua primeira fundação ocorreu em 1969 com o
nome de Siga - Sistemas Integrados de Gerência
Automática - Ltda,por Ernesto Haberkorn, prestava
TOTVS (pronuncia-se tótus) é uma empresa multinacional serviços gerais na área de informática e
de
desenvolveu um sistema de gerenciamento
empresarial que permitia a automação dos
processos.
software sediada no Brasil.

Em 1983 com o surgimento dos


microcomputadores foi fundada a
Controladora das marcas Microsiga, Datasul, RM
Sistemas, Logocenter e Midbyte, é considerada a Microsiga Software S.A. com a união dos sócios
maior empresa do setor com sede em países Ernesto Haberkorn e Laércio Cosentino, atual CEO e
emergentes. Presidente do Conselho e Administração da TOTVS.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Em março de 2006 realizou seu IPO e reforçou seu da Advent, admitiu a BNDESPAR como sócia, obteve
crescimento por meio de aquisição e fusão com certi cação nível 2 do CMMI (Capability Maturity
empresas, como Datasul, RM Sistemas, Logocenter, Model Integration) e constitui a TOTVS-BMI
Midbyte, etc. Atualmente, é a maior empresa do (consultoria).
ramo no mercado nacional e a oitava do mundo.
1. - Fez a abertura de capital na Bolsa de Valores
Cronologia de São Paulo (BOVESPA), no Novo Mercado
com nível mais alto de
1969 - Ernesto Haberkorn funda a SIGA - Sistemas
Governança Corporativa. Adquiriu a RM Sistemas
Integrados de Gerência Automática - Ltda.
S.A.

1983 - Ernesto Haberkorn e Laércio Cosentino criam


1. - Adquiriu o capital da TOTVS-BMI e das
a Microsiga Software S.A.
empresas

1989 - A Microsiga Software S.A iniciou seu sistema Midbyte e BCS. Joint Venture com a Quality na
de franquias. TQTVD

1. - Foi a primeira empresa brasileira de (produção de middleware para TV Digital) e criou a


software a obter a certi cação ISO 9001. EuroTOTVS em Portugal.
2. - Abriu sua primeira Unidade no Exterior, a
Microsiga Argentina. 2008 - Uni cou os canais e criou o sistema de
3. - Iniciou o desenvolvimento de verticais. franquias TOTVS. Fez fusão com a Datasul S.A.,
4. - Fez o lançamento da linguagem ADVPL lançou a plataforma de negócios
(Advanced Protheus Language) e expandiu
sua participação internacional com a entrada via web TOTVS UP que faz demonstrações, vendas e
do sócio estrangeiro Advent International implementações remotas.
Corporation.

2001 - Obteve certi cação de todas as franquias nas Atuação


normas ISO 9002.
A TOTVS oferece produtos que são denominados
1. - Adquiriu ativos da empresa mexicana Sipros como soluções, divididos entre quatro categorias -
e abriu a Unidade internacional chamada de software, consultoria, serviços de valor agregado e
Microsiga México. tecnologia.
2. - Fez a aplicação do modelo corporativo de
cobrança.
Com propostas que unem diversos produtos da
3. - Adquiriu a empresa Logocenter, recomprou
TOTVS e atendem a 12 segmentos de mercado
a participação
juntamente com suas vertentes de subsegmentos:

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

  groindústria - Grãos e Sucroenergético


A   aúde - Centros Clínicos; Consultórios
S
 Construção e Projetos - Construtoras; Médicos, Cooperativas médicas; Hospitais;
Engenharia e Design; Incorporadoras; Laboratórios; e Operadoras de Planos de
Projetos e Serviços especiais. Saúde.
 Distribuição e Logística - Atacadista e  Série 1 - Micro e pequenas empresas de
Distribuidores; Embarcadores; Operadores manufatura; Serviços; Varejo; Saúde e
Logísticos; Recintos Aduaneiros e Transportes.
Tranportadoras.  Série 3 - Micro e pequenas empresas de
 Educacional - Educação Básica e Ensino manufatura; Serviços e varejo que estejam
Superior. em um segundo estágio de maturidade de
 Financial Services - Bancos e Financeiras; gestão.
Custódia; Controladoria e Fundos de  Serviços - Mídia; Provedores de serviços;
Investimento; e Entidades de Previdência. Utilities; Viagens e transporte de passageiros.
 Jurídico - Escritórios de Advocacia e  Varejo - Concessionária de veículos;
Departamentos Jurídicos. Drogarias; Magazine e lojas de departamento;
 Manufatura - Bens de capital; Bens de Material de construção; e Supermercados.
consumo; Bens duráveis; Extrativista e
Protheus
Bene ciamento; Metal; Mecânica e Plástico;
Papel e Celulose; e Química e Reciclagem.
O Microsiga Protheus é uma linha de software
ERP/CRM, baseada na tecnologia By You, criada e
desenvolvida pela TOTVS.

De maneira mais resumida, conhecido como o Sistema


ERP da TOTVS

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Alguns continuam chamando de "Microsiga", "Siga" e Um programa em AdvPL, consiste das seguintes
outros seções:

1. //includes
"Microsiga Protheus", en m! 2. #include "protheus.ch"

Trabalhar com Sistemas ERP torna-se muito amplo, 1. //de nes


pois você pode querer ser alguém mais focado em 2. #de ne TEXTO "ISSO EH UM TESTE"
processos, pode desejar ser especialista em um
módulo ou generalista, como também pode ser
alguém mais focado na área de desenvolvimento
(programação), o que irá exigir conhecimento da
linguagem ADVPL e de Banco de Dados.

Mas será você mesmo quem deve saber em qual


área você se encaixará melhor.

Estrutura de um programa em AdvPL //Funções

A linguagem AdvPL (Advanced Protheus Language) é User Function TESTE()


baseada em uma linguagem chamada Clipper.

//variaveis
Essa variação foi desenvolvida pela antiga Microsiga
(atualmente TOTVS) para o desenvolvimento de sua
ferramenta de Sistema Integrado de Gestão o “ERP” Local cOutroTxt := "UM EXEMPLO DE STRING"
e funciona somente em instalações desse sistema.
//comandos
Consiste da adição de comandos, reestruturação da
linguagem para funcionar em ambiente cliente MsgInfo(TEXTO+cOutroTxt)
servidor, alterações na forma de compilação, entre
outras. //retorno da função Return .T.

Porém, os comandos que existiam e funcionavam


para a linguagem base Clipper, também funcionam
para a linguagem AdvPL.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Onde:

Em ambos os casos, é um include padrão para


Includes carregar algumas funções e variáveis da linguagem
São linhas que criam a referência desse arquivo de de programação AdvPL. A segunda linha –
código-fonte com outros arquivos de código-fonte. rwmake.ch – é mais antiga e a biblioteca importada
não tem todas as funções e variáveis do
protheus.ch.
É uma forma de fazer com que um conjunto de
instruções e variáveis especí cos da linguagem (que
estão no arquivo referenciado) estejam Portanto, embora você ainda possa encontrá-la em
“disponíveis” para ser utilizado dentro do seu vários arquivos de código-fonte, não
programa. recomendamos o seu uso. No e-book Programação
em ADVPL Básico aprenderemos mais sobre outros
includes.
Em linhas gerais, você sempre utilizará a seguinte
linha de include:
De nes
1 #include "protheus.ch" De nes são instruções que determinam uma
constante em seu programa.

Essa constante é de nida por um nome e sempre


terá o mesmo valor durante a execução do
programa.

Atente que para se referenciar a constantes, o


AdvPL é case sensitive. Ou seja, de nir uma
constante com o nome de XTEXTOTESTE e tentar
utilizá-la dentro de seu programa chamando por
No entanto, não é raro encontrar a seguinte linha xTextoTeste irá disparar um erro de variável não
no lugar: encontrada!

1 #include "rwmake.ch" Inicialmente, um De ne pode não parecer útil


sendo que você pode de nir variáveis e escopos
diferentes para essas variáveis.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

No entanto, quando começamos a pensar em boas O Protheus Remote é o principal meio de acesso a
práticas para a manutenção de nosso código, os execução de rotinas escritas em ADVPL no Protheus
De nes serão de extrema valia para tornar nosso Server, e por isso permite executar qualquer tipo de
código legível, mais fácil de alterar e coerente. código, tenha ele interface com o usuário ou não.

Atente também que, embora não esteja listada nas Como não existe a linkedição, ou união física do
seções acima, também existe uma área especi ca código compilado a um determinado módulo ou
para de nir variáveis estáticas. aplicação, funções criadas em ADVPL podem ser
executadas em qualquer ponto do ambiente
1 Static cTextoTeste := “Isso é um teste!” Advanced Protheus.

Quando compilados, todos os arquivos de código O compilador e o interpretador da linguagem


tornam-se unidades de inteligência básicas, ADVPL é o próprio servidor PROTHEUS (PROTHEUS
chamados APO´s (de Advanced Protheus Objects). Server), e existe um ambiente visual para
desenvolvimento integrado

Tais APO´s são mantidos em um repositório e


carregados dinamicamente pelo PROTHEUS Server (PROTHEUSIDE) onde o código pode ser criado,
para a execução. compilado e depurado.

De acordo com tal característica, tais programas são Os programas em ADVPL podem conter comandos
subdivididos nas seguintes categorias: ou funções de interface com o usuário.

Porém nesta categoria são considerados apenas os


Programação Com Interface programas que realizam algum tipo de interface
Própria com o Usuário remota utilizando o protocolo de comunicação do
Protheus.
Nesta categoria entram os programas
desenvolvidos para serem executados através do
Podem-se criar rotinas para a customização do
terminal remoto do Protheus, o Protheus Remote.
sistema ERP Microsiga Protheus, desde processos
adicionais até mesmo relatórios.
O Protheus Remote é a aplicação encarregada da
interface e da interação com o usuário, sendo que
A grande vantagem é aproveitar todo o ambiente
todo o processamento do código em ADVPL, o
montado pelos módulos do ERP Microsiga Protheus.
acesso ao banco de dados e o gerenciamento de
conexões é efetuado no Protheus Server.
Porém, com o ADVPL é possível até mesmo criar
toda uma aplicação, ou módulo, do começo.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Todo o código do sistema ERP Microsiga Protheus é Iniciadas por outra rotina ADVPL através da
escrito em ADVPL. chamada de funções como StartJob() ou CallProc()
ou iniciadas automaticamente na inicialização do
Protheus Server (quando propriamente
Programação Sem Interface con gurado).
Própria com o Usuário
Programação de RPC
As rotinas criadas sem interface são consideradas
nesta categoria porque geralmente têm uma
utilização mais especí ca do que um processo Através de uma biblioteca de funções disponível no
adicional ou um relatório novo. Protheus

Tais rotinas não têm interface com o usuário (uma API de comunicação), podem-se executar
através do Protheus Remote, e qualquer tentativa rotinas escritas
nesse sentido (como a criação de uma janela
padrão) ocasionará uma exceção em tempo de em ADVPL diretamente no Protheus Server, através
execução. de aplicações

Estas rotinas são apenas processos, ou Jobs, externas escritas em outras linguagens.
executados no Protheus Server.
Isto é o que se chama de RPC (de Remote Procedure
Algumas vezes, a interface destas rotinas ca a Call, ou Chamada de Procedimentos Remota).
cargo de aplicações externas, desenvolvidas em
outras linguagens, que são responsáveis por iniciar
O servidor Protheus também pode executar rotinas
os processos no servidor Protheus através dos
em ADVPL em outros servidores Protheus através
meios disponíveis de integração e conectividade no
de conexão TCP/IP direta utilizando o conceito de
Protheus.
RPC.

De acordo com a utilização e com o meio de


Do mesmo modo, aplicações externas podem
conectividade utilizado, estas rotinas são
requisitar a execução de rotinas escritas em ADVPL
subcategorizadas assim:
através da conexão TCP/IP direta.

Programação por Processos


Programação Web
Rotinas escritas em ADVPL podem ser iniciadas O Protheus Server pode também ser executado
como processos individuais (sem interface) no como um servidor Web, respondendo a requisições
Protheus Server através de duas maneiras: HTTP.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

No momento destas requisições, pode executar Esses comandos são gravados em um arquivo texto
rotinas escritas em ADVPL como processos que é transformado em uma linguagem executável
individuais, enviando o resultado das funções como por um computador através de um processo
retorno das requisições para o cliente HTTP (como chamado compilação.
por exemplo, um Browser de Internet).
A compilação substitui os comandos de alto nível
Qualquer rotina escrita em ADVPL que não (que os humanos compreendem) por instruções de
contenha comandos de interface pode ser baixo nível (compreendida pelo sistema operacional
executada através de requisições HTTP. em execução no computador).

O Protheus permite a compilação de arquivos HTML No caso do ADVPL, não é o sistema operacional de
contendo um computador que irá executar o código
compilado, mas sim o Protheus Server.
código ADVPL embutido.
Dentro de um programa, os comandos e funções
São os chamados arquivos ADVPL ASP, para a utilizados devem seguir regras de sintaxe da
criação de páginas dinâmicas. linguagem utilizada, pois caso contrário o programa
será interrompido por erros. Os erros podem

Programação TelNet
ser de compilação ou de execução.
TelNet é parte da gama de protocolos TCP/IP que
permite a conexão a um computador remoto Erros de compilação são aqueles encontrados na
através de uma aplicação cliente deste protocolo. sintaxe que não permitem que o arquivo de código
do programa seja compilado. Podem ser comandos
O PROTHEUS Server pode emular um terminal especi cados de forma errônea, utilização inválida
TelNet, através da execução de rotinas escritas em de operadores, etc.
ADVPL.
Erros de execução são aqueles que acontecem
Ou seja, pode-se escrever rotinas ADVPL cuja depois da compilação, quando o programa está
interface nal será um terminal TelNet ou um sendo executado. Podem ocorrer por inúmeras
coletor de dados móvel. razões, mas geralmente se referem às funções não
existentes, ou variáveis não criadas ou inicializadas,
Um programa de computador nada mais é do que etc.
um grupo de comandos logicamente dispostos com
o objetivo de executar determinada tarefa. Linhas de Programa

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

As linhas existentes dentro de um arquivo texto de Todas as linhas iniciadas com um sinal de asterisco
código de programa podem ser linhas de comando, são consideradas como comentário.
linhas de comentário ou linhas mistas.
Pode-se utilizar a palavra NOTE ou dois símbolos da
Linhas de Comando letra "e" comercial (&&) para realizar a função do
sinal de asterisco. Porém todas estas formas de
Não se preocupe se não estiver familiarizado com a comentário de linhas são obsoletas e existem
linguagem ADVPL. Abaixo trataremos alguns apenas para compatibilização com o padrão xBase.
comandos básicos.
A melhor maneira de comentar linhas em ADVPL é
Linhas de comando possuem os comandos ou utilizar duas barras transversais:
instruções que serão executadas. Por exemplo:
// Programa para cálculo do total
Local nCnt
// Autor: Rogério O Candisani
Local nSoma := 0 For nCnt := 1 To 10 nSoma += nCnt
// Data: 2 de outubro de 2007
Next nCnt
Outra forma de documentar textos é utilizar as
barras transversais juntamente com o asterisco,
Linhas de Comentário
podendo-se comentar todo um bloco de texto sem
Linhas de comentário possuem um texto qualquer, precisar comentar linha a linha:
mas não são executadas. Servem apenas para
documentação e para tornar mais fácil o /*
entendimento do programa.

Programa para cálculo do total


Existem três formas de se comentar linhas de texto.
A primeira delas é utilizar o sinal de * (asterisco) no
começo da linha: Autor: Rogério O Candisani

  rograma para cálculo do total


P Data: 2 de outubro de 2007
 Autor: Rogério O Candisani
 Data: 2 de outubro de 2007 */

Todo o texto encontrado entre a abertura (indicada


pelos caracteres /*) e o fechamento (indicada pelos
caracteres */) é considerado como comentário.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Linhas Mistas de ponto-e-vírgula (;).

O ADVPL também permite que existam linhas de If !Empty(cNome) .And. !Empty(cEnd) .And. ;
comando com comentário. Isto é possível
adicionando-se as duas barras transversais (//) ao !Empty(cTel) .And. !Empty(cFax) .And. ;
nal da linha de comando e adicionando-se o texto
do comentário:
!Empty(cEmail)

Local nCnt
GravaDados(cNome,cEnd,cTel,cFax,cEmail)

Local nSoma := 0 // Inicializa a variável com zero


para a soma Endif

For nCnt := 1 To 10 nSoma += nCnt Neste exemplo existe uma linha de comando para a
checagem das variáveis utilizadas.

Next nCnt
Como a linha torna-se muito grande, pode-se dividi-
la em mais de uma linha física utilizando o sinal de
Tamanho da Linha ponto-e-vírgula. Se um sinal de ponto-e-vírgula for
esquecido nas duas primeiras linhas, durante a
Assim como a linha física, delimitada pela execução do programa ocorrerá um erro, pois a
quantidade de caracteres que pode ser digitado no segunda linha física será considerada como uma
editor de textos utilizado, existe uma linha segunda linha de comando na compilação. E
considerada linha lógica. durante a execução esta linha não terá sentido.        
      
A linha lógica é aquela considerada para a
compilação como uma única linha de comando. Áreas de um Programa

A princípio, cada linha digitada no arquivo texto é Apesar de não ser uma linguagem de padrões
diferenciada após o pressionamento da tecla. Ou rígidos com relação à estrutura do programa, é
seja, a linha lógica, é a linha física no arquivo. importante identi car algumas de suas partes.
Considere o programa de exemplo abaixo:                
 
Porém algumas vezes, por limitação física do editor
de texto ou por estética, pode-se "quebrar" a linha
lógica em mais de uma linha física no arquivo texto. #include protheus.ch
Isto é efetuado utilizando-se o sinal
+===========================================+

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

| Programa: Cálculo do Fatorial | Local nCnt

| Autor : Rogério O Candisani. | Local nResultado := 1 // Resultado do fatorial

| Data : 02 de outubro de 2007 | Local nFator := 5 // Número para o cálculo

+===========================================+ // Cálculo do fatorial

*/ For nCnt := nFator To 1 Step -1

nResultado *= nCnt
User Function CalcFator()

Next nCnt

// Exibe o resultado na tela, através da função alert

Alert("O fatorial de " + cValToChar(nFator) + ;

" é " + cValToChar(nResultado))

// Termina o programa

Return

A estrutura de um programa ADVPL é composta pelas


seguintes áreas:

Área de Identi cação

Declaração dos includes

Declaração da função

Identi cação do programa

Área de Ajustes Iniciais Declaração das variáveis

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Esta é uma área que não é obrigatória e é dedicada Nesta área geralmente se fazem os ajustes iniciais,
a documentação do programa. importantes para o correto funcionamento do
programa.
Quando existente, contém apenas comentários
explicando a sua nalidade, data de criação, autor, Entre os ajustes se encontram declarações de
etc., e aparece no começo do programa, antes de variáveis, inicializações, abertura de arquivos, etc.
qualquer linha de comando.
Apesar do ADVPL não ser uma linguagem rígida e as
O formato para esta área não é de nido. Pode-se variáveis
colocar qualquer tipo de informação desejada e
escolher a formatação apropriada. poderem ser declaradas em qualquer lugar do
programa, é aconselhável fazê-lo nesta área visando
#include “protheus.ch” tornar o código mais legível e facilitar a identi cação
de variáveis não utilizadas.
/*
Local nCnt
+==========================================+
Local nResultado := 0 // Resultado do fatorial
| Programa: Cálculo do Fatorial |
Local nFator := 10 // Número para o cálculo
| Autor : Rogério O Candisani |
Corpo do Programa
| Data : 02 de outubro de 2007 |
É nesta área que se encontram as linhas de código
+==========================================+ do programa. É onde se realiza a tarefa necessária
através da organização lógica destas linhas de
comando.
*/

Espera-se que as linhas de comando estejam


User Function CalcFator() organizadas de tal modo que no nal desta área o
resultado esperado seja obtido, seja ele
Opcionalmente podem-se incluir de nições de armazenado em um arquivo ou em variáveis de
constantes utilizadas no programa ou inclusão de memória, pronto para ser exibido ao usuário
arquivos de cabeçalho nesta área. através de um relatório ou na tela.

Área de Ajustes Iniciais // Cálculo do fatorial

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

For nCnt := nFator To 1 Step -1 É nesta área onde as nalizações são efetuadas. É
onde os arquivos abertos são fechados, e o
nResultado *= nCnt resultado da execução do programa é utilizado.

Next nCnt Pode-se exibir o resultado armazenado em uma


variável ou em um arquivo ou simplesmente
nalizar, caso a tarefa já tenha sido toda
A preparação para o processamento é formada pelo completada no corpo do programa.
conjunto de validações e processamentos
necessários antes da realização do processamento
em si. É nesta área que se encontra o encerramento do
programa. Todo programa em ADVPL deve sempre
terminar com a palavra chave return.
Avaliando o processamento do cálculo do fatorial
descrito anteriormente, pode-se de nir que a
validação inicial a ser realizada é o conteúdo da // Exibe o resultado na tela, através da função alert
variável nFator, pois a mesma determinará a correta
execução do código. Alert("O fatorial de " + cValToChar(nFator) + ;

// Cálculo do fatorial nFator := GetFator() " é " + cValToChar(nResultado))

// GetFator – função ilustrativa na qual a variável // Termina o programa Return


recebe a informação do usuário.

If nFator <= 0 Comandos Básicos em


Alert(“Informação inválida”) Return
ADVPL
Endif Declaração e Atribuição de
Variáveis
For nCnt := nFator To 1 Step -1
Tipo de Dados
nResultado *= nCnt O ADVPL não é uma linguagem de tipos rígidos
(strongly typed), o que signi ca que variáveis de
memória podem receber diferentes tipos de dados
Next nCnt durante a execução do programa.

Área de Encerramento

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

As variáveis podem também conter objetos, mas os O ADVPL tem um tipo de dados especí co para
tipos primários da linguagem são: datas. Internamente as variáveis deste tipo de dado
são armazenadas como um número
correspondente a data Juliana.
Numérico
O ADVPL não diferencia valores inteiros de valores Variáveis do tipo de dados Data não podem ser
com ponto utuante, portanto podem-se criar declaradas diretamente, e sim através da utilização
variáveis numéricas com qualquer valor dentro do de funções especí cas como por exemplo CTOD()
intervalo permitido. Os seguintes elementos são do que converte uma string para data.
tipo de dado numérico:

Array
Uma variável do tipo de dado numérico pode conter
um número de dezoito dígitos incluindo o ponto O Array é um tipo de dado especial. É a disposição
utuante, no intervalo de de outros elementos em colunas e linhas, matriz. O
ADVPL suporta arrays unidimensionais (vetores) ou
2.2250738585072014 E–308 até multidimensionais (matrizes). Os elementos de um
1.7976931348623158 E+308. array são acessados através de índices numéricos
iniciados em 1, identi cando a linha e coluna para
quantas dimensões existirem.
Lógico
Valores lógicos em ADVPL são identi cados através Arrays devem ser utilizadas com cautela, pois se
de .T. para verdadeiro e .F. para falso forem muito grandes podem exaurir a memória do
(independentemente se os caracteres estiverem em servidor.
maiúsculo ou minúsculo).

Bloco de Código
Caractere
O bloco de código é um tipo de dado especial. É
Strings ou cadeias de caracteres são identi cadas utilizado para armazenar instruções escritas em
em ADVPL por blocos de texto entre aspas duplas (") ADVPL que poderão ser executadas posteriormente.
ou aspas simples ('): "Olá mundo!" 'Esta é uma
string' "Esta é 'outra' string"
Declaração de variáveis
Uma variável do tipo caractere pode conter strings
com no máximo 1 MB, ou seja, 1048576 caracteres.

Data

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Variáveis de memória são um dos recursos mais Quando o conteúdo da variável nTotalGeralMensal
importantes de uma linguagem. São áreas de é exibido, o seu valor será de 300. Isso acontece
memória criadas para armazenar informações porque no momento que esse valor foi atribuído à
utilizadas por um programa para a execução de variável nTotalGeralAnual, o ADVPL considerou
tarefas. Por exemplo, quando o usuário digita uma apenas os 10 primeiros caracteres (assim como o
informação qualquer, como o nome de um produto, faz quando deve exibir o valor da variável
em uma tela de um programa esta informação é nTotalGeralMensal), ou seja, considerou-as como a
armazenada em uma variável de memória para mesma variável. Assim o valor original de 100 foi
posteriormente ser gravada ou impressa. substituído pelo de 300.

A partir do momento que uma variável é criada, não


é necessário mais se referenciar ao seu conteúdo, e
Escopo de variáveis
sim ao seu nome. O ADVPL não é uma linguagem de tipos rígidos para
variáveis, ou seja, não é necessário informar o tipo
O nome de uma variável é um identi cador único o de dados que determinada variável irá conter no
qual deve respeitar um máximo de 10 caracteres. O momento de sua declaração, e o seu valor pode
ADVPL não impede a criação de uma variável de mudar durante a execução do programa.
memória cujo nome contenha mais de 10
caracteres, porém apenas os 10 primeiros serão Também não há necessidade de declarar variáveis
considerados para a localização do conteúdo em uma seção especí ca do seu código fonte,
armazenado. embora seja aconselhável declarar todas as
variáveis necessárias no começo, tornando a
Portanto se forem criadas duas variáveis cujos 10 manutenção mais fácil e evitando a declaração de
primeiros caracteres forem iguais, como variáveis desnecessárias.
nTotalGeralAnual e nTotalGeralMensal, as
referências a qualquer uma delas no programa Para declarar uma variável deve-se utilizar um
resultarão o mesmo, ou seja, serão a mesma identi cador de escopo. Um identi cador de escopo
variável: é uma palavra chave que indica a que contexto do
programa a variável declarada pertence. O contexto
nTotalGeralMensal := 100 nTotalGeralAnual := 300 de variáveis pode ser local (visualizadas apenas
Alert("Valor mensal: " + dentro do programa atual), público (visualizadas por
cValToChar(nTotalGeralMensal)) qualquer outro programa), entre outros.

O Contexto de Variáveis dentro de um


Programa

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

As variáveis declaradas em um programa ou função Devido a essa característica, quando se pretende


são visíveis de acordo com o escopo onde são fazer uma atribuição a uma variável declarada
de nidas. Como também do escopo depende o previamente, mas escreve-se o nome da variável de
tempo de existência das variáveis. A de nição do forma incorreta, o ADVPL não gerará nenhum erro
escopo de uma variável é efetuada no momento de de compilação ou de execução. Pois compreenderá
sua declaração. Local nNumero := 10 o nome da variável escrito de forma incorreta como
se fosse a criação de uma nova variável. Isto
Esta linha de código declara uma variável chamada alterará a lógica do programa, e é um erro muitas
nNumero indicando que pertence seu escopo é vezes difícil de identi car.
local.
Variáveis de escopo local
Os identi cadores de escopo são: Variáveis de escopo local são pertencentes apenas
ao escopo da função onde foram declaradas e
  ocal
L devem ser explicitamente declaradas com o
 Static identi cador LOCAL, como no exemplo:
 Private
 Public Function Pai() Local nVar := 10, aMatriz := {0,1,2,3} .
O ADVPL não é rígido em relação à declaração de <comandos> . Filha() . <mais comandos> .
variáveis no começo do programa. A inclusão de um Return(.T.)
identi cador de escopo não é necessária para a
declaração de uma variável, contanto que um valor Neste exemplo, a variável nVar foi declarada como
lhe seja atribuído. local e atribuída com o valor 10. Quando a função
Filha é executada, nVar ainda existe mas não pode
Quando um valor é atribuído a uma variável em um ser acessada. Quando a execução da função Pai
programa ou função, o ADVPL criará a variável caso terminar, a variável nVar é destruída. Qualquer
ela não tenha sido declarada anteriormente. A variável com o mesmo nome no programa que
variável então é criada como se tivesse sido chamou a função Pai não é afetada.
declarada como Private.
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 m 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.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

A visibilidade de variáveis de escopo locais é Entretanto, somente pode ser acessada por
idêntica ao escopo de sua declaração, ou seja, a execuções subseqüentes da função Pai.
variável é visível em qualquer lugar do código fonte
em que foi declarada. Se uma função é chamada
Variáveis de escopo private
recursivamente, apenas as variáveis de escopo local
criadas na mais recente ativação são visíveis. A declaração é opcional para variáveis privadas. Mas
podem ser declaradas explicitamente com o
identi cador PRIVATE.
Variáveis de escopo static
Variáveis de escopo static funcionam basicamente Adicionalmente, a atribuição de valor a uma variável
como as variáveis de escopo local, mas mantêm seu não criada anteriormente automaticamente cria a
valor através da execução e devem ser declaradas variável como privada.
explicitamente no código com o identi cador
STATIC.
Uma vez criada, uma variável privada continua a
existir e mantém seu valor até que o programa ou
O escopo das variáveis static depende de onde são função onde foi criada termine (ou seja, até que a
declaradas. Se forem declaradas dentro do corpo de função onde foi criada retorne para o código que a
uma função ou procedimento, seu escopo será executou). Neste momento, é automaticamente
limitado àquela rotina. destruída.

Se forem declaradas fora do corpo de qualquer É possível criar uma nova variável privada com o
rotina, seu escopo afeta a todas as funções mesmo nome de uma variável já existente.
declaradas no fonte. Entretanto, a nova (duplicada) variável pode apenas
ser criada em um nível de ativação inferior ao nível
Neste exemplo, a variável nVar é declarada como onde a variável foi declarada pela primeira vez (ou
static e inicializada com o valor 10: seja, apenas em uma função chamada pela função
onde a variável já havia sido criada).
Function Pai() Static nVar := 10 . <comandos> . Filha()
. <mais comandos> . Return(.T.) A nova variável privada irá esconder qualquer outra
variável privada ou pública (veja a documentação
Quando a função Filha é executada, nVar ainda sobre variáveis públicas) com o mesmo nome
existe mas não pode ser acessada. enquanto existir.

Diferente de variáveis declaradas como LOCAL ou


PRIVATE, nVar continua a existir e mantêm seu valor
atual quando a execução da função Pai termina.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Uma vez criada, uma variável privada é visível em Quando a função Pai terminar, nVar será destruída
todo o programa enquanto não for destruída e qualquer declaração de nVar anterior se tornará
automaticamente quando a rotina que a criou acessível novamente.
terminar ou uma outra variável privada com o
mesmo nome for criada em uma subfunção
Variáveis de escopo public
chamada (neste caso, a variável existente torna-se
inacessível até que a nova variável privada seja Podem-se criar variáveis de escopo public
destruída). dinamicamente no código com o identi cador
PUBLIC.
Em termos mais simples, uma variável privada é
visível dentro da função de criação e todas as As variáveis deste escopo continuam a existir e
funções chamadas por esta, a menos que uma mantêm seu valor até o m da execução da thread
função chamada crie sua própria variável privada (conexão).
com o mesmo nome.
É possível criar uma variável de escopo private com
“É a mais usada ultimamente, pois se declara as o mesmo nome de uma variável de escopo public
variáveis no início do programa, desenhando um existente, entretanto, não é permitido criar uma
algoritmo e estas servem para todo o fonte” Por variável de escopo public com o mesmo nome de
exemplo: uma variável de escopo private existente.

Function Pai() Uma vez criada, uma variável de escopo public é


visível em todo o programa onde foi declarada até
Private nVar := 10 que seja escondida por uma variável de escopo
private criada com o mesmo nome.

<comandos> .
A nova variável de escopo private criada esconde a
variável de escopo public existente, e esta se
Filha() <mais comandos> . tornará inacessível até que a nova variável private
seja destruída. Por exemplo:
Return(.T.)
Function Pai()
Neste exemplo, a variável nVar é criada com escopo
private e inicializada com o valor 10. Public nVar := 10

Quando a função Filha é executada, nVar ainda <comandos> .


existe e, diferente de uma variável de escopo local,
pode ser acessada pela função Filha.
Filha() <mais comandos> .

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Return(.T.) Quando a linha de cálculo for executada, o erro de


variável não existente, não mais ocorrerá.
Neste exemplo, nVar é criada como public e
inicializada com o valor 10. Porém variáveis não inicializadas têm sempre o
valor default nulo
Quando a função Filha é executada, nVar ainda
existe e pode ser acessada. (Nil) e este valor não pode ser utilizado em um
cálculo, pois também gerará erros de execução
Diferente de variáveis locais ou privates, nVar ainda (nulo não pode ser dividido por 100). A resolução
existe após o término da a execução da função Pai. deste problema é efetuada inicializando-se a
variável através de uma das formas:

Diferentemente dos outros identi cadores de


escopo, quando uma variável é declarada como Local nPercentual, nResultado nPercentual := 10
pública sem ser inicializada, o valor assumido é nResultado := 250 * (1 + (nPercentual / 100)) ou
falso (.F.) e não nulo (nil).
Local nPercentual := 10, nResultado nResultado :=
Entendendo a in uência do escopo das variáveis. 250 * (1 + (nPercentual / 100))

Considere as linhas de código de exemplo: A diferença entre o último exemplo e os dois


anteriores é que a variável é inicializada no
momento da declaração.
Se esta linha for executada em um programa
ADVPL, ocorrerá um erro de execução com a
mensagem "variable does not exist: nPercentual", Em ambos os exemplos, a variável é primeiro
pois esta variável está sendo utilizada em uma declarada e então inicializada em uma outra linha
expressão de cálculo sem ter sido declarada. de código.

Para solucionar este erro, deve-se declarar a É aconselhável optar pelo operador de atribuição
variável previamente: composto de dois pontos e sinal de igual, pois o
operador de atribuição utilizando somente o sinal
de igual pode ser facilmente confundido com o
Local nPercentual, nResultado nResultado := 250 * operador relacional (para comparação) durante a
(1 + (nPercentual / 100)) criação do programa.

Neste exemplo, as variáveis são declaradas


previamente utilizando o identi cador de escopo Operações com Variáveis
local.
Atribuição de variáveis

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Uma vez que um valor lhe seja atribuído, o tipo de Excetuando-se o caso do valor nulo, para os demais
dado de uma variável é igual ao tipo de dado do devem ser utilizadas funções de conversão quando
valor atribuído. é necessário concatenar tipos de dados diferentes.

Ou seja, uma variável passa a ser numérica se um Note também que quando uma variável é do tipo de
número lhe é atribuído, passa a ser caractere se dado lógico, ela pode ser utilizada diretamente para
uma string de texto lhe for atribuída, etc. checagem.

Porém mesmo que uma variável seja de If xVariavel é o mesmo que If xVariavel = .T.
determinado tipo de dado, pode-se mudar o tipo da
variável atribuindo outro tipo a ela: este ponto é Operadores da linguagem ADVPL
importante, mas não primordial para esta
introdução a linguagem ADVPL. Será visto no Curso
ADVPL Básico. Operadores comuns
Na documentação sobre variáveis há uma breve
A letra "x" em minúsculo no começo do nome é demonstração de como atribuir valores a uma
utilizada para indicar uma variável que pode conter variável da forma mais simples.
diversos tipos de dados, segundo a Notação
Húngara (consulte documentação especí ca para O ADVPL amplia signi cativamente a utilização de
detalhes). variáveis através do uso de expressões e funções.

Este programa troca os valores da variável e exibe Uma expressão é um conjunto de operadores e
seu conteúdo para o usuário através da função operandos cujo resultado pode ser atribuído a uma
ALERT(). variável ou então analisado para a tomada de
decisões.
Essa função recebe um parâmetro que deve ser do
tipo string de caractere, por isso dependendo do Por exemplo:
tipo de dado da variável xVariavel é necessário fazer
uma conversão antes.
Local nSalario := 1000, nDesconto := 0.10 Local
nAumento, nSalLiquido nAumento := nSalario * 1.20
Apesar dessa exibilidade de utilização de variáveis, nSalLiquido := nAumento * (1-nDesconto)
devem-se tomar cuidados na passagem de
parâmetros para funções ou comandos, e na
Neste exemplo são utilizadas algumas expressões
concatenação (ou soma) de valores.
para calcular o salário líquido após um aumento.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Os operandos de uma expressão podem ser uma + Concatenação de strings (união)


variável, uma constante, um campo de arquivo ou
uma função.
- Concatenação de strings com eliminação
Operadores Matemáticos
dos brancos nais das strings intermediárias
Os operadores utilizados em ADVPL para cálculos
matemáticos são:
$ Comparação de Substrings (contido em)

+ Adição

Operadores Relacionais
- Subtração
Os operadores utilizados em ADVPL para operações
e avaliações relacionais são:
* Multiplicação

< Comparação Menor

/ Divisão

> Comparação Maior

** Exponenciação

= Comparação Igual

% Módulo (Resto da Divisão)

== Comparação Exatamente Igual (para


caracteres)

Operadores de String
Os operadores utilizados em ADVPL para <= Comparação Menor ou Igual
tratamento de caracteres são:

>= Comparação Maior ou Igual

<> ou # ou Comparação Diferente


!=

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Operadores Lógicos := Atribuição Simples

Os operadores utilizados em ADVPL para operações


e avaliações lógicas são: += Adição e Atribuição em Linha

.And. E Lógico
-= Subtração e Atribuição em Linha

.Or. OU Lógico
*= Multiplicação e Atribuição em Linha

.Not. ou ! NÃO lógico


/= Divisão e Atribuição em Linha

Operadores de Atribuição **= ou Exponenciação e Atribuição em Linha


=
Os operadores utilizados em ADVPL para atribuição
de valores a variáveis de memória são:
%= Módulo (resto da divisão) e Atribuição em
Linha

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 pode-se atribuir mais de uma variável ao


mesmo tempo.

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Quando diversas variáveis são inicializadas em uma ++ Incremento Pós ou Pré- xado
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 -- Decremento Pós ou Pré- xado
nVar1 recebe o conteúdo de nVar2 por nal.

Com o operador de atribuição em linha, pode-se


substituir as inicializações individuais de cada Os operadores de decremento/incremento podem
variável por uma inicialização apenas: ser colocados tanto antes (pré- xado) como depois
(pós- xado) do nome da variável.
Local nVar1 := 0, nVar2 := 0, nVar3 := 0 por Local
nVar1 := nVar2 := nVar3 := 0 Dentro de uma expressão, a ordem do operador é
muito importante, podendo alterar o resultado da
expressão.
O operador de atribuição em linha também pode
ser utilizado para substituir valores de campos em
um banco de dados. Os operadores incrementais são executados da
esquerda para a direita dentro de uma expressão.
Local nA := 10 Local nB := nA++ + nA
Os operadores de atribuição composta são uma
facilidade da linguagem ADVPL para expressões de
cálculo e atribuição. O valor da variável nB resulta em 21, pois a primeira
referência a nA (antes do ++) continha o valor 10
que foi considerado e imediatamente aumentado
Com eles pode-se economizar digitação:
em 1.

Operador Exemplo Equivalente a += X


Na segunda referência a nA, este já possuía o valor
1.
Operadores de
Incremento/Decremento O que foi efetuado foi a soma de 10 mais 1, igual a
A linguagem ADVPL possui operadores para realizar 21.
incremento ou decremento de variáveis.
O resultado nal após a execução destas duas
Entende-se por incremento aumentar o valor de linhas é a variável nB contendo 21 e a variável nA
uma variável numérica em 1 e entende-se por contendo 1.
decremento diminuir o valor da variável em 1.
No entanto:
Os operadores são:
Local nA := 10 Local nB := ++nA + nA

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Resulta em 2, pois o operador incremental Os colchetes são utilizados para especi car um
aumentou o valor da primeira nA antes que seu elemento especí co de uma matriz. Por exemplo,
valor fosse considerado. A[3,2], refere-se ao elemento da matriz A na linha 3,
coluna 2.
Operadores Especiais
As chaves são utilizadas para a especi cação de
Além dos operadores comuns, o ADVPL possui matrizes literais ou blocos de código.
alguns outros operadores ou identi cadores. Estas
são suas nalidades:
Por exemplo, A:={10,20,30} cria uma matriz
chamada A com três elementos.
() Agrupamento ou Função

O símbolo -> identi ca um campo de um arquivo


diferenciando-o de uma variável.
[] Elemento de Matriz

Por exemplo, FUNC->nome refere-se ao campo


nome do arquivo FUNC. Mesmo que exista uma
{} De nição de Matriz
variável chamada nome, é o campo nome que será
acessado.
-> Identi cador de Apelido
O símbolo & identi ca uma avaliação de expressão
através de macro e é visto em detalhes na
& Macro substituição documentação sobre macro substituição no curso
ADVPL Básico.

@ Passagem de parâmetro por referência 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
|| Passagem de parâmetro por valor e não como valor.

O símbolo || é utilizado para indicar que durante a


passagem de uma variável para uma função ou
Os parênteses são utilizados para agrupar
procedimento ela seja tomada como um e valor não
elementos em uma expressão mudando a ordem
como referência.
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 As estruturas de controle em ADVPL estão divididas
função. em:

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Estruturas de decisão e repetição


A utilização de estruturas de decisão e repetição em
DO CASE ... ENDCASE
um algoritmo permite a realização de ações (Caso) permite a análise de diversas condições
relacionadas a situações que in uenciam na consecutivas, para as quais somente a condição a
execução e solução do problema. primeira condição verdadeira será sua ação
vinculada executada.
Como foco na utilização da linguagem ADVPL serão
ilustradas as seguintes estruturas: O recurso de análise de múltiplas condições é
necessário para solução de problemas mais
Estruturas de decisão complexos, nos quais as possibilidades de solução
superam a mera análise de um único resultado
Os comandos de decisão são utilizados em verdadeiro ou falso.
algoritmos cuja solução não é obtida através da
utilização de ações meramente sequenciais,
Neste exemplo temos a seguinte condição: Caso
permitindo que este avalie as condições necessárias
cMo == “1” // comparativo exato
para optar por uma ou outra maneira de continuar
seu uxo.
cModelo := “Van” // recebe o conjunto de caracteres
“VAN” Caso cMo ==”2” // comparativo exato
IF...ELSE cModelo:= “Carro” // recebe o conjunto de
caracteres “Carro” e assim sucessivamente.
A estrutura IF...ELSE (Se/Senão) permite a análise de
uma condição e a partir da qual será executada
uma de duas ações possíveis: se a análise da
condição resultar em um valor verdadeiro ou se a
análise da condição resultar em um valor falso.

Ex: resolução de tela: se a resolução for maior do


que 800 faça uma condição senão faça a outra.

Estruturas de repetição

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

Os comandos de repetição são utilizados em S


algoritmos nas situações em que é necessário
realizar uma determinada ação ou um conjunto de e
ações para um número de nido ou inde nido de
vezes, ou ainda enquanto uma determinada
condição for verdadeira. data for maior que a d

o par
DO WHILE...ENDDO
Nesta estrutura, o conjunto de ações será âmetro de
executado enquanto a análise de uma condição de
referência resultar em um valor verdadeiro. perg

É importante veri car que o bloco somente será untas


executado, inclusive se na primeira análise a
condição resultar em um valor verdadeiro.
,o

Ex: abrir um arquivo e posicionar num índice (“será


comando DBSKIP() e LOOP
visto no conteúdo do ebook ADVL Básico tendo
como pré-requisito estes 7 Passos Básicos).
posiciona no

próximo

registro.

Veri ca se n

ão

m de arquivo e posiciona

no

próximo

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

registro Note que um fonte pode ser bem complexo. Neste


caso temos comandos de decisão e de repetição
encadeados. Este fonte se refere ao curso ADVPL
FOR...NEXT Avançado.

Para nPos = 1 ate o tamanho da matriz

{aCamposSim}

Dentro

do for

para

podemos ter condições de decisão ou repetição


encadeados

Neste caso temos um IF dentro de outro IF....

A rotina continuará at quée nPos seja maior que a


matriz {aCamposSim}

Note que é um algoritmo mais complexo

Clube ADVPL - Protheus do ZERO a Ninja


Lógica de Programação ADVPL em 7 Passos

No email rcandisani@gmail.com informando o


Resolução dos problemas assunto “SUPORTE CURSO LOGICA ADVPL”.
Deixamos abertas as resoluções de problemas para
cada aluno fazer de sua maneira e se tiver duvidas Programação é isso tem que por a mão na massa.
entre em contato conosco
Desta forma aprenderão mais facilmente e pela
di culdade dos exercícios nunca mais esquecerão o
que é um algoritmo e nem diagrama de blocos.

Ferramentas de apoio
Baixe a ferramenta visualg: para fazer os algoritmos
ou diagrama de blocos funcionarem corretamente.

Se tiver o IDE instalado pode rodar pelo Microsiga


mesmo colocando um “alert” para mostrar os
resultados na tela.

Se conhecer alguma outra ferramenta gratuita pode


usar também.

Grato.

Rogério Onishi Candisani Até o próximo curso!

Clube ADVPL - Protheus do ZERO a Ninja

Você também pode gostar