Comunidade Asp.net sou novato em programação; neste codigo eu realmente consigo preencher toda as 25 posições do array g(25) com o contador somando sempre e preenchedo o array com +1; quando eu acesso a 25º posição ele me retorna 25, o que é certo, mas quando acesso qualquer outra posição do array, me é retornado 0, a pergunta é, porquê? E mais, se colocar como comentario a linha 8, 'g(25) = kj , o browser me retorna 25º posições preenchidas com 0 : 0000000000000000000000000 .
o array fica assim: 12345678910111213141516171819202122232425
Eu sei que como o For Next foi programado para dar o looping 25 vezes, ele o fará; mas como o array nao foi preenchido(como no caso de se colocar comentario na linha 8), como é que me é retornado um array preenchido com 25 zeros "0000000000000000000000000"
Pessoal eu sei que é uma coisa simples para vcs mas para mim nao é. (Apesar de eu levar programação a sério)
1 Dim kj As Integer
2
3 Dim g(25) As Integer
4 Dim II As Integer
5
6 For II = 0 To 24 'vai da 1º a 25º posição
7 kj = kj + 1
--> 8 g(25) = kj
9
10 Response.Write(g(25))
11
Next

Acesso A Posição De Array
Started By danielwaite6, 04/08/2008, 21:51
1 reply to this topic
#1
Posted 04/08/2008, 21:51
#2
Posted 02/12/2008, 15:07
Boa tarde, Daniel! Tudo bem?
Se você tentar ler e entender o que você REALMENTE está fazendo, você talvez consiga enxergar o que está fazendo de errado. Tente ler linha a linha, para tentar entender passo a passo o que está sendo executado.
Vou tentar te ajudar, ok? Vou comentar cada linha, para ver se você consegue notar...
Mas antes, vou ter que lhe explicar dois conceitos, que talvez você não saiba. E se já souber, não custa eu te relembrar.
1º conceito: Array
Este tipo de variável no ASP possui vários "espaços" onde você pode armazenar uma informação. Cada "espaço" pode ser acessado por seu ÍNDICE, que no ASP, vem entre parênteses. Ou seja, se existe uma variável x(100), então ela possui 100 "espaços" que possuem informações, e cada informação será acessada pelo seu índice, que varia entre 0 e 99. Exemplo: x(0) - primeira posição, x(10) - décima primeira posição, x(99) - nonagésima nona posição.
Repare o seguinte: se você tentar acessar x(100), você estará na centésima primeira posição do vetor, indo além do que inicialmente se esperava que fosse ser armazenado. A linguagem VB, como a VBScript (ASP), possui uma permissão adicional de uso. Ela lhe permite que você utilize este espaço, por um motivo um pouco longo de se explicar aqui. Mas acessar x(100) não irá gerar um erro. Apenas não é aconselhável, pois você gostaria de usar 100 valores, e não 101!
Outro detalhe: a variável é a "x"! Não a x(100). x(100) não é variável. Ao se digitar "Dim x(100) As Integer", então você estará declarando uma variável "x" que contém 100 posições em forma de Array (matriz ou vetor), ok?
2º conceito: valores de inicialização em variáveis
Todo tipo de variável possui seu valor de inicialização padrão. Se você declara uma variável com o tipo String, ela possuirá o valor "" inicialmente. Se você declará-la como Integer, ela possuirá o valor 0 inicialmente (não é assim em todas as linguagens, mas em ASP sim), e assim por diante. Logo, se você define um Array do tipo Integer, TODOS os índices irão inicialmente armazenar o valor 0. Ok?
Agora vamos lá!
OBS(1): Repare que você está colocando o valor de kj no índice 25 da variável "g". Ou seja, na primeira passagem pelo loop, o índice 25 da variável "g" possuirá o valor 1 (todos os outros índices permanecerão inalterados - com valor 0). Na segunda passagem pelo loop, o índice 25 da variável "g" possuirá o valor 2 (todos os outros índices permanecerão inalterados - com valor 0). Até que na vigésima quinta passagem, o índice 25 da variável "g" possuirá o valor 25 (todos os outros índices permanecerão inalterados - com valor 0).
Lembre-se que a variável é a "g", e não a "g(25)"! Então, g(25) acessa a vigésima sexta posição da variável "g"!
OBS(2): Durante cada passagem pelo loop, você imprime o valor do índice 25 da variável "g". Como somente ele estará sendo alterado, então você irá imprimir 1, depois 2, depois 3, depois 4, e assim por diante. Mas lembrando: TODOS os outros índices (g(0), g(1), g(2), e assim por diante) estarão com o valor inicial - ZERO.
E aí? Já conseguiu ver onde está seu erro?
Se você realmente não está habituado a utilizar um FOR, talvez você se pergunte: "E como é que eu acesso os índices um a um, primeiro g(0), depois g(1), depois g(2)?"
Se esta for sua real pergunta, então a resposta é a seguinte...
O loop FOR faz com que uma variável tenha seus valores alterados 1 a 1, iniciando de um valor MÍNIMO, até um valor MÁXIMO, desta forma: For var = MÍNIMO To MÁXIMO.
Tá! Eu sei que você já sabe disto. O que você talvez ainda não tenha reparado é que esta variável é exatamente o que pode ser usado para "variar" o índice a ser usado. Ou seja, o que realmente produzirá o resultado esperado será:
Pronto! Agora, sim! Você está acessando o índice II da variável "g". Ou seja. Primeiro acessa o índice 0, depois o índice 1, e assim por diante.
Quanto ao meu comentário acima sobre a variável kj, é pelo seguinte...
Se você já possui a variável II variando entre os valores de 0 a 24, e se o seu objetivo é colocar de 1 a 25 no array, então não precisa de outra variável! O código abaixo já seria suficiente:
Bem... Espero ter esclarecido!
Continue tentando! Bons estudos...
Um abraço,
Thales Medeiros.
Se você tentar ler e entender o que você REALMENTE está fazendo, você talvez consiga enxergar o que está fazendo de errado. Tente ler linha a linha, para tentar entender passo a passo o que está sendo executado.
Vou tentar te ajudar, ok? Vou comentar cada linha, para ver se você consegue notar...
Mas antes, vou ter que lhe explicar dois conceitos, que talvez você não saiba. E se já souber, não custa eu te relembrar.
1º conceito: Array
Este tipo de variável no ASP possui vários "espaços" onde você pode armazenar uma informação. Cada "espaço" pode ser acessado por seu ÍNDICE, que no ASP, vem entre parênteses. Ou seja, se existe uma variável x(100), então ela possui 100 "espaços" que possuem informações, e cada informação será acessada pelo seu índice, que varia entre 0 e 99. Exemplo: x(0) - primeira posição, x(10) - décima primeira posição, x(99) - nonagésima nona posição.
Repare o seguinte: se você tentar acessar x(100), você estará na centésima primeira posição do vetor, indo além do que inicialmente se esperava que fosse ser armazenado. A linguagem VB, como a VBScript (ASP), possui uma permissão adicional de uso. Ela lhe permite que você utilize este espaço, por um motivo um pouco longo de se explicar aqui. Mas acessar x(100) não irá gerar um erro. Apenas não é aconselhável, pois você gostaria de usar 100 valores, e não 101!
Outro detalhe: a variável é a "x"! Não a x(100). x(100) não é variável. Ao se digitar "Dim x(100) As Integer", então você estará declarando uma variável "x" que contém 100 posições em forma de Array (matriz ou vetor), ok?
2º conceito: valores de inicialização em variáveis
Todo tipo de variável possui seu valor de inicialização padrão. Se você declara uma variável com o tipo String, ela possuirá o valor "" inicialmente. Se você declará-la como Integer, ela possuirá o valor 0 inicialmente (não é assim em todas as linguagens, mas em ASP sim), e assim por diante. Logo, se você define um Array do tipo Integer, TODOS os índices irão inicialmente armazenar o valor 0. Ok?
Agora vamos lá!
Dim kj As Integer 'Variável criada com o valor inicial 0 Dim g(25) As Integer 'Variável com 25 posições, cada qual iniciada com 0 Dim II As Integer 'Variável que será usada no loop FOR 'No FOR abaixo, a variável II irá possuir o valor '0 na primeira execução, depois 1, e assim por diante For II = 0 To 24 'A variável abaixo começou com o valor 0. 'Na primeira execução do loop, terá o valor 1, depois 2, 3, ..., até 25 kj = kj + 1 'Para a próxima linha, LEIA ABAIXO, OBS(1) g(25) = kj 'Para a próxima linha, LEIA ABAIXO, OBS(2) Response.Write(g(25)) Next
OBS(1): Repare que você está colocando o valor de kj no índice 25 da variável "g". Ou seja, na primeira passagem pelo loop, o índice 25 da variável "g" possuirá o valor 1 (todos os outros índices permanecerão inalterados - com valor 0). Na segunda passagem pelo loop, o índice 25 da variável "g" possuirá o valor 2 (todos os outros índices permanecerão inalterados - com valor 0). Até que na vigésima quinta passagem, o índice 25 da variável "g" possuirá o valor 25 (todos os outros índices permanecerão inalterados - com valor 0).
Lembre-se que a variável é a "g", e não a "g(25)"! Então, g(25) acessa a vigésima sexta posição da variável "g"!
OBS(2): Durante cada passagem pelo loop, você imprime o valor do índice 25 da variável "g". Como somente ele estará sendo alterado, então você irá imprimir 1, depois 2, depois 3, depois 4, e assim por diante. Mas lembrando: TODOS os outros índices (g(0), g(1), g(2), e assim por diante) estarão com o valor inicial - ZERO.
E aí? Já conseguiu ver onde está seu erro?
Se você realmente não está habituado a utilizar um FOR, talvez você se pergunte: "E como é que eu acesso os índices um a um, primeiro g(0), depois g(1), depois g(2)?"
Se esta for sua real pergunta, então a resposta é a seguinte...
O loop FOR faz com que uma variável tenha seus valores alterados 1 a 1, iniciando de um valor MÍNIMO, até um valor MÁXIMO, desta forma: For var = MÍNIMO To MÁXIMO.
Tá! Eu sei que você já sabe disto. O que você talvez ainda não tenha reparado é que esta variável é exatamente o que pode ser usado para "variar" o índice a ser usado. Ou seja, o que realmente produzirá o resultado esperado será:
For II = 0 To 24 kj = kj + 1 'Nem precisa deste incremento, II já está variando 1 a 1 g(II) = kj Next
Pronto! Agora, sim! Você está acessando o índice II da variável "g". Ou seja. Primeiro acessa o índice 0, depois o índice 1, e assim por diante.
Quanto ao meu comentário acima sobre a variável kj, é pelo seguinte...
Se você já possui a variável II variando entre os valores de 0 a 24, e se o seu objetivo é colocar de 1 a 25 no array, então não precisa de outra variável! O código abaixo já seria suficiente:
For II = 0 To 24 g(II) = II + 1 Next
Bem... Espero ter esclarecido!
Continue tentando! Bons estudos...
Um abraço,
Thales Medeiros.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)