2. Estructura de DatosEstructura de Datos
• Con lo aprendido hasta ahora resolvamos los
siguientes problemas:
• Dados 50 números enteros, obtener el promedio de
ellos. Mostrar por pantalla dicho promedio y los
números ingresados que sean mayores que él.
• Dados n números, obtener e imprimir la suma de todos
ellos. A continuación mostrar por pantalla todos los
sumandos.
3. Estructura de DatosEstructura de Datos
• Es posible resolver estos problemas? Por qué?
• Una de las principales dificultades que se observan
con estos problemas es que para la resolución de
ambos es necesario almacenar la totalidad de los
datos a procesar.
• No sería eficiente crear n cantidad de variables
para guardar estos datos.
• Para realizar programas y/o algoritmos que nos
permitan resolver los problemas planteados,
usaremos una nueva estructura de datos
denominada vectores.
4. Estructura de datosEstructura de datos
• Una estructura de datos es un conjunto de datos
con un cierto orden.
• Las estructuras de datos pueden ser dinámicas o
estáticas.
Estáticas: aquellas a las que se le
asigna una cantidad fija de memoria
de acuerdo a lo definido en la
declaración de la variable.
Dinámicas: son aquellas cuyo
tamaño en memoria aumenta o
disminuye en tiempo de ejecución de
acuerdo a las necesidades del
programa.
5. Estructura de DatosEstructura de Datos
Tipos de
Estructuras
Estáticas
Dinámicas (punteros)
Simples
Reales
Enteros
Char
Boolean
Enumerados
String
arrays
set
record
file
Complejas
6. VectoresVectores
• Qué es un vector? Un vector (o arreglo unidimensional) es una
estructura de datos en la cual se almacena un conjunto de datos
de un mismo tipo.
• Es decir que un arreglo es una lista de n elementos que posee
las siguientes características:
– se identifica por un único nombre de variable
– sus elementos se almacenan en posiciones contiguas de
memoria
– se accede a cada uno de sus elementos en forma aleatoria
Arreglo: Edad_Adulto
19 31 18 49 35
Pos 1 Pos 2 Pos 3 Pos 4 Pos 5
7. RADO POR: ANAIDA ESCALONA TONAAlgoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
VectoresVectores
• Las operaciones básicas que se pueden realizar
sobre estos son:
– Adicionar un nuevo valor a la estructura.
– Extraer o Eliminar un valor de la estructura.
– Búsqueda
– Ordenamiento
– Apareo, dadas dos estructuras originar una nueva
ordenada y que contenga a las apareadas.
9. VectoresVectores
• Ejemplos:
– Ejemplo 1. Resolvamos este primer ejemplo:
– Cargar 10 elementos en un vector, sumarlos y
mostrar el resultado por pantalla.
– Pasos para resolver este problema:
• Leer un vector de 10 elementos
• Sumar los elementos
• Mostrar el resultado de la suma por pantalla
11. Vectores - Ejemplo1Vectores - Ejemplo1
Program Ejemplo1; {Version 1}
type
sumandos = array[1..10] of integer;
var
suma, i : integer;
vec_sumandos : sumandos;
begin
suma := 0;
for i:= 1 to 10 do
read(vec_sumandos[i] )
for i := 1 to 10 do
suma:= suma +vec_sumandos[i];
writeln (´La suma de los números es´, suma);
end.
Declaración de la variable arreglo
Declaración del tipo del arreglo
Lectura de los elementos del arreglo
Suma de los elementos
12. Vectores - Ejemplo1Vectores - Ejemplo1
Program Ejemplo1; {Version 2}
type
sumandos = array[1..10] of integer;
var
suma, i : integer;
vec_sumandos : sumandos;
begin
suma := 0;
for i:= 1 to 10 do
begin
read(vec_sumandos[i] )
suma:= suma +vec_sumandos[i];
end;
writeln (´La suma de los números es´, suma);
end.
13. Vectores - DeclaraciónVectores - Declaración
• Como ya dijimos anteriormente, los arreglos son
estructuras de datos, por lo tanto las mismas deben
ser declaradas. Esta operación se realiza en la
seccción “Type” de un programa en Pascal. (como
puede verse en el ejemplo1)
• formato
type
nombre_del_tipo = array[tipo_subindice * ] of tipo;
* debe ser de tipo ordinal: boolean, char, enumerado o
subrango
14. RADO POR: ANAIDA ESCALONA TONAAlgoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
• unit Unit1_Ejemplo;
• interface
• uses
• Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
• Dialogs, StdCtrls;
• type
• TForm1 = class(TForm)
• Button1: TButton;
• Edit1: TEdit;
• ListBox1: TListBox;
• procedure Button1Click(Sender: TObject);
• private
• { Private declarations }
• public
• { Public declarations }
• end;
• var
• Form1: TForm1;
• implementation
• {$R *.dfm}
• TYPE
• Array_Elemento=Array[1..3] of Integer;
• Var
• Array_E: Array_Elemento;
• procedure TForm1.Button1Click(Sender: TObject);
• var
• I:Integer;
• Elemento:Integer;
• Acumular:Integer;
• begin
• For I:= 1 to 3 do
• Begin
• Elemento:=StrtoInt(Edit1.text);
• Array_E[I]:=Elemento;
• ListBox1.Items.Add (InttoStr(Array_E[I]));
• Acumular:=Acumular+Array_E[I];
• Showmessage(InttoStr(Acumular));
• end;
• End;
• end.
15. Vectores - DeclaraciónVectores - Declaración
• Luego de la declaración del tipo, se declara la
variable.
• formato
var
nombre_variable: nombre_del_tipo;
16. Un vector, array, arreglo es un conjunto o agrupación finita de variables del
mismo tipo cuyo acceso se realiza por índices.
Declaración:
Tipo del Arreglo = ARRAY[Tipo de Subíndice] OF Tipo del Elemento;
Ejemplos:
VAR
MiArreglo: ARRAY[1..8] OF REAL;
Uso del TYPE
TYPE
Tipo_Arreglo= ARRAY[1..8] OF REAL;
VAR
MiArreglo: Tipo_Arreglo;
Cantidad de Celdas
de Memoria.
Tipo de Cada Celdas
de Memoria
Declaración de un ArrayDeclaración de un Array
17. Vectores - DeclaraciónVectores - Declaración
• Ejemplos de declaraciones:
• Ej1:
type
Valores = array[ -10..10 ] of real;
var
precios: valores;
18. Vectores - DeclaraciónVectores - Declaración
• Ejemplos de declaraciones:
• Ej2:
const
Max= 500;
type
T_Texto = array[ 1..Max ] of char;
var
Texto: T_Texto;
19. RADO POR: ANAIDA ESCALONA TONAAlgoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
Declaración de VectoresDeclaración de Vectores
• var
• miArreglo : Array [1..2] of String;
• Begin
• miArreglo := ('Hola', ‘Adios');
• end;
20. Vectores - Manejo de índicesVectores - Manejo de índices
• Asignación de valores
Texto[3] := ´a´;
Precios[0] := 23.50;
Como ya dijimos, los índices de un arreglo pueden ser:
entero, lógico, caracter, enumerado o subrango.
21. Vectores - Manejo de índicesVectores - Manejo de índices
Ej3:
const
longitud = 40;
altura = 30;
type
horizontal = 1..Longitud;
T_Línea = Array [ horizontal ] of char;
var
Linea: T_Linea
22. Vectores - Manejo de índicesVectores - Manejo de índices
Ej4:
type
DiasSemana = (Lunes, Martes, Miercoles,Jueves,
Viernes, Sabado, Domingo );
T_Dias = array [DiasSemana] of integer;
var
Dias: T_Dias;
23. Vectores - OperacionesVectores - Operaciones
• Con la siguiente declaración:
type
T_Notas = array [1..30] of integer;
var
Notas: T_Notas;
• Lectura de un vector
for i:= 1 to 30 do
read(Notas[i] )
25. Vectores - OperacionesVectores - Operaciones
• Con la siguiente declaración:
type
T_Notas = array [1..30] of integer;
var
Notas, Aux_Notas: T_Notas;
Copia de vectores
for i:= 1 to 30 do
Aux_Notas[i]:= Notas[i];
o bien: Aux_Notas:=Notas;
26. Vectores - Ejemplos resueltosVectores - Ejemplos resueltos
Ej2- Dados 50 números enteros, obtener el promedio de
ellos. Mostrar por pantalla dicho promedio y los números
ingresados que sean mayores que el mismo.
Ej3 - Dados n números, obtener e imprimir la suma de todos
ellos. A continuación mostrar por pantalla todos los
sumandos.
27. Vectores - Ejemplos resueltosVectores - Ejemplos resueltos
Program Ej2;
const
max = 50;
type
t_numeros = array[1.. max] of integer;
var
suma, i : integer;
promedio: real;
numeros : t_numeros;
begin
suma := 0;
28. Vectores - Ejemplos resueltosVectores - Ejemplos resueltos
for i:= 1 to max do
begin
read(numeros[i] )
suma:= suma +numeros[i];
end;
Promedio:= suma/max;
writeln (´El promedio es ´,Promedio´);
for i := 1 to 50 do
if numeros[i] > promedio
then
writeln (´El número´, numeros[i], ´es mayor al promedio´);
end.
29. Vectores - Ejemplos resueltosVectores - Ejemplos resueltos
Program Ej3;
const
max = 100;
type
t_numeros = array[1.. max] of integer;
var
suma, i, n : integer;
promedio: real;
numeros : t_numeros;
begin
suma := 0;
write (´Ingrese la cantidad de números a sumar. (Como máximo, 100
números´);
readln(n);
30. Vectores - Ejemplos resueltosVectores - Ejemplos resueltos
for i:= 1 to n do
begin
read(numeros[i] )
suma:= suma +numeros[i];
end;
writeln (´La suma es ´,suma´);
for i := 1 to n do
writeln (´El sumando´, i, ´es´, numeros[i]);
end.
31. Vectores - Vectores ParalelosVectores - Vectores Paralelos
• Dos o más arreglos que utilizan el mismo subíndice
para acceder a elementos de distintos arreglos, se
denominan arreglos paralelos. Estos arreglos
pueden procesarse simultáneamente.
• Ejercicio:
– Se tienen dos arreglos. El primero contiene nombres
de personas y el segundo contiene los sexos de las
personas del primer arreglo, codificados como ´f
´femenino y ´m´ masculino. Obtener a partir de estos,
otros dos arreglos, el primero de los cuales debe
contener todos los nombres de los varones y el
segundo, el nombre de todas las mujeres