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

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

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

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

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.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] ). 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 .I:1. readln(vec[I]). end.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful