[Duda] Array y Strings
#1

Hola, estuve leyendo el post de TheChaoz, y no entiendo, lo he leнdo 4 veces detenidamente y no entiendo de dуnde salen los nъmeros y los codigos de los Array y Strings.

їAlguien se puede tomar la molestia para explicarme las siguientes cosas?:

pawn Код:
new MiArray[3];
//Asignaciуn:
MiArray[0] = 1;//Asignamos el valor '1' en el index 0 de nuestro array
MiArray[1] = 50;//Asignamos el valor '50' en el index 1 de nuestro array
//Lectura:
printf("El valor almacenado en el index 0 de MiArray es %i", MiArray[0]);//Accedemos al valor almacenado en el index 0
pawn Код:
new Array_1[5], Array_2[4], Array_3[10];
Array_1 = {10, 15, 25, 40, 65};
Array_2 = {72, 111, 108, 97};//Este es nuestro string que contiene la palabra "Hola"
Array_3 = {15, 26, 14, 51, 85, 64, 35, 12, 45, 36};

//Para ejemplificar simplificaremos todo y pensaremos que esto en memoria, se almacena algo asi:
10 15 25 40 65 72 111 108 97 15 26 14 51 85 64 35 12 45 36
               |           |

Si alguien se tomara las molestias, estarнa muy agradecido...
Reply
#2

Es muy sencillo y ъtil al mismo tiempo el tema de las arrays.
Cuando creamos una array, los datos por defecto se asignan a 0, la representaciуn grбfica de esto:
pawn Код:
new miarray[5];
Es esta:

IndexValor
0\0
1\0
2\0
3\0
4\0
Si queremos introducir la palabra Hola en la array, simplemente se hace esto:

pawn Код:
miarray = "Hola";
Y en la tabla que tenнamos nosotros en cada celda se asignaba en la celda el valor correspondiente de la letra osea que esto:
IndexValor
0\0
1\0
2\0
3\0
4\0
Paso a ser esto:

IndexValor
0H
1o
2l
3a
4\0
Siempre se asigna una celda de mбs a las que vamos a usar ya que esto indica que es el final de la tabla. Por eso hice 5 indices y no 4.
Ahora cuando asignamos nъmeros se hace de otra forma, supone que queremos tener una array y que en el lugar 0 se asigne el valor 112, en el 1 el 203 en el 2 el 89, luego en el 3 el 22 y en el 4 el 1092.
Si queremos hacer eso tenemos que hacer esto:

pawn Код:
miarray[0] = 112;
miarray[1] = 203;
miarray[2] = 89;
miarray[3] = 22;
miarray[4] = 1092;
Osea para asignar un nъmero a una array en PAWN se sigue la siguiente sintaxis:

pawn Код:
<variable>[indice] = <valor>
Si se agrega un nъmero que tiene decimales se tiene que agregar le tag Float: al momento de declarar la variable.

Recuerda que si o si en el ъltimo espacio tiene que tener valor nulo, osea \0 (NULL). Otra cosa hablando de las arrays es que no se puede acceder a un нndice invalido. Supone que tenemos una array de 5 celdas, si queremos acceder a una celda mayor a 5 el comportamiento es indefinido, puede crashear el servidor o no.
Reply
#3

Vamos con la primera parte:
pawn Код:
new MiArray[2];
MiArray[0] = 1;
MiArray[1] = 50;
printf("El valor almacenado en el index 0 de MiArray es %i", MiArray[0]);
"new MiArray[3];" indica la cantidad de indices que hay, por ejemplo si hacemos esto "new MiArray[5]", entonces tenemos 5 indices (0-4) para insertar ciertos valores.
"MiArray[0] = 1;" el "[0] " es el numero de indice que queremos insertar un valor determinado, si haces "MiArray[4] = 20" entonces estamos insertando el valor "20" en el indice 4 de nuestro array.
"MiArray[1] = 50;" es igual al anterior.
"printf("El valor almacenado en el index 0 de MiArray es %i", MiArray[0]);" es un formateo de mensaje, lo que esta guardado en el indice numero "0" osea "1" ( MiArray[0] = 1; ) se remplazara por "%i".

Vamos con la segunda parte:
pawn Код:
new Array_1[5], Array_2[4], Array_3[10];
Array_1 = {10, 15, 25, 40, 65};
Array_2 = {72, 111, 108, 97};
Array_3 = {15, 26, 14, 51, 85, 64, 35, 12, 45, 36};
"new Array_1[5]" Array_1 solo es el nombre que se le da, en cambio el "[5]" indica el numero de celdas que se va a utilizar.
"Array_2[4]" y "Array_3[10]" igual que el anterior.
"Array_1 = {10, 15, 25, 40, 65};", "Array_2 = {72, 111, 108, 97};" y "Array_3 = {15, 26, 14, 51, 85, 64, 35, 12, 45, 36};" son un cierto tipo de "hash" por decirse asi, por ejemplo el "72" es el caracter "h", el "111" es el caracter "o", el "108" es el caracter "l" y el "97" es el caracter "a".

Espero que te sirva! Saludos!
Reply
#4

Cuando se intenta acceder a un нndice invбlido todo el script se detiene (es como que retorna la funciуn).
Reply
#5

Muchas gracias por comentar y explicarme, me olvide de borrar el post, es que 2 minutos despues de publicarlo, volvн a leerlo y se me dio por buscar en ****** "Cуdigos ASCII" y entendн porque los cуdigos estaban en esa cifra, gracias
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)