Académique Documents
Professionnel Documents
Culture Documents
Arrays
Introduccin
Definicin de estructuras de datos Concepto de array Array unidimensionales Vectores Array multidimensionales Matrices Operaciones bsicas con arrays Uso de arrays como parmetros Tipos de datos definidos por el usuario Tipos de datos subrango y enumerado
Tema 6. Arrays 2
Estructuras de datos
Estructuras de datos o tipos de datos estructurados son tipos de datos construidos a partir de otros tipos de datos Tipos de estructuras de datos segn
Tipo de datos
Homognea: Todos los elementos tienen el mismo tipo de datos Heterognea: Los elementos pueden incorporar distintos tipos de datos
Cantidad de datos
Esttica: Tienen un nmero fijo de elementos Dinmica: Tienen un nmero variable de elementos
A la hora de determinar la estructura de datos que debe de utilizarse en un determinado problema, la eleccin depender del problema en s, y no tanto del lenguaje de programacin escogido para la implementacin de su solucin
Tema 6. Arrays
Ejemplo
LEER(NOMBRE1,NOTA1,NOMBRE2,NOTA2,NOMBRE3, LEER(NOMBRE1,NOTA1,NOMBRE2,NOTA2,NOMBRE3, NOTA3,NOMBRE4,NOTA4,NOMBRE5,NOTA5 ) MEDIA(NOTA1+NOTA2+NOTA3+NOTA4+NOTA5)/5 MEDIA SI NOTA1 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE1 , 'est aprobado' ) FIN_SI SI NOTA2 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE2 , 'est aprobado' ) FIN_SI SI NOTA3 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE3 , 'est aprobado' ) FIN_SI SI NOTA4 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE4 , 'est aprobado' ) FIN_SI SI NOTA5 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE5 , 'est aprobado' ) FIN_SI LEER(NOMBRE1,NOTA1,NOMBRE2,NOTA2,., NOMBRE100,NOTA100 ) MEDIA (NOTA1+NOTA2++NOTA100)/100 SI NOTA1 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE1 , 'est aprobado' ) FIN_SI SI NOTA2 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE2 , 'est aprobado' ) FIN_SI SI NOTA100 >= MEDIA ENTONCES ESCRIBIR ( NOMBRE100 , 'est aprobado' ) FIN_SI
Tema 6. Arrays
Arrays
Se utilizan subndices (al igual que se hace en Matemticas) que actan como contador de variables, todas del mismo tipo, pero en lugar de utilizar Ai usaremos la notacin A[i] Un array es una estructura de datos formada por una cantidad fija de datos del mismo tipo, cada uno de los cuales tiene asociado uno o ms ndices que determinan de forma unvoca la posicin del dato en el array Si tiene asociado un solo ndice se habla de VECTORES Si tiene asociado ms de un ndice se habla de MATRICES Para poder utilizar un array es necesario especificar el nmero de elementos que contiene y el tipo de datos de los elementos La declaracin de una variable de tipo array tiene la siguiente sintaxis Ident_var:ARRAY[valorinicial..valorfinal] DE tipodato valorinicial y valorfinal determinan el rango del ndice de manera que para acceder a cualquier elemento del array valorincial<=ndice<=valorfinal (el nmero de elementos del array es valorfinal-valorinicial+1) valorinicial y valorfinal deben pertenecer a un tipo ordinal y no pueden ser variables (deben ser constantes o valores constantes)
Tema 6. Arrays 5
Arrays
Cuando se declara un array, se reserva una cantidad de memoria fija, que es inalterable durante toda la ejecucin del programa, ocupando cada componente del vector un espacio en memoria igual al que ocupa el tipo de dato al que pertenece dicho componente Todas las posiciones ocupadas por un vector se reservan/almacenan de forma contigua en memoria
A: ARRAY[1..100] de ENTEROS se reservan 100 elementos * 2 bytes/elemento=200 bytes B: ARRAY[10..19] de CARACTER se reservan 10 elementos * 1 bytes/elemento=10 bytes
Tema 6. Arrays
Arrays unidimensionales
La nica operacin que se puede realizar sobre un array es la seleccin. Para ello es necesario especificar el nombre del array y la posicin a la que se quiere acceder. Una vez seleccionada una posicin se pueden utilizar todas las operaciones que permita el tipo de datos del array Podemos ver un array como una estructura de celdas donde se pueden almacenar valores Ejemplo
Notas: ARRAY[1..5] de REALES
? ? ? ? ?
El array notas tiene 5 casillas que pueden contener valores reales. Una vez que se accede a un elemento del array se puede tratar como un nmero real simple Notas[2] 5.5 ? ? ? ? 5.5 Notas[1] 3.7 Notas[3] (Notas[1]+Notas[2])/2
Tema 6. Arrays
3.7
5.5
4.6
Arrays multidimensionales
Un array es un conjunto de elementos del mismo tipo y este tipo puede ser a su vez otro array:
Clase: ARRAY[1..3] de ARRAY[1..5] de REALES
Se trata de arrays bidimensionales puesto que se necesitan dos ndices para acceder a cada elemento. La declaracin anterior es equivalente a
Clase: ARRAY[1..3,1..5] de REALES
El nmero de elementos del array multidimensional ser la multiplicacin del los elementos de cada uno de los ndices. En el ejemplo anterior ser (3-1+1)*(5-1+1)=15
Clase[2,4] 7.5
1 2 3 1
Tema 6. Arrays
7.5
5
8
Para el resto de ejercicios se supone que los datos de entrada son los siguientes N=10 A=[2,4,0,3,8,10,2,0,5,4] i 1 2 3 4 5 6 7 8 9 10
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
2 2 2 2 2 2 2 2 2 2 i 1 2 . 10
4 4 4 4 4 4 4 4 4
0 0 0 0 0 0 0 0
3 3 3 3 3 3 3
8 8 8 8 8 8
10 10 10 10 10
2 2 2 2
0 0 0
5 5
Salida por pantalla El Elemento 1 del array es 2 El Elemento 2 del array es 4 . El Elemento 10 del array es 4
9
i mayor i_mayor A 2 1 2 4 2 2 2 4 3 2 2 4 4 2 2 8 5 5 2 10 6 6 2 10 7 6 2 10 8 6 2 9 6 2 10 10 10 6 2
4 4 4 4 4 4 4 4 4 4
0 0 0 0 0 0 0 0 0 0
3 3 3 3 3 3 3 3 3 3
8 8 8 8 8 8 8 8 8 8
10 10 10 10 10 10 10 10 10 10
2 2 2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0 0 0
5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4
Tema 6. Arrays
11
i menor i_menor A 2 1 2 2 2 1 2 0 3 3 2 0 4 3 2 0 5 3 2 0 6 3 2 0 7 3 2 0 8 3 2 9 3 2 0 10 0 3 2
4 4 4 4 4 4 4 4 4 4
0 0 0 0 0 0 0 0 0 0
3 3 3 3 3 3 3 3 3 3
8 8 8 8 8 8 8 8 8 8
10 10 10 10 10 10 10 10 10 10
2 2 2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0 0 0
5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4
Tema 6. Arrays
12
A=[2,4,0,3,8,10,2,0,5,4]
i 1 2 3 4 5 6 7 8 9 10 -
media A 0.0 2 2.0 2 6.0 2 6.0 2 9.0 2 17.0 2 27.0 2 29.0 2 29.0 2 34.0 2 38.0 2 3.8 2
4 4 4 4 4 4 4 4 4 4 4 4
0 0 0 0 0 0 0 0 0 0 0 0
3 3 3 3 3 3 3 3 3 3 3 3
8 8 8 8 8 8 8 8 8 8 8 8
10 10 10 10 10 10 10 10 10 10 10 10
2 2 2 2 2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0 0 0 0 0
5 5 5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4 4 4
Tema 6. Arrays
13
A=[2,4,0,3,8,10,2,0,5,4]
i 1 2 3 4 5 6 7 8 9 10
media A 0.0 2 0.2 2 0.6 2 0.6 2 0.9 2 1.7 2 2.7 2 2.9 2 2.9 2 3.4 2 3.8 2
4 4 4 4 4 4 4 4 4 4 4
0 0 0 0 0 0 0 0 0 0 0
3 3 3 3 3 3 3 3 3 3 3
8 8 8 8 8 8 8 8 8 8 8
10 10 10 10 10 10 10 10 10 10 10
2 2 2 2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0 0 0 0
5 5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4 4
Tema 6. Arrays
14
i varianza A 0.0 2 4 0 3 8 10 2 0 5 4 1 3.24 2 4 0 3 8 10 2 0 5 4 2 3.28 2 4 0 3 8 10 2 0 5 4 3 17.72 2 4 0 3 8 10 2 0 5 4 4 18.36 2 4 0 3 8 10 2 0 5 4 5 36.00 2 4 0 3 8 10 2 0 5 4 6 74.44 2 4 0 3 8 10 2 0 5 4 7 77.68 2 4 0 3 8 10 2 0 5 4 8 92.12 2 4 0 3 8 10 2 0 5 4 9 93.56 2 4 0 3 8 10 2 0 5 4 10 93.60 2 4 0 3 8 10 2 0 5 4 3.06 2 4 0 3 8 10 2 0 5 4
Tema 6. Arrays
15
Tema 6. Arrays
16
Los parmetros actuales que sean arrays deben ser exactamente del mismo tipo que el parmetro formal con el que se corresponda Para utilizar un array como parmetro hay que crear un nuevo tipo de dato con un identificador de tipo
Tema 6. Arrays
17
nom_tipoN = tipoN
Ejemplos
TIPOS NUMERO = ENTERO LETRA = CARACTER VECTOR=ARRAY[1..10] DE ENTEROS VARIABLES NUM:NUMERO L:LETRA V:VECTOR
Tema 6. Arrays
18
Tipo enumerado
Para declarar una variable de tipo enumerado VARIABLES
Ident_var: (id1,id2idN) Ident_var: Dia : (lunes, martes, miercoles, jueves, viernes, sabado, domingo) TIPOS dia= (lunes, martes, miercoles, jueves, viernes, sabado, domingo) VARIABLES Diadelasemana : dia
Los valores de tipo enumerado no se pueden leer ni escribir pero s se pueden comparar Funciones predefinidas que se pueden usar Pred: devuelve el predecesor. Ejemplo: pred(martes) es lunes Pred: pred(martes) Succ: devuelve el sucesor. Ejemplo: Succ(martes) es miercoles Succ: Succ(martes) Ord: devuelve el ordinal. Ejemplo: Ord(martes) es 1 Ord: Ord(martes)
Tema 6. Arrays 20
10
Tipo subrango
Para declarar una variable de tipo subrango
VARIABLES Ident_var: primer_valor..ultimo_valor Ident_var: primer_valor..ultimo_valor laborable : lunes ..viernes digito:0..9
INCORRECTO ALGORITMO prueba. CONSTANTES max=50 VARIABLES A: ARRAY[1..max] de ENTEROS ARRAY[1..max] FUNCION f(B: ARRAY[1..max] de f(B: ARRAY[1..max] ENTEROS):ENTERO ENTEROS):ENTERO FIN_FUNC {-------- mdulo principal -----------} -----------} INICIO ESCRIBIR(f(A)) ESCRIBIR(f(A)) FIN
22
11