Programação ADVPL1 P10 2009

Embed Size (px)

Citation preview

Todos os direitos reservados.0800 709 8100 totvs.com A AD DV VP PL L 1 1 Pgina 2 ADVPL 1 OBJETIVOS DO CURSO.......................................................................................6 MDULO 01: INTRODUO PROGRAMAO..............................................7 1.LGICA DE PROGRAMAO E ALGORITMOS ...........................................7 1.1.Lgica de Programao ........................................................................7 1.2.Desenvolvendo algoritmos ...................................................................9 1.2.1. Estudando algoritmos ................................................................................................................................ 10 1.2.2. Teste de mesa.............................................................................................................................................. 13 2.ESTRUTURAS DE PROGRAMAO...........................................................15 2.1.Diagrama de bloco .............................................................................15 2.2.Estruturas de deciso e repetio........................................................20 2.2.1. Estruturas de deciso ................................................................................................................................. 20 2.2.2. Estruturas de repetio .............................................................................................................................. 25 MDULO 02: A LINGUAGEM ADVPL ...............................................................29 3.ESTRUTURA DE UM PROGRAMA ADVPL.................................................32 3.1.reas de um Programa ADVPL............................................................36 4.DECLARAO E ATRIBUIO DE VARIVEIS ..........................................42 4.1.Tipo de Dados ....................................................................................42 4.2.Declarao de variveis.......................................................................44 4.3.Escopo de variveis.............................................................................46 4.4.Entendendo a influncia do escopo das variveis................................55 4.5.Operaes com Variveis ....................................................................57 4.5.1. Atribuio de variveis ............................................................................................................................... 57 4.5.2. Operadores da linguagem ADVPL............................................................................................................ 59 4.5.3. Operao de Macro Substituio ............................................................................................................. 69 4.5.4. Funes de manipulao de variveis...................................................................................................... 71 5.ESTRUTURAS BSICAS DE PROGRAMAO...........................................80 5.1.Estruturas de repetio .......................................................................80 5.1.1. Influenciando o fluxo de repetio........................................................................................................... 85 5.2.Estruturas de deciso..........................................................................87 Ttulo ADVPL 1 Pgina 3 6.ARRAYS E BLOCOS DE CDIGO............................................................... 96 6.1.Arrays ................................................................................................. 96 6.1.1.Inicializando arrays ..................................................................................................................... 100 6.1.2.Funes de manipulao de arrays.......................................................................................... 103 6.1.3.Cpia de arrays ........................................................................................................................... 106 6.2.Listas de Expresses e Blocos de Cdigo .......................................... 110 6.2.1.Premissas para utilizao de Blocos de Cdigo ..................................................................... 110 6.2.2.Lista de expresses..................................................................................................................... 112 6.2.3.Blocos de Cdigo........................................................................................................................ 116 6.2.4.Funes para manipulao de blocos de cdigo................................................................... 119 7.FUNES................................................................................................. 121 7.1.Tipos e escopos de funes .............................................................. 123 7.2.Passagem de parmetros entre funes............................................ 128 8.DIRETIVAS DE COMPILAO................................................................. 138 MDULO 03: DESENVOLVENDO PEQUENAS CUSTOMIZAES.................. 151 9.ADVPL E O ERP MICROSIGA PROTHEUS ............................................... 151 9.1.O Ambiente Protheus ....................................................................... 152 9.2.Organizao e configurao inicial do ambiente Protheus ................ 157 9.3.O Configurador do Protheus............................................................. 166 9.3.1.Funcionalidades Abordadas...................................................................................................... 166 9.3.2.Estruturas bsicas da aplicao ERP Protheus ........................................................................ 166 9.3.3.Acessando o mdulo Configurador ......................................................................................... 174 9.4.Funcionalidades do Configurador ..................................................... 176 9.4.1.Dicionrio de Dados da aplicao ERP .................................................................................... 178 9.4.2.Adio de tabelas ao Dicionrio de Dados ............................................................................. 179 9.4.3.Adio de campos s tabelas do Dicionrio de Dados ......................................................... 183 9.4.4.Adio de ndices para as tabelas do Dicionrio de Dados .................................................. 190 9.4.5.Adio de gatilhos para os campos das tabelas do Sistema................................................ 195 9.4.6.Criao de Tabelas Genricas ................................................................................................... 199 9.4.7.Criao de Parmetros............................................................................................................... 201 10.TOTVS DEVELOPMENT STUDIO............................................................. 203 DESENVOLVIMENTO DE PEQUENAS CUSTOMIZAES................................ 207 11.ACESSO E MANIPULAO DE BASES DE DADOS EM ADVPL ............... 207 11.1.Diferenas e compatibilizaes entre bases de dados ....................... 209 11.2.Funes de acesso e manipulao de dados .................................... 211 Pgina 4 ADVPL 1 11.3.Diferenciao entre variveis e os nomes de campos........................ 219 11.4.Controle de numerao sequencial................................................... 221 12.CUSTOMIZAES PARA A APLICAO ERP ......................................... 223 12.1.Customizao de campos Dicionrio de Dados.............................. 223 12.1.1.Validaes de campos e perguntas..................................................................................... 224 12.1.2.Pictures de formao disponveis ........................................................................................ 227 12.2.Customizao de gatilhos Configurador......................................... 231 12.3.Customizao de parmetros Configurador ................................... 232 12.3.1.Funes para a manipulao de parmetros ..................................................................... 233 12.3.2.Cuidados na utilizao de um parmetro........................................................................... 235 12.4.Pontos de Entrada Conceitos, Premissas e Regras .......................... 236 13.INTERFACES VISUAIS ............................................................................. 238 13.1.Sintaxe e componentes das interfaces visuais ................................... 238 13.2.Interfaces padres para atualizaes de dados ................................. 242 13.2.1.AxCadastro() ........................................................................................................................... 242 13.2.2.MBrowse() ............................................................................................................................... 244 13.2.3.AxFunctions() .......................................................................................................................... 250 APNDICES ..................................................................................................... 254 BOAS PRTICAS DE PROGRAMAO........................................................... 254 14.UTILIZAO DEIDENTAO................................................................ 254 15.CAPITULAO DE PALAVRAS-CHAVE................................................... 256 15.1.Palavras em maisculo...................................................................... 257 16.UTILIZAO DA NOTAO HNGARA................................................. 257 17.PALAVRAS RESERVADAS ....................................................................... 259 GUIA DE REFERNCIA RPIDA: Funes e Comandos ADVPL ..................... 261 Converso entre tipos de dados ................................................................... 261 Verificao de tipos de variveis ................................................................... 267 Manipulao de arrays.................................................................................. 270 Manipulao de blocos de cdigo................................................................ 282 Manipulao de strings ................................................................................ 287 Ttulo ADVPL 1 Pgina 5 Manipulao de variveis numricas............................................................. 294 Manipulao de arquivos.............................................................................. 299 Controle de numerao sequencial............................................................... 319 Validao...................................................................................................... 320 Parmetros ................................................................................................... 323 Componentes da interface visual .................................................................. 327 Interfaces de cadastro .................................................................................. 333 Funes visuais para aplicaes.................................................................... 340 Funes ADVPL para aplicaes.................................................................... 345 REFERNCIAS BIBLIOGRFICAS .................................................................... 347 Pgina 6 ADVPL 1 OBJETIVOS DO CURSO Objetivos especficos do curso: Aofinaldocursootreinandodeverterdesenvolvidoosseguintesconceitos,habilidadese atitudes: a) Conceitos a serem aprendidos Fundamentos e tcnicas de programao; Princpios bsicos da linguagem ADVPL; Comandos e funes especficas da Microsiga. b) Habilidades e tcnicas a serem aprendidas Resoluo de algoritmos atravs de sintaxes orientadas a linguagem ADVPL; Anlise de fontes de baixa complexidade da aplicao ERP Protheus; Desenvolvimento de pequenas customizaes para o ERP Protheus. c) Atitudes a serem desenvolvidas Adquirir conhecimentos atravs da anlise das funcionalidades disponveis no ERP Protheus; Embasar a realizao de outros cursos relativos linguagem ADVPL. Ttulo ADVPL 1 Pgina 7 MDULO 01: INTRODUO PROGRAMAO 1.LGICA DE PROGRAMAO E ALGORITMOS Noaprendizadodequalquerlinguagemdeprogramaoessencialdesenvolveros conceitos relacionados lgica e tcnica da escrita de um programa. Com foco nesta necessidade, este tpico descrever resumidamente os conceitos envolvidos no processo de desenvolvimento de um programa, atravs dos conceitos relacionados a: ELgica de programao EAlgoritmos EDiagramas de blocos 1 1. .1 1. . L L g gi ic ca a d de e P Pr ro og gr ra am ma a o o Lgica Algicadeprogramaonecessriaparapessoasquedesejamtrabalharcom desenvolvimentodesistemaseprogramas.Elapermitedefinirasequncialgicaparao desenvolvimento. Ento o que lgica? Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo. Sequncia Lgica Estes pensamentos podem ser descritos como uma sequncia de instrues, que devem ser seguidas para que seja cumprida determinada tarefa. Pgina 8 ADVPL 1 SequnciaLgicasopassosexecutadosatatingirumobjetivo,ousoluodeum problema. Instrues Na linguagem comum entende-se por instrues como um conjunto de regras, ou normas definidasparaarealizao,ouempregodealgo.Eminformtica,porm,instruoa informaoqueindicaaumcomputadorumaaoelementaraexecutar.Convmressaltar que uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto de instrues colocadas em ordem seqencial lgica. Porexemplo,sequisermosfazerumaomeletedebatatas,precisaremoscolocaremprtica uma srie de instrues:descascar as batatas, bater osovos, fritar as batatas, etc. evidente queessasinstruesdevemserexecutadasemumaordemadequadanosepodem descascar as batatas depois de frit-las. Dessa maneira, uma instruo tomada isoladamente no tem muito sentido para obtermos o resultado.Precisamoscolocaremprticaoconjuntodetodasasinstrues,enaordem correta. Instrues um conjunto de regras, ou normas definidas para a realizao ou emprego dealgo.Eminformtica,oqueindicaaumcomputadorumaaoelementara executar. Algoritmo Um algoritmo formalmente umasequncia finita de passos que levam execuodeuma tarefa.Podemospensaremalgoritmocomoumareceita,umasequnciadeinstruesque docabodeumametaespecfica.Estastarefasnopodemserredundantesnemsubjetivas na sua definio, devem ser claras e precisas. Comoexemplosdealgoritmospossvelcitarosalgoritmosdasoperaesbsicas(adio, multiplicao,divisoesubtrao)denmerosreaisdecimais.Outrosexemplosseriamos Ttulo ADVPL 1 Pgina 9 manuais de aparelhos eletrnicos que explicam passo-a-passo como, por exemplo, gravar um evento. At mesmo as coisas mais simples podem ser descritas por sequncias lgicas, tais como: EChupar uma bala 1.Pegar a bala; 2.Retirar o papel; 3.Chupar a bala; 4.Jogar o papel no lixo. ESomar dois nmeros quaisquer 1.Escreva o primeiro nmero no retngulo A; 2.Escreva o segundo nmero no retngulo B; 3.SomeonmerodoretnguloAcomnmerodoretnguloBecoloqueo resultado no retngulo C. 1 1. .2 2. . D De es se en nv vo ol lv ve en nd do o a al lg go or ri it tm mo os s Pseudocdigo Osalgoritmossodescritosemumalinguagemchamadapseudocdigo.Estenomeuma alusoposteriorimplementaoemumalinguagemdeprogramao,ouseja,quandofor utilizada a linguagem de programao propriamente dita como, por exemplo, ADVPL. Porissoosalgoritmossoindependentesdaslinguagensdeprogramao,sendoqueao contrrio de uma linguagem de programao, no existe um formalismo rgido de como deve ser escrito o algoritmo. Oalgoritmodeveserfcildeinterpretarefcildecodificar.Ouseja,eledevesero intermedirio entre a linguagem falada e a linguagem de programao. Pgina 10 ADVPL 1 Regras para a construo do Algoritmo Paraescreverumalgoritmoprecisamosdescreverasequnciadeinstrues,demaneira simples e objetiva. Para isso utilizaremos algumas tcnicas: 1.Usar somente um verbo por frase; 2.Imaginar que voc est desenvolvendo um algoritmo para pessoas que no trabalham com Informtica; 3.Usar frases curtas e simples; 4.Ser objetivo; 5.Procurar usar palavras que no tenham duplo sentido. Fases Paraimplementarumalgoritmodesimplesinterpretaoecodificaonecessrio inicialmente dividir o problema apresentado em trs fases fundamentais: EENTRADA: so os dados de entrada do algoritmo; EPROCESSAMENTO: so os procedimentos utilizados para chegar ao resultado final; ESADA: so os dados j processados. 111...222...111...EEEssstttuuudddaaannndddooo aaalllgggooorrriiitttmmmooosss Neste tpico sero demonstrados alguns algoritmos do cotidiano que foram implementados utilizando os princpios descritos nos tpicos anteriores. Mascar um chiclete Utilizar um telefone pblico carto Fritar um ovo Trocar lmpadas Descascar batatas Jogar o jogo da forca Calcular a mdia de notas Jogar o jogo da velha contra o algoritmo Ttulo ADVPL 1 Pgina 11 Mascar um chiclete 1.Pegar o chiclete. 2.Retirar o papel. 3.Mastigar. 4.Jogar o papel no lixo. Utilizar um telefone pblico - carto 1.Retirar o telefone do gancho. 2.Esperar o sinal. 3.Colocar o carto. 4.Discar o nmero. 5.Falar no telefone. 6.Colocar o telefone no gancho. 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 lmpadas 1.Se a lmpada estiver fora do alcance, pegar uma escada. 2.Pegar a lmpada nova. 3.Se a lmpada queimada estiver quente, pegar um pano. 4.Tirar a lmpada queimada. 5.Colocar a lmpada nova. Pgina 12 ADVPL 1 Descascar batatas 1.Pegar faca, bacia e batatas. 2.Colocar a gua na bacia. 3.Descascar todas 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 mdia 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 mdia das notas. Jogar o jogo da velha contra o algoritmo 1.Enquanto existir um quadrado livre e ningum ganhou ou perdeu o jogo: 1.1.Espere a jogada do adversrio, continue depois. 1.2.Seo centro estiver livre: jogue no centro. 1.3.Seno,seoadversriopossuirdoisquadradosemlinhacomumquadrado livre jogue neste quadrado. 1.4.Seno, se h algum canto livre, jogue neste canto. Ttulo ADVPL 1 Pgina 13 111...222...222...TTTeeesssttteee dddeee mmmeeesssaaa Todo algoritmo desenvolvido, deve ser testado. Este teste chamado TESTE DE MESA, que significaseguirasinstruesdoalgoritmodemaneiraprecisaparaverificarseo procedimento utilizado est correto ou no. Paraavaliaraaplicaodotestedemesa,utilizaremosoalgoritmodecalcularamdiade notas: Algoritmo: Calcular a mdia 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 mdia das notas. Teste de mesa: 1. Para cada nota informada, receber e registrar na tabela abaixo: IDNota 2. Ao trmino das notas, a tabela dever conter todas as notas informadas, como abaixo: IDNota 18.0 27.0 38.0 Pgina 14 ADVPL 1 48.0 57.0 67.0 3. Some todas as notas: 45 4. Divida a soma das notas, pelo total de notas informado: 45/6 7.5 5. Exiba a mdia obtida: Mensagem (Mdia: 7.5) Exerccio 01 Vamosaprimorar os seguintes algoritmos descritos na apostila: 1)Usar telefone pblico carto. 2)Fritar um ovo. 3)Mascar um chiclete 4)Trocar lmpadas. 5)Descascar batatas. 6)Usar telefone pblico carto 7)Jogar o Jogo da Forca Ttulo ADVPL 1 Pgina 15 2.ESTRUTURAS DE PROGRAMAO 2 2. .1 1. . D Di ia ag gr ra am ma a d de e b bl lo oc co o Odiagramadeblocosumapadronizaoquerepresentaospassoslgicosdeum determinado processamento. Comodiagramadefinimosumasequnciadesmboloscomsignificadobemdefinido. Portanto, sua principal funo a de facilitar a visualizao dos passos de um processamento. Simbologia Existem diversos smbolos em um diagrama de bloco. No quadro abaixo esto representados alguns dos smbolos mais utilizados: SmboloFuno Terminador Indicaoincioeofimdeum processamento. Processamento Processamento em geral. Pgina 16 ADVPL 1 Entrada Manual Indica a entrada de dadosatravs do teclado. Deciso Indicaumpontonoqualdever serefetuadaumaescolhaentre duas situaes possveis. Exibio Mostra os resultados obtidos com um processamento. Documento Indicaumdocumentoutilizadopelo processamento,sejaparaentradade informaesouparaexibiodosdados disponveis aps um processamento. Cada smbolo ir conter uma descrio pertinente forma com o qualomesmofoiutilizadonofluxo,indicandooprocessamento ou a informao que o mesmo representa. Ttulo ADVPL 1 Pgina 17 Representao de algoritmos atravs de diagramas de bloco Algoritmo 01: Fritar um ovo 1. Pegar frigideira, ovo, leo e sal. 2. Colocar leo na frigideira. 3. Acender 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. Pgina 18 ADVPL 1 Ttulo ADVPL 1 Pgina 19 Algoritmo 02: Calcular a mdia 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 mdia das notas. Pgina 20 ADVPL 1 2 2. .2 2. . E Es st tr ru ut tu ur ra as s d de e d de ec ci is s o o e e r re ep pe et ti i o o Autilizaodeestruturasdedecisoerepetioemumalgoritmopermitearealizaode aes relacionadas s situaes que influenciam na execuo e na soluo do problema. Como foco na utilizao da linguagem ADVPL, sero ilustradas as seguintes estruturas: EEstruturas de deciso oIF...ELSE oDO CASE ... CASE EEstruturas de repetio oWHILE...END oFOR...NEXT 222...222...111...EEEssstttrrruuutttuuurrraaasss dddeee dddeeeccciiisssooo Oscomandosdedecisosoutilizadosemalgoritmoscujasoluonoobtidaatravsda utilizaodeaesmeramentesequenciais,permitindoqueestescomandosdedeciso avaliemascondiesnecessriasparaoptarporumaououtramaneiradecontinuarseu fluxo. As estruturas de deciso que sero analisadas so: EIF...ELSE EDO CASE ... CASE IF...ELSE AestruturaIF...ELSE(Se/Seno)permiteaanlisedeumacondioeapartirdaqualser executadaumadeduasaespossveis:Seaanlisedacondioresultaremumvalor verdadeiro ou, se a anlise da condio resultar em um valor falso. Representao 01: IF...ELSE com aes para ambas as situaes Ttulo ADVPL 1 Pgina 21 Estaestruturapermiteaindaquesejaexecutadaapenasumaao,nasituaoemquea anlise da condio resultar em um valor verdadeiro. Representao 02: IF...ELSE somente com ao para situao verdadeira Ao vinculada ao resultado verdadeiroAnlise da condioVerdadeiroFalsoAes anteriores...Continuao do fluxo aps a tomada da deciso Apesar das linguagens de programao possurem variaes para aestruturaIF...ELSE,conceitualmentetodasasrepresentaes podem ser descritas com base no modelo apresentado. Pgina 22 ADVPL 1 AlinguagemADVPLpossuiumavariaoparaaestrutura IF...ELSE, descrita como IF...ELSEIF...ELSE. Comestaestruturapossvelrealizaraanlisedediversas condies em sequncia,paraas quais ser avaliada somente a aodaprimeiraexpressocujoanliseresultaremumvalor verdadeiro. Ttulo ADVPL 1 Pgina 23 DO CASE...CASE A estrutura DO CASE...ENDCASE (Caso) permite a anlise de diversas condies consecutivas, paraasquaissomenteacondioparaaprimeiracondioverdadeirasersuaao vinculada e executada. Orecursodeanlisedemltiplascondiesnecessrioparasoluodeproblemasmais complexos,nosquaisaspossibilidadesdesoluosuperamameraanlisedeumnico resultado verdadeiro, ou falso. Anlise da condio 1VerdadeiroFalsoAes anteriores...Continuao do fluxo aps a tomada da decisoAo vinculada a condio 1Anlise da condio 2VerdadeiroAo vinculada a condio 2Anlise da condio NVerdadeiroAo vinculada a condio NFalsoFalsoFalso Pgina 24 ADVPL 1 Apesar das linguagens de programao possurem variaes para aestruturaDOCASE...CASE,conceitualmentetodasas representaespodemserdescritascombasenomodelo apresentado. Ttulo ADVPL 1 Pgina 25 222...222...222...EEEssstttrrruuutttuuurrraaasss dddeee rrreeepppeeetttiiiooo Oscomandosderepetiosoutilizadosemalgoritmosnassituaesemquenecessrio realizarumadeterminadaao,ouumconjuntodeaesparaumnmerodefinidoou indefinido de vezes, ou ainda enquanto uma determinada condio for verdadeira. As estruturas de deciso que sero analisadas so: EWHILE...END EFOR...TO...NEXT WHILE...END Nessaestrutura,oconjuntodeaesexecutadoenquantoaanlisedeumacondiode refernciaresultaremumvalorverdadeiro.importanteverificarqueoblocosomenteser executado, inclusive se na primeira anlise a condio resultar em um valor verdadeiro. Representao: WHILE...END Ao vinculada ao resultado verdadeiroAnlise da condioVerdadeiroFalsoAes anteriores...Continuao do fluxo...Loop Pgina 26 ADVPL 1 Existem diversas variaes para a estrutura WHILE...END, na qual existeapossibilidadedaprimeiraexecuoserrealizadasema anlisedacondio,aqualvalerapenasapartirdasegunda execuo. A linguagem ADVPL aceita a sintaxe DO WHILE...ENDDO que em outraslinguagensrepresentaasituaodescritaanteriormente (anlise da condio somente a partir da segunda execuo), mas em ADVPL esta sintaxe tem o mesmo efeito do WHILE...END. Ttulo ADVPL 1 Pgina 27 FOR...TO...NEXT Nessaestrutura,oconjuntodeaesexecutadoemumaquantidadedevezesdefinida, normalmente referenciada como passo. ParacadapassorealizadopelaestruturaFOR...TO...NEXT,avaliadaumacondioque verifica se foi atingido o nmero de execues previamente definido. Dessa forma, a estrutura compreendeumcontroledenmerodepassosexecutadoseincrementadonaanliseda expresso NEXT. SemelhanteaestruturaWHILE...END,aprimeiraaosomenteserrealizadamedianteum resultado verdadeiro na anlise da condio. Representao: FOR...TO...NEXT Pgina 28 ADVPL 1 AestruturaFOR...TO...NEXT,dependendodalinguagemde programao,permitearealizaodeumincrementosimplesa cadaexecuodainstruoNEXT,ouaadiodeoutrovalorao contadorquedeverespecificadodeacordocomasintaxeda linguagem. EmADVPLpodeserutilizadaainstruoSTEPSparaalteraro valor a ser adicionado no contador de passos a cada execuo da instruoNEXT,sendoqueestevalorpoderseratnegativo, viabilizando uma contagem decrescente. Exerccio 02 Vamosmontarosdiagramasdeblocosparaosalgoritmosdesenvolvidosno exerccio anterior:1. Usar telefone pblico carto. 2. Fritar um ovo. 3. Mascar um chiclete. 4. Trocar lmpadas. 5. Descascar batatas. 6. Jogar o Jogo da Forca Ttulo ADVPL 1 Pgina 29 MDULO 02: A LINGUAGEM ADVPL ALinguagemADVPLteveseuincioem1994,sendonaverdadeumaevoluonautilizao de linguagens no padro xBase pela Microsiga Software S.A. (Clipper, Visual Objects e depois FiveWin).ComacriaodatecnologiaProtheuseranecessriocriarumalinguagemque suportasse o padro xBase para a manuteno de todo o cdigo existente do sistema de ERP Siga Advanced. Foi ento criada a linguagem chamada Advanced Protheus Language. O ADVPL uma extenso do padro xBase de comandos e funes, operadores, estruturas de controledefluxoepalavrasreservadas,contandotambmcomfunesecomandos disponibilizadospelaMicrosigaqueatornaumalinguagemcompletaparaacriaode aplicaesERPprontasparaaInternet.Tambmumalinguagemorientadaaobjetose eventos,permitindoaoprogramadordesenvolveraplicaesvisuaisecriarsuasprprias classes de objetos. Quando compilados, todos os arquivos de cdigo tornam-se unidades de inteligncia bsicas, chamados APOs (de Advanced Protheus Objects). Tais APOs so mantidos em um repositrio ecarregadosdinamicamentepeloPROTHEUSServerparaaexecuo.Comonoexistea linkedio,ouuniofsicadocdigocompiladoaumdeterminadomduloouaplicao, funes criadas em ADVPL podem ser executadas em qualquer ponto do Ambiente Advanced Protheus. OcompiladoreointerpretadordalinguagemADVPLoprprioservidorPROTHEUS (PROTHEUSServer),eexisteumAmbientevisualparaodesenvolvimentointegrado (PROTHEUSIDE), em que o cdigo pode ser criado, compilado e depurado. OsprogramasemADVPLpodemcontercomandos,oufunesdeinterfacecomousurio. De acordo com tal caracterstica, tais programas so subdivididos nas seguintes categorias: Programao Com Interface Prpria com o Usurio Nessacategoria,soclassificadososprogramasdesenvolvidosparaexecuoatravsdo terminalremotodoProtheus,oProtheusRemote.OProtheusRemoteaaplicao encarregada da interface e da interao com o usurio, sendo que todo o processamento do cdigo em ADVPL, o acesso ao banco de dadose ogerenciamento de conexes efetuado noProtheusServer.OProtheusRemoteoprincipalmeiodeacessoexecuoderotinas escritasemADVPLnoProtheusServer.Porissopermiteexecutarqualquertipodecdigo, tenhaeleinterfacecomousurio,ouno.Porm,nessacategoriasoconsideradosapenas osprogramasquerealizemalgumtipodeinterfaceremota,utilizandooprotocolode comunicao do Protheus. Pgina 30 ADVPL 1 PoderosercriadasrotinasparaacustomizaodosistemaERPMicrosigaProtheus,desde processos adicionais at mesmo relatrios. A grande vantagem aproveitar todo o Ambiente montadopelosmdulosdoERPMicrosigaProtheus.Porm,comoADVPLpossvelat mesmo criar toda uma aplicao, ou mdulo, do comeo. Todo o cdigo do sistema ERP Microsiga Protheus escrito em ADVPL. Programao Sem Interface Prpria com o Usurio Asrotinascriadasseminterfacesoconsideradasnestacategoriaporquegeralmentetm umautilizaomaisespecficadoqueumprocessoadicional,ouumrelatrionovo.Tais rotinasnotminterfacecomousurioatravsdoProtheusRemote,equalquertentativa nesse sentido (como a criao de uma janela padro) ocasionar uma exceo em tempo de execuo.Essasrotinassoapenasprocessos,ouJobsexecutadosnoProtheusServer. Algumasvezes,ainterfacedessasrotinasficaacargodeaplicaesexternas,desenvolvidas em outras linguagens que so responsveis por iniciar os processos no servidor Protheus, por meio dos meios disponveis de integrao e conectividade no Protheus. Deacordocomautilizaoecomomeiodeconectividadeutilizado,estasrotinasso subcategorizadas assim: EProgramao por Processos RotinasescritasemADVPLpodemseriniciadascomoprocessosindividuais(seminterface), noProtheusServeratravsdeduasmaneiras:IniciadasporoutrarotinaADVPLpormeioda chamadadefunescomoStartJob()ouCallProc(),ouiniciadasautomaticamente,na inicializao do Protheus Server (quando propriamente configurado). EProgramao de RPC ComautilizaodeumabibliotecadefunesdisponvelnoProtheus(umaAPIde comunicao)soexecutadasasrotinasescritasemADVPLdiretamentenoProtheusServer, por aplicaes externas escritas em outras linguagens. Assim, o que se chama de RPC (de Remote Procedure Call, ou Chamada de Procedimentos Remota). OservidorProtheustambmpodeexecutarrotinasemADVPL,emoutrosservidores Protheus, atravs de conexo TCP/IP direta, utilizando o conceito de RPC. Do mesmo modo, Ttulo ADVPL 1 Pgina 31 asaplicaesexternaspodemrequisitaraexecuoderotinasescritasemADVPL,pela conexo TCP/IP direta. Programao Web OProtheusServerpodetambmserexecutadocomoumservidorWeb,respondendoa requisies HTTP. No momento dessas requisies, pode executar rotinas escritas em ADVPL como processos individuais, enviandoo resultado das funes como retorno das requisies para o cliente HTTP (como por exemplo, um Browser de Internet). Qualquer rotina escrita em ADVPL que no contenha comandos de interface, pode ser executada atravs de requisies HTTP.OProtheuspermiteacompilaodearquivosHTML,contendocdigoADVPL embutido. So os chamados arquivos ADVPL ASP para a criao de pginas dinmicas. EProgramao TelNet TelNetpartedagamadeprotocolosTCP/IPquepermiteaconexoaumcomputador remoto,utilizandoumaaplicaoclientedesseprotocolo.OPROTHEUSServerpodeemular um terminal pela execuo de rotinas escritas em ADVPL. Ou seja, possvel escrever rotinas ADVPL cuja interface final ser um terminal TelNet, ou um coletor de dados mvel. Pgina 32 ADVPL 1 3.ESTRUTURA DE UM PROGRAMA ADVPL Umprogramadecomputadornadamaisdoqueumgrupodecomandoslogicamente dispostos, com o objetivo de executar determinada tarefa. Esses comandos so gravados em umarquivotextoquetransformadoemumalinguagemexecutvelporumcomputador, utilizandoo processo decompilao. A compilao substituios comandos de alto nvel (que oshumanoscompreendem)porinstruesdebaixonvel(compreendidapelosistema operacionalemexecuonocomputador).NocasodoADVPL,noosistemaoperacional de um computador que executar o cdigo compilado, mas sim o Protheus Server. Dentro de um programa, os comandos e funes utilizados devem seguir as regras de sintaxe da linguagem utilizada, pois caso contrrio, o programa ser interrompido por erros. Os erros podem ser de compilao, ou de execuo. Erros de compilao so aqueles encontrados na sintaxe que no permitem que o arquivo de cdigodoprogramasejacompilado.Podemsercomandosespecificadosdeformaerrnea, utilizao invlida de operadores, etc. Errosdeexecuosoaquelesqueacontecemdepoisdacompilao,quandooprograma estsendoexecutado.Podemocorrerporinmerasrazes,masgeralmentesereferems funes no existentes, ou variveis no criadas, ou inicializadas etc. Linhas de Programa As linhas existentes dentro de um arquivo texto de cdigo de programa podem ser linhas de comando, linhas de comentrio, ou linhas mistas. ELinhas de Comando Linhas de comando possuem os comandos, ou instrues que sero executadas. Por exemplo: Local nCnt Local nSoma := 0 For nCnt := 1 To 10 nSoma += nCnt Next nCnt Ttulo ADVPL 1 Pgina 33 ELinhas de Comentrio Linhasdecomentriopossuemumtextoqualquer,masnosoexecutadas.Servemapenas paraadocumentaoeparatornarmaisfciloentendimentodoprograma.Existemtrs formasdesecomentarlinhasdetexto.Aprimeiradelasutilizarosinalde*(asterisco)no comeo da linha: * Programa para clculo do total * Autor: Microsiga Software S.A. * Data: 2 de outubro de 2001 Pgina 34 ADVPL 1 Todasaslinhasiniciadascomumsinaldeasteriscosoconsideradascomocomentrio. possvel utilizar a palavra NOTE,ou doissmbolos da letra "e" comercial (&&) para realizar a funo do sinal de asterisco. Porm todas essas formas de comentrio de linhas so obsoletas eexistemapenasparaacompatibilizaocomopadroxBase.Amelhormaneirade comentar linhas em ADVPL utilizar duas barras transversais: // Programa para clculo do total // Autor: Microsiga Software S.A. // Data: 2 de outubro de 2001 Outraformadedocumentartextosutilizandoasbarrastransversaisjuntamentecomo asterisco. possvel comentar todo um bloco de texto sem precisar comentar linha a linha: /* Programa para clculo do total Autor: Microsiga Software S.A. Data: 2 de outubro de 2001 */ Todootextoencontradoentreaabertura(indicadapeloscaracteres/*)eofechamento (indicada pelos caracteres */) considerado como comentrio. ELinhas Mistas OADVPLtambmpermitequeexistamlinhasdecomandocomcomentrio.Istopossvel adicionando-se as duas barras transversais (//) ao final da linha de comando e adicionando-se o texto do comentrio: Local nCnt Local nSoma := 0// Inicializa a varivel com zero para a soma. For nCnt := 1 To 10 nSoma += nCnt Next nCnt Ttulo ADVPL 1 Pgina 35 ETamanho da Linha Assim como a linha fsica, delimitada pela quantidade de caracteres que pode ser digitado no editordetextosutilizado,existeumalinhaconsideradalinhalgica.Alinhalgicaaquela considerada para a compilao como uma nica linha de comando. Aprincpio,cadalinhadigitadanoarquivotextodiferenciadaapsopressionamentoda tecla.Ouseja,alinhalgicaalinhafsicanoarquivo.Porm,algumasvezespor limitao fsica do editor de texto, ou por esttica, possvel "quebrar" a linha lgica em mais de uma linha fsica no arquivo texto. Isso efetuado utilizando-se o sinal de ponto-e-vrgula (;). If !Empty(cNome) .And. !Empty(cEnd) .And. ; !Empty(cTel).And. !Empty(cFax) .And. ; !Empty(cEmail) GravaDados(cNome,cEnd,cTel,cFax,cEmail) Endif Nesse exemplo existe uma linha de comando para a checagem das variveis utilizadas. Como alinhatorna-semuitogrande,possveldividi-laemmaisdeumalinhafsica,utilizandoo sinaldeponto-e-vrgula.Seumsinaldeponto-e-vrgulaforesquecidonasduasprimeiras linhas,duranteaexecuodoprogramaocorrerumerro,poisasegundalinhafsicaser considerada como uma segunda linha de comando na compilao. E durante a execuo esta linha no ter sentido. Pgina 36 ADVPL 1 3 3. .1 1. . r re ea as s d de e u um m P Pr ro og gr ra am ma a A AD DV VP PL L Apesar de no ser uma linguagem de padres rgidos com relao estrutura do programa, importante identificar algumas de suas partes.Considere o programa de exemplo abaixo:

