Página 1 de 2

Bug no Harbour

Enviado: 11 Jan 2016 15:50
por Kapiaba
Como resolver isto no HARBOUR? Em xHarbour funciona normal. No HARBOUR da erro de Sintaxe.

Código: Selecionar todos

MEMVAR x

FUNCTION MAIN()

   // ? 1 ^^ 2

   x := Cube( 1 )

   ? x

RETURN NIL

Function Cube( n )

Return n ^^ 2
Obg. abs.

Bug no Harbour

Enviado: 11 Jan 2016 16:43
por Jairo Maia
Olá Kapiaba,

Uma curiosidade: Tem certeza que a função Cube() é nativa do [x]Harbour? Não é uma função que você inseriu em seu sistema?

Também será que ela não tem alguma crítica, já que 1 não é passível de exponenciação (no caso, elevado ao cubo)?

Bug no Harbour

Enviado: 11 Jan 2016 17:07
por Kapiaba
Boa tarde Jairo, você pode fazer assim: ? 1 ^^ 2 que dará erro de sintaxe, já no xHarbour, retronará: 3.

Você pode trocar o nome da função para o seu gosto. o que importa é o 1 ^^ 2 ok?

Obg. abs.

Bug no Harbour

Enviado: 11 Jan 2016 17:24
por Jairo Maia
Olá Kapiaba,

Muito curioso isso. Mas como gosto de aprender coisas novas (e não tenho dúvida, penso que todos gostamos), o bug então não é do xHarbour? porque se: ? 1 ^^ 2 retorna 3 no xHarbour, está retornando 1 + 2 = 3.

Pelo que sei o circunflexo é sinal de exponenciação, então:

Código: Selecionar todos

? 1 ^ 1000000  // retorna 1
? 2 ^ 2             // retorna 4
? 2 ^ 3             // retorna 8, e assim sucessivamente...
Só não entendo porque duplo circunflexo.

Bug no Harbour

Enviado: 12 Jan 2016 09:28
por Kapiaba
Jairo:

https://books.google.com.br/books?id=vr ... er&f=false

A minha dúvida, é porque não compila com HARBOUR?

Bug no Harbour

Enviado: 12 Jan 2016 09:44
por JoséQuintas
Tá falando desta parte?

Bug no Harbour

Enviado: 12 Jan 2016 09:55
por Jairo Maia
Kapiaba, veja: o correto é apenas 1 circunflexo, ou duplo asterisco.

Não há operador com duplo circunflexo. Você disse que o xHarbour aceita, mas veja que apesar do xHarbour aceitar o resultado não é exponeciação. Parece que xHarbour permuta duplo circunflexo por adição pelo que você disse.

Código: Selecionar todos

//  Usando circuflexo:
? 2 ^ 3    // ( 2 x 2 x 2 ) = 8
? 2 ^ 4    // ( 2 x 2 x 2 x 2 ) = 16
?
//  Usando duplo asterisco:
? 2 ** 3   // ( 2 x 2 x 2 ) = 8
? 2 ** 4   // ( 2 x 2 x 2 x 2 ) = 16
OperadoresClipper.jpg

Bug no Harbour

Enviado: 12 Jan 2016 09:59
por Kapiaba
valeu Jairo, entendi. Muito obrigado.

Bug no Harbour

Enviado: 12 Jan 2016 09:59
por JoséQuintas
Até esqueci de mencionar:

Que perigo, aceitar coisa errada.
Ponto para o Harbour.
E um ponto bem grande.... rs

Bug no Harbour

Enviado: 12 Jan 2016 10:03
por Kapiaba
kkk, assim compila nos dois, como só uso xHarbour, fiquei na dúvida, estou iniciando testes no Harbour, para comparar.

Assim, funciona nos dois:

Código: Selecionar todos

MEMVAR x
 
FUNCTION MAIN()
 
   // ? 1 ^^ 2
 
   x := Cube( 1 )
 
   ? x
 
RETURN NIL
 
Function Cube( n )
 
Return n ^ 2
Obg. abs.

Bug no Harbour

Enviado: 13 Jan 2016 12:13
por JoséQuintas
Assim já é bug do programador.... rs
Um número ao cubo é ele elevado a três, e colocou dois.

Provavelmente é só teste, mas não resisti em comentar.

Bug no Harbour

Enviado: 13 Jan 2016 18:54
por asimoes
Do manual do xHarbour:

// The example shows some results of the "**" operator.

PROCEDURE Main
? 5 ** 0 // result: 1.00
? 5 ** 1 // result: 5.00
? 5 ** 2 // result: 25.00
? 5 ** -2 // result: 0.04
? -5 ** 2 // result: 25.00

? 5 ˆ 0 // result: 1.00
? 5 ˆ 1 // result: 5.00
? 5 ˆ 2 // result: 25.00
? 5 ˆ -2 // result: 0.04
? -5 ˆ 2 // result: 25.00
RETURN

Bug no Harbour

Enviado: 13 Jan 2016 18:57
por asimoes
Kapiaba,

xHarbour ficou sem pai e mãe, cuidado com os bug´s !

Bug no Harbour

Enviado: 13 Jan 2016 19:14
por JoséQuintas
É até estranho, já que existe o produto comercial xHarbour.
Deveria até ser o contrário.

Bug no Harbour

Enviado: 13 Jan 2016 20:24
por asimoes
Quintas,

Eu conheço quem mantém o xHarbour comercial, inclusive já levou uma chamada não lembro se foi do Viktot ou Przemyslaw, mas está postado aqui no fórum.
De está usando o código Harbour na versão comercial sem critério nenhum.

Numa tentativa de evoluir para o nível do Harbour.