Mostrando postagens com marcador For Each. Mostrar todas as postagens
Mostrando postagens com marcador For Each. Mostrar todas as postagens

12 janeiro 2022

Array Multidimensional - UPDATE#01


UPDATE#01

Obtive uma resposta num comentário que demonstrou uma forma mais interessante de trabalhar com o array multidimensional que provavelmente consome muito menos memória e tem mais apelo prático. No primeiro script eu desejei somente demonstrar que existe e não me ative a testar outra maneira já que aquela também funciona. Apesar de um provável consumo maior de memória do primeiro script que está comentado no código, ter as listas(arrays) internas com nomes específicos, cria-se uma possibilidade de manipular esses dados de outra forma já que o próprio nome da lista(array) poderá fazer referência ao dado que possui. Mas que fique claro que isso não necessariamente significa que seja adequado trabalhar com array numa grande escala. 

Vale ressaltar que algumas outras ferramentas podem ser mais simples de manipular e obter um resultado correto de forma mais direta além de uma melhor persistência do próprio dado.

Sendo assim agradeço Jan Welten - administrador do grupo Classic ASP developers que foi quem mostrou essa solução já adicionada ao código. A lista(array) já é definida no 'ReDim' com a quantidade das duas dimensões enquanto no código comentado se trabalha inicialmente a partir de uma lista(array) dinâmica simples, adicionando cinco outras listas(arrays) que já podem existir no script, tendo estas listas(arrays) qualquer outro nome. Falta confirmar se aceitará sem problemas adicionar listas(arrays) de tamanhos variados e de tipos diferentes.
 
Abaixo o texto anterior com algumas alterações pontuais:

Array multidimensional é nada mais que um array dinâmico simples com um novo array alocado em seus elementos ou um array já com múltiplas dimensões na sua declaração 'ReDim'. Podemos também considerar esse post um 2º update sobre array. Informações acerca do script você encontra nos textos anteriores, tudo ai já foi tratado antes.

Independente da eficácia de um modo ou outro de obter e tratar dados veja este espaço como um depósito de tudo que testo, encontro por ai e principalmente do que vocês me trazem. Compreender array dinâmico levou a entender e executar o multidimensional.

Tendo dificuldades em acompanhar? Volte ao primeiro post sobre ASP classic

26 dezembro 2021

Arrays ASP-C - update 01


Pra ir mais adiante vamos voltar ao array no ASP-C.  Na postagem anterior foi utilizado um exemplo de como trabalhar com array, observe abaixo:

Percebam que três elementos que não foram informados são reconhecidos pelo 'For Each' e por causa disso foi necessário tratar com o 'IF' para que o resultado não ficasse sem sentido. Sendo assim verifique abaixo uma alternativa mais interessante utilizando agora um loop 'For':

Neste caso agora estamos utilizando o 'uBound()' que identifica o tamanho do array lista gerando um valor respectivo. O resultado é exatamente o mesmo. O 'uBound' funciona exatamente como o 'len()' do Python. Podemos também evitar de informar que não tem nada deste modo abaixo:

Foi utilizado o 'Exit For' para isso e como já foi dito é preciso criar uma condição 'If" específica para que funcione.

Indo mais adiante mostrarei um exemplo de como adicionar elementos a um array utilizando o loop 'For', e diferente do que afirmei outrora existe sim array dinâmico e mostrarei ao fim desse post a forma de utilizar. Agora observe abaixo e perceba que deste modo será preciso especificar exatamente para o 'For' a quantidade de vezes que os dados serão inseridos:

Acima fiz questão de utilizar o 'uBound' novamente, mas eu poderia ter informado para ir até 5 na condição do 'For', entretanto o 'uBound' impede que se informe uma quantidade além ou aquém o que pode gerar erro ou um resultado incompleto. 

Com o tempo trarei mais informação se achar necessário sobre o array no ASP-C, contudo se você sentir falta de algo me informe abaixo que procurarei adicionar como update. 

------UPDATE #01 - 03/01/2022

Quando escrevi esse texto realmente achava que arrays dinâmicos não funcionavam em ASP-C. Eu poderia dizer que a quantidade de informação superficial na internet me levou a pensar deste modo e foi exatamente isso que ocorreu. O problema maior destas informações são detalhes muitas vezes mínimos que não ficam explícitos nos erros que recebemos no browser, sendo assim abaixo temos um trecho de código onde podemos ver como de fato isso funciona:

