(Parte 1 de 5)

Educação Corporativa

Programação em ADVPL Completo

Matriz – Av. Braz Leme, 1.717 – 02511-0 – São Paulo – SP – Brasil.

- 2 - ADVPL Completo

MÓDULO 01: Introdução à programação1
1. Lógica de Programação e Algoritmos1
1.1. Lógica de Programação1
1.2. Desenvolvendo algoritmos12
1.2.1. Estudando algoritmos13
1.2.2. Teste de mesa15
2. Estruturas de programação16
2.1. Diagrama de bloco16
2.2. Estruturas de decisão e repetição19
2.2.1. Estruturas de decisão19
2.2.2. Estruturas de repetição2
MÓDULO 02: A linguagem ADVPL24
3. Estrutura de um Programa ADVPL26
3.1. Áreas de um Programa ADVPL28
4. Declaração e Atribuição de Variáveis31
4.1. Tipo de Dados31
4.2. Declaração de variáveis32
4.3. Escopo de variáveis3
4.4. Entendendo a influência do escopo das variáveis37
4.5. Operações com Variáveis38
4.5.1. Atribuição de variáveis38
4.5.2. Operadores da linguagem ADVPL39
4.5.3. Operação de Macro Substituição4
4.5.4. Funções de manipulação de variáveis45
5. Estruturas básicas de programação51
5.1. Estruturas de repetição51
5.1.1. Influenciando o fluxo de repetição54
5.2. Estruturas de decisão56
6. Arrays e Blocos de Código60
6.1. Arrays60
6.1.1. Inicializando arrays62
6.1.2. Funções de manipulação de arrays63
6.1.3. Cópia de arrays65
6.2. Listas de Expressões e Blocos de Código67
6.2.1. Premissas para utilização de Blocos de Código67
6.2.2. Lista de expressões68
6.2.3. Blocos de Código70
6.2.4. Funções para manipulação de blocos de código72
7. Funções73
7.1. Tipos e escopos de funções74

ESTRUTURA DO TREINAMENTO 7.2. Passagem de parâmetros entre funções ...................................................................................... 7

- 3 - ADVPL Completo

8. Diretivas de compilação83
MÓDULO 03: Desenvolvendo pequenas customizações8
9. ADVPL e o ERP Microsiga Protheus8
9.1. O Ambiente Protheus8
9.2. Organização e configuração inicial do ambiente Protheus92
9.3. O Configurador do Protheus98
9.3.1. Funcionalidades Abordadas98
9.3.2. Estruturas básicas da aplicação ERP Protheus98
9.3.3. Acessando o módulo Configurador101
9.4. Funcionalidades do Configurador104
9.4.1. Dicionário de Dados da aplicação ERP105
9.4.2. Adição de tabelas ao Dicionário de Dados105
9.4.3. Adição de campos as tabelas do Dicionário de Dados108
9.4.4. Adição de índices para as tabelas do Dicionário de Dados113
9.4.5. Adição de gatilhos para os campos das tabelas do sistema116
9.4.6. Criação de Tabelas Genéricas118
9.4.7. Criação de Parâmetros119
10. TOTVS Development Studio121
Desenvolvimento de pequenas customizações124
1. Acesso e manipulação de bases de dados em ADVPL124
1.1. Diferenças e compatibilizações entre bases de dados125
1.2. Funções de acesso e manipulação de dados126
1.3. Diferenciação entre variáveis e nomes de campos131
1.4. Controle de numeração seqüencial132
12. Customizações para a aplicação ERP133
12.1. Customização de campos – Dicionário de Dados134
12.1.1. Validações de campos e perguntas134
12.1.2. Pictures de formação disponíveis136
12.2. Customização de gatilhos – Configurador138
12.3. Customização de parâmetros – Configurador139
12.3.1. Funções para manipulação de parâmetros139
12.3.2. Cuidados na utilização de um parâmetro140
12.4. Pontos de Entrada – Conceitos, Premissas e Regras141
13. Interfaces visuais142
13.1. Sintaxe e componentes das interfaces visuais142
13.2. Interfaces padrões para atualizações de dados145
13.2.1. AxCadastro()145
13.2.2. MBrowse()146
13.2.3. AxFunctions()150
APÊNDICES152
BOAS PRÁTICAS DE PROGRAMAÇÃO152
14. Utilização de Identação152
15. Capitulação de Palavras-Chave153

