Skip to content

Latest commit

 

History

History

s02-20241121

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Sesión 2: Introducción a Arrays y Algoritmos de Ordenación Avanzados


  • Fecha: 21/11/2024
  • Objetivo de la Sesión: Comprender el uso de arrays y vectores para almacenar y manipular datos, y aprender dos algoritmos de ordenación adicionales: Selection Sort e Insertion Sort.

1. Parte: Fundamentos de Programación - Arrays y Vectores

Duración: 20 min (Teoría), 40 min (Práctica), 30 min (Resolución y Discusión)

1.1. Teoría (20 min)

  1. Introducción a Arrays y Vectores:

    • Definición y propósito de arrays y vectores en programación.
    • Comparación entre arrays (de tamaño fijo) y vectores (de tamaño dinámico, en lenguajes que los admiten).
    • Ejemplos prácticos donde se necesita almacenar múltiples valores del mismo tipo (listas de calificaciones, registros de temperaturas, etc.).
  2. Operaciones Básicas en Arrays:

    • Acceso a elementos, modificación y recorrido de un array.
    • Ejemplo de acceso y modificación de elementos en un array de 5 enteros.

1.2. Práctica (40 min)

  • Ejercicio 1: Declaración y Acceso a Arrays (10 min)

    • Crear un array de enteros y asignar valores a sus elementos.
    • Imprimir los valores del array para visualizar su contenido.
  • Ejercicio 2: Recorrido y Operaciones en Arrays (15 min)

    • Pedir a los estudiantes que recorran el array e impriman cada valor en una nueva línea.
  • Ejercicio adicional: Calcular la suma de todos los elementos de un array y el valor promedio.

  • Ejercicio 3: Uso de Vectores (15 min)

    • Crear un vector e insertar valores de manera dinámica.
    • Eliminar un elemento específico y ver el comportamiento del vector después de la eliminación.

1.3. Resolución y Discusión (30 min)

  • Discusión de Soluciones:
    • Los estudiantes compartirán sus soluciones y se revisarán distintos enfoques para trabajar con arrays y vectores.
  • Optimización de Código:
    • Comentar sobre el uso eficiente de la memoria y el tiempo de ejecución al manejar estructuras como arrays y vectores.
  • Buenas Prácticas:
    • Destacar la importancia de nombrar correctamente los arrays y de documentar el código para mejorar su claridad.

2. Parte: Algorítmica - Algoritmos de Ordenación (Selection Sort e Insertion Sort)

Duración: 20 min (Teoría), 40 min (Práctica), 30 min (Resolución y Discusión)

2.1. Teoría (20 min)

  1. Repaso de la Importancia de la Ordenación:

    • Recordatorio sobre por qué es esencial ordenar datos en programación.
  2. Selection Sort:

    • Explicación del funcionamiento de Selection Sort:
    • Selección del elemento mínimo y su colocación en la posición correcta.
    • Visualización paso a paso de cómo se intercambian elementos en una lista para ordenarla.
  3. Insertion Sort:

    • Explicación de Insertion Sort:
      • Colocación de cada elemento en su posición correcta en la parte ordenada de la lista.
      • Comparación con Selection Sort en cuanto a su eficiencia y sus aplicaciones prácticas.

2.2. Práctica (40 min)

  • Ejercicio de Selection Sort (20 min)
    • Implementar Selection Sort para ordenar un array de números enteros.
    • Pedir a los estudiantes que impriman el array después de cada iteración para observar el proceso de ordenación.
  • Ejercicio de Insertion Sort (20 min)
    • Implementar Insertion Sort en un array de números.
    • Comparar el número de pasos requeridos en comparación con Bubble Sort (del que aprendieron en la sesión anterior).

2.3. Resolución y Discusión (30 min)

  • Discusión de Soluciones y Eficiencia de Algoritmos:

    • Los estudiantes compartirán sus implementaciones de Selection Sort e Insertion Sort.
    • Comparación entre los tres algoritmos de ordenación vistos (Bubble Sort, Selection Sort e Insertion Sort) en términos de tiempo y número de operaciones.
  • Análisis de Eficiencia:

    • Explicar la complejidad de cada algoritmo (O(n²) para los tres) y discutir cuándo sería adecuado utilizar cada uno.

3. Parte: Ampliación de Conceptos y Tareas para la Próxima Sesión

  • Exploración Adicional de Algoritmos de Ordenación:
    • Investigar sobre otros algoritmos de ordenación más eficientes (ej., Quick Sort, Merge Sort) para preparar a los estudiantes para algoritmos avanzados.
  • Tareas Opcionales:
    • Resolver problemas de ordenación en plataformas como LeetCode o HackerRank.
    • Experimentar con la ordenación de listas de cadenas y explorar si los algoritmos aprendidos pueden adaptarse para ordenar texto.