P. 1
Algoritmos & Programacion - VII - Vectores & Matrices

Algoritmos & Programacion - VII - Vectores & Matrices

|Views: 3.955|Likes:
Publicado porleandro15_4

More info:

Published by: leandro15_4 on Dec 02, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/09/2013

pdf

text

original

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->