15.1. Palavras em maiúsculo ............................................................................................................... 154

- 4 - ADVPL Completo

16. Utilização da Notação Húngara154
17. Palavras reservadas155
LISTAS DE EXERCÍCIOS156
Módulo 01: Introdução à programação156
Módulo 02: A linguagem ADVPL157
Módulo 03: Desenvolvendo pequenas customizações160
MÓDULO 04: Desenvolvendo aplicações em ADVPL162
18. A linguagem ADVPL162
19. Estrutura de um Programa ADVPL164
19.1. Áreas de um Programa ADVPL166
20. Declaração e Atribuição de Variáveis169
20.1. Tipo de Dados169
20.2. Declaração de variáveis170
20.3. Escopo de variáveis171
20.4. Entendendo a influência do escopo das variáveis175
21. Regras adicionais da linguagem ADVPL176
21.1. Palavras reservadas176
21.2. Pictures de formatação disponíveis177
2. Programas de Atualização178
2.1. Modelo1() ou AxCadastro()179
2.2. Modelo2()181
2.2.1. Componentes de uma tela no formato Modelo 2181
2.2.2. Estrutura de um programa utilizando a Modelo2()189
2.2.3. Função Modelo2()197
2.3. Modelo3()201
2.3.1. Estrutura de um programa utilizando a Modelo3()204
2.3.2. Função Modelo3()213
2.4. Mbrowse()217
2.4.1. AxFunctions()22
2.4.2. FilBrowse()24
2.4.3. EndFilBrw()24
2.4.4. PesqBrw()25
2.4.5. BrwLegenda ()25
2.5. MarkBrowse()29
23. Arquivos e Índices Temporários233
23.1. Utilização de arquivos e índices temporários233
23.2. Funções para manipulação de arquivos e índices temporários233
23.2.1. CriaTrab()233
23.2.2. dbUseArea()234
23.2.3. IndRegua()234
24. Relatórios não gráficos238
24.1.1. Estrutura de relatórios baseados na SetPrint()238

25. Manipulação de arquivos I ................................................................................................................................... 248

- 5 - ADVPL Completo

25.1. Geração e leitura de arquivos em formato texto248
1ª. Família de funções de gravação e leitura de arquivos texto249
2ª. Família de funções de gravação e leitura de arquivos texto254
26. Oficina de programação I256
26.1. Interfaces com sintaxe clássica256
26.2. Réguas de processamento259
26.2.1. RptStatus()259
SETREGUA()261
INCREGUA()262
26.2.2. Processa()263
SETPROC()265
INCPROC()265
26.2.3. MsNewProcess()266
26.2.4. MsAguarde()268
26.2.5. MsgRun()270
26.3. ListBox()271
26.3.1. ListBox simples271
26.3.2. ListBox múltiplas colunas274
26.4. ScrollBox()276
26.5. ParamBox()280
MÓDULO 05: Introdução a orientação à objetos285
27. Conceitos de orientação à objetos285
27.1. Definições285
27.2. Conceitos Básicos288
27.3. O Modelo de Objetos (OMT)289
27.3.1. Objetos e Classes289
27.3.2. Atributos290
27.3.3. Operações e Métodos291
27.3.4. Sugestões de desenvolvimento292
28. Orientação a objetos em ADVPL293
28.1. Sintaxe e operadores para orientação a objetos293
28.2. Estrutura de uma classe de objetos em ADVPL295
28.3. Implementação dos métodos de uma classe em ADVPL296
MÓDULO 06: ADVPL Orientado à objetos I300
29. Componentes da interface visual do ADVPL300
29.1. Particularidades dos componentes visuais307
29.1.1. Configurando as cores para os componentes307
30. Aplicações com a interface visual do ADVPL309
30.1. Captura de informações simples (Multi-Gets)309
30.1.1. Enchoice()310
30.1.2. MsMGet()312
30.2. Captura de múltiplas informações (Multi-Lines)314
30.2.1. MsGetDB()315
30.2.2. MsGetDados()319
30.2.3. MsNewGetDados()323

