El módulo de Cursos es la primera pestaña de la Plataforma Educativa Personalizada. Su propósito es presentar al estudiante una lista de cursos ordenados de mayor a menor relevancia personalizada y permitirle localizar cualquier curso en la base de datos en tiempo sub-lineal usando su identificador numérico. Para lograr esto, el módulo combina dos algoritmos clásicos: Quick Sort para el ordenamiento y Búsqueda Binaria para la consulta.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/carlosgomezc7/plataforma_aprendizaje/llms.txt
Use this file to discover all available pages before exploring further.
Vista general
La pestaña “Cursos (Orden/Búsqueda)” expone dos controles interactivos principales:| Control | Descripción |
|---|---|
| Botón Cargar y Ordenar por Relevancia | Carga todos los cursos desde db_local.json y los muestra ordenados de mayor a menor relevancia usando Quick Sort. |
| Campo de texto + botón Buscar | Acepta un ID numérico y localiza el curso correspondiente mediante Búsqueda Binaria, mostrando el nombre y dificultad en un cuadro de diálogo. |
Ordenar por Relevancia (Quick Sort)
Al hacer clic en “Cargar y Ordenar por Relevancia”, la aplicación llama internamente aquicksort_cursos(cursos, 'relevancia') con la lista de cursos obtenida de la base de datos local y muestra los resultados en el Listbox de la interfaz, de mayor a menor relevancia.
izq), los iguales (medio) y los de valor menor (der). La recursión se aplica sobre los grupos extremos y los resultados se concatenan en el orden izq + medio + der, lo que produce una lista ordenada de mayor a menor (descendente).
El orden resultante es mayor a menor (
izq antes que der), a diferencia de un Quick Sort ascendente convencional. Esto garantiza que el curso de mayor relevancia aparezca siempre en la primera posición de la lista de sugerencias.Buscar Curso por ID (Búsqueda Binaria)
El campo de búsqueda acepta un ID numérico (ej.103). Al presionar “Buscar”, el método buscar_curso() realiza dos pasos antes de presentar el resultado:
- Ordenar por ID ascendente — la lista de cursos se ordena por
idde menor a mayor usandosorted(), requisito previo indispensable para la Búsqueda Binaria. - Aplicar la búsqueda — se llama a
busqueda_binaria_curso(cursos_ordenados_id, int(id_buscar))que recorre el arreglo en tiempo O(log n).
inicio y fin) que convergen hacia el elemento buscado. En cada iteración calcula el índice medio y compara el ID almacenado ahí con el ID objetivo:
- Si coinciden → retorna el diccionario completo del curso (
id,nombre,relevancia,dificultad). - Si el ID del medio es menor → el objetivo está en la mitad derecha;
inicioavanza. - Si el ID del medio es mayor → el objetivo está en la mitad izquierda;
finretrocede. - Si los punteros se cruzan sin encontrar coincidencia → retorna
None.
Ejemplo de uso
Los datos por defecto cargados endb_local.json al iniciar la aplicación son:
| ID | Nombre | Relevancia | Dificultad |
|---|---|---|---|
| 101 | Matemáticas Básicas | 85 | 3 |
| 102 | Programación en Python | 95 | 5 |
| 103 | Historia del Arte | 60 | 2 |
| 104 | Física Cuántica | 90 | 9 |
| 105 | Estructuras de Datos | 99 | 8 |
103 muestra el cuadro de diálogo:
999 muestra: "Curso no encontrado.".
La Búsqueda Binaria requiere que el arreglo esté ordenado por ID de menor a mayor antes de ejecutarse. Este ordenamiento se realiza automáticamente dentro del método
buscar_curso() mediante sorted(cursos, key=lambda x: x['id']), por lo que no es necesario ningún paso manual del usuario.Para la referencia completa de cada algoritmo consulta: