ALGORITMOS y PROGRAMACIÓN 75.

40

Algoritmos y Programación I Clase Teórica Nº 7
Vectores y Matrices
Autores : Ings. Cataldi - Lage

Martes 14 a 17 Hs Jueves 14 a 17 Hs. Prof. Ing. F. J. LAGE

J.T.P. Ing. Z. CATALDI A.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

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 aplicación de las mismas a distintos tipos de problemas. Estructura de datos: Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ella. Dentro de ellas encontramos distintos tipos, los tipos de datos más frecuentes en los diferentes lenguajes son: Tipos de datos estándar simples definidos por el programador (no estándar) entero (integer) real (real) carácter (char) lógico (boolean) subrango (subrange) enumerativo (enumerated) arrays (vectores/matrices) registros ficheros conjuntos cadenas (string) listas (pilas/colas) listas enlazadas árboles grafos

simples o estáticos estructurados compuestos o dinámicos

Las estructuras estáticas son aquellas en las que el tamaño de memoria ocupado se define antes de que el programa se ejecute y no puede modificarse durante la ejecución Las estructuras dinámicas son aquellas en las que no se debe definir previamente el tamaño de memoria Los datos simples tienen en común que cada variable representa un elemento, en los estructurados un identificador puede representar múltiples datos individuales, pudiendo cada uno de estos ser referenciados independientemente.

Página 1 de 25

ALGORITMOS y PROGRAMACIÓN 75.40

Algoritmos y Programación I Clase Teórica Nº 7
Vectores y Matrices
Autores : Ings. Cataldi - Lage

Martes 14 a 17 Hs Jueves 14 a 17 Hs. Prof. Ing. F. J. LAGE

J.T.P. Ing. Z. CATALDI A.T.P. Srita. A Pauluzzi Sr P. Corradino Sr. F. Gómez

ARRAY UNIDIMENSIONALES: VECTORES
ARRAY (ARREGLO): Es un conjunto finito y ordenado de elementos homogéneos. • Ordenado : cada elemento del arreglo puede ser identificado • Homogéneo : son del mismo tipo de dato El tipo más simple de arreglo es el unidimensional o vector (matriz de una dimensión). Por ejemplo podría ser un vector denominado NOTAS NOTAS[1] 5 NOTAS[2] 8 .......... NOTAS[k] 7 ...... NOTAS[j] 3

Los subíndices 1, 2, k, n, indican la posición del elemento, en Pascal van entre corchetes. El primer elemento es el 5, el segundo es el 8, el elemento k es 7 y el enésimo 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. 2. Se le asigna ese tipo a una o más variables.

Type XX = array [1..3000] of real; Var: Alfa : XX;
array y of son obligatorias [1...3000] indica los valores que toman los índices del vector, son del tipo subrango. real identifica que tipo de elementos almacena el vector. Variables Tipo Array En las declaraciones de variable tipo array se hará de la siguiente forma.: 1. En la declaración se describe la variable.

Var: Alfa : array [1..3000] of real;;
Los elementos cumplen la misma función que en el caso anterior. Dentro de los distintos tipos que un array puede almacenar en sus posiciones, puede ser un tipo Array como el del siguiente tipo:

Página 2 de 25