30.2.3.1. Definindo cores personalizadas para o objeto MsNewGetDados() ............................................... 328

- 6 - ADVPL Completo

30.3. Barras de botões3
30.3.1. EnchoiceBar()3
30.3.2. TBar()335
30.3.3. ButtonBar336
30.3.4. Imagens pré-definidas para as barras de botões339
APÊNDICES340
BOAS PRÁTICAS DE PROGRAMAÇÃO340
31. Arredondamento340
32. Utilização de Identação340
3. Capitulação de Palavras-Chave342
3.1. Palavras em maiúsculo342
34. Utilização da Notação Húngara343
35. Técnicas de programação eficiente343
LISTAS DE EXERCÍCIOS353
Módulo 04.1.: Desenvolvendo aplicações em ADVPL353
Módulo 04.2.: Oficina de Programação I358
Módulo 05: Introdução a orientação à objetos360
Módulo 06: ADVPL orientado à objetos I361
Projeto: Avaliação prática do treinamento de ADVPL Intermediário363
MÓDULO 07: ADVPL Orientado à objetos I364
36. Componentes da interface visual do ADVPL364
TSRVOBJECT()366
TFONT()369
MSDIALOG()370
TDIALOG()371
TWINDOW()374
TCONTROL()377
BRGETDDB()378
MSCALEND()381
MSCALENDGRID()383
MSSELBR()385
MSWORKTIME()388
SBUTTON()391
TBAR()393
TBITMAP()395
TBROWSEBUTTON()397
TBTNBMP()399
TBTNBMP2()401
TBUTTON()403
TCBROWSE()405
TCHECKBOX()409
TCOLORTRIANGLE()411
TCOMBOBOX()413
TFOLDER()416
TGET()418
TGROUP()420
THBUTTON()422
TIBROWSER()423
TLISTBOX()425

- 7 - ADVPL Completo

TMENUBAR()430
TMETER()431
TMSGRAPHIC()434
TMSGBAR()440
TMSGITEM()442
TMULTIBTN()443
TMULTIGET()446
TOLECONTAINER()448
TPAGEVIEW()450
TPANEL()452
TRADMENU()453
TSBROWSE()457
TSAY()461
TSCROLLBOX()463
TSIMPLEEDITOR()464
TSLIDER()469
TSPLITTER()472
TTABS()476
TTOOLBOX()478
TWBROWSE()481
VCBROWSE()485
36.1. Particularidades dos componentes visuais491
36.1.1. Configurando as cores para os componentes491
37. Aplicações com a interface visual do ADVPL493
37.1. Captura de informações simples (Multi-Gets)493
37.1.1. Enchoice()494
37.1.2. MsMGet()496
37.2. Captura de múltiplas informações (Multi-Lines)498
37.2.1. MsGetDB()499
37.2.2. MsGetDados()503
37.2.3. MsNewGetDados()507
37.2.3.1. Definindo cores personalizadas para o objeto MsNewGetDados()512
37.3. Barras de botões517
37.3.1. EnchoiceBar()517
37.3.2. TBar()519
37.3.3. ButtonBar520
37.3.4. Imagens pré-definidas para as barras de botões523
38. Outras aplicações da interface visual do ADVPL524
38.1. MaWndBrowse()524
38.1.1. Enchoice para Arquivos Temporários527
38.2. DbTree()537
38.3. MsSelect()542
39. Introdução à relatórios gráficos545
39.1. TReport()545
39.1.1. Introdução545
Finalidade545
Descrição546
Pré-Requisitos546
39.1.2. Impressão do relatório personalizável547
39.1.2.1. Parâmetros de impressão547
Impressão547
Arquivo547

- 8 - ADVPL Completo

