Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Arrays
< Programacin en Pascal
Los arrays son cadenas o listas de algo. Normalmente siempre sern del mismo tipo.
Hasta ahora, hemos visto un tipo de datos que es una cadena: los strings. Son cadenas de
caracteres.
Los arrays son prcticamente imprescindibles en casi cualquier tipo de programa. De una
forma u otra, todo programa necesita almacenar en memoria grandes cantidades de datos.
Por ejemplo, un editor de texto almacena caracteres; un programa de msica datos de
samples, un programa de conversin almacena datos del dato que va a convertir, un programa
de video frames, un juego almacena sus caractersticas y escenas, y as con la prctica
mayora de los programas.
Declaracin de un array[editar]
La organizacin "array" es, probablemente, la estructura de datos ms conocida debido a que
en muchos lenguajes es la nica disponible explcitamente.
Un "array" es una estructura homognea que est constituida por componentes del mismo
tipo, llamado tipo base.
Tambin se denomina estructura de acceso aleatorio, o acceso directo, porque todos sus
componentes pueden seleccionarse arbitrariamente y son igualmente accesibles. Para
designar a un componente aislado, el nombre de la estructura se ampla con el llamado ndice
de seleccin del componente. El ndice debe ser un valor del tipo definido como tipo ndice del
array.
La definicin de un tipo "array" T especifica un tipo base To y un
tipo ndice I.
TYPE
T = ARRAY [ I ]
OF
To
Ejemplos:
TYPE vector = ARRAY [1..3] OF REAL
TYPE linea = ARRAY [1..80] OF CHAR
TYPE nombre = ARRAY [1..32] OF CHAR
Los ndices de un "array" deben ser de tipo ordinal. No suele ser posible utilizar el tipo
INTEGER porque se excedera el espacio de memoria accesible. Para usar valores enteros
como ndices, hay que indicar un subrango de enteros.
Un valor de tipo "array" se puede designar por un constructor donde se indica el nombre del
tipo y valores constantes de los componentes separados por comas y encerrados entre
parntesis.
Ejemplo:
(1.0,1.0,1.0)
vector (7.2, 2 OF 3.0)
Los componentes de un "array" se pueden someter a todas las operaciones permitidas para
su tipo. La nica operacin definida para el "array" como tal, es la asignacin ( := ).
La forma habitual de operar con "arrays" es actualizar componentes aislados.
El hecho de que los ndices tengan que ser de un tipo de datos definido tiene una
consecuencia importante: los ndices pueden calcularse, es decir, puede ponerse una
expresin en lugar de una constante. La expresin debe evaluarse y su resultado determina el
componente seleccionado. Esta generalizacin proporciona una herramienta de programacin
potente pero, al mismo tiempo, da ocasin a uno de los errores de programacin ms
frecuentes: el valor resultante puede estar fuera del intervalo especificado como campo de
variacin de los ndices. Se supone que en tales casos, la implementacin en un equipo
concreto ha previsto la emisin de mensajes de error.
Los valores organizados en forma de "array" se suelen manejar utilizando ndices variables y
sentencias repetitivas que permiten construir algoritmos para realizar tratamientos
sistemticos.
Los ndices son de tipo escalar, es decir, un tipo no estructurado en el que est definida una
relacin de orden. Si el tipo base tambin est ordenado, entonces queda establecida una
relacin de orden para ese tipo "array".
La relacin de orden entre dos "arrays" est determinada por los dos componentes
desiguales, correspondientes, con menor ndice.
Texto en cursiva=Declaracin de un array= La o'rganizacin'''--148.213.14.220 19:51 14
may 2014 (UTC)Texto en cursiva--148.213.14.220 19:51 14 may 2014 (UTC)-148.213.14.220 19:51 14 may 2014 (UTC) "array" es, probablemente, la estructura de
datos ms conocida debido a que en muchos lenguajes es la nica disponible explcitamente.
Un "array" es una estructura homognea que est constituida por componentes del mismo
tipo, llamado tipo base.
Tambin se denomina estructura de acceso aleatorio, o acceso directo, porque todos sus
componentes pueden seleccionarse arbitrariamente y son igualmente accesibles. Para
designar a un componente aislado, el nombre de la estructura se ampla con el llamado ndice
de seleccin del componente. El ndice debe ser un valor del tipo definido como tipo ndice del
array.
T = ARRAY [ I ]
OF
To
Ejemplos:
TYPE vector = ARRAY [1..3] OF REAL
TYPE linea = ARRAY [1..80] OF CHAR
TYPE nombre = ARRAY [1..32] OF CHAR
Los ndices de un "array" deben ser de tipo ordinal. No suele ser posible utilizar el tipo
INTEGER porque se excedera el espacio de memoria accesible. Para usar valores enteros
como ndices, hay que indicar un subrango de enteros.
Un valor de tipo "array" se puede designar por un constructor donde se indica el nombre del
tipo y valores constantes de los componentes separados por comas y encerrados entre
parntesis.
Ejemplo:
(1.0,1.0,1.0)
vector (7.2, 2 OF 3.0)
Los componentes de un "array" se pueden someter a todas las operaciones permitidas para
su tipo. La nica operacin definida para el "array" como tal, es la asignacin ( := ).
La forma habitual de operar con "arrays" es actualizar componentes aislados.
El hecho de que los ndices tengan que ser de un tipo de datos definido tiene una
consecuencia importante: los ndices pueden calcularse, es decir, puede ponerse una
expresin en lugar de una constante. La expresin debe evaluarse y su resultado determina el
componente seleccionado. Esta generalizacin proporciona una herramienta de programacin
potente pero, al mismo tiempo, da ocasin a uno de los errores de programacin ms
frecuentes: el valor resultante puede estar fuera del intervalo especificado como campo de
write( lista[2] );
Un ejemplo completo, que guarde varios datos en un array y luego muestre uno de
ellos podra ser:
*)
*)
*)
Program Array00;
var
datos: array[1..4] of integer;
begin
datos[1]
datos[2]
datos[3]
datos[4]
:=
:=
:=
:=
20;
12;
7;
35;
Es habitual recorrer todo un array usando un bucle "for", de modo que podamos
pedir y mostrar los datos de forma repetitiva. Por ejemplo, podramos pedir al
usuario 5 nmeros y luego mostrarlos en orden inverso, as:
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.
Ejercicio propuesto 4.1.1.1: Crea un programa que reserve espacio para un
Array de 3 nmeros enteros, que asigne a sus elementos los valores 3, 5 y 8, y
que despus muestre en pantalla la suma de los valores de sus 3 elementos.
Ejercicio propuesto 4.1.1.2: Crea un programa que pida al usuario cinco
nmeros enteros, los guarde en un array y luego muestre el primero y el ltimo.
Ejercicio propuesto 4.1.1.3: Crea un programa que pida al usuario diez nmeros
enteros, los guarde en un array y luego muestre los que se encuentran en
posiciones impares (1, 3, 5, 7, 9).
Ejercicio propuesto 4.1.1.4: Crea un programa que pida al usuario diez nmeros
enteros, los guarde en un array y luego muestre los que son impares.
Ejercicio propuesto 4.1.1.5: Crea un programa que sume dos vectores, cuyos
componentes indicar el usuario. Por ejemplo, la suma de (1,2,3) y (7,11,-1) sera
(8,13,2).
Ejercicio propuesto 4.1.1.6: Crea un programa que halle el producto escalar dos
vectores, cuyos componentes indicar el usuario.
comprobado todos los elementos. Por eso, lo habitual es usar un "boolean" para
memorizar si lo hemos encontrado o no:
Ejercicio propuesto 4.1.2.2: Crea un programa que pida al usuario diez nmeros
enteros, los guarde en un array y luego le vaya preguntando qu nmero quiere
buscar de forma repetitiva, y diga si era parte de los 10 datos originales o no.
Terminar cuando el nmero introducido sea 9999.
Ejercicio propuesto 4.1.2.3: Crea un programa que pida al usuario dos listas de 5
nmeros enteros, usando dos arrays distintos, y luego muestre en pantalla los
nmeros que aparecen en ambas listas.
:=
:=
:=
:=
:=
:=
20;
12;
7;
35;
48;
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
*)
Ejercicio propuesto 4.1.3.1: Crea un programa que pida al usuario diez nmeros
reales, los guarde en un array y luego busque y muestre el menor de esos
nmeros.
Ejercicio propuesto 4.1.3.2: Crea una versin alternativa, que pida al usuario
diez nmeros reales y muestre el menor de todos ellos, sin usar arrays.
Ejercicio propuesto 4.1.3.3: Crea un programa que pida al usuario 10 nombres
de personas y sus 10 estaturas. Estos datos se guardarn en dos arrays distintos.
A continuacin debers mostrar el nombre de la persona ms alta.
writeLn( matriz1[3,1] );
Un ejemplo ms completo, que pidiera 2x3 datos y mostrar uno de ellos sera:
1:
2:
3:
1:
2:
3:
20
1
20
3
54
15
9
Ejercicio propuesto 4.1.4.1: Crea un programa que pida al usuario dos bloques
de 3 nmeros enteros y luego muestre en pantalla las dos filas de tres datos cada
una.
Ejercicio propuesto 4.1.4.2: Crea un programa que pida al usuario dos bloques
de 5 nmeros enteros y luego diga la suma de ambos bloques.
Ejercicio propuesto 4.1.4.3: Crea un programa que sume dos matrices de
tamao 3x3.
Ejercicio propuesto 4.1.4.4: Si has estudiado lgebra matricial, crea un programa
que multiplique dos matrices de tamao 3x3.
Ejercicio propuesto 4.1.4.5: Si has estudiado lgebra matricial, crea un programa
que calcule el determinante de una matriz de tamao 3x3.
Ejercicio propuesto 4.1.4.6: Si has estudiado lgebra matricial, crea un programa
que calcule el determinante de una matriz de tamao 4x4.
Ejercicio propuesto 4.1.4.7: Si has estudiado lgebra matricial, crea un programa
de resolucin de sistemas de ecuaciones de 3 ecuaciones con 3 incgnitas
usando el mtodo de Gauss.
Cantidad de
{ Para bucles }
begin
{ Pedimos 200 datos o hasta introducir el valor
999 }
cantidad := 0;
repeat
if cantidad >= 200 then
writeLn('No caben mas datos!')
else
begin
cantidad := cantidad+1;
write('Deme el dato ',cantidad,' (999 para
salir): ');
readLn(datos[cantidad]);
end;
until datos[cantidad]=999;
{ El ultimo dato no hay que guardarlo }
cantidad := cantidad-1;
{ Al final, muestro todos }
writeLn('Cantidad de datos: ', cantidad);
writeLn('Los datos al reves son: ');
for i := cantidad downto 1 do
write(datos[i], ' ');
writeLn;
end.
(* Ejemplo de ejecucion:
Deme el dato 1 (999 para
Deme el dato 2 (999 para
Deme el dato 3 (999 para
Deme el dato 4 (999 para
Deme el dato 5 (999 para
salir):
salir):
salir):
salir):
salir):
23
45
7
16
999
Cantidad de datos: 4
Los datos al reves son: 16 7 45 23
*)
Ejercicio propuesto 4.1.5.1: Crea un programa que pida al usuario tantos
nmeros reales como desee, para despus mostrar todos los datos con dos cifras
decimales.
Ejercicio propuesto 4.1.5.2: Crea un programa que pida al usuario tantos
nmeros reales como desee, para despus mostrar su media aritmtica y los
datos que estn por encima de esa media.
Ejercicio propuesto 4.1.5.3: Crea un programa que pida al usuario tantos
nmeros reales como desee, para despus mostrar su media aritmtica, sin
utilizar arrays.
datos[3]
datos[4]
datos[5]
datos[6]
cantidad
:=
:=
:=
:=
:=
7;
35;
8;
49;
6;
datos[1]
datos[2]
datos[3]
datos[4]
datos[5]
datos[6]
:=
:=
:=
:=
:=
:=
20;
12;
7;
35;
49;
8;
7 8 12 20 35 49
*)
Ejercicio propuesto 4.1.7.1: Modifica e
VECTORES Y MATRICES
JUEVES, 19 DE JULIO DE 2007
Vectores y Matrices
Estructura de datos (arreglos)
Vectores y Matrices
Hasta aqu se han visto distintos tipos de estructuras de control. A partir de este punto se ver la
aplicacin de las mismas a distintos tipos de problemas.
Estructura de datos:
Una estructura de datos es una coleccin de datos que pueden ser caracterizados por su organizacin y las operaciones que se definen en ella.
Dentro de ellas encontramos distintos tipos, los tipos de datos ms frecuentes en los diferentes
lenguajes son:
Tipos de datos
entero (integer)
estndar real (real)
carcter (char)
simples lgico (boolean)
arrays (vectores/matrices)
registros
simples o estticos ficheros
conjuntos
estructurados cadenas (string)
listas (pilas/colas)
compuestos o dinmicos listas enlazadas
rboles
grafos
Las estructuras estticas son aquellas en las que el tamao de memoria ocupado se define an-tes de
que el programa se ejecute y no puede modificarse durante la ejecucin
Las estructuras dinmicas son aquellas en las que no se debe definir previamente el tamao de
memoria
Los datos simples tienen en comn que cada variable representa un elemento, en los estructu-rados
un identificador puede representar mltiples datos individuales, pudiendo cada uno de estos ser
referenciados independientemente.
ARRAY UNIDIMENSIONALES: VECTORES
ARRAY (ARREGLO): Es un conjunto finito y ordenado de elementos homogneos.
Ordenado : cada elemento del arreglo puede ser identificado
Homogneo : son del mismo tipo de dato
El tipo ms simple de arreglo es el unidimensional o vector (matriz de una dimensin).
Por ejemplo podra ser un vector denominado NOTAS
Los subndices 1, 2, k, n, indican la posicin del elemento, en Pascal van entre corchetes. El pri-mer
elemento es el 5, el segundo es el 8, el elemento k es 7 y el ensimo es 3.
Un array puede ser declarado de dos formas distintas que son:
Declaraciones Tipo Array
En las declaraciones del tipo array usaremos los siguientes pasos.:
1. La estructura del arreglo se describe en Type.
A cada uno de los 55 elementos del vector CARGA se le debe asignar el valor 0
Algoritmo de asigna
Pseudocdigo en espaol
desde I = 1 hasta 55 hacer
CARGA[I] 0
fin desde Cdigo se programa
for I = 1 to 55 do
CARGA[I] := 0;
desde I = 1 hasta 55
CARGA[I] 0
variables (var)
I entero
CARGA matriz funciones y procedimientos
funciones(function)(NO hay); comienzo (programa)
procedimientos (procedure); limpieza
inicio (begin); asigna
limpieza(limpia la pantalla); salida
asigna (hace ciclo y asigna); fin (programa)
salida
fin(end.)
comienzo
imprimo mensaje
leo y escribo en vec[I]
fin desde Cdigo se programa
for I = 1 to 5 do
begin
write ( );
read (vec[I] );
end;
desde I = 1 hasta 5
imprimo mensaje
leo vec[I]
Algoritmo de lee
Pseudocdigo en espaol
desde I = 1 hasta 5 hacer
leo vec[I]
fin desde Cdigo se programa
for I = 1 to 5 do
read (vec[I] );
Program Vector_2
{* Este es el segundo programa con vectores *}
uses
crt, dos; {declaraciones}
const {* constantes *}
A = 1;
B = 5;
type
matriz = array [1..5] of integer;
var
I: integer; {* controla el ciclo *}
vec: matriz;
procedure limpieza; {* comienzo de limpieza de la pantalla *}
begin
ClrScr;
end; {* fin de limpieza de la pantalla *}
procedure escribir; {* escribe en el vector *}
begin
for I := A to B do {* se define el ciclo de 1 a 5 *}
begin
write ('Ingrese vec(',I:1,') : ');
readln(vec[I]); {* escribe en el vector *}
end;
Actualizar
Aadir: Se denomina as a la operacin de agregar un nuevo, elemento al final del vector. la nica
condicin necesaria para esta operacin consiste en la comprobacin de espacio libre en memo-ria.
Ejemplo:
Dado el vector U de 7 elementos aadir un elemento ms al vector
Algoritmo de aade
Pseudocdigo en espaol
I0
repetir
I I +1
hasta que U[I] = 0 o i > k
si i es menor o igual a k
entonces
leo nuevo U[I]
sino
imprimo No ms lugar
fin_si Cdigo se programa
I := 0;
repeat
I := I + 1;
until U[I] = 0 or i >q
if I <= k then
read (U[I] )
else
writeln(No mas lugar)
U[I] = 0 o i > k
I es menor o igual a k
leo nuevo U[I] imprimo No ms lugar
I := I + 1;
until (U[I]=0) or (I> 7);
{* Se repite hasta que se encuentre una bandera o se termine el vector *}
if I<= 7 then
begin
writeln ('Ingrese un nuevo elemento al vector');
read ( U[I])
end
else
writeln ('No hay mas lugar en el vector');
end; {* fin de agrega *}
Borrar: Es eliminar un elemento de un vector se puede hacer de dos maneras una es reempla-zar el
elemento por el utilizado como seal. Puede servir pero no es recomendado en proyectos pe-queos.
Pero no as en grandes. El otro mtodo consiste en mover los elementos que se encuentran debajo
de l una posicin hacia arriba, colocando una bandera en la ltima celda.
Ambos mtodos tienen el paso de bsqueda en comn utilizado en aadir, lo que varan son los
pasos posteriores al Si. (Solo representaremos estos pasos)
Ejemplo:
Dado el vector U de 7 elementos eliminar un elemento al vector
Mtodo rudimentario
Algoritmo de elimina (rudimentario)
Pseudocdigo en espaol
Y0
repetir
I I +1
hasta que U[I] = 0 o I > k
si I es menor o igual a k
entonces
U[I] 0
sino
imprimo No existe el elemento
fin_si Cdigo se programa
I := 0;
repeat
I := I + 1;
until U[I] = 0 or I >q
if I <= k then
U[I] := 0;
else
writeln(No existe el elemento)
U[I] = 0 o I > k
I es menor o igual a k
U[I] 0 imprimo No existe el elemento
Mtodo Optimo
Algoritmo de elimina (optimo)
Pseudocdigo en espaol
I0
Lee Aux
repetir
I I +1
hasta que U[i] = Aux o I > k
si i es menor o igual a k
entonces
repetir
U[I] U[I + 1]
I I +1
hasta que U[i] = 0 o I > k
sino
imprimo No existe el elemento
fin_si Cdigo se programa
I := 0;
Readln(Aux);
repeat
I := I + 1;
until U[i] = Aux or I >q
if I <= k then
repeat
U[I] := U[I+1];
I := I + 1;
until U[I] = 0 or I >q ;
else
writeln(No existe el elemento)
I es menor o igual a k
U[I] U[I+1]
I I +1 imprimo No existe el elemento
U[I] = 0 o I > k
Insertar:
Se debe trabajar sobre un vector ordenado. Consiste en introducir un nuevo elemento al vector sin
que este pierda el orden. Para ello se debe comprobar que haya lugar libre en el vector, luego de lo
cual se deber desplazar hacia bajo los elementos necesarios como para generar un espacio libre en
la posicin adecuada sin que se pierda el orden.
Algoritmo de inserta (Ordenado creciente)
Pseudocdigo en espaol
I0
Lee Aux
repetir
I I +1
hasta que U[i] = 0 o I > B
si i es menor o igual a B
entonces
I I -1
mientras U[i] > Aux
U[I+1] U[I]
I I -1
fin mientras
U[I+1] Aux
sino
imprimo No hay lugar
fin_si Cdigo se programa
I := 0;
Read(Aux);
repeat
I := I + 1;
until U[i] = 0 or I >B
if I <= B then
begin
I := I - 1;
while U[I] > Aux
begin
U[I+1] := U[I];
I := I - 1;
end;
U[I+1] = Aux;
end
else
writeln(No hay lugar)
I0
Lee Aux
I I +1
I es menor o igual a k
I I -1
U[I] > Aux
U[I+1] U[I] imprimo No hay lugar
I I -1
U[I+1] Aux
Ordenacin:
La ordenacin o clasificacin es, el proceso de clasificar datos en algn orden o secuencia espe-cfica
como creciente o decreciente. Existen varios mtodos de ellos elegiremos el de intercambio (decantacin).
Algoritmo de ordena (Ordenado creciente)
Pseudocdigo en espaol
I0
repetir
I I +1
hasta que U[i] = 0 o I > B
PI-1
desde I 1 hasta P -1 hacer
desde J 1 hasta P - I hacer
si U[J] > U[J +1]
entonces (intercambiar)
Aux U[J]
U[J] U[J +1]
U[J +1] Aux
fin si
fin desde
fin desde
Cdigo se programa
I := 0;
repeat
I := I + 1;
until U[i] = 0 or I > B
P := I - 1;
for I = 1 to P-1 do
for J = 1 to P- I do
if U[J] > U[J +1] then
begin
Aux := U[J];
U[J] := U[J +1];
U[J +1] := Aux ;
end;
Bsqueda:
La bsqueda de un dato dentro de un array consiste en determinar si un elemento N pertenece o no
al conjunto de datos y posicin que el ocupa en el conjunto.
2: llama a Lista
3: llama a Borra
4: llama a Ordena
5: Inserta
sino limpia pantalla
fin segn
mientras H > 6
Cdigo se programa
repeat
repeat
limpieza;
writeln (' M E N U ');
writeln ( ' 1. Ingresar un valor al vector ');
writeln;
write ( ' Elija una opcin ');
readln (H); {* lee la opcin *}
until (H > 0) and (H < 7);
case H of
1 : Agrega;
2 : Lista;
3 : Borra;
4 : Ordena;
5 : Inserta;
else clrscr;
end;
until H = 6;
En el procedimiento borra, lo que realiza el algoritmo es desplazar cada uno de los elementos
posteriores al que queremos eliminar a una posicin anterior a la que tenamos. Este procedimiento
cuenta con dos partes.
a) encuentra el elemento a borrar
b) desplaza los elementos posteriores a una posicin anterior, el centinela nos sirve pa-ra optimizar
el proceso.
end;
Salida;
end; {* fin de lectura y listado *}
procedure Borra; {* borra un elemento del vector *}
var
J : integer;
H : char;
begin
I := 1;
write ('Ingrese el valor a borrar : ');
read (J);
while (U[I] <> 0) and (I<= B ) and (U[I] <> J) do {* se hace la bsqueda *}
I := I + 1;
if U[I] <> J then
begin {* No se encontr el valor *}
write (' Elemento no encontrado ');
readln(H);
end
else
begin
while U[I] <> 0 do {* Se borra el valor *}
begin
U[I] := U[I+1];
I := I + 1;
end;
write (' Elemento borrado ');
readln(H);
end;
end; {* fin de borrado *}
procedure agrega; {* agrega un elemento al vector *}
var
H:char;
begin
Lugar;
if I <= 7 then
repeat
write ('Ingrese un nuevo valor al vector : ');
readln ( U[I]);
I := I + 1;
until (U[I-1] = 0) or (I > B)
else
begin
write ('No hay mas lugar en el vector');
Read (H);
end
end; {* fin de agrega *}
procedure inserta; {* inserta un elemento al vector ordenado *}
var
H:char;
K, Aux : integer;
begin
Lugar;
if I <= B then
begin
K := I;
write ('Ordeno el vector ? (S/N) ');
Read (H);
if (H = 'S') or (H = 's') then Ordena;
write ('Ingrese el valor a insertar : ');
Read (Aux);
I := K - 1;
while U[I] > Aux do
begin
U[I+1] := U[I];
I := I - 1;
end;
U[I+1] := Aux;
end
else
begin
write ('No hay mas lugar en el vector');
Read (H);
end
end; {* fin de agrega *}
Copia de un array:
Un array puede ser asignado a otro array, si y solo si, ambos tienen el mismo tipo y el mismo tamao. Lo que implica que ambos fueron declarados por el mismo identificador o por identificadores
equivalentes.
Ejemplo:
Type
XX = array [1..30] of byte;
YY = array [1..30] of byte;
Var:
Alfa, Gama: XX;
Beta: YY;
Manejo de tablas
Para el manejo de tablas, no debemos olvidarnos que las celdas de las mismas se identifican por dos
subndices. Por lo tanto cualquier proceso que queramos realizar sobre la misma, involucrar a
ambos subndices.
Por ejemplo cuando se desea leer un array se podr hacer por filas, segn se puede ver.
var
M, : array [1..10,4..25] of real;
For Fila := 1 to 10
For Columna := 4 to 25
Writeln(A[Fila, Columna]);
Por columnas.
For Columna := 4 to 25
For Fila := 1 to 10
Writeln(A[Fila, Columna]);
Array multidimensionales
Pascal no tiene lmite para el nmero de dimensiones. Pero al usuario corriente no se le recomienda superar las 3 dimensiones, ya que se vuelve complejo su manejo.
Declaracin de los arrays multidimensionales
Al igual que en los arrays de bidimensionales (las tablas), los arrays multidimensionales se crean
con declaraciones type y var cuando un programa se codifica en Pascal.
type
Matriz = array [1..10,4..25,A..Z] of byte;
type
Vector = array [1..10] of byte;
Matriz = array [4..25,A..Z] of Vector;
type
Vector = array [1..10] of byte;
Tabla = array [4..25] of Vector;
Matriz = array [A..Z] of Tabla;
var
M, : array [1..10] of array [4..25,] of array [A..Z] of byte;
CONSTANTES DE TIPO ARRAY (TIPEADAS)
Turbo Pascal permite que las constantes con tipo (tipeadas) puedan ser de casi cualquier tipo. Las
constantes con tipo, no son constantes en el estricto sentido, sino variables inicializadas, es decir,
variables que tienen un valor inicial especfico en la cabecera del programa.
Ejemplos
const
A : array [1..5] of integer = (10,20,30,40,50);
const ( vectores )
Dias Por Mes : array [l..l2] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);
Prctica N 7
1. Leer una lista de 10 valores enteros. Listarlos por pantalla en sentido inverso al que ingresaron.
2. Dado un vector 15 valores, hacer un programa que pueda obtener, y sacar por pantalla
el mayor de los valores
el menor de los valores
el ms prximo al promedio
3. Suponiendo que los valores del problema anterior fueran mediciones. Se pide modificarlo de
forma tal que sin uso de vectores auxiliares. Se pueda calcular la desviacin media y a des-viacin
estndar
Donde Xj, es cada uno de los valores X es el promedio de los valores, y N la cantidad de valores.
4. Se lee las letras de una palabra carcter a carcter. El ltimo carcter que ingresa es la barra de
dividir(/), que indica que la palabra ha finalizado. Escribir un programa que imprima la pala-bra en
el orden que se ingres y en sentido inverso (pera arep, la palabra podr tener hasta 20 caracteres).
5. Disear un algoritmo recursivo, que permita invertir el contenido de un vector. Como indica el
ejemplo:
Vector original: 28 35 12 43 56 77
Vector invertido: 77 56 43 12 35 28
El algoritmo no podr usar un vector auxiliar.
6. Hacer un programa que permita realizar la suma y el producto de dos vectores.
El usuario puede elegir el tamao del vector (entre 2 y 10 valores)
El usuario elige la operacin a realizar.
7. Dado un vector de 20 posiciones (nmeros enteros). Genere un programa que permita realizar las
siguientes operaciones.
Ingresar un elemento en el final de la cola (primera posicin libre del vector). Comproban-do
antes del ingreso que existe una posicin libre, sino colocar un mensaje de aviso.
Sacar el elemento que se encuentra en la primera posicin (si hay, sino colocar un men-saje de
aviso), corriendo luego los dems en la cola una posicin hacia delante.
Listar en cualquier momento el contenido de la cola del primero al ltimo.
8. Dado un vector de 20 posiciones (nmeros enteros). Genere un programa que permita realizar las
siguientes operaciones.
Ingresar un elemento en la ltima posicin de la pila (primera posicin libre del vector).
Comprobando antes del ingreso que existe una posicin libre, sino colocar un mensaje de aviso.
Sacar el elemento que se encuentra en la ltima posicin (si hay, sino colocar un mensaje de
aviso).
Listar en cualquier momento el contenido de la pila del primero al ltimo.
9. Dado un vector de 20 posiciones (nmeros enteros). Genere un programa que permita realizar las
siguientes operaciones.
Ingresar un elemento en la posicin que le corresponda de la lista, de manera que la mis-ma se
mantenga en orden creciente. (para lo cual desplaza los dems elementos una posicin para
atrs).Comprobando antes del ingreso que existe una posicin libre, sino colocar un mensaje de
aviso.
Sacar de la lista el elemento que indica el usuario (si se encuentra, sino colocar un men-saje de
aviso).
Listar en cualquier momento el contenido de la cola del primero al ltimo.
10. Pascal como otros lenguajes operan con nmeros enteros 2,148 109, estos no tienen errores por
redondeo. Para valores ms grandes se trabajan con reales, pero ellos si tienen errores de redondeo.
Se le pide a Ud.. Haga un programa que opere con nmeros que poseen entre 10 y 20 cifras, que
puedan hacer:
Suma
Resta
Multiplicacin
Sin errores, asegurando todas las cifras
Pgina principal
2007 (1)
julio (1)
Vectores y Matrices