Publicado el 17 de Febrero del 2019
1.019 visualizaciones desde el 17 de Febrero del 2019
903,8 KB
31 paginas
Creado hace 1a (15/08/2018)
Fundamentos de Programación
CAPÍTULO 3
ARREGLOS
2
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
1
Fundamentos de Programación
Preguntas detonadoras
¿Qué es un arreglo? ¿Para qué sirve?
¿Cuáles son las características que distinguen a los
arreglos?
Un arreglo, ¿puede almacenar objetos?
Un arreglo, ¿puede ser un atributo de una clase?
¿Cómo se acceden a los datos de un arreglo?
¿Se pueden acceder a los datos de un arreglo mediante
una propiedad?
¿Cómo se recorren las celdas de un arreglo?
¿Cuáles son las operaciones básicas con arreglos?
3
4
Tipos de datos
Simples – Almacenan un valor
TIPOS DE
DATOS
Compuestos – Almacenan un conjunto
de valores
Compuesto
Simple
Fig. 3.1. Tipos de datos simples y compuestos.
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
2
Fundamentos de Programación
Arreglos
Conjunto finit0,
homogéneo
y estático
de datos relacionados
e indexados
Homogéneo significa
que todas sus celdas
son del mismo tipo de
dato
A
43
23
12
68
97
0
1
2
3
4
Índices
Estático se refiere
a que, una vez declarado,
no cambia su tamaño
Celdas
Dimensiones de arreglos
Unidimensionales (Vectores)
1 índice
Bidimensionales (Matrices)
2 índices (renglón y columna)
Tridimensionales (Cubos)
3 índices (renglón, columna y plano)
Multidimensionales
5
6
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
3
Fundamentos de Programación
Arreglos unidimensionales
Solamente
tienen
1
índice
También
el
con
“vectores”
se
nombre
conocen
de
miArreglo
0
1
2
3
4
43
23
12
68
97
Celdas
Índice
7
Operaciones básicas con arreglos
Operaciones
básicas
con arreglos
Inicialización
Inserción
• Declaración y creación
•
•
• Eliminación
• Búsqueda
• Ordenamiento
• Recorrido
Recuerde que No se pueden agregar o eliminar
celdas del arreglo; solamente su contenido
8
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
4
Fundamentos de Programación
Declaración de arreglos
No sólo basta con declararlo, sino también
debe crearse con el operador new
int [ ] miArreglo; // declara el arreglo
miArreglo = new int[12]; // reserva memoria
double [ ] otroArreglo = new double[10];
9
Inicialización de arreglos
int [ ] miArreglo = { 1, 2, 3, 4, 5, 6 };
string [ ] nombres = { “Emilio”, “Pedro” };
double [ ] otroArreglo = { 3.4, -4.5, 7.0 };
10
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
5
Fundamentos de Programación
Manejo del tamaño del arreglo
Declarar una constante con el tamaño del
arreglo
const int intTamano = 15;
// declara el arreglo
int [ ] miArreglo;
// reserva memoria
miArreglo = new int[intTamano];
11
Creación de arreglos
Se pueden crear arreglos cuyo tamaño se pueda
establecer a partir de una expresión que produzca un
valor entero
// variable
int intTamano = 15;
// declara el arreglo
int [ ]
miArreglo;
// reserva memoria
miArreglo = new int[intTamano];
12
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
6
Fundamentos de Programación
Capturar el tamaño del arreglo
Se pueden crear arreglos capturando el
tamaño del arreglo
// variable
int intTamano;
// captura el tamaño del arreglo
Console.Write(“Teclee el tamaño del arreglo: “);
intTamano=int.Parse(Console.ReadLine());
// declara y crea el arreglo
int [ ]
miArreglo = new int[intTamano];
13
Capturar los datos de las celdas
del arreglo
Suponga que declara un
arreglo que almacena datos
numéricos enteros
El
usuario
captura
la
cantidad de celdas
Se crea el arreglo de acuerdo
a la cantidad de celdas
Se implementa un ciclo para
capturar el dato de cada una
de las celdas
miArreglo
0
?
?
?
?
?
1
2
3
4
14
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
7
Fundamentos de Programación
Diagrama de flujo
INICIO
Declarar miArreglo[ ] como entero
Declarar intCelda como entero
Declarar intTamano como entero
"Teclee el tamaño del arreglo"
intTamano
miArreglo = new int[ intTamano ]
for(intCelda = 0; intCelda < intTamano; intCelda++)
yes
miArreglo[ intCelda ]
Creación
del arreglo
no
FIN
15
Recorrido de arreglos
La longitud de un arreglo se obtiene con la
propiedad Length
int [ ] miArreglo = { 1, 2, 3, 4, 5, 6 };
for(int i=0; i< miArreglo.Length; i++)
Console.WriteLine(miArreglo[i]);
16
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
8
Fundamentos de Programación
Recorrido de un arreglo con un
ciclo foreach
string[] miArreglo = {"Pepe", "Paola"};
foreach(string strNombre in miArreglo)
{
Console.WriteLine(strNombre);
}
Arreglo de objetos
miArreglo
0
1
2
Índice
Celdas
17
18
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
9
Fundamentos de Programación
Declaración y creación de un
arreglo de objetos
Suponga que desea un
arreglo que almacene
los
artículos de un
supermercado
Datos
Clave
Descripción
Precio
Cantidad en existencia
19
Declaración y creación de un
arreglo de objetos (cont.)
Articulo [] miArreglo = new Articulo[25];
20
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
10
Fundamentos de Programación
Ordenamiento de los datos de
un arreglo
Los algoritmos que ordenan datos de los
arreglos se conocen como “sorteadores” o
“métodos de ordenamiento”
Existen muchos métodos de ordenamiento
Cada método de ordenamiento tiene una
estrategia para reacomodar sus datos
No se “mueven” las celdas del arreglo, sino
su contenido
21
Método de la burbuja
Es el método de ordenamiento de datos más
sencillo de implementar
Su nombre se debe a que durante el
ordenamiento de los datos el elemento a
ordenar “burbujea” hacia arriba en el arreglo
Existen varias versiones:
Burbuja izquierda
Burbuja derecha
Burbuja con señal
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
11
Fundamentos de Programación
Principio del funcionamiento
de la burbuja izquierda
Recorre el arreglo de derecha a izquierda
Compara los datos adyacentes en el arreglo
Hace los intercambios pertinentes
Implementa un ciclo que controla la posición
que ocupará el dato del arreglo (i)
Dentro de este ciclo hay otro ciclo que recorre
el arreglo de derecha a izquierda para hacer las
comparaciones (j)
Los desplazamientos de los datos se hacen
hacia la izquierda del arreglo
Intercambio de datos
Intercambia(Arreglo[], p, i): nulo
1.-Temporal = Arreglo[p]
2.-Arreglo[p] = Arreglo[i]
3.-Arreglo[i] = Temporal
{Fin del método}
24
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
12
Fundamentos de Programación
Pseudocódigo de la burbuja
izquierda
BurbujaIzquierda(Arreglo[]): nulo
1.- REPETIR CON i DESDE 0 HASTA Arreglo.Length-1 CON PASO 1
1.1. REPETIR CON j DESDE Arreglo.Length-1 HASTA i CON PASO -1
1.1.1 SI Arreglo[j] < Arreglo[j-1] ENTONCES
1.1.1.1 Intercambia(Arreglo, j, j-1)
1.1.2. {FIN DE LA CONDICIONAL DEL PASO 1.1.1}
1.2. {FIN DEL CICLO DEL PASO 1.1}
2.- {FIN DEL CICLO DEL PASO 1}
3.- RETURN
Diagrama de flujo del método de la burbuja
izquierda que ordena números enteros
BurbujaIzquierda( int [ ] Arreglo ) : void
Declarar i, j, temporal : int
1
for( i=0; i < Arreglo.Length -1; i = i + 1 )
no
return
yes
for( j = Arreglo.Length - 1 ; j > i ; j = j - 1 )
no
1
yes
Arreglo[ j ]
<
Arreglo[ j - 1 ]
yes
temporal = Arreglo[ j ]
Arreglo[ j ] = Arreglo[ j - 1 ]
Arreglo[ j - 1 ] = temporal
no
26
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
13
Fundamentos de Programación
¿Cómo generar números aleatorios?
Utilizar la clase Random (ubicada en el namespace
System)
Random aleatorio = new Random();
int intNumero = aleatorio.Next();
El método Next( ) genera un número aleatorio
entre 0 y la constante Int32.MaxValue
( 2, 147, 483, 647)
Generando números aleatorios
Para generar números entre 0 y 5
Random aleatorio = new Random();
int intNumero = aleatorio.Next(6);
Para generar números entre 1 y 6
Random aleatorio = new Random();
int intNumero = aleatorio.Next(1,7);
27
28
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
14
Fundamentos de Programación
Generar cadenas aleatorias
Guid.NewGuid().ToString().Substring(0,intLongitud);
string strCadena =
La variable intLongitud
representa
el tamaño de la cadena
29
¿Cómo llenar un arreglo con números
aleatorios?
// Declaración del arreglo
int [] miArreglo;
// Declaración del número aleatorio
Random aleatorio = new Random();
Console.Write("\nTeclee la cantidad de celdas del arreglo: ");
int intTamañoArreglo = int.Parse(Console.ReadLine());
// Creación del arreglo
miArreglo = new int[intTamañoArreglo];
// LLena el arreglo con números aleatorios
for (int intCelda = 0; intCelda < intTamañoArreglo; intCelda++)
miArreglo[intCelda] = aleatorio.Next();
30
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
15
Fundamentos de Programación
¿Cómo calcular el tiempo de
ejecución del algoritmo?
System.Diagnostics.Stopwatch cronometro = new System.Diagnostics.Stopwatch();
cronometro.Start(); // Inicia el cronómetro
.
.
.
.
cronometro.Stop(); // Detiene el cronómetro
// Calcula el tiempo transcurrido en milisegundos
int intMilisegundos = tiempo.Elapsed.Milliseconds;
Console.Write("Tiempo = " + intMilisegundos+" milisegundos");
31
Ejercicio
Llenar un arreglo con números aleatorios
Enviar el arreglo por referencia a un método
para ordenar sus datos
Enviar el arreglo por valor a un m
Comentarios de: 03.- Arreglos - Estructuras de datos orientadas a objetos (0)
No hay comentarios