#include protheus.ch /* +===========================================+ | Programa: Clculo do Fatorial | | Autor : Microsiga Software S.A. | | Data: 02 de outubro de 2001 | +===========================================+ */ User Function CalcFator()

Local nCnt Local nResultado := 1// Resultado do fatorial Local nFator := 5 // Nmero para o clculo

// Clculo do fatorial For nCnt := nFator To 1 Step -1 nResultado *= nCnt Next nCnt

// Exibe o resultado na tela, atravs da funo alert Alert("O fatorial de " + cValToChar(nFator) + ; " " + cValToChar(nResultado))

// Termina o programa Return

A estrutura de um programa ADVPL composta pelas seguintes reas: Ttulo ADVPL 1 Pgina 37 Erea de Identificao -Declarao dos includes -Declarao da funo -Identificao do programa Erea de Ajustes Iniciais -Declarao das variveis ECorpo do Programa -Preparao para o processamento -Processamento Erea de Encerramento rea de Identificao Esta uma rea queno obrigatria e dedicada a documentao doprograma.Quando existente, contm apenas comentrios explicando a sua finalidade, data de criao, autor, etc., e aparece no comeo do programa, antes de qualquer linha de comando. Oformatoparaestareanodefinido.possvelescreverqualquertipodeinformao desejada e ainda, escolher a formatao apropriada. Pgina 38 ADVPL 1 #include protheus.ch

