Algoritmos y pensamiento computacional
Un robot de cocina no entiende «hacé un mate como a vos te gusta». Antes de programar cualquier cosa hay que tener clarísimos los pasos exactos. Esa lista de pasos es un algoritmo, y pensar así (descomponiendo, buscando patrones, quedándote con lo importante) es el pensamiento computacional. Al final de la página vas a poder explicar por qué «hasta que espese» no alcanza como instrucción.
Qué es un algoritmo
Todo algoritmo se puede pensar como entrada → proceso → salida: con qué empezás, qué hacés con eso y qué obtenés.
Escribí el algoritmo, como una lista de pasos numerados, para preparar un sándwich de queso, de forma que una persona que nunca hizo uno pueda seguirlo sin dudas. Revisá…
Escribí el algoritmo, como una lista de pasos numerados, para preparar un sándwich de queso, de forma que una persona que nunca hizo uno pueda seguirlo sin dudas. Revisá tu lista y comprobá que no falten pasos que dabas por supuestos.
Escribí el algoritmo para preparar un vaso de leche con cacao en seis u ocho pasos, tan precisos que los pudiera seguir un robot: cantidades, orden de los pasos y cómo…
Escribí el algoritmo para preparar un vaso de leche con cacao en seis u ocho pasos, tan precisos que los pudiera seguir un robot: cantidades, orden de los pasos y cómo comprobar que el cacao se disolvió antes de terminar.
En la receta «freír un huevo» identificá la entrada (los ingredientes y utensilios), el proceso (los pasos con el fuego y la sartén) y la salida (el resultado). Explicá…
En la receta «freír un huevo» identificá la entrada (los ingredientes y utensilios), el proceso (los pasos con el fuego y la sartén) y la salida (el resultado). Explicá por qué pensar así ayuda a escribir algoritmos claros.
Una receta dice «remové la salsa hasta que espese». Explicá por qué un algoritmo debe terminar siempre y qué podría pasar si la salsa nunca espesara. Reescribí ese paso…
Una receta dice «remové la salsa hasta que espese». Explicá por qué un algoritmo debe terminar siempre y qué podría pasar si la salsa nunca espesara. Reescribí ese paso para que el cocinero no se quede removiendo para siempre.
Decisiones y repeticiones en el diagrama de flujo
Los algoritmos no son solo una fila de pasos: a veces hay que decidir (si pasa tal cosa, hago esto; si no, aquello) y a veces hay que repetir (mientras queden cartas, repartir una). El diagrama de flujo dibuja todo eso.
Una repetición siempre necesita una condición que diga cuándo parar. En «mientras queden cartas en la mano, repartí una» la condición es «que queden cartas»; cuando no queda ninguna, la repetición termina.
Una variable es un valor con nombre que va cambiando. Por ejemplo, un «contador» que empieza en 0 y suma 1 cada vez que alguien entra al aula.
Hacer la traza a mano (anotar el valor después de cada paso) sirve para comprobar que el algoritmo hace lo que querés antes de programarlo, y para encontrar errores. Equivocarse y depurar es parte normal de aprender a programar.
Estos pasos del algoritmo «ir al liceo» están desordenados: (a) entrar a clase, (b) levantarse, (c) desayunar, (d) salir de casa, (e) vestirse, (f) caminar hasta el…
Estos pasos del algoritmo «ir al liceo» están desordenados: (a) entrar a clase, (b) levantarse, (c) desayunar, (d) salir de casa, (e) vestirse, (f) caminar hasta el liceo. Ordenalos correctamente y agregá al algoritmo una decisión: qué hacer si está lloviendo al salir de casa.
La figura muestra, con bloques encajados, el algoritmo de una lámpara de lectura automática que debe encenderse solo cuando hay poca luz, pero falta un bloque. Indicá…
La figura muestra, con bloques encajados, el algoritmo de una lámpara de lectura automática que debe encenderse solo cuando hay poca luz, pero falta un bloque.
Indicá qué bloque colocarías en el hueco y explicá con tus palabras cómo funciona el algoritmo completo, paso a paso.
Muchos aparatos cotidianos siguen algoritmos. Elegí dos de esta lista —lavarropas, microondas, semáforo— y describí para cada uno qué datos recibe (entrada), qué decide…
Muchos aparatos cotidianos siguen algoritmos. Elegí dos de esta lista —lavarropas, microondas, semáforo— y describí para cada uno qué datos recibe (entrada), qué decide o repite (proceso) y qué hace al final (salida).
Leé este algoritmo: (1) agarrá la baraja, (2) mientras queden cartas en la mano, repartí una a cada jugador empezando por tu izquierda, (3) cuando no queden cartas,…
Leé este algoritmo: (1) agarrá la baraja, (2) mientras queden cartas en la mano, repartí una a cada jugador empezando por tu izquierda, (3) cuando no queden cartas, anunciá «repartidas». Explicá con una frase qué hace el algoritmo y señalá qué parte es la repetición y cuándo termina.
Hacé la traza de este algoritmo con $n = 7$: (1) empezar con el valor de $n$, (2) repetir tres veces: sumarle 2, (3) restarle 5, (4) escribir el resultado. Anotá el…
Hacé la traza de este algoritmo con $n = 7$: (1) empezar con el valor de $n$, (2) repetir tres veces: sumarle 2, (3) restarle 5, (4) escribir el resultado. Anotá el valor después de cada paso, da el resultado final y explicá qué es una traza y para qué sirve hacerla a mano.
Escribí el algoritmo para contar cuántas personas entran por la puerta del aula usando solo una variable «contador» que empieza en 0: qué hacés cada vez que entra…
Escribí el algoritmo para contar cuántas personas entran por la puerta del aula usando solo una variable «contador» que empieza en 0: qué hacés cada vez que entra alguien, cómo sabés cuándo parar de contar y qué valor tendrá el contador al final.
Del diagrama al pseudocódigo
Un diagrama de flujo también se puede escribir con palabras, en forma de pseudocódigo. PSeInt es un programa que te permite escribir y ejecutar pseudocódigo, y sirve de puente hacia los lenguajes de programación textuales.
Descomponer, reconocer patrones y abstraer
Descomponer. «Organizar la fiesta de fin de año» es enorme; «conseguir la música», «pedir permiso en la dirección», «armar la lista de comida» y «invitar a los grupos» son partes que se pueden resolver una por una, incluso entre varias personas.
Reconocer patrones. En 5, 10, 15, 20… la regla es «sumar 5». En 1, 2, 4, 8… la regla es «multiplicar por 2». Si encontrás la regla, podés predecir cualquier término sin escribirlos todos.
Abstraer. Es elegir qué importa para el problema que tenés.
Descomponé el problema «organizar la fiesta de fin de año» en cuatro subproblemas más pequeños y escribí dos pasos concretos para resolver cada uno. Explicá qué ventaja…
Descomponé el problema «organizar la fiesta de fin de año» en cuatro subproblemas más pequeños y escribí dos pasos concretos para resolver cada uno. Explicá qué ventaja tiene dividir así un problema grande.
Reconocer patrones es encontrar la regla que se repite. Descubrí el patrón de estas tres secuencias y expresalo como una regla clara: (a) 5, 10, 15, 20, …, (b) 100, 90,…
Reconocer patrones es encontrar la regla que se repite. Descubrí el patrón de estas tres secuencias y expresalo como una regla clara: (a) 5, 10, 15, 20, …, (b) 100, 90, 80, 70, …, (c) lunes: 1 flexión, martes: 2, miércoles: 4, jueves: 8, … Indicá qué valor vendría después en cada una.
El mapa del metro no dibuja la ciudad real: elimina distancias, curvas y calles, y se queda solo con estaciones y conexiones. Explicá qué es la abstracción usando este…
El mapa del metro no dibuja la ciudad real: elimina distancias, curvas y calles, y se queda solo con estaciones y conexiones. Explicá qué es la abstracción usando este ejemplo y aplicala después al plano de tu liceo: qué tres cosas incluirías y qué tres cosas eliminarías.
Podés hacerlo en papel y enviar una foto con tu respuesta.
Casos límite y errores en los algoritmos
Una receta dice: «agregá sal y dejá cocinar un rato a fuego medio». Explicá por qué una computadora no podría seguir esa instrucción y reescribila como un paso de…
Una receta dice: «agregá sal y dejá cocinar un rato a fuego medio». Explicá por qué una computadora no podría seguir esa instrucción y reescribila como un paso de algoritmo preciso, indicando cantidades, tiempos y cómo comprobar que el paso terminó.
Este algoritmo de «lavar la ropa» tiene un error: (1) meter toda la ropa en la lavadora, blanca y de color junta, (2) agregar detergente, (3) elegir el programa largo de…
Este algoritmo de «lavar la ropa» tiene un error: (1) meter toda la ropa en la lavadora, blanca y de color junta, (2) agregar detergente, (3) elegir el programa largo de agua caliente, (4) colgar la ropa. Encontrá dos pasos problemáticos, explicá qué puede salir mal en cada uno y reescribí el algoritmo corregido con un paso de clasificación previa.
El algoritmo de un comedor reparte un sándwich a cada asistente, pero falla cuando hay más asistentes que sándwiches. Explicá qué es un «caso límite» en un algoritmo,…
El algoritmo de un comedor reparte un sándwich a cada asistente, pero falla cuando hay más asistentes que sándwiches. Explicá qué es un «caso límite» en un algoritmo, proponé cómo debería comportarse el reparto en esa situación y reescribí el paso conflictivo para que el algoritmo no falle.
Un cajero automático solo tiene billetes de $\$800$ y su algoritmo reparte la cantidad pedida en billetes. Explicá qué ocurre cuando alguien pide $\$3\,000$, por qué es…
Un cajero automático solo tiene billetes de $\$800$ y su algoritmo reparte la cantidad pedida en billetes. Explicá qué ocurre cuando alguien pide $\$3\,000$, por qué es un caso límite y reescribí las reglas del cajero para que responda siempre algo razonable.
Diseñá el algoritmo completo, con pasos numerados que incluyan decisiones y repeticiones, de un semáforo peatonal con botón: qué ocurre desde que alguien pulsa el botón…
Diseñá el algoritmo completo, con pasos numerados que incluyan decisiones y repeticiones, de un semáforo peatonal con botón: qué ocurre desde que alguien pulsa el botón hasta que el semáforo vuelve a su estado inicial, incluyendo los tiempos de cada luz.
La figura muestra, con bloques encajados, el esqueleto de un juego de adivinar un número secreto, pero dentro del bucle falta una pieza para que el juego dé pistas al…
La figura muestra, con bloques encajados, el esqueleto de un juego de adivinar un número secreto, pero dentro del bucle falta una pieza para que el juego dé pistas al jugador.
Describí qué bloque (o bloques) colocarías en el hueco para que el juego le diga al jugador si su número es mayor o menor que el secreto, y explicá el funcionamiento completo del algoritmo: qué se repite, cuándo termina y qué pasa si el jugador acierta a la primera.
Resumen
Volvé al principio: «hasta que espese» no sirve en un algoritmo porque no dice cómo comprobarlo ni cuándo parar; con un tiempo y un tope, el robot siempre termina.