E-mail548
Papel549
Tamanho do papel549
Formato da impressão549
Configurações549
Título549
Ordem549
Layout549
Preview549
Executar em segundo plano550
39.1.3. Personalização550
39.1.3.1. Editando o layout do relatório550
Nova estrutura do relatório TReport:551
39.1.4. Definindo a Função ReportDef()551
DEFINE REPORT552
DEFINE SECTION552
DEFINE CELL552
MÓDULO 08: Aplicações ADVPL para o ERP553
40. Protheus e o TOPCONNECT / TOTVS DbAccess553
40.1. Características técnicas com o uso do TOTVS DbAccess554
Comportamento de Queries – Colunas Calculadas554
Comportamento diferenciado com Bandos de Dados PostGres556
Conceito de Índices Permanentes e Diferenças das RDDs557
Funcionamento Interno557
Quebra de Compatibilidade com CodeBase/DBF558
Lista dos códigos de erro do TOPConnect / DbAccess559
40.2. Funções ADVPL para TOPCONNECT / TOTVS DbAccess560
Lista das funções de interação com a aplicação TopConnect / DbAccess:560
Lista das funções acessórias utilizadas nos fontes como facilitadoras:560
Funções de interação com o TopConnect / DbAccess561
TCCANOPEN ()561
TCCONTYPE()561
TCDELFILE()562
TCGENQRY()563
TCGETDB()563
TCLINK()564
TCQUERY()566
TCQUIT()567
TCSETCONN()567
TCSETFIELD()568
TCSPEXEC()570
TCSPEXIST()572
TCSQLERROR()572
TCSQLEXEC()573
TCSRVTYPE()573
TCUNLINK()574
TCCHKOBJ()575
TCEXEERROR()575
TCPGMEXE()576
TCSYSEXE()576
Funções acessórias para uso em fontes com interação com o TOTVS DbAccess577
CHANGEQUERY()577
RETFULLNAME()578
RETSQLCOND()579
RETSQLNAME()579
RETSQLTABLE()580

- 9 - ADVPL Completo

SQLORDER()581
SQLTOTRB()582
40.3. Aplicações com controle de comunição com o Banco de Dados583
40.3.1. MaWndBrowse com Alias Temporário gerado por Query583
Exemplo: MaWndBrowse com Alias Temporário gerado por Query584
40.3.2. Banco de dados de interface595
Considerações relevantes sobre as funções TCLink() e TCSetConn()595
Considerações complementares sobre o conceito de Banco de Dados de Interface596
40.4. Embedded SQL – Facilitador de Query’s598
Disponibilidade do Recurso598
Características operacionais - Sintaxe599
Limitação:599
Erros de Compilação600
Erros de Execução600
Características operacionais - depuração601
Função auxiliar - GETLastQuery()601
41. Funcionalidade MsExecAuto603
Sobre a MsExecAuto e Rotinas Automáticas603
Quando utilizar a funcionalidade MsExecAuto ?604
Processos da aplicação ERP com tratamentos para execução por MsExecAuto604
Quando não utilizar a funcionalidade MsExecAuto605
41.1. Desenvolvendo aplicações com MsExecAuto606
Estrutura de uma rotina com execução de MsExecAuto606
Variáveis de controle606
Montagem dos arrays de parâmetros606
Definição dos parâmetros específicos da rotina que será executada610
Controle de transação611
Tratamento de mensagens de erro613
Aplicação completa de importação utilizando MsExecAuto: Carga de imobilizado616
42. Recursos de envio de e-mail629
Funções para manipulação de e-mails629
Detalhamento das funções de manipulação de e-mails629
CALLPROC()629
MAILSMTPON()630
MAILPOPON()630
MAILSMTPOFF()631
MAILPOPOFF()631
MAILRECEIVE()632
MAILAUTH()633
POPMSGCOUNT()634
MAILSEND()634
MAILGETERR()635
Exemplos de utilização das funcionalidades de envio e recebimento de e-mail635
Envio de mensagens utilizando sintaxe clássica635
Envio de mensagens utilizando funções638
Recebimento de mensagens utilizando funções641
43. Integração básica com MsOffice643
43.1. Exportação para EXCEL643
DLGTOEXCEL()643
Exemplo de exportação para o Microsoft Excel utilizando a função DlgToExcel()644
APÊNDICES646
Relação de imagens para aplicações visuais646

LISTAS DE EXERCÍCIOS ........................................................................................................................................... 654

- 10 - ADVPL Completo

Projeto: Avaliação prática do treinamento de ADVPL Avançado659

REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................................................................... 660

- 1 - ADVPL Completo

MÓDULO 01: Introdução à programação

1. Lógica de Programação e Algoritmos

No aprendizado de qualquer linguagem de programação é essencial desenvolver os conceitos relacionados a lógica e a técnica da escrita de um programa.

Com foco nesta necessidade, este tópico irá descrever resumidamente os conceitos envolvidos no processo de desenvolvimento de um programa através dos conceitos relacionados à:

Lógica de programação Algoritmos

Diagramas de blocos

1.1. Lógica de Programação

Lógica

A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica para o desenvolvimento. Então o que é lógica?

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

Seqüência Lógica

Estes pensamentos, podem ser descritos como uma seqüência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa.

Seqüência Lógica são passos executados até atingir um objetivo ou solução de um problema.

Instruções

Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para a realização ou emprego de algo”.

Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem seqüencial lógica.

Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc. É evidente que essas instruções têm que ser executadas em uma ordem adequada – não se 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.

- 12 - ADVPL Completo

Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar.

Algoritmo

Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas.

Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais de aparelhos eletrônicos, como um videocassete, que explicam passo-a-passo como, por exemplo, gravar um evento.

Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas, tais como:

“Chupar uma bala” 1. Pegar a bala; 2. Retirar o papel; 3. Chupar a bala; 4. Jogar o papel no lixo.

“Somar dois números quaisquer” 1. Escreva o primeiro número no retângulo A; 2. Escreva o segundo número no retângulo B; 3. Some o número do retângulo A com número do retângulo B e coloque o resultado no retângulo C.

1.2. Desenvolvendo algoritmos

Pseudocódigo

Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação em uma linguagem de programação, ou seja, quando for utilizada a linguagem a de programação propriamente dita como, por exemplo, ADVPL.

Por isso os algoritmos são independentes das linguagens de programação, sendo que ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo.

O algoritmo deve ser fácil de interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação.

- 13 - ADVPL Completo

Regras para construção do Algoritmo

Para escrever um algoritmo precisamos descrever a seqüência de instruções, de maneira simples e objetiva. Para isso utilizaremos algumas técnicas:

1. Usar somente um verbo por frase; 2. Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática; 3. Usar frases curtas e simples; 4. Ser objetivo; 5. Procurar usar palavras que não tenham sentido dúbio.

Fases

Para implementar de um algoritmo de simples interpretação e codificação é necessário inicialmente dividir o problema apresentado em três fases fundamentais, as quais são:

ENTRADA: São os dados de entrada do algoritmo; PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final;

SAÍDA: São os dados já processados.

1.2.1. Estudando algoritmos

Neste tópico serão demonstrados alguns algoritmos do cotidiano, os quais foram implementados utilizando os princípios descritos nos tópicos anteriores.

Mascar um chiclete Utilizar um telefone público – cartão

Fritar um ovo

Trocar lâmpadas

Descascar batatas

Jogar o jogo da forca

Calcular a média de notas

Jogar o jogo da velha – contra o algoritmo

Mascar um chiclete

1. Pegar o chiclete 2. Retirar o papel 3. Mastigar 4. Jogar o papel no lixo

Utilizar um telefone público - cartão

1. Retirar o telefone do gancho 2. Esperar o sinal 3. Colocar o cartão 4. Discar o número 5. Falar no telefone 6. Colocar o telefone no ganho

- 14 - ADVPL Completo

Fritar um ovo

1. Pegar frigideira, ovo, óleo e sal 2. Colocar óleo na frigideira 3. Ascender o fogo 4. Colocar a frigideira no fogo 5. Esperar o óleo esquentar 6. Quebrar o ovo na frigideira 7. Jogar a casca no lixo 8. Retirar a frigideira do fogo quando o ovo estiver no ponto 9. Desligar o fogo 10. Colocar sal a gosto

Trocar lâmpadas

1. Se a lâmpada estiver fora do alcance, pegar uma escada 2. Pegar a lâmpada nova 3. Se a lâmpada queimada estiver quente, pegar um pano 4. Tirar lâmpada queimada 5. Colocar lâmpada nova

Descascar batatas

