Pensamiento Computacional · Unidad 1 — Algoritmos y programación
Cómo ejecuta la computadora
La computadora sólo entiende ceros y unos. Python es un idioma intermedio: vos lo escribís, un intérprete lo traduce, y recién ahí la máquina lo ejecuta.
La explicación
Hardware y software
- Hardware: lo que se toca. Procesador (CPU), memoria RAM, disco, teclado, pantalla.
- Software: los programas. No se tocan; son instrucciones guardadas.
- Sistema operativo: el software que administra el hardware y hace de intermediario. Windows, Linux, macOS, Android. Cuando tu programa quiere escribir un archivo, no habla con el disco: le pide al sistema operativo que lo haga.
Memoria y disco no son lo mismo
Por eso una variable desaparece cuando el programa termina, y por eso hay que guardar en un archivo lo que quieras conservar — que es la unidad 5.
Lenguaje de programación
El procesador sólo ejecuta código máquina: números. Escribir en eso es inviable, así que se usan lenguajes que las personas pueden leer, y algo los traduce.
El intérprete traduce y ejecuta
El procesador hace: 10110000 01100001 ...
Python es interpretado: un programa (el intérprete) lee tu código línea por línea y lo va ejecutando. No hay un paso previo de compilación que genere un ejecutable. Eso tiene dos consecuencias prácticas que se notan todo el tiempo:
- Podés probar una línea suelta y ver el resultado al instante.
- Los errores aparecen recién cuando esa línea se ejecuta. Un error escondido en un
ifque nunca se cumple puede pasar desapercibido mucho tiempo.
Entorno de desarrollo
Es dónde escribís y corrés el código. La cátedra usa Google Colab: no hay que instalar nada, corre en el navegador y el código vive en celdas que se ejecutan de a una.
El sistema operativo, que está en el medio de todo
Ningún programa habla directamente con el hardware. En el medio hay un programa especial —el sistema operativo— que reparte el procesador entre todo lo que está abierto, administra la memoria y es el único que sabe realmente dónde está guardado cada archivo en el disco.
Python no se compila: se interpreta
Hay dos maneras de convertir tu código en algo que el procesador entienda:
- Compilar (C, por ejemplo): un programa traduce el archivo entero de una sola vez, antes de correr, y queda un ejecutable. Es más rápido al ejecutar, y los errores de escritura aparecen todos antes de arrancar.
- Interpretar (Python): hay un programa, el intérprete, que lee y ejecuta línea por línea, cada vez que corrés.
SyntaxError, que aparece antes de ejecutar nada, porque el intérprete necesita poder leer el archivo entero para empezar.
¿Por qué este programa imprime 13 y no 103?
y = 3
print(x + y)
Porque x e y guardan números, no texto. El + entre
dos números suma; entre dos textos, pega uno atrás del otro.
Si en cambio escribieras:
y = "3"
print(x + y)
saldría 103, porque las comillas convierten eso en texto y + concatena.
input():
todo lo que entra por teclado es texto, aunque el usuario escriba un número. Si no lo
convertís con int(), sumar dos "números" te va a dar una concatenación.
El control: si un resultado numérico salió con los dígitos pegados en vez de sumados, casi siempre son strings disfrazados de números.
Y por qué esto explica media clase de errores. Si en Colab una variable «existe» sin que
la hayas definido en la celda que estás mirando, es porque quedó en memoria de una celda
anterior que corriste antes. El programa te funciona a vos y no a quien lo abre de nuevo. El
control es siempre el mismo: reiniciar el entorno y correr todo de arriba abajo. Si ahí
aparece un NameError, el programa estaba mal desde el principio y lo tapaba el
estado viejo.
Este programa tiene que imprimir 10 (la suma de la lista) y en cambio imprime 1, 3, 6 y 10 en cuatro líneas. ¿Por qué, y cómo se arregla? total = 0 · for n in [1,2,3,4]: · total = total + n · print(total)
El programa, como está escrito:
for n in [1, 2, 3, 4]:
total = total + n
print(total)
Lo que hace no es lo que uno lee. En Python, la sangría no es decoración: es lo que dice qué instrucciones están adentro del for. Como el print está sangrado al mismo nivel que la suma, se ejecuta una vez por vuelta.
El recorrido, vuelta por vuelta:
n = 2 → total = 1 + 2 = 3 → imprime 3
n = 3 → total = 3 + 3 = 6 → imprime 6
n = 4 → total = 6 + 4 = 10 → imprime 10
Los números no son "cualquier cosa": son las sumas parciales. Que la última sea 10 —el resultado correcto— confirma que la cuenta está bien y que el problema es cuándo se imprime, no qué se suma. Eso es lo primero que hay que diagnosticar.
El arreglo: sacar el print del for.
for n in [1, 2, 3, 4]:
total = total + n
print(total)
Es un solo nivel de sangría, cuatro espacios, y cambia el programa entero. Ahora el print se ejecuta una vez, cuando el ciclo ya terminó, y muestra 10.
La regla general, que sirve para todo acumulador:
se actualiza ADENTRO del ciclo
se usa DESPUÉS del ciclo
El error espejado, que conviene conocer porque es el otro que aparece en los parciales: poner total = 0 adentro del ciclo. Ahí el acumulador se reinicia en cada vuelta y el resultado final es 4, el último número, en vez de la suma.
Cuándo el print adentro SÍ es lo que se quiere. Si el enunciado pidiera mostrar el saldo después de cada movimiento, o el avance de un cálculo largo, la versión "mal" es la correcta. No hay una que sea buena siempre: hay que leer qué pide el enunciado.
Cómo detectarlo sin ejecutar: contar cuántas líneas imprime el programa. Si imprime tantas como elementos tiene la lista, hay un print adentro del ciclo. Si imprime una sola, está afuera.
Dónde se pierde el punto: tocar la cuenta en vez de la sangría. Como el último número que sale es el correcto, cambiar la suma solo rompe lo que andaba.
Dónde se cae la mayoría
- Confundir memoria con disco, y esperar que una variable siga existiendo después de que el programa termina.
- Creer que si el programa arranca, está bien: en Python un error puede estar esperando en una línea que todavía no se ejecutó.
- En Colab, correr celdas fuera de orden y pelearse con un estado que quedó inconsistente.
Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.
Practicar Cómo ejecuta la computadora →Los otros temas de la unidad 1
Algoritmos y programación