/* +==========================================+ | Programa: Clculo do Fatorial| | Autor : Microsiga Software S.A.| | Data: 02 de outubro de 2001| +==========================================+ */ User Function CalcFator() Opcionalmente, possvel incluir definies de constantes utilizadas no programa ou incluso de arquivos de cabealho nesta rea. rea de Ajustes Iniciais Nessareageralmentesofeitososajustesiniciais,importantesparaocorreto funcionamentodoprograma.Entreosajustesseencontramdeclaraesdevariveis, inicializaes, abertura de arquivos, etc. Apesar do ADVPL no ser uma linguagem rgida e as variveispoderemserdeclaradasemqualquerlugardoprograma,aconselhvelfaz-lo nessa rea. Assim, possveltornar o cdigo legvel e facilitar a identificao de variveis no utilizadas. Local nCnt Local nResultado := 0// Resultado do fatorial Local nFator := 10 // Nmero para o clculo Corpo do Programa Nessa rea encontram-se as linhas de cdigo do programa. Nela realiza a tarefa necessria pormeiodaorganizaolgicadessaslinhasdecomando.Espera-sequeaslinhasde comando estejam organizadas de tal modo que no final da mesma, o resultado esperado seja Ttulo ADVPL 1 Pgina 39 obtido,sejaelearmazenadoemumarquivo,ouemvariveisdememria,prontoparaser exibido ao usurio atravs de um relatrio ou na tela. // Clculo do fatorial For nCnt := nFator To 1 Step -1 nResultado *= nCnt Next nCnt Pgina 40 ADVPL 1 Apreparaoparaoprocessamentoformadapeloconjuntodevalidaese processamentos necessrios antes da realizao do processamento em si. Avaliandooprocessamentodoclculodofatorialdescritoanteriormente,possveldefinir queavalidaoinicialaserrealizadaocontedodavarivelnFator,poisamesma determinar a correta execuo do cdigo. // Clculo do fatorial nFator := GetFator()// GetFator funo ilustrativa na qual a varivel recebe a informao do usurio. If nFator