roteiro de calculo

download roteiro de calculo

of 27

  • date post

    17-Jul-2015
  • Category

    Documents

  • view

    2.122
  • download

    9

Embed Size (px)

Transcript of roteiro de calculo

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Conceitos Bsicos:

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

Variveis de Memria Tipos de Dados O AdvPl no uma linguagem de tipos rgidos (strongly typed), o que significa que variveis de memria podem diferentes tipos de dados durante a execuo do programa. Variveis podem tambm conter objetos, mas os tipos primrios da linguagem so: Numrico O AdvPl no diferencia valores inteiros de valores com ponto flutuante, portanto pode-se criar variveis numricas com qualquer valor dentro do intervalo permitido. Os seguintes elementos so do tipo de dado numrico: 2 43.53 0.5 0.00001 1000000 Uma varivel do tipo de dado numrico pode conter um nmero de dezoito dgitos incluindo o ponto flutuante, no intervalo de 2.2250738585072014 E308 at 1.7976931348623158 E+308. Lgico Valores lgicos em AdvPl so identificados atravs de .T. ou .Y. para verdadeiro e .F. ou .N. para falso (independentemente se os caracteres estiverem em maisculo ou minsculo). Caracter Strings ou cadeias de caracteres so identificadas em AdvPl por blocos de texto entre aspas duplas (") ou aspas simples ('): "Ol mundo!" 'Esta uma string' "Esta 'outra' string" Uma varivel do tipo caracter pode conter strings com no mximo 1 Mb, ou seja, 1048576 caracteres. Data O AdvPl tem um tipo de dados especfico para datas. Internamente as variveis deste tipo de dado so armazenadas como um nmero correspondente a data Juliana. Variveis do tipo de dados Data no podem ser declaradas diretamente, e sim atravs da utilizao de funes especficas como por exemplo ctod que converte uma string para data. Matriz (Array) Matrizes so um tipo de dado especial. a disposio de outros elementos em colunas e linhas. O AdvPl suporta matrizes uni ou multidimensionais. Os elementos de uma matriz so acessados atravs de ndices numricos iniciados em 1, identificando a linha e coluna para quantas dimenes existirem. Uma matriz pode conter no mximo 100000 elementos, independentemente do nmero de dimenses. Matrizes devem ser utilizadas com cautela, pois se forem muito grandes podem exaurir a memria do servidor.

Bloco de Cdigo O bloco de cdigo um tipo de dado especial. utilizado para armazenar instrues escritas em AdvPl

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)que podero ser executadas posteriormente. Criao e Atribuio de Variveis

Criado : 16/05/2008 Atualizado: 16/05/2008

Variveis de memria so um dos recursos mais importantes de uma linguagem. So reas de memria criadas para armazenar informaes utilizadas por um programa para a execuo de tarefas. Por exemplo, quando o usurio digita uma informao qualquer, como o nome de um produto, em uma tela de um programa esta informao armazenada em uma varivel de memria para posteriormente ser gravada ou impressa. A partir do momento que uma varivel criada, no necessrio mais se referenciar ao seu contedo, e sim ao seu nome. O nome de uma varivel um identificador nico que segue duas regras regras: Mximo de 10 caracteres. O AdvPl no impede a criao de uma varivel de memria cujo nome contenha mais de 10 caracteres, porm apenas os 10 primeiros sero considerados para a localizao do contedo armazenado. Portanto se forem criadas duas variveis cujos 10 primeiros caracteres forem iguais, como nTotalGeralAnual e nTotalGeralMensal, as referncias a qualquer uma delas no programa resultaro o mesmo. Ou seja, sero a mesma varivel: nTotalGeralMensal := 100 nTotalGeralAnual := 300 Alert("Valor mensal: " + cValToChar(nTotalGeralMensal)) Quando o contedo da varivel nTotalGeralMensal exibido, o seu valor ser de 300. Isso acontece porque no momento que esse valor foi atribuido varivel nTotalGeralAnual, o AdvPl considerou apenas os 10 primeiros caracteres (assim como o faz quando deve exibir o valor da varivel nTotalGeralMensal), ou seja, considerou-as como a mesma varivel. Assim o valor original de 100 foi substituido pelo de 300. Limitao de caracteres no nome. Os nomes das variveis devem sempre comear por uma letra ou o caracter de sublinhado ( _ ). No restante, pode conter letras, nmeros e o caracter de sublinhado. Qualquer outro caracter, incluindo espaos em branco, no so permitidos. O AdvPl permite a criao ilimitada de variveis, dependendo apenas da memria disponvel. A seguir esto alguns nomes vlidos para variveis: TOT01 cNumero VAR_QUALQUER M_CARGO A11 E alguns invlidos: 1CODIGO (Inicia por um nmero) M CARGO (contm um espao em branco) LOCAL (palavra reservada do AdvPl) O AdvPl no uma linguagem de tipos rgidos para variveis, ou seja, no necessrio informar o tipo dedados que determinada varivel ir conter no momento de sua declarao, e o seu valor pode mudar durante a execuo do programa. Tambm no h necessidade de declarar variveis em uma seo especfica do seu cdigo fonte, embora seja aconselhvel declarar todas as variveis necessrias no comeo, tornando a manuteno mais fcil e evitando a declarao de variveis desnecessrias. Para declarar uma varivel deve-se utilizar um identificador de escopo, seguido de uma lista de variveis separadas por vrgula (,). Um identificador de escopo uma palavra chave que indica a que contexto do programa a varivel declarada pertence. O contexto de variveis pode ser local (visualizadas

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)