Observem que o que permite realmente alterar o tamanho do array é a palavra reservada 'ReDim', contudo há a necessidade de criar o array sem informar a quantidade de índices para que o ASP-C identifique que estamos trabalhando com array dinâmico. Outra coisa que devem ter notado é o uso da palavra reservada 'Preserve'. Esta palavra mantém os itens que a lista já possuía antes e não utilizar fará com que o ASP-C crie um novo array limpo com o mesmo nome. Vale testar como isso ocorre quando diminuímos o tamanho do array ao invés de aumentar como foi no caso acima, testem e comentem abaixo sobre. Para quem está tendo que traduzir o blog vou repetir aqui dois comentários do código acima:

  • os índices que forem informados devem ser do tipo Integer
  • para iniciar o array dinâmico você deverá criar sem informar nenhum valor entre parênteses, o que deve ser mudado antes do uso real dele

Como prometido voltei aqui e atualizei o post com dados mais corretos dessa vez. Qualquer dúvida ou mesmo notar que algo não condiz com a realidade utilizem o sistema de comentários abaixo e me alertem que corrijo. Sobre este último código tudo que usei já foi explicado antes então basta rever os posts anteriores para esclarecer sobre tais detalhes.

20 dezembro 2021

ASP-C Loopings e mais

Voltamos aqui em velocidade máxima pra ganhar tempo. Aqui será tratado vários loopings diferentes e citarei algumas reações das quais me intrigaram e espero que um de vocês ajude confirmando se isso é limitação do ASP-C ou se algo precisa ser feito para obter um resultado coerente. 

Começando pelo 'Do While Loop' e o 'Do Loop While' . Esse looping é usado quando não se sabe exatamente quantas vezes será necessário fazer o procedimento até ser necessário terminar o looping. Entretanto o 'Do Loop While' será executado ao menos uma vez para então testar a condição. Verifique abaixo:

A saída no navegador será como esta imagem ao lado, clique para deixar maior a visualização.

Notem que há um comentário no primeiro exemplo onde falo que o looping não reconhece o operador '=' e por alguma razão foi necessário utilizar o '<=' para que o resultado fosse correto. Acredito que o operador está associando valor à variável ao invés de ser tratado como uma igualdade. Os mestres do ASP-C podem explicar abaixo para que possamos confirmar essa situação.

Seguindo em frente vamos tratar agora do looping 'Do Until Loop' e 'Do Loop Until'. O terceiro exemplo é somente para que possam ver como utilizar o 'Exit Do' e assim sair do loop se alguma outra condição diferente for alcançada. 

Observando bem não há muita diferença entre esses loopings e vai de cada um a utilização deles. Verifique agora os resultados no navegador ao lado e perceba como o 'Exit Do' interfere no resultado final:

Diferente do 'Do While Loop' não houve qualquer problema ao usar o operador '=' e sendo assim acredito que isso possa ser decorrente do fato que o ASP-C já não receber atualizações faz algum tempo. Vamos precisar de ajuda de algum mestre que porventura venha por aqui e se interesse em explicar tal situação.

Por fim vamos agora ao 'While Wend'. Não testei a questão do operador '=' e se vocês notarem algum problema aceito que me alertem abaixo. 

Como podem ver acima o loop irá até atingir a condição. Outro detalhe é que em nenhum destes loops foi necessário incrementar qualquer tipo de contador. O resultado no navegador poderá ser visto ao lado. 

No 'While' loop a condição é sempre testada antes de cada ciclo e portanto só será executado o bloco de código somente se a condição for 'True'. Notem que não há qualquer mistério nesses loopings, apesar de aparentarem fazer a mesma coisa uma avaliação mais detalhada do resultado que se deseja fará com que uns sejam mais úteis do que outro dependendo da situação. Vou aproveitar e colocar abaixo o looping 'For Each' com um array. É preciso declarar o tamanho do array senão será lançado no navegador um erro a menos que se deseje trabalhar com array dinâmico, veja o próximo post para saber mais sobre. No código abaixo vejam que no resultado os espaços do array que não possuem elemento serão apresentados como 'elemento x não contém nada!'. Tente fazer com que ao invés de mostrar isso nada de fato seja apresentado, tentem usar com e sem o 'Exit'. Se conseguirem informe abaixo o seu sucesso.

Com o 'For Each' o loop irá percorrer todos os elementos declarados e não declarados. Outro detalhe é que o contador 'd' só existe dentro do looping para que a saída apresente as posições de cada elemento e não serve de fato para que o looping funcione.

Assim chegamos ao fim de mais um post sobre conceitos básicos do ASP-C e com essas ferramentas muita coisa já poderá ser feita com um nível mais complexo e mais útil pra vida real. Como dito em outro post no futuro trarei informações sobre 'Procedures' ou 'Procedimentos', o que chamamos de função e que no ASP-C temos 'Function' e 'Sub'.

Espero realmente que este esforço seja de grande ajuda pra todos os visitantes do blog e interessados no ASP classic. Como dito antes se qualquer coisa aqui estiver incorreta informe abaixo para que possamos aprender juntos.