sábado, 18 de junho de 2016

Antes de começar a codificar

Olá!

Neste post não será apresentado códigos, mas sim, uma boa prática do que fazer antes de começar a codificar seus programas. Pois, um erro comum que vejo nos programadores, em boa parte os iniciantes, é que quando recebem uma definição (especificação, documentação) do trabalho a ser executado, já de imediato partem para a codificação, afinal são programadores.

Entretanto, esses profissionais quando estão no processo de programar o que foi requisitado, acabam se deparando com: estrutura lógica incompleta; pontos do documento não compreendidos corretamente ou totalmente; erros na definição; entre outras situações que levam o programador a parar o que estar fazendo, e rever a definição e até mesmo seu código. De modo, que depois de analisar o trabalho feito até o momento, acaba percebendo que está realizando o que foi pedido de maneira errada.

Assim, ocasionando em retrabalho, perca de tempo, estresse, ou seja, interrompendo e atrapalhando todo o fluxo de trabalho do programador, o que não é nada bom. Porque, conduz a atrasos, acumulação de trabalho, e o pior que é a perda da credibilidade do profissional.

Deste modo, com a experiência fica claro que antes de começar a codificar, o programador pode realizar alguns processos para evitar (minimizar) erros que podem vir à interferir no fluxo do seu trabalho. São:

  • Ler toda documentação
    • ler a definição do que está sendo requisitado, e entender o que estar sendo pedido
  • Verificar se o fluxo dos dados estão corretos
    • analisar se a estrutura lógica dos dados estar correta, afim de encontrar erros na especificação
  • Anotar ou abstrair de maneira ordenada o que deve, como e quando ser feito
    • ter em anotado ou em mente o que deve ser feito, para assim não codificar uma funcionalidade antes mesmo que as funções necessárias para está estejam prontas

Uma das situações, que comprovam que os passos acima são necessários, é um simples comparativo em realizar uma refeição. Pois, antes de começar a cozinhar:

PassosPreparo de uma refeiçãoProgramar
1

Ter o livro de receitas
.
Ter os documentos necessários para o
trabalho
2


Ler a receita a ser feita, e
entender como e quais
ingredientes são necessários
para preparar a refeição
Ler as especificações , analisar o que deve
ser feitoe verificar se o que está definido
está correto
.
3

Ter os ingredientes em mãos
.
Verificar ou obter as permissões do
profissional para a execução do trabalho
4

Lavar e separar os ingredientes
.
Organizar os documentos, local de trabalho,
e o fluxo dos passos a serem executados
5

Rever a receita para verificar
se algum ingrediente foi esquecido
Rever a especificação e verificar se os
passos definidos para a execução do
trabalho está correta
6Começar a cozinharComeçar a programar

Como podemos observar no comparativo é que antes de começar a cozinhar, há o que ser feito. O que não é diferente para antes de começar a codificar um programa.

Então, com a realização de boas práticas realizadas antes de codificar os programas, com o tempo é facilmente percebido o ganho de tempo, velocidade, e principalmente a diminuição de erros na programação.

Enfim, adote boas práticas no seu trabalho, de como realiza-lo. Não necessariamente devem ser estas, elabore ou busque outras, e tenha em mente que antes de realizar algo, no mínimo deve ser pensado antes de realmente a começar a colocar a mão na massa.

Consultar a relação de Termos e Abreviaturas acesse aqui.

Até o próximo post!

sexta-feira, 10 de junho de 2016

Loop simples para limpar uma lista fixa

Olá!

Quando utilizamos uma lista (array) é uma boa prática limpar os registros antes de movimentar os valores para as variáveis.

Assim, se declararmos por exemplo uma lista de 5 posições (occurs), deveria ser feita uma limpeza de cada um dos registros. E uma forma de realizar esse processo, é:

INITIALIZE nomeLista(1)
           nomeLista(2)
           nomeLista(3)
           nomeLista(4)
           nomeLista(5).

Entretanto, se declararmos uma lista com 100 posições, esse INITIALIZE não será uma boa forma de realizar esse processo. Pois, imagine o tamanho que a instrução de inicialização terá para uma lista de 100 ou mais posições.

Então, para realizar o processo de limpeza em listas fixas com muitas posições, é viável realizar um loop para percorrer a lista e limpar cada registro. Segue abaixo um exemplo de estrutura de repetição simples, para percorrer uma lista e limpar cada registro:

* -- LIMPA A LISTA
     PERFORM VARYING TALLY FROM 1 BY 1 UNTIL TALLY > totalDeOcorrencias
         INITIALIZE nomeLista(TALLY)
     END-PERFORM.

Onde:
totalDeOcorrencias = ao número de OCCURS da lista

Consultar a relação de Termos e Abreviaturas acesse aqui.

Até o próximo post!

quinta-feira, 12 de maio de 2016

Mascaras de edição no COBOL

Olá!

Por meio do uso de mascaras de edição, é possível no COBOL a apresentar valores numéricos de formas variadas. Assim, neste post será demonstrado algumas dessas mascaras!

Primeiramente temos o valor 12732234 que será armazenado na variável GDA-NR-SMLC PIC  9(009), e posteriormente este valor será movimentado para as variáveis que estão definidas com a mascara.

As variáveis usadas para a demonstração do uso das mascaras de edição, são:
    * -- GUARDA O NUMERO PARA SIMULACAO DE APLICACAO DAS MASCARAS
       77 GDA-NR-SMLC                   PIC  9(009) VALUE ZEROS.
      *
      * -- GUARDA O NUMERO COM ZEROS A ESQUERDA E SINAL
       77 GDA-VL-COM-ZEROS              PIC  9(009) VALUE ZEROS.
      *
      * -- GUARDA O NUMERO SEM ZEROS A ESQUERDA E SINAL
      *    SOMENTE MOSTRA O SINAL QUANDO O NUMERO NEGATIVO
       77 GDA-VL-SEM-ZEROS              PIC --------9 VALUE ZEROS.
      *
      * -- GUARDA O NUMERO SEM ZEROS A ESQUERDA E SINAL
      *    MOSTRA O SINAL TAMBEM PARA OS NUMEROS POSITIVOS
       77 GDA-VL-SEM-ZEROS-SNL          PIC ++++++++9 VALUE ZEROS.
      *
      * -- GUARDA O NUMERO FORMATADO PARA A MASCARA DE DATA DD/MM/AAAA
       77 GDA-DATA                      PIC ZZ/ZZ/ZZZZ.
      *
      * -- GUARDA O NUMERO FORMATADO PARA O VALOR R$
       77 GDA-VALOR                     PIC -999.999,99.
      *
      * -- GUARDA O NUMERO FORMATADO PARA O VALOR R$ E SINAL
       77 GDA-VALOR-SNL                 PIC S9(09)V9(2).


Então, se executarmos um DISPLAY em cada variável, o formato que o valor 12732234 será apresentado, é:


  • DISPLAY GDA-VL-COM-ZEROS, apresenta: 012732234

Definição da variável: PIC 9(009)
Note que o valor 12732234 possui um "0" na frente. Pois, o valor é menor que o tamanho suportado por está variável, assim, as casas numéricas não usadas será apresentada com zero.



  • DISPLAY GDA-VL-SEM-ZEROS, apresenta: 12732234

Definição da variável: PIC --------9
Deste modo o valor não possui o zero na frente, e também não há sinalização. Sendo que se o valor fosse negativo, seria apresentado um sinal "-" de negativo para o valor.



  • DISPLAY GDA-VL-SEM-ZEROS-SNL, apresenta: +12732234

Definição da variável: PIC ++++++++9
Com essa mascara se o valor positivo será apresentado com o sinal "+" na frente do número. E se o valor negativo será apresentado com o sinal "-" na frente do número. De qualquer modo a sinalização do valor aparecerá.



  • DISPLAY GDA-DATA, apresenta: 12/73/2234

Definição da variável: PIC ZZ/ZZ/ZZZZ
Neste tipo de definição o valor será apresentado no formato de data DD/MM/AAAA.



  • DISPLAY GDA-VALOR, apresenta:  732.234,00

Definição da variável: PIC -999.999,99
Para apresentar o valor no formato de R$. Lembrando que com o uso de "-" na definição da variável somente aparecerá o sinal se o valor for negativo.



  • DISPLAY GDA-VALOR-SNL, apresenta:  +012732234.00

Definição da variável: PIC S9(09)V9(2)
Com está definição o valor será sinalizado para positivos e negativos, também apresentando os zeros a esquerda.


Como se trata de mascaras de edição, é uma boa pratica utiliza-las somente para a apresentação do valor final. Ou seja, não é comum usar variáveis definidas com algumas mascaras para realizar o processamento dos dados.

Para Ctrl + C dos códigos acesse aqui.
Consultar a relação de Termos e Abreviaturas acesse aqui.

Até o próximo post!