1. Pegar faca, bacia e batatas 2. Colocar água na bacia 3. Enquanto houver batatas, descascar as batatas 3.1. Colocar as batatas descascadas na bacia

Jogar o jogo da forca

1. Escolher a palavra 2. Montar o diagrama do jogo 3. Enquanto houver lacunas vazias e o corpo estiver incompleto: 3.1. Se acertar a letra: escrever na lacuna correspondente 3.2. Se errar a letra: desenhar uma parte do corpo na forca

Calcular a média de notas

1. Enquanto houver notas a serem recebidas: 1.1. Receber a nota;

2. Some todas as notas recebidas; 3. Divida o total obtido pela quantidade de notas recebidas; 4. Exiba a média das notas.

Jogar o jogo da velha – contra o algoritmo

1. Enquanto existir um quadrado livre e ninguém ganhou ou perdeu o jogo: 1.1. Espere a jogada do adversário, continue depois 1.2. Se centro estiver livre: jogue no centro 1.3. Senão, se o adversário possuir 2 quadrados em linha com um quadrado livre, jogue neste quadrado 1.4. Senão, se há algum canto livre, jogue neste canto

- 15 - ADVPL Completo

1.2.2. Teste de mesa

Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é chamado de TESTE DE MESA, que significa seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não.

Para avaliar a aplicação do teste de mesa, utilizaremos o algoritmo de calcular a média de notas:

Algoritmo: Calcular a média de notas

1. Enquanto houver notas a serem recebidas: a. Receber a nota;

2. Some todas as notas recebidas; 3. Divida o total obtido pela quantidade de notas recebidas; 4. Exiba a média das notas.

Teste de mesa:

1. Para cada nota informada, receber e registrar na tabela abaixo: ID Nota

2. Ao término das notas, a tabela deverá conter todas as notas informadas, como abaixo:

3. Somar todas as notas: 45 4. Dividir a soma das notas, pelo total de notas informado: 45/6 7.5 5. Exibir a média obtida: Mensagem(Média: 7.5)

- 16 - ADVPL Completo

2. Estruturas de programação

2.1. Diagrama de bloco

O diagrama de blocos é uma forma padronizada e eficaz para representar os passos lógicos de um determinado processamento.

Com o diagrama podemos definir uma seqüência de símbolos, com significado bem definido, 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 quadro abaixo estão representados alguns dos símbolos mais utilizados:

Símbolo Função

Terminador Indica o início e o fim de um processamento.

Processamento Processamento em geral.

Entrada Manual

Indica a entrada de dados através do teclado.

Decisão

Indica um ponto no qual deverá ser efetuada uma escolha entre duas situações possíveis.

Exibição

Mostra os resultados obtidos com um processamento.

Documento

Indica um documento utilizado pelo processamento, seja para entrada de informações ou para exibição dos dados disponíveis após um processamento.

Cada símbolo irá conter uma descrição pertinente a forma com o qual o mesmo foi utilizado no fluxo, indicando o processamento ou a informação que o mesmo representa.

- 17 - ADVPL Completo

Representação de algoritmos através de diagramas de bloco

Algoritmo 01: Fritar um ovo

1. Pegar frigideira, ovo, óleo e sal 2. Colocar óleo na frigideira 3. Ascender o fogo 4. Colocar a frigideira no fogo 5. Esperar o óleo esquentar 6. Quebrar o ovo na frigideira 7. Jogar a casca no lixo 8. Retirar a frigideira do fogo quando o ovo estiver no ponto 9. Desligar o fogo 10. Colocar sal a gosto

- 18 - ADVPL Completo

Algoritmo 02: Calcular a média de notas

1. Enquanto houver notas a serem recebidas: a. Receber a nota;

2. Some todas as notas recebidas; 3. Divida o total obtido pela quantidade de notas recebidas; 4. Exiba a média das notas.

- 19 - ADVPL Completo

2.2. Estruturas de decisão e repetição

A utilização de estruturas de decisão e repetição em um algoritmo permite a realização de ações relacionadas a situações que influenciam na execução e solução do problema.

Como foco na utilização da linguagem ADVPL serão ilustradas as seguintes estruturas:

