lec02.vectores-arreglos

Anuncio
UNIVERSIDAD TECNOLÓGICA COSTARRICENSE
VICERRECTORIA DE DONCECIA
Programa Académico Curricular
Dirección de Ciencias de la Computación
Estructura de datos (arreglos) Vectores
y Matrices
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:
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.
1
UNIVERSIDAD TECNOLÓGICA COSTARRICENSE
VICERRECTORIA DE DONCECIA
Programa Académico Curricular
Dirección de Ciencias de la Computación
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]
8
5
NOTAS[2]
..........
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:
Type
Linea = array [1..40] of char;
2
UNIVERSIDAD TECNOLÓGICA COSTARRICENSE
VICERRECTORIA DE DONCECIA
Programa Académico Curricular
Dirección de Ciencias de la Computación
Hoja = array [1..30] of Linea;
Libro = array [1..30] of Linea;
Las operaciones que se pueden hacer con un vector son:
•
•
•
•
•
•
asignación
lectura/escritura
recorrido (acceso secuencial)
actualizar (añadir, borrar, insertar)
ordenación
búsqueda
Asignación: Es darle un valor a un elemento de un vector
Pseudocódigo en español
Código se programa
A[3]
5
A[3] :=
5;
Para la asignación como para otro procesos se debe recurrir a estructuras repetitivas (desde,
mientras o repetir). 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
Código se programa
desde I = 1 hasta 55
for I = 1 to 55 do
hacer
CARGA[I]
CARGA[I] := 0;
0
fin desde
Su estructugrama tiene la siguiente forma
desde I = 1 hasta 55
CARGA[I]
Pseudocódigo del programa
nombre vector1(program);
0
Diagrama N-S
declaraciones (uses)
Crt, Dos;
constantes(const)
A = 1; B = 55;
tipo (type)
matriz = array [1..55] de enteros
variables (var)
I entero
3
UNIVERSIDAD TECNOLÓGICA COSTARRICENSE
VICERRECTORIA DE DONCECIA
Programa Académico Curricular
Dirección de Ciencias de la Computación
CARGA matriz
funciones(function)(NO hay); procedimientos (procedure); inicio (begin); limpieza(limpia
la pantalla); asigna (hace ciclo y asigna); salida
fin(end.)
Como se puede ver tenemos la definición del vector en tipo o type.
nombre selección1
declaraciones
Crt,
Dos
Constantes A,
B
tipos
matriz [55]
Variables
Y
CARGA
funciones y procedimientos
comienzo (programa)
limpieza
asigna
salida
fin (programa)
4
UNIVERSIDAD TECNOLÓGICA COSTARRICENSE
VICERRECTORIA DE DONCECIA
Programa Académico Curricular
Dirección de Ciencias de la Computación
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; {* asigna los
valores *}
end; {* fin del ciclo *}
5
UNIVERSIDAD TECNOLÓGICA COSTARRICENSE
VICERRECTORIA DE DONCECIA
Programa Académico Curricular
Dirección de Ciencias de la Computación
Quedándonos el programa de la siguiente manera.
Program Vector_1;
{* Este es el primer programa con vectores *} uses
Crt, dos; {declaraciones}
const {* constantes *}
A = 1; B = 55;
type
matriz = array [1..55] of integer; var
I: integer; {* controla el ciclo *}
CARGA: matriz;
procedure limpieza; {* comienzo de limpieza de la pantalla *}
begin
ClrScr;
end; {* fin de limpieza de la pantalla *}
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; {* asigna la valores *} end; {* fin de la asignación *} procedure
salida; {* comienzo del procedimiento salida *}
Var
:char;
{* solo sirve para ver resultados *}
H
begin
writeln ( 'Presione cualquier tecla ');
readln (H); {* esta instrucción y la anterior son para dar tiempo para *}
{* ver resultados *} end; {* fin del
procedimiento salida *} begin
limpieza;
asigna;
salida; end.
Lectura/escritura:
Es una operación de entrada salida sobre un vector. Manejado por estructuras
repetitivas. Ejemplo:
Ingresar por teclado cada uno de los 5 elementos de un vector de nombre vec. Y luego leerlos y presentarlos por pantalla en orden inverso al que entraron (de 5 a 1)
Algoritmo de escribe
6
UNIVERSIDAD TECNOLÓGICA COSTARRICENSE
VICERRECTORIA DE DONCECIA
Programa Académico Curricular
Dirección de Ciencias de la Computación
Pseudocódigo en español
Código se programa
for I = 1 to 5 do
begin
write (‘
‘);
read
(vec[I] ); end;
desde I = 1 hasta 5
hacer
comienzo
imprimo mensaje
leo y escribo en vec[I]
fin desde
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 *}
begin
for I := A to B do {* se define el ciclo de 1 a 5 *}
begin
write ('Ingrese vec(',I:1,') : ');
readln(vec[I]); {* escribe en el vector *}
end;
end; {* fin de escritura *}
7
Descargar