Criado : 16/05/2008 Atualizado: 16/05/2008

apenas dentro do programa atual), pblico (visualizadas por qualquer outro programa), entre outros. Os diferentes tipos de contexto de variveis so explicados na documentao sobre escopo de variveis. Considere as linhas de cdigo de exemplo: nResultado := 250 * (1 + (nPercentual / 100)) Se esta linha for executada em um programa AdvPl, ocorrer um erro de execuo com a mensagem "variable does not exist: nPercentual", pois esta varivel est sendo utilizada em uma expresso de clculo sem ter sido declarada. Para solucionar este erro, deve-se declarar a varivel previamente: Local nPercentual, nResultado nResultado := 250 * (1 + (nPercentual / 100)) Neste exemplo, as variveis so declaradas previamente utilizando o identificador de escopo local. Quando a linha de clculo for executada, o erro de varivel no existente no mais ocorrer. Porm variveis no inicializadas tm sempre o valor default nulo (Nil) e este valor no pode ser utilizado em um clculo pois tambm gerar erros de execuo (nulo no pode ser dividido por 100). A resoluo deste problema efetuada inicializando-se a varivel atravs de uma das formas: Local nPercentual,nResultado Store 10 To nPercentual nResultado := 250 * (1 + (nPercentual / 100)) ou Local nPercentual, nResultado nPercentual := 10 nResultado := 250 * (1 + (nPercentual / 100)) ou Local nPercentual := 10, nResultado nResultado := 250 * (1 + (nPercentual / 100)) A diferena entre o ltimo exemplo e os dois anteriores que a varivel inicializada no momento da declarao. Nos dois primeiros exemplos, a varivel primeiro declarada e ento inicializada em uma outra linha de cdigo. O comando store existe apenas por compatibilidade com verses anteriores e outras linguagens xBase, mas obsoleto. Deve-se utilizar o operador de atribuio (:= ou somente =). aconselhvel optar pelo operador de atribuio composto de dois pontos e sinal de igual, pois o operador de atribuio utilizando somente o sinal de igual pode ser facilmente confundido com o operador relacional (para comparao) durante a criao do programa. Uma vez que um valor lhe seja atribudo, o tipo de dado de uma varivel igual ao tipo de dado do valor atribudo. Ou seja, uma varivel passa a ser numrica se um nmero lhe atribudo, passa a ser caracter se uma string de texto lhe for atribuda, etc. Porm mesmo que uma varivel seja de determinado tipo de dado, pode-se mudar o tipo da varivel atribuindo outro tipo a ela: 01 Local xVariavel // Declara a varivel inicialmente com valor nulo 02 03 xVariavel := "Agora a varivel caracter..." 04 Alert("Valor do Texto: " + xVariavel) 05 06 xVariavel := 22 // Agora a varivel numrica 07 Alert(cValToChar(xVariavel)) 08 09 xVariavel := .T. // Agora a varivel lgica 10 If xVariavel 11 Alert("A varivel tem valor verdadeiro...") 12 Else 13 Alert("A varivel tem valor falso...") 14 Endif 15 16 xVariavel := Date() // Agora a varivel data

Criao de Roteiros de Clculos para a Folha de Pagamento (SIGAGPE)17 Alert("Hoje : " + DtoC(xVariavel)) 18 19 xVariavel := nil // Nulo novamente 20 Alert("Valor nulo: " + xVariavel) 21 22 Return

Criado : 16/05/2008 Atualizado: 16/05/2008

No programa de exemplo anterior, a varivel xVariavel utilizada para armazenar diversos tipos de dados. A letra "x" em minsculo no comeo do nome utilizada para indicar uma varivel que pode conter diversos tipos de dados, segundo a Notao Hngara (consulte documentao especfica para detalhes). Este programa troca os valores da varivel e exibe seu contedo para o usurio atravs da funo alert. Essa funo recebe um parmetro que deve ser do tipo string de caracter, por isso dependendo do tipo de dado da varivel xVariavel necessrio fazer uma converso antes. Apesar dessa flexibilidade de utilizao de variveis, deve-se tomar cuidados na passagem de parmetros para funes ou comandos, e na concatenao (ou soma) de valores. Note a linha 20 do programa de exemplo. Quando esta linha executada, a varivel xVariavel contem o valor nulo. A tentativa de soma de tipos de dados diferentes gera erro de execuo do programa. Nesta linha do exemplo, ocorrer um errocom a mensagem "type mismatch on +". Excetuando-se o caso do valor nulo, para os demais deve-se sempre utilizar funes de converso quando necessita-se concatenar tipos de dados diferentes (por exemplo, nas linhas 07 e 17. Note tambm que quando uma varivel do tipo de dado lgico, ela pode ser utilizada diretamente para checagem (linha 10): If xVariavel o mesmo que If xVariavel = .T. A declarao de vari