30] of Linea. Z. Srita. CATALDI A.. Las operaciones que se pueden hacer con un vector son: • asignación • lectura/escritura • • recorrido (acceso secuencial) actualizar (añadir. Diagrama N-S nombre selección1 Página 3 de 25 . Prof.P.ALGORITMOS y PROGRAMACIÓN 75. Asignación: Es darle un valor a un elemento de un vector Pseudocódigo en español A[3] ← 5 Para la asignación como para otro procesos se debe recurrir a estructuras repetitivas (desde..T.P. Gómez Type Linea = array [1. F.T. Hoja = array [1.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. F. Cataldi . Corradino Sr. insertar) • ordenación • búsqueda Código se programa A[3] := 5. mientras o repetir). borrar. A Pauluzzi Sr P.30] of Linea.. Ing. Ing. Libro = array [1. Pseudocódigo del programa nombre vector1(program). J. LAGE J.40] of char. Ejemplo: A cada uno de los 55 elementos del vector CARGA se le debe asignar el valor 0 Algoritmo de asigna Pseudocódigo en español desde I = 1 hasta 55 hacer CARGA[I] ← 0 fin desde Su estructugrama tiene la siguiente forma desde I = 1 hasta 55 CARGA[I] ← 0 Código se programa for I = 1 to 55 do CARGA[I] := 0.

Ing. F. B = 55. {* comienzo de la asignación *} begin for I := A to B do {* se define el ciclo de 1 a 55*} CARGA[I] := 0. asigna (hace ciclo y asigna).) declaraciones Crt.P. {* asigna los valores *} end. tipo (type) matriz = array [1.ALGORITMOS y PROGRAMACIÓN 75.. Ing.T. {* fin del ciclo *} Página 4 de 25 . inicio (begin). El código del procedimiento es: procedure asigna. LAGE J. salida fin(end. Z. A Pauluzzi Sr P. constantes(const) A = 1. Gómez declaraciones (uses) Crt. CATALDI A. Prof.T. procedimientos (procedure).P. Srita. Corradino Sr.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Cataldi . F. limpieza(limpia la pantalla). Dos. Dos Constantes A.55] de enteros variables (var) I entero CARGA matriz funciones(function)(NO hay). B tipos matriz [55] Variables Y CARGA funciones y procedimientos comienzo (programa) limpieza asigna salida fin (programa) Como se puede ver tenemos la definición del vector en tipo o type. J.

readln (H). dos. {* fin del procedimiento salida *} begin limpieza. salida. end. {* controla el ciclo *} CARGA: matriz. Manejado por estructuras repetitivas. {* comienzo de la asignación *} begin for I := A to B do {* se define el ciclo de 1 a 55 *} CARGA[I] := 0. {* asigna la valores *} end. type matriz = array [1. Lectura/escritura: Es una operación de entrada salida sobre un vector. B = 55. asigna. procedure limpieza. end. Ejemplo: Ingresar por teclado cada uno de los 5 elementos de un vector de nombre vec.55] of integer. {* fin de limpieza de la pantalla *} procedure asigna. Y luego leerlos y presentarlos por pantalla en orden inverso al que entraron (de 5 a 1) Página 5 de 25 . {* esta instrucción y la anterior son para dar tiempo para *} {* ver resultados *} end. {* comienzo de limpieza de la pantalla *} begin ClrScr. Program Vector_1. var I: integer. {declaraciones} const {* constantes *} A = 1.. {* fin de la asignación *} procedure salida. begin writeln ( 'Presione cualquier tecla '). {* Este es el primer programa con vectores *} uses Crt. {* comienzo del procedimiento salida *} {* solo sirve para ver resultados *} Var H :char.Quedándonos el programa de la siguiente manera.

I:1. end. {* escribe en el vector *} end. readln(vec[I]). read (vec[I] ).Algoritmo de escribe Pseudocódigo en español desde I = 1 hasta 5 hacer comienzo imprimo mensaje leo y escribo en vec[I] fin desde Código se programa for I = 1 to 5 do begin write (‘ ‘).') : '). {* fin de escritura *} Página 6 de 25 . Su estructugrama tiene la siguiente forma desde I = 1 hasta 5 imprimo mensaje leo vec[I] El código del procedimiento es: 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('. end.

ALGORITMOS y PROGRAMACIÓN 75.5] de enteros variables (var) I entero vec matriz Funciones(function)(NO hay). Procedimientos (procedure).T. Z. J. {* fin de lectura *} Pseudocódigo del programa Nombre vector2(program). {* lee el vector *} begin for I := B downto A do {* se define el ciclo de 5 a 1 *} writeln ('vec('.P. Página 7 de 25 . Gómez Algoritmo de lee Pseudocódigo en español desde I = 1 hasta 5 hacer leo vec[I] fin desde Su estructugrama tiene la siguiente forma desde I = 1 hasta 5 imprimo vec[I] El código del procedimiento es: procedure leer.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Prof. F.P.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. escribir (escribe en el vector) leer (lee del vector y saca por pantalla) salida fin(end. Constantes(const) A = 1. Declaraciones (uses) Crt.I:1. LAGE J.) Diagrama N-S nombre selección1 declaraciones Crt. tipo (type) Matriz = array [1.vec[I]:2). A Pauluzzi Sr P. CATALDI A. Cataldi . F.T. limpieza(limpia la pantalla).. B = 5. Ing. Dos Constantes A. Corradino Sr. Dos. inicio (begin). {* lee el vector y lo saca por pantalla *} end. B tipos matriz [5] Variables I vec funciones y procedimientos comienzo (programa) limpieza escribe lee salida fin (programa) Código se programa for I = 1 to 5 do read (vec[I] ). Ing. Srita.') = '.

Corradino Sr. {declaraciones} const {* constantes *} A = 1. J.') : ').T. end. dos. LAGE J.T. Cataldi . {* lee el vector y lo saca por pantalla *} end.P.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.') = '.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. F.. Prof. F. {* escribe en el vector *} end. type matriz = array [1. {* fin de escritura *} procedure leer. Srita. end. procedure limpieza. Ing. {* fin de lectura *} Página 8 de 25 .vec[I]:2). {* comienzo de limpieza de la pantalla *} begin ClrScr. Z. Ing. Gómez Program Vector_2 {* Este es el segundo programa con vectores *} uses crt. {* lee el vector *} begin for I := B downto A do {* se define el ciclo de 5 a 1 *} writeln ('vec('.I:1.5] of integer. {* escribe en el vector *} begin for I := A to B do {* se define el ciclo de 1 a 5 *} begin write ('Ingrese vec('.P. A Pauluzzi Sr P. {* controla el ciclo *} vec: matriz. readln(vec[I]).ALGORITMOS y PROGRAMACIÓN 75.I:1. CATALDI A. {* fin de limpieza de la pantalla *} procedure escribir. B = 5. var I: integer.

ALGORITMOS y PROGRAMACIÓN 75. CATALDI A. {* comienzo del procedimiento salida *} {* solo sirve para ver resultados *} Var H :char. {* esta instrucción y la anterior son para dar tiempo para *} {* ver resultados *} end. J. {* fin del procedimiento salida *} begin limpieza. Srita. F.P. Corradino Sr. end.T. y se aplica tanto cuando se busca un elemento de un vector o cuando se desea listar el mismo.P. Recorrer: Esta operación se realiza cuando uno lee el vector. Ing. elemento al final del vector. Cataldi . F. LAGE J. salida. readln (H). Prof. until U[I] = 0 or i >q if I <= k then read (U[I] ) else writeln(“No mas lugar”) Página 9 de 25 . como lo vimos en el ejemplo anterior. la única condición necesaria para esta operación consiste en la comprobación de espacio libre en memoria.T. Ejemplo: Dado el vector U de 7 elementos añadir un elemento más al vector Algoritmo de añade Pseudocódigo en español I ← 0 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 más lugar” fin_si Código se programa I := 0. Z. Ing. A Pauluzzi Sr P.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. begin writeln ( 'Presione cualquier tecla ').40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. repeat I := I + 1. escribir. Actualizar Añadir: Se denomina así a la operación de agregar un nuevo. leer. Gómez procedure salida.

Ing. {* agrega un elemento al vector *} begin I:=0.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Cataldi . {* 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'). (Solo representaremos estos pasos) Ejemplo: Dado el vector U de 7 elementos eliminar un elemento al vector Método rudimentario Algoritmo de elimina (rudimentario) imprimo “No más lugar Página 10 de 25 . read ( U[I]) end else writeln ('No hay mas lugar en el vector').P. CATALDI A. repeat I := I + 1. A Pauluzzi Sr P.T. Puede servir pero no es recomendado en proyectos pequeños. Gómez Su estructugrama tiene la siguiente forma I ← I +1 U[I] = 0 o i > k I es menor o igual a k leo nuevo U[I] El código del procedimiento es: procedure agrega. F. lo que varían son los pasos posteriores al Si. J. Srita. Ambos métodos tienen el paso de búsqueda en común utilizado en añadir. Prof. colocando una bandera en la última celda. end. LAGE J. El otro método consiste en mover los elementos que se encuentran debajo de él una posición hacia arriba. Ing. until (U[I]=0) or (I> 7).T.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. Pero no así en grandes. Corradino Sr. Z. F.P. {* fin de agrega *} Borrar: Es eliminar un elemento de un vector se puede hacer de dos maneras una es reemplazar el elemento por el utilizado como señal.ALGORITMOS y PROGRAMACIÓN 75.

T.P. Z.ALGORITMOS y PROGRAMACIÓN 75. Corradino Sr. Prof. repeat I := I + 1. F. LAGE J. repeat I := I + 1. Ing. Readln(Aux). J. Ing.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. until U[I] = 0 or I >q . else writeln(“No existe el elemento”) I ← I +1 U[I] = 0 o I > k I es menor o igual a k U[I] ← 0 Método Optimo Algoritmo de elimina (optimo) Pseudocódigo en español I ← 0 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 Código se programa I := 0. F. Cataldi .P. Srita. CATALDI A. I := I + 1. Gómez Pseudocódigo en español Y ← 0 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 Su estructugrama tiene la siguiente forma Código se programa I := 0.T. else writeln(“No existe el elemento”) imprimo “No existe el elemento” Página 11 de 25 .Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. until U[I] = 0 or I >q if I <= k then U[I] := 0. A Pauluzzi Sr P. until U[i] = Aux or I >q if I <= k then repeat U[I] := U[I+1].

Ing. F. Ing.P. J. Prof.T.1. F. Algoritmo de inserta (Ordenado creciente) Pseudocódigo en español I ← 0 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 Código se programa I := 0. Gómez Su estructugrama tiene la siguiente forma I ← 0 Lee Aux I ← I +1 U[I] = Aux o I > k I es menor o igual a k U[I] ← U[I+1] I ← I +1 U[I] = 0 o I > k Insertar: Se debe trabajar sobre un vector ordenado. Read(Aux). until U[i] = 0 or I >B if I <= B then begin I := I . U[I+1] = Aux. Para ello se debe comprobar que haya lugar libre en el vector. end else writeln(“No hay lugar”) imprimo “No existe el elemento” Página 12 de 25 . CATALDI A.T. Srita. end. LAGE J. Consiste en introducir un nuevo elemento al vector sin que este pierda el orden.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.P. A Pauluzzi Sr P. Cataldi . while U[I] > Aux begin U[I+1] := U[I]. Z. I := I .Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. luego de lo cual se deberá desplazar hacia bajo los elementos necesarios como para generar un espacio libre en la posición adecuada sin que se pierda el orden. repeat I := I + 1.1. Corradino Sr.ALGORITMOS y PROGRAMACIÓN 75.

el proceso de clasificar datos en algún orden o secuencia específica como creciente o decreciente.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Algoritmo de ordena (Ordenado creciente) Pseudocódigo en español I ← 0 repetir I ← I +1 hasta que U[i] = 0 o I > B P← I -1 desde I ← 1 hasta P -1 hacer desde J ← 1 hasta P . repeat I := I + 1. until U[i] = 0 or I > B P := I . LAGE J.T. Cataldi . U[J +1] := Aux .P.1. F. Gómez Su estructugrama tiene la siguiente forma I ← 0 Lee Aux I ← I +1 U[I] = Aux o I > k I es menor o igual a k I ← I -1 U[I] > Aux U[I+1] ← U[I] I ← I -1 U[I+1] ← Aux Ordenación: La ordenación o clasificación es. F. for I = 1 to P-1 do for J = 1 to P. imprimo “No hay lugar” Su estructugrama tiene la siguiente forma Página 13 de 25 . end. J.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 Código se programa I := 0.ALGORITMOS y PROGRAMACIÓN 75. Srita.T.I do if U[J] > U[J +1] then begin Aux := U[J]. A Pauluzzi Sr P. Existen varios métodos de ellos elegiremos el de intercambio (decantación). Prof. Z. CATALDI A. Corradino Sr. Ing.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.P. Ing. U[J] := U[J +1].

Ejemplo general Hacer un programa que permita operar con un vector de siete posiciones.P. Si se encuentra es el método que ofrece menor eficiencia pero el más sencillo. que opere con números naturales. Búsqueda Secuencial: Compara cada elemento del vector con el valor deseado. F. Ing. F.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. eliminar o insertar un valor. ya que las dos siguientes están fuera del alcance del mismo.P. Cataldi . también se podrá listar todos los valores que tiene el vector. Usaremos como centinela el número 0 (cero) por lo cual lo primero que deberá hacer el programa deberá asignarle a todos los elementos del vector dicho valor . LAGE J.T. Prof. Esto se puede ver en el ejemplo anterior.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs.T. Los distintos tipos de búsqueda se pueden clasificar en: búsqueda secuencial búsqueda binaria búsqueda por transformación de claves (hash) En este curso solo se verá el primer tipo. Ing. J. Gómez I ← 0 I ← I +1 U[I] = 0 o I > k P ← I -1 I ← 1 hasta P -1 J ← 1 hasta P . A Pauluzzi Sr P. CATALDI A. Corradino Sr. Srita.ALGORITMOS y PROGRAMACIÓN 75. Página 14 de 25 .I U[J] > U[J +1] Aux ← U[J] U[J] ← U[J +1] U[J +1] ← Aux Búsqueda: La búsqueda de un dato dentro de un array consiste en determinar si un elemento N pertenece o no al conjunto de datos y posición que el ocupa en el conjunto. Pudiendo agregar. Z.

A Pauluzzi Sr P.P. F. until H = 6. Corradino Sr.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Cataldi . writeln (' M E N U '). Ing. CATALDI A. {* lee la opción *} until (H > 0) and (H < 7). el centinela nos sirve para optimizar el proceso.T. Página 15 de 25 . 3 : Borra. begin limpieza.T. end. Ingresar un valor al vector '). Prof.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. {* limpia la pantalla *} asigna.P. readln (H). writeln. a) encuentra el elemento a borrar a) desplaza los elementos posteriores a una posición anterior. Z. En cuanto a menu es un selector. En el procedimiento borra. write ( ' Elija una opción '). lo que realiza el algoritmo es desplazar cada uno de los elementos posteriores al que queremos eliminar a una posición anterior a la que teníamos. 5 : Inserta. Los módulos limpieza y asigna ya se han detallado. Algoritmo de menu Pseudocódigo en español repetir repetir llama a Limpieza escribir Titulos escribir Opciones leer valor elegido (H) hasta que H > 0 y H < 7 según sea H hacer 1: llama a Agrega 2: llama a Lista 3: llama a Borra 4: llama a Ordena 5: Inserta sino limpia pantalla fin según mientras H > 6 Código se programa repeat repeat limpieza. Ing. writeln ( ' 1. else clrscr. case H of 1 : Agrega. 4 : Ordena. {* asigna los 0 al vector *} menu. Gómez El programa cuenta con tres llamados. J. Este procedimiento cuenta con dos partes. F. Srita. LAGE J.ALGORITMOS y PROGRAMACIÓN 75. 2 : Lista. {* llama al módulo menú *} end.

end.7] of integer. CATALDI A.T. Z. {* fin de limpieza de la pantalla *} procedure salida. Prof. {* asigna *} Página 16 de 25 . Corradino Sr. procedure limpieza. begin writeln ( 'Presione cualquir tecla '). J. {* comienzo del procedimiento salida *} {* solo sirve para ver resultados *} Var H :char.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Ing. Cataldi . F.T. {* fin del procedimiento salida *} procedure Lugar. {* fin de lugar *} procedure asigna. {* Nueva Línea Carrige Return. dos. until (U[I]=0) or (I> 7).P. {* comienzo de limpieza de la pantalla *} begin ClrScr. {* esta instrucci¢n y la anterior son para dar tiempo para *} {* ver resultados *} end. Gómez program vectores.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.. F. {* comienzo de la asignación *} begin for I := 1 to 7 do {* se define el ciclo de 1 a 7 *} U[I] := 0. LAGE J. B = 7. {* Se repite hasta que se encuentre una bandera o se termine el vector *} end. {*declaraciones*} const {* constantes *} NL = ·#13#10. Srita. Ing. {* Programa de subrutinas de vectores *} uses crt. repeat I := I + 1. type vector = array [1. {* determina cuantos lugares están ocupados del vector *} begin I:=0. var I: integer. Line Feed*} A = 1. readln (H). {* controla el ciclo *} U: vector. A Pauluzzi Sr P.ALGORITMOS y PROGRAMACIÓN 75.P.

') = '. LAGE J.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Ing. {* lee y lista el vector *} begin I := 1. CATALDI A. {* fin del ordenamiento *} procedure lista.U[I]:3). Prof.I:1. {* fin de lectura y listado *} Página 17 de 25 . J.T. F. A Pauluzzi Sr P. {* fin de la asignación *} procedure Ordena. {* Determina cuantos valores validos hay en el vector *} P := I .1. end end. begin I := 0.P. F. Z. {* ordena el vector *} var J. {* lee el vector y lo saca por pantalla *} I := I + 1. Cataldi .I do if U[J] > U[J+1] then begin {* Intercambia *} Aux := U[J]. Gómez end.P. P. until (U[I]=0) or ( I>B ). U[J] := U[J+1]. Ing.1 do {* se define el ciclo hasta el anteúltimo valor cargado *} for J := 1 to P .T. while (U[I] <> 0) and (I<= B ) do {* se lee hasta encontrar *} begin {* un centinela o el final del vector *} writeln ('U('.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.ALGORITMOS y PROGRAMACIÓN 75. Aux : integer. Corradino Sr. end. for I := 1 to P . Srita. end. U[J+1] := Aux. Salida. repeat I := I + 1.

readln(H). H : char. end. {* borra un elemento del vector *} var J : integer.T. while (U[I] <> 0) and (I<= B ) and (U[I] <> J) do {* se hace la búsqueda *} I := I + 1. readln(H). LAGE J. until (U[I-1] = 0) or (I > B) Página 18 de 25 . F.ALGORITMOS y PROGRAMACIÓN 75.T.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. {* fin de borrado *} procedure agrega. Cataldi . if U[I] <> J then begin {* No se encontró el valor *} write (' Elemento no encontrado '). readln ( U[I]). if I <= 7 then repeat write ('Ingrese un nuevo valor al vector : '). begin I := 1. J. F. write (' Elemento borrado '). read (J). I := I + 1. Srita. Prof. end.P. Z. Ing. Corradino Sr. end. Ing. CATALDI A. write ('Ingrese el valor a borrar : '). end else begin while U[I] <> 0 do {* Se borra el valor *} begin U[I] := U[I+1]. {* agrega un elemento al vector *} var H:char. begin Lugar.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.P. A Pauluzzi Sr P. I := I + 1. Gómez procedure Borra.

begin Lugar. I := K .T. J. Read (H). Aux : integer. K.T. end else begin write ('No hay mas lugar en el vector'). Cataldi . while U[I] > Aux do begin U[I+1] := U[I]. U[I+1] := Aux. Gómez else begin write ('No hay mas lugar en el vector'). write ('Ingrese el valor a insertar : '). {* inserta un elemento al vector ordenado *} var H:char.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. I := I . LAGE J. CATALDI A. end end.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Z. Read (H). F.P. {* fin de agrega *} procedure inserta.ALGORITMOS y PROGRAMACIÓN 75. write ('Ordeno el vector ? (S/N) ').1. Corradino Sr. F. end end. Ing. if I <= B then begin K := I. end. Read (H). Prof. A Pauluzzi Sr P.P. Ing. if (H = 'S') or (H = 's') then Ordena. Read (Aux). {* fin de agrega *} Página 19 de 25 .1. Srita.

{* Llamada a la salida del programa *} end. Lo que implica que ambos fueron declarados por el mismo identificador o por identificadores equivalentes. Ing.ALGORITMOS y PROGRAMACIÓN 75. Ingresar un valor al vector '.T. NL). writeln ( ' 2. Corradino Sr. writeln ( ' 6. begin repeat repeat limpieza. NL). NL). LAGE J. write ( ' Elija una opcion '). NL). Gómez procedure menu. readln (H).40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.P. {* Llamada al procedimiento de agregar *} 2 : Lista. Ordenar el vector '. end. NL. Salir del programa '. Srita. {* llama al módulo menú *} end. {* asigna los 0 al vector *} menu. NL. F. NL). case H of 1 : Agrega. Ing. writeln ( ' 4. {* limpia la pantalla *} asigna. writeln ( ' 3. writeln (' -----------'. Listar el vector '. writeln (' M E N U '). Página 20 de 25 . {* fin del procedimiento menu *} begin {* Comienzo del programa *} limpieza. Borrar un valor '. A Pauluzzi Sr P.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Cataldi . {* Llamada al procedimiento de borrar *} 4 : Ordena. NL). {* lee la opción *} until (H > 0) and (H < 7). Prof.T. ambos tienen el mismo tipo y el mismo tamaño. si y solo si.P. NL. {* comienzo del procedimiento menu *} {* genera y maneja un menu de opciones *} Var H :integer. writeln ( ' 1. {* Llamada al procedimiento de listar *} 3 : Borra. writeln ( ' 5. CATALDI A. Z. F. J. Insertar un valor '. {* Fin del programa *} Copia de un array: Un array puede ser asignado a otro array. {* Llamada al procedimiento de insertar *} else clrscr. {* Llamada al procedimiento de ordenar *} 5 : Inserta. NL). until H = 6.

procedure Suma (A.P. Pasaje de elementos individuales: En lugar de pasar todos los elementos del array. F. var end. A Pauluzzi Sr P. Gama: XX.N). CATALDI A... var M. N. function Identidad (A. Beta := Alfa. Prof.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. Var: Alfa.30] of byte. Suma (M. Srita.P). R := Identidad(M. var C: Vector). Cataldi . se pasan de uno por vez. Z. J. B: Vector. YY = array [1. Ing. El array local se inicializa de modo que contiene los mismos valores que el array real correspondiente.P.ALGORITMOS y PROGRAMACIÓN 75. Corradino Sr. R : boolean. Para el ejemplo anterior se puede decir: Página 21 de 25 . F.30] of byte. Las variables tipo array pueden ser utilizadas como parámetros en la comunicación entre funciones y procedimientos. El procedimiento manipula el array local y cualquier cambio que se haga en el array local no se refleja en el array real.N.10] of real. type Vector = array [1. B : Vector) : boolean. el valor de una función no puede ser un array. Parámetros de valor y de variable: Los arrays pueden ser utilizados como parámetros en funciones y procedimientos. P : Vector.T. LAGE J. Alfa := Gama.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs.. sin embargo. Ing.T.. {única expresión válida}. Gama := Beta. Gómez Ejemplo: Type XX = array [1. end. Beta: YY.

los arrays multidimensionales (tablas) se crean con declaraciones type y var cuando un programa se codifica en Pascal. F.. B : real) : boolean.25] of real.A] elemento de la fila 3 y columna 4 Los diferentes tipos de índices no necesitan ser subrango del mismo tipo.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs.10. var M. uno para la fila y otro para la columna.T. var end.. : array [1. Columna]). Por ejemplo cuando se desea leer un array se podrá hacer por filas. Array bidimensionales (Tablas) Un array bidimensional (tabla o matriz) es un array con dos índices. según se puede ver. For Fila := 1 to 10 For Columna := 4 to 25 Writeln(A[Fila. A Pauluzzi Sr P. Por columnas. Por lo tanto cualquier proceso que queramos realizar sobre la misma.4.25] of real. Gómez function Identidad (A. Corradino Sr. Para localizar o almacenar un valor en el array se deben especificar dos posiciones (dos subíndices). Ing. J.ALGORITMOS y PROGRAMACIÓN 75.10] of array [4. R := Identidad(M[3].. F. no debemos olvidarnos que las celdas de las mismas se identifican por dos subíndices. CATALDI A. type Tabla = array [1. var M.25] of real. N[3]).10... : array [1. involucrará a ambos subíndices.. Prof. Los elementos se referencian con el formato: T [3. Manejo de tablas Para el manejo de tablas.4.P. Página 22 de 25 .P.10. al igual que los vectores que deben ser ordinales o tipo subrango. Srita. Columna])..4. Cataldi .. Z. type Tabla = array [1. LAGE J.25] of real. Ing. Declaración de los arrays bidimensionales Al igual que en los arrays de una dimensión (los vectores).40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.T. For Columna := 4 to 25 For Fila := 1 to 10 Writeln(A[Fila.

25. CATALDI A.10..ALGORITMOS y PROGRAMACIÓN 75.31).] of array [´A¨.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings..28.P. J. Las constantes con tipo. : array [1.30. los arrays multidimensionales se crean con declaraciones type y var cuando un programa se codifica en Pascal.40.. Matriz = array [4. Ing.31. Corradino Sr.. const ( vectores ) Dias Por Mes : array [l.5] of integer = (10. Tabla = array [4.´A¨..25. LAGE J.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs.50)..25.. Declaración de los arrays multidimensionales Al igual que en los arrays de bidimensionales (las tablas). Prof.30. F. Página 23 de 25 .. Pero al usuario corriente no se le recomienda superar las 3 dimensiones.30.¨Z¨] of Tabla.4. Z.. variables que tienen un valor inicial específico en la cabecera del programa.¨Z¨] of byte.10] of byte.. sino variables inicializadas. type Vector = array [1.30. Matriz = array [´A¨.30.P.T.´A¨. CONSTANTES DE TIPO ARRAY (TIPEADAS) Turbo Pascal permite que las constantes con tipo (tipeadas) puedan ser de casi cualquier tipo. ya que se vuelve complejo su manejo.. Gómez Array multidimensionales Pascal no tiene límite para el número de dimensiones. Ing. A Pauluzzi Sr P.25] of Vector.¨Z¨] of Vector.10] of byte.20.l2] of integer = (31. no son constantes en el estricto sentido.¨Z¨] of byte. Ejemplos const A : array [1. F.31..T. Srita. Cataldi .10] of array [4.31.31.. type Matriz = array [1. es decir. type Vector = array [1. var M..31.

Página 24 de 25 . Prof. 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. Escribir un programa que imprima la palabra en el orden que se ingresó y en sentido inverso (pera arep. que indica que la palabra ha finalizado.T. 4. CATALDI A. Ing. hacer un programa que pueda obtener. F. Se lee las letras de una palabra carácter a carácter.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. 7.T. Suponiendo que los valores del problema anterior fueran mediciones. es cada uno de los valores X es el promedio de los valores.P. Gómez Práctica Nº 7 1.  Ingresar un elemento en el final de la cola (primera posición libre del vector). Diseñar un algoritmo recursivo. A Pauluzzi Sr P. y N la cantidad de valores. Corradino Sr. Dado un vector de 20 posiciones (números enteros). 5. J. Hacer un programa que permita realizar la suma y el producto de dos vectores. LAGE J. Se pueda calcular la desviación media y ña desviación estándar MD = ∑ Xj − X j =1 n N S= ∑(X − X ) j j =1 n 2 N Donde Xj. Se pide modificarlo de forma tal que sin uso de vectores auxiliares. Ing. la palabra podrá tener hasta 20 caracteres).   El usuario puede elegir el tamaño del vector (entre 2 y 10 valores) El usuario elige la operación a realizar.ALGORITMOS y PROGRAMACIÓN 75. El último carácter que ingresa es la barra de dividir(/). 2.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. que permita invertir el contenido de un vector. Genere un programa que permita realizar las siguientes operaciones. Leer una lista de 10 valores enteros. Cataldi . Listarlos por pantalla en sentido inverso al que ingresaron. Dado un vector 15 valores. Srita. Z. F.P. 6. y sacar por pantalla    el mayor de los valores el menor de los valores el más próximo al promedio 3.

de manera que la misma se mantenga en orden creciente. sino colocar un mensaje de aviso. F. CATALDI A. Gómez Comprobando antes del ingreso que existe una posición libre.   9. F.P.ALGORITMOS y PROGRAMACIÓN 75. sino colocar un mensaje de aviso. sino colocar un mensaje de aviso. sino colocar un mensaje de aviso). Comprobando antes del ingreso que existe una posición libre.  Ingresar un elemento en la posición que le corresponda de la lista. Cataldi . que puedan hacer:    Suma Resta Multiplicación Sin errores. pero ellos si tienen errores de redondeo. Dado un vector de 20 posiciones (números enteros). Pascal como otros lenguajes operan con números enteros 2. Listar en cualquier momento el contenido de la pila del primero al último.Comprobando antes del ingreso que existe una posición libre. Listar en cualquier momento el contenido de la cola del primero al último. Sacar el elemento que se encuentra en la última posición (si hay. LAGE J. (para lo cual desplaza los demás elementos una posición para atrás).40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.148 109. Haga un programa que opere con números que poseen entre 10 y 20 cifras. Listar en cualquier momento el contenido de la cola del primero al último.  Ingresar un elemento en la última posición de la pila (primera posición libre del vector). Para valores más grandes se trabajan con reales.P. sino colocar un mensaje de aviso). A Pauluzzi Sr P. corriendo luego los demás en la cola una posición hacia delante.. Dado un vector de 20 posiciones (números enteros).T.T. sino colocar un mensaje de aviso). Ing. J. Genere un programa que permita realizar las siguientes operaciones.  8. estos no tienen errores por redondeo. Genere un programa que permita realizar las siguientes operaciones.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Se le pide a Ud. Ing. Z. Srita. Corradino Sr. Prof. Sacar de la lista el elemento que indica el usuario (si se encuentra.  Sacar el elemento que se encuentra en la primera posición (si hay. asegurando todas las cifras ** Se recomienda hacer todos los problemas de esta práctica. Página 25 de 25 .   10.

Sign up to vote on this title
UsefulNot useful