Arrays, Cadenas, Registros y Conjuntos.

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9
 
4.
ARRAYS, CADENAS, REGISTROS Y CONJUNTOS
. 4.1. Arrays 4.1.1. Arrays de una dimensión
 
Un
array
 (que algunos autores traducen como "
arreglo
") es una estructura que se utiliza para guardar una serie de elementos, todos los cuales son del mismo tipo (por ejemplo, 20 números reales). A la hora de definir un array, deberemos indicar el índice inferior y superior (desde dónde y hasta dónde queremos contar), separados por dos puntos (..), así como el tipo de datos de esos elementos individuales. Por ejemplo, para guardar hasta 200 números enteros, usaríamos:
lista: array [1..200] of integer
 Se suele emplear para definir
vectores o matrices
. Para mostrar en pantalla el segundo elemento de esa lista de números (o de ese vector) se usaría
write( lista[2] );
 Un ejemplo completo, que guarde varios datos en un array y luego muestre uno de ellos podría ser:
* ARRAY00.PAS, Contacto con arrays *)
 
* Datos en posiciones prefijadas *)
 
* Parte de CUPAS5, por Nacho Cabanes *)
 Program Array00; var datos: array[1..4] of integer; begin datos[1] := 20; datos[2] := 12; datos[3] := 7; datos[4] := 35; writeLn('El segundo dato es ',dato[2]); end.
Es habitual recorrer todo un array usando un bucle "for", de modo que podamos pedir y mostrar los datos de forma repetitiva. Por ejemplo, podríamos pedir al usuario 5 números y luego mostrarlos en orden inverso, así:
* ARRAY01.PAS, Ejemplo de uso de arrays 01): *)
 
* Pedir datos y mostrarlos al revés *)
 
* Parte de CUPAS5, por Nacho Cabanes *)
 Program Array01; var datos: array[1..5] of integer;
 
 i: integer; begin for i := 1 to 5 do  begin write('Deme el dato ',i,': '); readLn(datos[i]); end; write('Los datos al reves son: '); for i := 5 downto 1 do  write(datos[i], ' '); writeLn; end.
4.1.2. Buscar en un array Buscar en un array "tiene truco": si el elemento que estamos mirando contiene el dato que buscábamos, sabremos con seguridad que el dato existía, pero, por el contrario, no podremos afirmar que un dato no existe hasta que no hayamos comprobado todos los elementos. Por eso, lo habitual es usar un "boolean" para memorizar si lo hemos encontrado o no:
* ARRAYB.PAS, Buscar en un array *)
 
* Parte de CUPAS5, por Nacho Cabanes *)
 program ArrayB; var datos: array[1..5] of integer; i: integer; encontrado: boolean; begin for i := 1 to 5 do  begin write('Deme el dato ',i,': '); readLn(datos[i]); end; encontrado := false; write('Buscando un 10... '); for i := 1 to 5 do  if datos[i] = 10 then encontrado := true; if encontrado then 
5
 
 writeLn('Encontrado '); else writeLn('No encontrado.'); end.
4.1.3. Máximo y mínimo de un array
 
No es difícil encontrar el valor máximo o el mínimo de un array. Debemos empezar con un máximo (o mínimo) provisional, que puede ser el primer valor del array. A partir de ese punto, vamos comparando uno a uno con todos los demás datos. Si el dato actual es mayor que el máximo (o menor que el mínimo), pasará a ser nuestro nuevo máximo (o mínimo), que deberemos memorizar.
* ARRAYMAX.PAS, Maximo valor en un array *)
 
* Parte de CUPAS5, por Nacho Cabanes *)
 program ArrayMax; var datos: array[1..6] of integer; i: integer; maximo: integer; begin datos[1] := 20; datos[2] := 12; datos[3] := 7; datos[4] := 35; datos[5] := 48; datos[6] := 14; maximo := datos[1]; for i := 2 to 6 do  if datos[i] > maximo then  maximo := datos[i]; writeLn('El maximo es: ', maximo); end.
* Resultado: El maximo es: 48 *)
 
4.1.4. Arrays de dos o más dimensiones
 
Cuando se trata de una matriz de 2, 3 o más dimensiones, podemos indicar los rangos de valores aceptables, separados por comas. Por ejemplo, una matriz de bidimensional de tamaño 3x2 que debiera contener números reales sería:
5
 
matriz1: array [1..3, 1..2] of real
 y para ver el elemento (3,1) de la matriz haríamos:
writeLn( matriz1[3,1] );
 Un ejemplo más completo, que pidiera 2x3 datos y mostrar uno de ellos sería:
* ARRAYBI.PAS, Array bidimensional *)
 
* Parte de CUPAS5, por Nacho Cabanes *)
 program ArrayBi; var datos: array[1..2, 1..3] of integer; fila,columna: integer; begin for fila := 1 to 2 do  for columna := 1 to 3 do  begin write('Deme el dato de la fila ',fila, ' y columna ', columna, ': '); readLn(datos[fila, columna]); end; writeLn('El dato de la fila 1 y columna 2 es ', datos[1,2]); end.
* Ejemplo de ejecucion: Deme el dato de la fila 1 y columna 1: 1 Deme el dato de la fila 1 y columna 2: 20 Deme el dato de la fila 1 y columna 3: 3 Deme el dato de la fila 2 y columna 1: 54 Deme el dato de la fila 2 y columna 2: 15 Deme el dato de la fila 2 y columna 3: 9 El dato de la fila 1 y columna 2 es 20 *)
 
.
 4.1.5. Sobredimensionar un array
 
Cuando no sabemos cuántos datos vamos a tener que guardar, una primera solución es sobredimensionar: crear un array más grande de lo que esperemos necesitar y llevar un contador de cuántos datos ya hemos almacenado:
* ARRAYSD.PAS, Array sobredimensionado *)
 
5
5
5
5
5
5

Recompense su curiosidad

Todo lo que desea leer.
En cualquier momento. En cualquier lugar. Cualquier dispositivo.
Sin compromisos. Cancele cuando quiera.
576648e32a3d8b82ca71961b7a986505