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. borrar. Corradino Sr. 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. A Pauluzzi Sr P. Las operaciones que se pueden hacer con un vector son: • asignación • lectura/escritura • • recorrido (acceso secuencial) actualizar (añadir.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. CATALDI A. Ing. Gómez Type Linea = array [1.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. Prof. mientras o repetir). Hoja = array [1. Cataldi .P.ALGORITMOS y PROGRAMACIÓN 75. F. LAGE J..P. F. Z. J.T. 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. Pseudocódigo del programa nombre vector1(program). Libro = array [1. Srita. Diagrama N-S nombre selección1 Página 3 de 25 . Ing.40] of char.30] of Linea.. insertar) • ordenación • búsqueda Código se programa A[3] := 5.

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

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

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 *} end. end. end. {* fin de escritura *} Página 6 de 25 . {* escribe en el vector *} begin for I := A to B do {* se define el ciclo de 1 a 5 *} begin write ('Ingrese vec('. 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 (‘ ‘).I:1.') : ').

Procedimientos (procedure). escribir (escribe en el vector) leer (lee del vector y saca por pantalla) salida fin(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] ). inicio (begin). F. limpieza(limpia la pantalla). Dos.. Constantes(const) A = 1. {* lee el vector *} begin for I := B downto A do {* se define el ciclo de 5 a 1 *} writeln ('vec('.I:1. Srita. A Pauluzzi Sr P. Cataldi .40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. CATALDI A.P. Z. J. B = 5. Corradino Sr.ALGORITMOS y PROGRAMACIÓN 75.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. 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.vec[I]:2).') = '. {* fin de lectura *} Pseudocódigo del programa Nombre vector2(program).T. Ing. {* lee el vector y lo saca por pantalla *} end.5] de enteros variables (var) I entero vec matriz Funciones(function)(NO hay). Dos Constantes A. Página 7 de 25 .P. F.T.) Diagrama N-S nombre selección1 declaraciones Crt. LAGE J. tipo (type) Matriz = array [1. Prof. Ing. Declaraciones (uses) Crt.

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

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

J. colocando una bandera en la última celda. Z. 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. Srita. Prof. Puede servir pero no es recomendado en proyectos pequeños. {* agrega un elemento al vector *} begin I:=0. (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 . end. read ( U[I]) end else writeln ('No hay mas lugar en el vector').Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. {* 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'). until (U[I]=0) or (I> 7). CATALDI A. lo que varían son los pasos posteriores al Si. repeat I := I + 1. Corradino Sr. {* 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. LAGE J. A Pauluzzi Sr P.ALGORITMOS y PROGRAMACIÓN 75. Pero no así en grandes. Cataldi . El otro método consiste en mover los elementos que se encuentran debajo de él una posición hacia arriba. F.T.P.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings.T.P. Ing. Ambos métodos tienen el paso de búsqueda en común utilizado en añadir. Ing. F.

else writeln(“No existe el elemento”) imprimo “No existe el elemento” Página 11 de 25 . Prof. 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. until U[i] = Aux or I >q if I <= k then repeat U[I] := U[I+1]. repeat I := I + 1.T. 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. Readln(Aux). J.P.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. repeat I := I + 1. F. LAGE J.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Z. until U[I] = 0 or I >q if I <= k then U[I] := 0. Corradino Sr. CATALDI A.ALGORITMOS y PROGRAMACIÓN 75.T. Srita. Ing. F. I := I + 1.P. A Pauluzzi Sr P. Cataldi . until U[I] = 0 or I >q . Ing.

P. CATALDI A. U[I+1] = Aux. Ing.T. Z. while U[I] > Aux begin U[I+1] := U[I]. Corradino Sr. Srita. Prof. 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. A Pauluzzi Sr P. Ing.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. 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. F.P. end.ALGORITMOS y PROGRAMACIÓN 75.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. J. until U[i] = 0 or I >B if I <= B then begin I := I . Read(Aux).T. I := I .1. Cataldi . 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.1. F. repeat I := I + 1. LAGE J. end else writeln(“No hay lugar”) imprimo “No existe el elemento” Página 12 de 25 . 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.

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

LAGE J. F.T. Esto se puede ver en el ejemplo anterior. CATALDI A. eliminar o insertar un valor.ALGORITMOS y PROGRAMACIÓN 75. Corradino Sr. Z. Si se encuentra es el método que ofrece menor eficiencia pero el más sencillo. Ing. ya que las dos siguientes están fuera del alcance del mismo.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Pudiendo agregar. también se podrá listar todos los valores que tiene el vector. 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. Cataldi . F.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. 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 . 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 .P. Búsqueda Secuencial: Compara cada elemento del vector con el valor deseado. Ejemplo general Hacer un programa que permita operar con un vector de siete posiciones. que opere con números naturales. Ing. Página 14 de 25 .40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. Srita.P. Prof. A Pauluzzi Sr P. J.T.

En el procedimiento borra. Página 15 de 25 . En cuanto a menu es un selector. Srita. Prof. J. readln (H). Z. Los módulos limpieza y asigna ya se han detallado.ALGORITMOS y PROGRAMACIÓN 75. Ing. case H of 1 : Agrega. LAGE J. a) encuentra el elemento a borrar a) desplaza los elementos posteriores a una posición anterior. else clrscr. CATALDI A.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. 2 : Lista. 5 : Inserta.T. Ingresar un valor al vector '). 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. writeln. {* limpia la pantalla *} asigna. {* lee la opción *} until (H > 0) and (H < 7). writeln (' M E N U '). 3 : Borra. {* llama al módulo menú *} end. el centinela nos sirve para optimizar el proceso. F. Gómez El programa cuenta con tres llamados. until H = 6. Corradino Sr.P. 4 : Ordena.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. begin limpieza. writeln ( ' 1.P. 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. F. Este procedimiento cuenta con dos partes. Ing. Cataldi . {* asigna los 0 al vector *} menu. write ( ' Elija una opción ').T. end. A Pauluzzi Sr P.

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

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

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

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

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

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

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

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

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

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