o DO CASECASE

Estruturas de decisão o IF...ELSE

Estruturas de repetição o WHILE...END o FOR...NEXT

2.2.1. Estruturas de decisão

Os comandos de decisão são utilizados em algoritmos cuja solução não é obtida através da utilização de ações meramente seqüenciais, permitindo que este avalie as condições necessárias para optar por uma ou outra maneira de continuar seu fluxo.

As estruturas de decisão que serão analisadas são:

 DO CASECASE

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.

Representação 01: IF...ELSE com ações para ambas as situações

Ação vinculada ao resultado verdadeiro

Análise da condição Verdadeiro Falso

Ações anteriores ...

Continuação do fluxo após a tomada da decisão

Ação vinculada ao resultado falso

- 20 - ADVPL Completo

Esta estrutura permite ainda que seja executada apenas uma ação, na situação em que a a análise da condição resultar em um valor verdadeiro.

Representação 02: IF...ELSE somente com ação para situação verdadeira

Ação vinculada ao resultado verdadeiro

Análise da condição

Verdadeiro

Falso

Ações anteriores ...

Continuação do fluxo após a tomada da decisão

Apesar das linguagens de programação possuírem variações para a estrutura IF...ELSE, conceitualmente todas as representações podem ser descritas com base no modelo apresentado.

A linguagem ADVPL possui uma variação para a estrutura IF...ELSE, descrita como IF...ELSEIF...ELSE.

Com esta estrutura é possível realizar a análise de diversas condições em seqüência, para as quais será avaliada somente a ação da primeira expressão cujo análise resultar em um valor verdadeiro.

- 21 - ADVPL Completo

A estrutura DO CASE...ENDCASE (Caso) permite a análise de diversas condições consecutivas, para as quais somente a condição a primeira condição verdadeira será sua ação vinculada executada.

O recurso de análise de múltiplas condições é necessário para solução de problemas mais complexos, nos quais as possibilidades de solução superam a mera análise de um único resultado verdadeiro ou falso.

Análise da condição 1

Verdadeiro

Falso

Ações anteriores ...

Continuação do fluxo após a tomada da decisão

Ação vinculada a condição 1

Análise da condição 2

VerdadeiroAção vinculada a condição 2

Análise da condição N

VerdadeiroAção vinculada a condição N

Falso Falso

Falso

Apesar das linguagens de programação possuírem variações para a estrutura DO CASE...CASE, conceitualmente todas as representações podem ser descritas com base no modelo apresentado.

- 2 - ADVPL Completo

2.2.2. Estruturas de repetição

Os comandos de repetição são utilizados em algoritmos nas situações em que é necessário realizar uma determinada ação ou um conjunto de ações para um número definido ou indefinido de vezes, ou ainda enquanto uma determinada condição for verdadeira.

As estruturas de decisão que serão analisadas são:

Nesta estrutura, o conjunto de ações será executado enquanto a análise de uma condição de referência resultar em um valor verdadeiro. É importante verificar que o bloco somente será executado, inclusive se na primeira análise a condição resultar em um valor verdadeiro.

Representação: WHILE...END

Ação vinculada ao resultado verdadeiro

Análise da condição

Verdadeiro

Falso

Ações anteriores ...

Continuação do fluxo ...

Loop

Existem diversas variações para a estrutura WHILE...END, na qual há a possibilidade da primeira execução ser realizada sem a análise da condição, a qual valerá apenas a partir da segunda execução.

A linguagem ADVPL aceita a sintaxe DO WHILE...ENDDO, que em outras linguagens representa a situação descrita anteriormente (análise da condição somente a partir da segunda execução), mas em ADVPL esta sintaxe tem o mesmo efeito do WHILE...END.

- 23 - ADVPL Completo

Nesta estrutura, o conjunto de ações será executado uma quantidade de vezes definida, normalmente referenciada como “passo”.

Para cada “passo” realizado pela estrutura FOR...TO...NEXT, será avaliada uma condição que verificará se foi atingido o número de execuções previamente definido. Desta forma a estrutura compreende um controle de número de “passos” executados, o qual é incrementado na análise da expressão NEXT.

(Parte 1 de 5)

Comentários