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

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

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

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

{* escribe en el vector *} end.I:1. end.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 (‘ ‘).') : '). read (vec[I] ). readln(vec[I]). Su estructugrama tiene la siguiente forma desde I = 1 hasta 5 imprimo mensaje leo vec[I] El código del procedimiento es: procedure escribir. end. {* escribe en el vector *} begin for I := A to B do {* se define el ciclo de 1 a 5 *} begin write ('Ingrese vec('. {* fin de escritura *} Página 6 de 25 .

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

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

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

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

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

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

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

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

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

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

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

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

write ('Ingrese el valor a insertar : '). Cataldi . if I <= B then begin K := I.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. A Pauluzzi Sr P. LAGE J. Read (H). Aux : integer. Read (Aux). end else begin write ('No hay mas lugar en el vector'). CATALDI A. Read (H). I := I .P. Read (H). U[I+1] := Aux. F. end end.P.T. {* 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. K. F. end end. begin Lugar. if (H = 'S') or (H = 's') then Ordena. Prof.ALGORITMOS y PROGRAMACIÓN 75. I := K . J. Srita. Gómez else begin write ('No hay mas lugar en el vector').1. while U[I] > Aux do begin U[I+1] := U[I]. {* fin de agrega *} procedure inserta.T. Ing. Ing. Z.1. write ('Ordeno el vector ? (S/N) '). Corradino Sr. end. {* fin de agrega *} Página 19 de 25 .

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful