UNIDAD IUNIDAD I
ARREGLOSARREGLOS
Síntesis Teórica-Práctica
Profa. Anaida Escalona Tona
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.
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.
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.
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
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
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.
VectoresVectores
Mi_vector
Nombre de
la variable
9 35 4 826
Elementos
Posición : 1
Contenido : Mi_vector[1] = 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
VectoresVectores
Ejemplo 1
Muestra
resultados
Lectura del
arreglo
• Ejemplo 1 - Diagrama
Suma de
los elementos
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
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.
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
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.
Vectores - DeclaraciónVectores - Declaración
• Luego de la declaración del tipo, se declara la
variable.
• formato
var
nombre_variable: nombre_del_tipo;
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
Vectores - DeclaraciónVectores - Declaración
• Ejemplos de declaraciones:
• Ej1:
type
Valores = array[ -10..10 ] of real;
var
precios: valores;
Vectores - DeclaraciónVectores - Declaración
• Ejemplos de declaraciones:
• Ej2:
const
Max= 500;
type
T_Texto = array[ 1..Max ] of char;
var
Texto: T_Texto;
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;
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.
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
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;
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] )
Vectores - OperacionesVectores - Operaciones
• Escritura de un vector
for i:= 1 to 30 do
writeln(Notas[i] )
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;
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.
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;
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.
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);
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.
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

Estructura de Datos: Arreglos

  • 1.
    UNIDAD IUNIDAD I ARREGLOSARREGLOS SíntesisTeórica-Práctica Profa. Anaida Escalona Tona
  • 2.
    Estructura de DatosEstructurade 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 DatosEstructurade 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 datosEstructurade 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 DatosEstructurade Datos Tipos de Estructuras Estáticas Dinámicas (punteros) Simples Reales Enteros Char Boolean Enumerados String arrays set record file Complejas
  • 6.
    VectoresVectores • Qué esun 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: ANAIDAESCALONA 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.
  • 8.
    VectoresVectores Mi_vector Nombre de la variable 935 4 826 Elementos Posición : 1 Contenido : Mi_vector[1] = 9
  • 9.
    VectoresVectores • Ejemplos: – Ejemplo1. 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
  • 10.
  • 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: ANAIDAESCALONA 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: ANAIDAESCALONA 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 - Manejode í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 - Manejode í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 - Manejode í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] )
  • 24.
    Vectores - OperacionesVectores- Operaciones • Escritura de un vector for i:= 1 to 30 do writeln(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 - EjemplosresueltosVectores - 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 - EjemplosresueltosVectores - 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 - EjemplosresueltosVectores - 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 - EjemplosresueltosVectores - 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 - EjemplosresueltosVectores - 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 - VectoresParalelosVectores - 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