Sesión 9: Búsqueda secuencial y ordenación básica¶
Objetivo¶
Resolver problemas de localización y ordenamiento de datos usando técnicas básicas.
Producto de la sesión¶
Elabora un programa que busque elementos u ordene listas mediante comparaciones y muestre resultados claros.
Resultado esperado¶
Construye un programa que aplique búsqueda secuencial y ordenación básica, organizando la solución en entrada, proceso y salida.
Alcance de la sesión¶
- Uso de búsqueda secuencial, comparación de elementos y ordenación básica.
- Aplicación de intercambio de valores y análisis del proceso de ordenación.
- Resolución de ejercicios guiados y práctica autónoma.
- Verificación de resultados con casos de prueba.
Base conceptual de la sesión¶
- búsqueda secuencial
- comparación de elementos
- ordenación básica
- intercambio de valores
- análisis del proceso
1. Búsqueda Secuencial
Concepto Revisa los elementos uno por uno hasta encontrar el valor buscado o terminar la lista.
Elementos o clasificación Búsqueda con éxito, búsqueda sin éxito y búsqueda con corte anticipado.
Criterio de uso Es adecuada para colecciones pequeñas o no ordenadas. El algoritmo debe indicar qué ocurre si el dato se encuentra y qué ocurre si no aparece.
Ejemplo de aplicación Recorrer la lista hasta encontrar el valor buscado.
2. Comparación De Elementos
Concepto Permite decidir cuál valor es mayor, menor o igual en un conjunto de datos.
Elementos o clasificación Comparación par a par y comparación contra un valor de referencia.
Criterio de uso Comparar elementos permite encontrar mayores, menores, coincidencias o posiciones que deben cambiarse.
Ejemplo de aplicación
if datos[j] < datos[i]:
datos[i], datos[j] = datos[j], datos[i]
3. Ordenación Básica
Concepto Reorganiza los datos siguiendo un criterio, por ejemplo de menor a mayor.
Elementos o clasificación Orden ascendente y descendente mediante comparaciones sucesivas.
Criterio de uso Se aplica para reorganizar datos según un criterio. En programación inicial interesa comprender el proceso más que usar funciones automáticas.
Ejemplo de aplicación Reordenar una lista de menor a mayor con ciclos.
4. Intercambio De Valores
Concepto Sirve para cambiar posiciones cuando un elemento debe ir antes o después de otro.
Elementos o clasificación Intercambio simple entre dos posiciones durante una ordenación.
Criterio de uso El intercambio debe conservar ambos datos; por eso se realiza con una variable auxiliar o con asignación múltiple cuando el lenguaje lo permite.
Ejemplo de aplicación
datos[i], datos[j] = datos[j], datos[i]
5. Análisis Del Proceso
Concepto Permite entender por qué una técnica encuentra o reordena datos correctamente.
Elementos o clasificación Seguimiento paso a paso, comparación de estados y verificación del resultado.
Criterio de uso Consiste en seguir los cambios del algoritmo paso a paso para explicar por qué llega al resultado correcto.
Ejemplo de aplicación Seguir el estado de la lista después de cada intercambio.
Síntesis de la sesión Para resolver ejercicios, no basta con escribir instrucciones en Python. Es necesario reconocer los datos, nombrarlos correctamente, elegir operaciones o estructuras de control apropiadas y comprobar el resultado con casos de prueba.
| Aspecto | Pregunta guía |
|---|---|
| Entrada | ¿Qué datos necesita recibir el programa? |
| Proceso | ¿Qué cálculos, decisiones o repeticiones transforman los datos? |
| Salida | ¿Qué resultado debe mostrarse y con qué formato? |
| Prueba | ¿Con qué casos se demuestra que la solución funciona? |
Actividad práctica¶
La sesión se desarrolla con exploración inicial, ejercicios guiados, ejercicios de aplicación y una tarea tipo competencia.
Arquitectura¶
Entrada -> Proceso -> Salida
- Entrada: lista de datos y valor a buscar u ordenar.
- Proceso: recorrido, comparación, búsqueda o intercambio de elementos según el problema.
- Salida: posición encontrada, lista ordenada u otro resultado del análisis.
Mini laboratorio¶
Prueba una búsqueda sencilla y una comparación entre elementos para anticipar la lógica de ordenación.
datos = [7, 2, 9]
buscado = 2
for i in range(len(datos)):
if datos[i] == buscado:
print('Encontrado en', i)
Ejercicio 1: Búsqueda secuencial básica¶
Buscar un valor fijo dentro de una lista y mostrar la posición donde aparece por primera vez.
Resolución guiada
- Comprender: se debe revisar una lista elemento por elemento hasta encontrar el dato buscado.
- Entradas: lista de datos y valor buscado.
- Procesos:
- recorrer la lista usando índices
- comparar cada elemento con el valor buscado
- guardar la posición cuando se encuentre el valor
- Salidas: posición encontrada o
-1si no aparece. - Pruebas: busca un valor presente y luego cambia el valor por uno que no esté en la lista.
- Código:
datos = [8, 3, 6, 1, 9]
buscado = 6
posicion = -1
for i in range(len(datos)):
if datos[i] == buscado:
posicion = i
break
print('Posición encontrada:', posicion)
Ejercicio 2: Búsqueda de un valor¶
Dada una lista de enteros, busca un valor ingresado por el usuario y muestra si fue encontrado.
Resolución guiada
- Comprender: el programa debe resolver este problema: Dada una lista de enteros, busca un valor ingresado por el usuario y muestra si fue encontrado
- Entradas: define la lista y el valor buscado
- Procesos:
- explica cuándo termina la búsqueda
- ordena las operaciones o decisiones antes de escribir el código
- prepara el resultado final que mostrarás al usuario
- Salidas: muestra el resultado solicitado por el enunciado con mensajes claros y ordenados.
- Pruebas:
- prueba con un valor presente y otro ausente
- caso límite: prueba el valor exacto donde cambia la regla, condición o cálculo principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
datos = [4, 9, 2, 7, 5]
buscado = int(input('Valor a buscar: '))
encontrado = False
for numero in datos:
if numero == buscado:
encontrado = True
break
print('Encontrado:', encontrado)
Ejercicio 3: Ordenación sin sort¶
Ordena una lista de 4 números de menor a mayor sin usar sort().
Resolución guiada
- Comprender: el programa debe resolver este problema: Ordena una lista de 4 números de menor a mayor sin usar sort()
- Entradas: escribe la lista inicial
- Procesos:
- decide cómo compararás cada par de elementos
- ordena las operaciones o decisiones antes de escribir el código
- prepara el resultado final que mostrarás al usuario
- Salidas: muestra el resultado solicitado por el enunciado con mensajes claros y ordenados.
- Pruebas:
- comprueba con una lista ya ordenada y otra invertida
- caso límite: prueba el valor exacto donde cambia la regla, condición o cálculo principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
datos = [8, 1, 6, 3]
for i in range(len(datos)):
for j in range(i + 1, len(datos)):
if datos[j] < datos[i]:
datos[i], datos[j] = datos[j], datos[i]
print(datos)
Ejercicio 4: Búsqueda con posición¶
Busca un valor en una lista y muestra la posición donde aparece por primera vez. Si no aparece, muestra un mensaje claro.
Resolución guiada
- Comprender: no basta con saber si el dato existe; también necesitamos ubicarlo.
- Entradas: lista de datos y valor buscado.
- Procesos:
- recorre la lista usando índices
- guarda la posición cuando encuentres el valor por primera vez
- usa una variable centinela para reconocer si no fue encontrado
- Salidas: posición encontrada o mensaje de no encontrado.
- Pruebas: busca un valor al inicio, uno al final y uno que no exista.
- Código:
datos = [12, 7, 18, 7, 25]
buscado = int(input('Valor a buscar: '))
posicion = -1
for i in range(len(datos)):
if datos[i] == buscado:
posicion = i
break
if posicion == -1:
print('No encontrado')
else:
print('Encontrado en la posición:', posicion)
Ejercicio 5: Mayor y ordenamiento¶
Solicita una lista de 5 enteros, encuentra el mayor y luego ordénala de menor a mayor sin usar sort().
Resolución guiada
- Comprender: redacta con tus palabras qué debe resolver la tarea.
- Entradas: define qué datos ingresan y el tipo que tendrán.
- Procesos:
- describe la estrategia, fórmula, condición, estructura o algoritmo que piensas aplicar
- ordena las acciones principales antes de escribir el código
- prepara cómo obtendrás el resultado final antes de mostrarlo
- Salidas: indica con claridad qué resultado debe mostrar o registrar la solución.
- Pruebas:
- caso normal: usa datos habituales para comprobar que la solución funcione
- caso límite: prueba el valor exacto donde cambia la regla principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
numeros = []
for i in range(5):
numeros.append(int(input(f'Número {i + 1}: ')))
mayor = numeros[0]
for numero in numeros:
if numero > mayor:
mayor = numero
for i in range(len(numeros)):
for j in range(i + 1, len(numeros)):
if numeros[j] < numeros[i]:
numeros[i], numeros[j] = numeros[j], numeros[i]
print('Mayor:', mayor)
print('Lista ordenada:', numeros)
Aprendizaje autónomo¶
Desarrolle el producto de la sesión resolviendo una o más de las siguientes actividades mediante un programa con búsqueda o ordenación claramente identificables.
1 Busca un elemento en una lista y reporta la posición donde aparece por primera vez.
# Actividad 1
2 Ordena una lista pequeña sin usar funciones automáticas y muestra la lista antes y después del proceso.
# Actividad 2
3 Compara el resultado de ordenar una lista ya ordenada con otra totalmente invertida y explica qué cambia.
# Actividad 3
Evaluación del producto de la sesión¶
Lista de cotejo para revisar el producto elaborado por el estudiante:
- Identifica las entradas, el proceso de búsqueda u ordenación y la salida del problema.
- Usa ciclos y comparaciones de manera adecuada para buscar o ordenar elementos.
- Controla correctamente si un elemento fue encontrado y, cuando corresponde, su posición.
- Ordena sin usar funciones automáticas como
sort()cuando el problema lo solicita. - Presenta resultados claros, ordenados y correctos según lo solicitado.
- Verifica el programa con casos de prueba antes de entregarlo.
- Entrega la evidencia del trabajo realizado.