Ajuda com Código [Iniciante]

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com Código [Iniciante]

Mensagem por JoséQuintas »

O que eu venho comentando... pense no lado humano

nDesconto menor ou igual a nDescontoBanana

Se alguém falar isso.... não faz sentido.
É pra decidir alguma coisa, está afirmando ou negando alguma coisa, está perguntando alguma coisa... está incompleto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
didzao
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 26 Jul 2019 02:26
Localização: Maringá - PR

Ajuda com Código [Iniciante]

Mensagem por didzao »

JoséQuintas escreveu:O que eu venho comentando... pense no lado humano

nDesconto menor ou igual a nDescontoBanana

Se alguém falar isso.... não faz sentido.
É pra decidir alguma coisa, está afirmando ou negando alguma coisa, está perguntando alguma coisa... está incompleto.
Sim, está incompleto, não postei o código todo, o que eu quero saber é se eu posso, dentro do If dizer que uma variável é menor (ou maior) que uma outra (sendo que ambas já foram declaradas anteriormente), e se for possível, quero saber porque está dando esse erro. O que eu postei foi só um exemplo para ilustrar.

No caso o nDesconto seria um get, porém eu quero limitar ele para cada situação (dependendo do produto, por isso o nDescontoBanana) até certo valor, achei que no If eu conseguiria, mas obtive um erro.
Erros só provam que você está tentando. - Luxana Crownguard
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Ajuda com Código [Iniciante]

Mensagem por MSDN »

Sim, conheço, no começo dos anos 2000 eu morei em Maringá, conheci minha esposa inclusive em Maringá, e na época eu conversei com o dono da empresa sobre uma vaga de emprego, lembro que a empresa utilizava Clipper 5.3 com a biblioteca gráfica LightLibGraphics para fazer o PDV, não me recordo se já usava Harbour, mas lembro que ainda estavam decidindo o que usar para gerar aplicativos "for Windows", na época existia o Fivewin e logo em seguida apareceu a xHarbour.com com um ambiente integrado de programação e possibilidade de criar sistemas GUI, infelizmente por uma questão de tempo não deu certo meu ingresso na empresa, mas sempre acompanho o site e vejo as novidades, eles fazem um trabalho muito bom, são referência no mercado, caso vc seja efetivada, estará em uma ótima empresa, sucesso !
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Ajuda com Código [Iniciante]

Mensagem por Jairo Maia »

didzao escreveu:o que eu quero saber é se eu posso, dentro do If dizer que uma variável é menor (ou maior) que uma outra (sendo que ambas já foram declaradas anteriormente), e se for possível, quero saber porque está dando esse erro. O que eu postei foi só um exemplo para ilustrar.
Sim, você pode, mas em seu exemplo realmente há um erro de sintaxe.

Ambas variáveis são numéricas, e você quer saber se o desconto atribuído é menor ou igual ao desconto permitido para o produto banana. Porém, você tem que atribuir esse valor lógico (.T. ou .F.) a uma outra variável. Exemplo:

Código: Selecionar todos

lDescontoOk := ( nDesconto <=  nDescontoBanana )
Então você terá que tratar se o desconto está ou não ok de acordo com a variável lDescontoOk (por exemplo, você batiza a variável com o nome que achar melhor).
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ajuda com Código [Iniciante]

Mensagem por JoséQuintas »

Jairo Maia escreveu:Porém, você tem que atribuir esse valor lógico (.T. ou .F.) a uma outra variável.
Pequeno ajuste na resposta: pode ou não atribuir a uma variável, depende da necessidade/gosto pessoal.
Igual colocou pra sair do sistema, pode colocar direto no IF.

Código: Selecionar todos

IF nDesconto <= nDescontoBanana
    // alguma coisa
ENDIF
É que as vezes um IF pode ficar comprido, muito fonte, ou pode querer usar essa comparação mais vezes, então há casos aonde se torna vantagem primeiro atribuir a uma variável.

por exemplo a saída do aplicativo:

Código: Selecionar todos

IF Alert( "Sair do aplicativo", { "Sim", "Não" } ) = 1
   QUIT
ENDIF

Código: Selecionar todos

nOpc := Alert( "Sair do aplicativo", { "Sim", "Não", "Na dúvida" }
IF nOpc == 3
   Alert( "Endoidou? É sim ou não!" )
   LOOP
ELSEIF nOpc == 2
   Alert( "ok, vamos resolver mais coisas" )
   LOOP
ELSE
   Alert( "Ok, já estou com saudades... eu amo escravos trabalhando" )
   EXIT
ENDIF
E o erro que recebeu na compilação, igual falar pra humano:

- vai no mercado...desconto menor ou igual desconto da banana.... - isto seria o que colocou, sem sentido
- Vai no mercado e veja se o desconto é menor ou igual ao desconto da banana. - isto seria a atribuição a variável, pra uso posterior
- Vai no mercado e... se o desconto for menor ou igual ao desconto da banana... - isto seria o IF direto

Então, não é que escreveu palavras inválidas no fonte, é que não fez sentido do jeito que colocou.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Ajuda com Código [Iniciante]

Mensagem por Jairo Maia »

Eu entendi que se o código é o 3500, entre outras coisas ele quer mesmo saber se houve desconto, e se houve, se está dentro do permitido.

Como se trata de iniciante, procurei não entrar em detalhes, mas apenas responder a dúvida. Veja o código postado:

Código: Selecionar todos

If nCodigo = 3500
    cProduto          := "Banana Prata"
    nPrecoUnitario    := 3.50
    nEstoqueProduto   := nEstoqueBanana
    nQuantidadeBanana := nQuantidade
    nDesconto         <=  nDescontoBanana
Endif
Veja que no futuro esse código nem será usado. Ele vai descobrir que primeiro verifica se o produto existe, então irá ler os dados diretamente do banco de dados. Mas como ele deixou claro, está iniciando, ainda está na fase de exercícios.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder