usando Eaval() com matriz dimensional

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

Moderador: Moderadores

Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

usando Eaval() com matriz dimensional

Mensagem por Nascimento »

amigos teria como eu usar o eaval() neste caso aqui?

aArray{{"idade".40}}
Como usar o eaval para quando achar idade ele mudar para 41 por exemplo
e se sim teria como exemplificar como eu faria?



att: Nascimento
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

usando Eaval() com matriz dimensional

Mensagem por Jairo Maia »

Nascimento escreveu:Como usar o eaval para quando achar idade ele mudar para 41 por exemplo
Sim, tem. Mas o que não entendi é como tratar os dados, se 40 coloca em outra matriz? Não deu pra entender qual o objetivo, sem isso, não dá prá exemplificar. Se puder ser mais claro ajuda.
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

usando Eaval() com matriz dimensional

Mensagem por JoséQuintas »

É que tentando imaginar a finalidade, a questão parece esquisita.

Código: Selecionar todos

cTexto := "idade"
nValor := 41
AEval( aArray, { | e | iif( e[ 1 ] == cTexto, e[2] := nValor, Nil ) } )
Se é um array com os dados de um cadastro/tabela, talvez seja mais interessante usar HASH, e ir direto no registro.

Código: Selecionar todos

aArray[ "idade" ] := 41
Pensando nas possibilidades, imagino que seja pra algo assim.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

usando Eaval() com matriz dimensional

Mensagem por JoséQuintas »

Talvez ajude a entender melhor....

Código: Selecionar todos

aArray{{"idade".40}}
Array é uma lista, mas aí é "uma dentro da outra".

Então, é uma lista contendo listas, esta é a lista principal

Cada sublista contém nome e número, o primeiro (1) é nome e o segundo (2) é número.

AEval() vai passar pela lista principal, e olhar cada sublista

Código: Selecionar todos

AEVal( aLista, { | e | .... } )
acima o | e | representa cada sublista
Lembrando: 1=nome, 2=número, então e[ 1 ] contém nome, e e[ 2 ] contém número

Código: Selecionar todos

| e | iif( e[ 1 ] = "idade", e[ 2 ] := 41, Nil )
E foi isso.
É só esquecer a complicação da programação, e pensar no dia a dia, numa lista do dia a dia.

Eu já comentei isso: TUDO no computador vém se tornando mais "humano".
Quem é do tempo do binário, 0 e 1, fica pensando em 0 e 1, e se complica sozinho.
Criança sabe mexer no celular porque é só apontar o dedo, nem precisa saber ler, basta apertar o dedo no desenho.
Quem é do tempo do binário, fica tentando ler, tentando achar explicação pra o que apertar, mas criança apenas aperta: deu certo então é aquele

Essas coisas de array, codeblock, hash, etc. podem até parecer complicadas....
Mas tudo depende de encontrar alguma coisa pra fazer comparação, que torne mais simples entender.
Talvez essa seja interessante pra array:

Array é simplesmente uma lista. normal, bidimensional, multidimensional..... não importa.... array é simplesmente uma lista.

E o que tem nessa lista?
tem primeiro (1), segundo (2), terceiro (3).... etc.

E o que tem no primeiro(1) ?
Pode ser número, string, ou uma nova lista

Código: Selecionar todos

array[1][2]
O que tem de complicado acima?
É tratar uma coisa de cada vez.

array = é uma lista
array[1] = é o primeiro elemento dessa lista
array[1][2] = podemos deduzir que o primeiro elemento contém uma sublista, e isso representa o segundo(2) dessa sublista.

Vamos comparar com outra coisa do dia a dia:

- você vai no mercado, coloca tudo numa sacola, a sacola A - isso é um array, uma sacola com vários produtos
- só que tem mais coisas, pega outra sacola, coloca coisas nessa sacola B - isso é outro array, uma sacola com vários produtos
- só que não quer 2 sacolas, então pega outra, e coloca tudo dentro, seria a sacola C - pronto, um array bidimensional.

Temos uma sacola C, ela é o array bimensional, é uma lista que contém duas sacolas A e B (ou 1 e 2)

sacola A = { tomate, feijao }
sacola B = { açúcar, sal }
sacola C := { sacola A, sacola B }
sacola C = { { tomate, feijao }, { açúcar, sal } }

sacolaC[ 1, 1 ] = tomate
sacolaC[ 1, 2 ] = feijao

sacolaC[ 2, 1 ] = açúcar
sacolaC[ 2, 2 ] = sal

Só tomem cuidado pra não ir no mercado e ficar falando de array, senão vão dizer que estão malucos kkkk
falar pro empacotador: coloque a gelatina no array 2 kkkkk

E com isso, o que seria algo avançado da programação, é mais outra coisa do dia a dia.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

usando Eaval() com matriz dimensional

Mensagem por JoséQuintas »

Também podemos considerar cada sacola do mercado como multidimensional.
O que tem na sacola:

Código: Selecionar todos

{
{ "tomate", "2KG" },
{ "feijão", "1KG" }
}
Voltar à definição simples: é uma lista
Cada item dessa lista contém nome e quantidade - nome e quantidade faz parte de uma sub-lista - uma lista de informações.

Vixe....
Podemos considerar que a sacola de mercado é um array, um DBF com 2 campos, ou que os produtos são uma classe com duas propriedades.

Uma sacola de mercado parece que tem tudo de programação.

Como eu disse antes, são coisas que fazem parte do dia a dia, apenas alguém foi tendo idéias sobre como representar isso na programação, de uma forma mais "humana".
O que era um array bidimensional, poderia virar um array de classes, pra ficar mais humano.
lista de produtos, onde cada produto tem produto:Nome, produto:Quantidade

Podemos expandir para o #define também

Código: Selecionar todos

#define P_NOME 1
#define P_QTDE 2
produto[ P_NOME ] // ao invés de produto[ 1 ]
produto[ P_QTDE ] // ao invés de produto[ 2 ]
É louco mas é sensacional:
uma sacola de mercado serviu pra mostrar o que é array, pra que serve #define, o que é classe
e que a evolução de classe, nada mais é do que a programação mais do jeito "humano".
E que facilita o jeito humano: produto:Nome, produto:quantidade, ou produto[ P_NOME ], produto[ P_QTDE ], ao invés de produto[1], produto[2]

Eu sabia que em sacola de mercado cabia bastante coisa, até livros, mas ... que cabe lição de programação, e mostra a evolução de linguagem de programação, só percebi agora.
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/
Responder