UADE · Pensamiento Computacional

Algoritmos y Pensamiento Computacional

Resumen de temas para el parcial · Lic. María Ángela León

Listas clase 6

Colección de datos ordenada y mutable, definida con corchetes [].

Características clave

Operaciones / métodos principales

MétodoFunción
append(x)Agrega un elemento al final
extend(lista)Agrega los elementos de otra lista
insert(i, x)Inserta en la posición i y desplaza el resto
pop([i])Elimina el último elemento o el de índice i
remove(x)Elimina la primera aparición de x
del lista[i] / clear()Elimina por posición / vacía la lista
index(x) / count(x)Posición / cantidad de apariciones
len(lista)Longitud
sort(reverse=False)Ordena in-situ (numérica o alfabéticamente)
Otras: pertenencia x in lista, concatenación lista + otra, rebanada lista[2:5] (siempre devuelve una lista).

Funciones clase 7

Bloque de código reutilizable que realiza una tarea específica.

¿Para qué sirven?

Sintaxis

def nombre_funcion(parametros):
    instrucciones
    return valor

Parámetro

Nombre dado al definir la función; actúa como variable interna.

Argumento

El dato real que se envía al invocar la función.

Tipos de argumentos

Las colecciones (listas, diccionarios) se pasan por referencia: la función puede modificar el contenido original.

Tuplas y Diccionarios clase 8

Tuplas inmutables

Colección ordenada e inmutable, definida con paréntesis ().

Diccionarios clave–valor

Colección mutable de pares clave: valor, definida con llaves {}.

persona = {"nombre": "Ana", "edad": 22}
persona["ciudad"] = "Chubut"   # agregar
del persona["edad"]            # eliminar
MétodoFunción
keys()Devuelve las claves
values()Devuelve los valores
items()Devuelve pares (clave, valor)
get(clave)Obtiene un valor sin error si no existe
pop(clave)Elimina y devuelve el valor
update({...})Actualiza / agrega datos
clear()Vacía el diccionario

Admiten diccionarios anidados y listas de diccionarios.

Tupla vs Diccionario

AspectoTuplaDiccionario
Sintaxis(){}
AccesoÍndiceClave
MutableNo
Uso principalDatos fijosAsociación clave-valor

Algoritmos de Búsqueda clase 9

Secuencia de pasos para determinar la presencia, ausencia o ubicación de un dato.

🔎 Secuencial (Lineal)

Examina cada elemento en orden hasta encontrar el buscado o terminar el recorrido.
No requiere ordenO(n)

⚡ Binaria

Divide repetidamente una lista ordenada en mitades, descartando la mitad donde no está el dato.
Requiere ordenO(log n)

Comparación

CaracterísticaSecuencialBinaria
Datos ordenadosNo necesarioObligatorio
FacilidadMuy altaMedia
EficienciaBajaAlta
ComplejidadO(n)O(log n)
1.000.000 elementoshasta 1.000.000 comp.≈ 20 comp.

Algoritmos de Ordenamiento clase 10

Organizan un conjunto de datos según un criterio (ascendente, descendente, alfabético…).

🫧 Burbuja (Bubble Sort)

Compara pares consecutivos y los intercambia si están desordenados; los valores grandes "suben" al final.

for i in range(n):
    for j in range(0, n - i - 1):
        if lista[j] > lista[j + 1]:
            lista[j], lista[j + 1] = lista[j + 1], lista[j]

🃏 Inserción (Insertion Sort)

Toma cada elemento y lo inserta en su posición correcta dentro de la parte ya ordenada (como ordenar cartas en la mano).

for i in range(1, len(lista)):
    actual = lista[i]
    j = i - 1
    while j >= 0 and lista[j] > actual:
        lista[j + 1] = lista[j]
        j -= 1
    lista[j + 1] = actual

🎯 Selección (Selection Sort)

Busca el menor elemento y lo coloca al inicio; repite con el resto.

for i in range(n):
    menor = i
    for j in range(i + 1, n):
        if lista[j] < lista[menor]:
            menor = j
    lista[i], lista[menor] = lista[menor], lista[i]

Complejidad

AlgoritmoMejor casoPromedioPeor caso
BurbujaO(n)O(n²)O(n²)
InserciónO(n)O(n²)O(n²)
SelecciónO(n²)O(n²)O(n²)

Vectores (arreglos 1D) clase 11

Estructura lineal que almacena múltiples elementos bajo un único nombre.

Problemas clásicos

Suma / Promedio

Acumular con un bucle y dividir por len().

Máximo / Mínimo

Comparar cada elemento contra un valor de referencia.

Búsqueda

Secuencial y binaria.

Ordenamiento

Burbuja, selección, inserción.

Pueden contener registros (listas anidadas): alumnos = [["Juan",8],["Ana",10]].

Matrices (arreglos 2D) 10 de junio

Estructura bidimensional (filas × columnas); una lista de listas.

matriz = [
    [5, 8, 3],
    [7, 2, 1],
    [4, 9, 6]
]
print(matriz[1][2])   # → 1  (matriz[fila][columna])

Recorrido completo

for i in range(len(matriz)):
    for j in range(len(matriz[i])):
        print(matriz[i][j])

Operaciones básicas

Suma de elementos, promedio, mayor/menor, suma de filas y columnas.

Diagonales

Principal: matriz[i][i]. Secundaria: matriz[i][n-1-i].

Tipos

Cuadrada, rectangular, identidad, diagonal, triangular sup./inf.

Entre matrices

Suma, resta, producto por escalar, transpuesta.

Punto de entrada (Entry Point) 10 de junio

La estructura if __name__ == "__main__": controla el comportamiento según cómo se ejecuta el archivo.

▶ Ejecución directa

python mi_programa.py → Python asigna __name__ = "__main__".

📦 Importación

import mi_programa__name__ toma el nombre del archivo (módulo).
def main():
    print("Iniciando el sistema principal...")

if __name__ == "__main__":   # el "guardián" del punto de entrada
    main()
Permite que un archivo funcione como programa ejecutable o como librería importable, sin ejecutar el código principal al importarlo.