Clipper On Line • Ver Tópico - usando Eaval() com matriz dimensional

usando Eaval() com matriz dimensional

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

Moderador: Moderadores

 

usando Eaval() com matriz dimensional

Mensagempor Nascimento » 25 Nov 2021 23:25

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 de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

usando Eaval() com matriz dimensional

Mensagempor Jairo Maia » 26 Nov 2021 04:02

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 de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

usando Eaval() com matriz dimensional

Mensagempor JoséQuintas » 26 Nov 2021 10:50

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

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.
aArray[ "idade" ] := 41


Pensando nas possibilidades, imagino que seja pra algo assim.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

usando Eaval() com matriz dimensional

Mensagempor JoséQuintas » 26 Nov 2021 13:39

Talvez ajude a entender melhor....

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
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
| 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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

usando Eaval() com matriz dimensional

Mensagempor JoséQuintas » 26 Nov 2021 14:44

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

{
{ "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
#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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro