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

Cataldi . mientras o repetir). Ing. F.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. A Pauluzzi Sr P.T.30] of Linea. Z. Corradino Sr. Prof.40] of char.30] of Linea.. CATALDI A.. Libro = array [1. insertar) • ordenación • búsqueda Código se programa A[3] := 5. Gómez Type Linea = array [1.P. 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.T. Ing.ALGORITMOS y PROGRAMACIÓN 75. Srita.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. 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. J. F. Pseudocódigo del programa nombre vector1(program).P. Hoja = array [1. 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. borrar..

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

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

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

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

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

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

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

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

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

Ing.T. F. Prof. for I = 1 to P-1 do for J = 1 to P. CATALDI A.P. LAGE J. U[J] := U[J +1].1. Z.40 Algoritmos y Programación I Clase Teórica Nº 7 Vectores y Matrices Autores : Ings. repeat I := I + 1. Ing.P.T. F. end. Corradino Sr. 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).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. J.I do if U[J] > U[J +1] then begin Aux := U[J]. Cataldi . 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.Lage Martes 14 a 17 Hs Jueves 14 a 17 Hs. Srita.ALGORITMOS y PROGRAMACIÓN 75. U[J +1] := Aux . until U[i] = 0 or I > B P := I . A Pauluzzi Sr 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 .

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful