Novo desafio

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

gvc escreveu:@ 10,01 Say "Informe a UF: " get opc Pict "!!" valid ascan(aMenu1, opc) > 0
Isso deixa de fora qualquer alerta que o programador queira emitir, no caso de falha.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

Mensagem por Netavin »

Bom dia turma !!

... questão de gosto né!! Vários caminhos que levam ao mesmo lugar. Se vc tem tempo vai por ali, senão por aquí.
Achei prático, fácil e rápido a rotina do gvc.

Lendo o livro Dominando o Clipper 5.2, achei interessante um trecho em que o autor diz que existe muitas lacunas de conhecimentos a serem preenchidas até mesmo para programadores experientes.
Isto avaliza as palavras do malígno quando diz que por conta do imediatismo, pulamos certas etapas do aprendizado.
Este é um vício difícil de erradicar.

Um abraço a todos !

Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Eu não faria como o GVC. Sistemas de informações normalmente utilizam as siglas dos Estados em vários pontos do programa. Se tivermos que fazer esse teste várias vezes, desperdiçamos espaço à toa. Descontamos aí o fato do colega GVC também ter feito um código de exemplo. Coisa simples, rápida e ficou isso aí. Mais uma vez, se alguém ver e tomar como a solução correta, vai atropelar os detalhes não tão óbvios. Meu exemplo, mais elaborado:

Código: Selecionar todos

cUF := Space(2)
@ 1,2 say "Estado:" get cUF picture "@A !!" valid AScan(UFsList(),cUF) > 0
read

function UFsList()
return {"XX","YY","ZZ",...}
Mas ainda há uma alternativa. Haja vista que as siglas dos Estados tem a única finalidade de conferência, é válido também apenas utilizar uma só string:

Código: Selecionar todos

cUF := Space(2)
@ 1,2 say "Estado:" get cUF picture "@A !!" valid cUF $ UFsList()
read

function UFsList()
return "XX,YY,ZZ,...
Um pouco mais simples e até mais econômico no processamento, embora isso não conte muito. Mas fica também mais legível.

De qualquer forma que seja, sendo UFsList() uma função global, de biblioteca, tenho apenas um pouco de espaço alocado para uma lista constante. Economizo no tamanho do EXE e facilito a manutenção.

Na verdade não faço de nenhuma dessas formas. Meu VALID teria uma função externa para emitir um aviso qualquer para o usuário, sinalizando o erro. Aliás, sou de opinião de que se o usuário errou, ele deve ser avisado, seja da forma que for. Se o teste já ficar no VALID não tem jeito. Por isso não uso essa forma.

Mas como utilizo comandos customizados, não vou entrar nos detalhes, pra não embaralhar a didática. Apenas deixo no ar a idéia básica da unicidade das funções. Vale o ditado: "cada macaco no seu galho". Se misturar várias tarefas em funções de apoio, só se perde. Trabalha mais? Em um primeiro momento sim. Mas ganha-se muito mais lá na frente. :)

Aliás, pra quem tem tempo pra estudar, aconselho a leitura de um livro qualquer sobre Projeto Estruturado de Sistemas. Recomento o da dupla Meiler/Page-Jones. É o tipo de leitura esclarecedora e gratificante.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder