|
Inicio
>
1.
SESIONES >
1.10 Arrays bidimensionales
|
Anterior Siguiente
|
|
|
|
Sesión
Prevista para el 16 Enero 2009
|
|
Copiar y pegar el
siguiente programa en Free Pascal. Completarlo para
que se muestre en pantalla el contenido del array
bidimensional estático declarado como una
constante. |
Program
Escribe_Matriz_Constante;
Type matriz=array [1..3,1..4] of integer; (*Matriz de
3 fils x 4 cols*)
Const a:matriz= ((2,4,6,8),
(3,6,9,12),
(4,8,12,16));
Procedure
EscribeMatriz(m:matriz;nfils,ncols:integer);
(*escribe en pantalla una matriz de nfils filas y
ncols columnas*)
Var i,j:integer;
Begin
for i:=1 to nfils do
begin
for
j:=1 to ncols do
Write(m[i,j]:3,' ');
Writeln;
end(*for
i*)
End;
begin
(*sentencia para escribir la matriz en pantalla
*)
end.
|
|
Escribir en pantalla el contenido de un
array estático, definido como una constante,
utilizando un procedimiento. |
|
|
|
|
|
|
Copiar y pegar este
programa en Free Pascal y completarlo siguiendo las
instrucciones que aparecen en los comentarios del
programa principal |
Program
Escribe_Matriz_Dinamica;
Type
matriz=array of array of integer; (*Matriz
dinámica*)
Var
a:matriz;
i,j:integer;
Procedure EscribeMatriz(m:matriz);
(*escribe en pantalla una matriz dinámica, no es
necesario conocer sus límites*)
Var
i,j:integer;
Begin
for
i:=low(m) to high(m) do
begin
for
j:=low(m[0]) to high(m[0]) do
Write(m[i,j]:3,' ');
Writeln;
end(*for
i*)
End;
begin
(*dimensionar la matriz dinámica a 3 filas y 4
columnas*)
(*inicializar la
matriz con los valores
(2,4,6,8)
(3,6,9,12)
(4,8,12,16)
*)
(*escribir
la matriz en pantalla*)
end.
|
Observar que, a diferencia del ejemplo del array
estático, el tamaño de un array bidimensional no se
conoce a priori (antes del programa principal),
además, antes de utilizarlo debe ser inicializado
convenientemente. |
Observar:
- Un array dinámico tiene que dimensionarse (hay
que asignarle un tamaño) en el programa y no en
la sección de declaración de variables(y esto
siempre antes de ser utilizado en el
programa).
- Para hacer referencia a sus índices inferior y
superior se utilizan las funciones low y high
- Dado un array bidimensional a:
- low(a), high(a) hacen referencia al límite
inferior y superior (respectivamente) de las
filas del array
- low(a[0]), high)(a[0]) hacen referencia al
límite inferior y superior de las columnas
del array
|
Modificar este programa de tal forma
que la inicialización de la matriz se haga a través
de un procedimiento que tenga un único parámetro que
sea utilizado a la vez como entrada y salida. |
|
|
|
|
Resolver este ejercicio de varias formas distintas:
- En primer lugar, considerar conocido (como una
constante) el número de líneas del fichero de texto (e.d.
la cantidad de filas) y el número de valores por fila
(e.d. el número de columnas). Se recomienda hacer dos
versiones de este programa: una de ellas utilizando la
sentencia readln para leer todos los valores de
una fila y la otra versión utilizando la sentencia
read en un bucle para realizar la misma
tarea.
- A continuación, hacer el programa para que acepte
ficheros de cualquier tamaño (Nota: es necesario conocer
en el programa el número de líneas del fichero).
|
|
|
|
|
|
|
|
|