Publicado el 18 de Febrero del 2019
1.330 visualizaciones desde el 18 de Febrero del 2019
993,7 KB
25 paginas
Creado hace 5a (15/08/2018)
Programación Orientada a Objetos en C# .NET
CAPÍTULO 8
MÉTODOS DE ORDENAMIENTO
CON
DELEGADOS
2
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
1
Programación Orientada a Objetos en C# .NET
Métodos de ordenamiento
Introducción
Criterios de ordenamiento
Tipos de ordenamiento
Métodos de ordenamiento interno
Objetivo
Conocer un algoritmo para ordenar datos almacenados en un arreglo de
tal forma que puedan ser fácilmente procesados en aplicaciones para
resolver problemas cotidianos.
Introducción
Ordenar un conjunto de datos almacenados en un
arreglo
El ordenamiento de datos es una actividad que consiste
en reorganizarlos o recolocarlos
en un lugar
determinado para que cumplan con una secuencia
específica.
Al ordenar los datos, se pretende que su ubicación,
acceso y uso sea lo más rápido posible y esto se logra de
acuerdo al criterio de ordenamiento.
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
2
Programación Orientada a Objetos en C# .NET
Criterios de ordenamiento
Ascendente: Los datos se acomodan en secuencia del
menor al mayor, es decir, cada dato sucesor debe ser
mayor ó igual que su antecesor. En este caso DATO0 ≤
DATO1 ≤ DATO2 ≤ …. ≤ DATOn.
Descendente: Los datos se colocan sucesivamente del
mayor al menor, o sea, cada dato sucesor debe ser
menor ó igual que su antecesor. En este caso DATO0 ≥
DATO 1 ≥ DATO 2 ≥ …. ≥ DATO n.
Tipos de ordenamiento
Ordenamiento interno: Este tipo de ordenamiento
se aplica cuando los elementos a ordenar
se
encuentran almacenados en alguna estructura de datos
ubicada en la memoria principal. Típicamente se
utilizan en arreglos, sin embargo, pueden aplicarse a
cualquiera de las estructuras de datos analizadas
previamente.
Ordenamiento externo: Este se aplica cuando los
datos están almacenados en archivos que se ubican en
dispositivos de almacenamiento secundario como
discos duros, cintas, memorias, etc.
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
3
Programación Orientada a Objetos en C# .NET
Arreglo
Conjunto 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
Declaración de arreglos
No sólo basta con declararlo, sino también debe
crearse con el operador new
int [ ] arreglo; // declara el arreglo
arreglo = new int[12];
// reserva memoria
double [ ] arreglo2 = new double[10];
7
8
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
4
Programación Orientada a Objetos en C# .NET
Manejo del tamaño del arreglo
Declarar una constante con el tamaño del arreglo
const int Tamaño= 15;
int [ ] arreglo;
arreglo = new int[Tamaño];
// reserva memoria
// declara el arreglo
Arreglos “dinámicos”
Se pueden crear arreglos cuyo tamaño se pueda
establecer dinámicamente a partir de una expresión
que produzca un valor entero
int x = 15; // variable
int [ ] arreglo;
// declara el arreglo
arreglo = new int[x]; // reserva memoria
9
10
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
5
Programación Orientada a Objetos en C# .NET
Recorrido de arreglos
int [ ] a = { 1, 2, 3, 4, 5, 6 };
for(int i=0; i<= a.Length; i++)
Console.Write(“\n{0}”, a[i]);
La longitud de un arreglo se obtiene con la
expresión Length
11
Recorrido de un arreglo con ciclo
foreach
string[] Alumno= new string[]{"Pepe",
“Rodolfo", "Maria", “Fabiola",
"Miguel"};
foreach(string nombre in Alumno)
{
Console.WriteLine("\n{0}",nombre);
}
12
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
6
Programación Orientada a Objetos en C# .NET
Intercambio de datos de un arreglo
1. Copiar el valor del primer dato en la variable auxiliar.
2. Copiar el valor del segundo dato en la variable del
primer dato.
3. Copiar el valor de la variable auxiliar en la variable del
segundo dato.
Intercambia(Arreglo[], entero a, entero b): nulo
1. Auxiliar = Arreglo[a]
2. Arreglo[a] = Arreglo[b]
3. Arreglo[b] = Auxiliar
4. RETURN
Diagrama de flujo de un método para
ordenar un arreglo de números enteros
Ordenar(int [ ] Arreglo, int intTamaño) : void
Declarar p, e, temporal : int
1
for(p=0; p < intTamaño -1; p=p+1)
yes
for( e=p+1; e < intTamaño; e=e+1)
no
no
return
1
yes
Arreglo[e]
<
Arreglo[p]
yes
temporal = Arreglo[p]
Arreglo[p] = Arreglo[e]
Arreglo[e] = temporal
no
14
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
7
Programación Orientada a Objetos en C# .NET
Diseño de una aplicación sencilla
(sin delegados)
Ordenar datos de estudiantes
Datos de los estudiantes
Matrícula (string)
Nombre (string)
Grado (int)
Grupo (char)
Promedio (double)
Ordenar los objetos de manera ascendente por
promedio
15
Definición de la clase con los datos
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
8
Programación Orientada a Objetos en C# .NET
Arreglo de objetos de tipo
Estudiante
const int Tamaño = 10;
Estudiante [] miArreglo;
miArreglo = new Estudiante[Tamaño];
17
Diagrama de flujo del método de
comparación CompareTo( )
Estudiante.CompareTo(Estudiante otroEstudiante) : int
this.Promedio > otroEstudiante.Promedio
no
this.Promedio < otroEstudiante.Promedio
no
return( 0 )
yes
return( 1 )
yes
return( -1 )
18
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
9
Programación Orientada a Objetos en C# .NET
Diagrama de flujo del método para ordenar un
arreglo de objetos de tipo Estudiante
Ordenar(Estudiante [ ] Arreglo, int intTamaño) : void
Declarar p, e : int
Declarar temporal : Estudiante
1
for(p=0; p < intTamaño -1; p=p+1)
yes
for( e=p+1; e < intTamaño; e=e+1)
yes
no
no
return
1
Arreglo[e].CompareTo
(Arreglo[p]) < 0
yes
temporal = Arreglo[p]
Arreglo[p] = Arreglo[e]
Arreglo[e] = temporal
no
Diseño de la forma
19
20
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
10
Programación Orientada a Objetos en C# .NET
Características de la aplicación
Ordena datos de estudiantes
Criterio de ordenamiento: Ascendente
Considera el campo del promedio para hacer las
comparaciones de los objetos
¿Cómo seleccionar el criterio de ordenamiento?
Ascendente o descendente
¿Cómo seleccionar el campo a utilizar para
comparar los objetos?
21
Diseño de una aplicación con
delegados
Ordenar datos de estudiantes
Seleccionar el criterio de ordenamiento
Ascendente
Descendente
Seleccionar el campo para hacer las comparaciones
Matrícula (string)
Nombre (string)
Grado (int)
Grupo (char)
Promedio (double)
22
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
11
Programación Orientada a Objetos en C# .NET
Definición de la clase con los datos
Diagrama de flujo del método de
comparación para ordenar por
matrícula
Estudiante.CompararPorMatricula(Estudiante x, Estudiante y) : int
return( x.Matricula.CompareTo( y.Matricula ) )
24
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
12
Programación Orientada a Objetos en C# .NET
Diagrama de flujo del método de
comparación para ordenar por
nombre
Estudiante.CompararPorNombre(Estudiante x, Estudiante y) : int
return( x.Nombre.CompareTo( y.Nombre) )
Diagrama de flujo del método de
comparación para ordenar por
grado
Estudiante.CompararPorGrado(Estudiante x, Estudiante y) : int
yes
return ( 1 )
yes
return ( -1 )
x.Grado
>
y.Grado
no
x.Grado
<
y.Grado
no
return ( 0 )
25
26
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
13
Programación Orientada a Objetos en C# .NET
Diagrama de flujo del método de
comparación para ordenar por
grupo
Estudiante.CompararPorGrupo(Estudiante x, Estudiante y) : int
yes
return ( 1 )
yes
return ( -1 )
x.Grupo
>
y.Grupo
no
x.Grupo
<
y.Grupo
no
return ( 0 )
Diagrama de flujo del método de
comparación para ordenar por
promedio
Estudiante.CompararPorPromedio(Estudiante x, Estudiante y) : int
yes
return ( 1 )
yes
return ( -1 )
x.Promedio
y.Promedio
>
<
no
x.Promedio
y.Promedio
no
return ( 0 )
27
28
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
14
Programación Orientada a Objetos en C# .NET
El delegado AtributoComparable
Permite declarar una variable como:
Estudiante.AtributoComparable campo;
La variable campo representa un método que puede
contener la referencia a cualquiera de los siguientes
métodos estáticos de la clase Estudiante:
Estudiante.CompararPorMatricula
Estudiante.CompararPorNombre
Estudiante.CompararPorGrado
Estudiante.CompararPorGrupo
Estudiante.CompararPorPromedio
29
30
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
15
Programación Orientada a Objetos en C# .NET
El delegado AtributoComparable
(cont.)
Recibe 2 parámetros que representan los
objetos de los estudiantes que se desean
comparar:
Estudiante x
Estudiante y
Esos objetos están ubicados en el arreglo
en las celdas p y e respectivamente.
El delegado AtributoComparable
(cont.)
Devuelve un valor de tipo entero:
1 cuando el Estudiante x es mayor que el
Estudiante y
-1 cuando el Estudiante x es menor que el
Estudiante y
0 cuando el Estudiante x es igual que el
Estudiante y
31
32
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
16
Programación Orientada a Objetos en C# .NET
Definición de la clase con el
método de o
Comentarios de: 08c.- Métodos de ordenamiento con Delegados - Programación Orientada a Objetos en C# .NET (0)
No hay comentarios