INTRODUCCIÓN
OBJETIVOS
Este curso tiene como objetivo introducir a los alumnos en la utilización de metodologías y
herramientas accesibles para aprender conceptos de programación mediante actividades
entretenidas y amenas, buscando fortalecer el pensamiento computacional vinculado a la
resolución de problemas.
Se utilizarán herramientas especialmente diseñadas para tal fin, como PilasBloques y Lightbot.
HERRAMIENTAS SOFTWARE
2
INTRODUCCIÓN A LA PROGRAMACIÓN
Ejercicio: El docente “robot” debe salir del aula siguiendo instrucciones de los alumnos.
Desarrollo:
- Un docente se ubica en una posición fija.
- Los alumnos deben dar instrucciones para salir del aula.
- Otro docente hace de “escriba” y escribe las instrucciones dadas por los alumnos.
- El docente “escriba” tacha las instrucciones incorrectas cuando se trata de
acciones que el robot no puede ejecutar (detecta “error” de ejecución).
Hacer hincapié en que el autómata ejecuta órdenes precisas y sólo hace lo que se le indica, ni
más ni menos.
Ejemplo de órdenes precisas:
Primitivas - Comandos
Secuencia lógica
¿Qué pasaría con el autómata si las acciones hubieran sido muy generales o muy
complejas (por ejemplo, “caminar” o “dibujar una casa”), ¿las podría haber
ejecutado? ¿Por qué?
¿Se modificaría el resultado final de la secuencia al cambiar el orden de las acciones?
¿Qué ocurriría en los siguientes casos?
o Se le ordena al autómata que se siente en una silla, pero no hay ninguna silla.
o Se le dice al autómata que levante el brazo derecho y ya lo tiene levantado.
o Se le pide al autómata que levante el brazo derecho mientras tiene levantado
el brazo izquierdo, y no se especifica si antes debe bajar este brazo o no.
4
INTRODUCCIÓN A LA PROGRAMACIÓN
Conjunto de comandos:
- Cruzar los brazos
- Estirar los brazos
- Decir ¡HEY!
- Levantar rodilla izq/der
- Estirar pierna izq/der
- Bajar pierna izq/der
tarea:
- escribir un programa que indique cómo bailar cosaco.
contexto inicial:
- parado con los brazos al lado del cuerpo.
5
INTRODUCCIÓN A LA PROGRAMACIÓN
Para ello, el usuario cuenta con una serie de acciones en forma de íconos y una grilla en la
que ubicarlas.
Objetivos:
Resolver problemas de manera más simple a partir del patrón que permite
descomponerlos.
Comenzando…
Ejecutar el instalador
Abrir la aplicación Lightbot, que presentará la interfaz que se muestra en la Fig.1.
También se puede:
Jugar on line en su página oficial: http://armorgames.com/play/2205/light-bot?via-
search=1
6
INTRODUCCIÓN A LA PROGRAMACIÓN
Girar a la derecha
Girar a la izquierda
7
INTRODUCCIÓN A LA PROGRAMACIÓN
Prender/Apagar luz
Avanzar hasta el nivel 6 del juego utilizando solo la grilla correspondiente al Procedimiento
principal (Main Method).
Utilizar procedimientos
Se puede avanzar hasta el nivel 5 sin dificultades. En el nivel 6 veremos que no alcanzan los
espacios del MAIN METHOD para resolverlo. Entonces, es necesario utilizar las grillas correspon-
o Mediante los comandos y se indica al robot que ejecute las nuevas tareas definidas.
o Cada grupo admite hasta ocho acciones por tarea ya que es parte del juego que el jugador piense
la forma de utilizar las casillas eficazmente.
o Así, por ejemplo, si el procedimiento o función 1 se define como avanzar tres veces, al colocar
el comando en la primera grilla, se está indicando al robot que se mueva tres pasos hacia
adelante.
Para finalizar:
Cuando aparecen “patrones” que se repiten es conveniente usar procedimientos (F1, F2)
8
INTRODUCCIÓN A LA PROGRAMACIÓN
9
INTRODUCCIÓN A LA PROGRAMACIÓN
Se proponen desafíos con diversos niveles de dificultad para acercar a los alumnos al mundo de
la programación por medio de bloques.
Pilas Bloques está pensado para trabajar con estudiantes que no tienen conocimientos previos
en materia de programación.
Objetivos:
Comprender que un comando o primitiva es una acción que genera un efecto (reproducir
un sonido, pintar a una imagen, mover un objeto, etcétera) y que las secuencias de
comandos permiten encadenar (o componer) comandos de forma ordenada.
Descargar el instalador
Del aula virtual de la asignatura sección Material de Laboratorio, enlace
PilasBloques
Ejecutar el instalador
Abrir la aplicación PilasBloques, que presentará la interfaz que se muestra en la Fig.4.
También se puede abrir la aplicación en línea en:
http://pilasbloques.program.ar/online/#/desafios
10
INTRODUCCIÓN A LA PROGRAMACIÓN
- Todas las actividades tienen un objetivo, en este caso, el Alien debe tocar el botón. Para
cumplir el objetivo cada actividad dispone de un conjunto de acciones, denominadas
“Primitivas” (lo que el autómata es capaz de hacer).
- Para comprobar el programa, se oprime el botón “Ejecutar”. Una vez realizada las
acciones el botón se convierte a “Reiniciar” (ver Fig. 5).
11
INTRODUCCIÓN A LA PROGRAMACIÓN
12
INTRODUCCIÓN A LA PROGRAMACIÓN
13
INTRODUCCIÓN A LA PROGRAMACIÓN
Ejercicio 2:
Explorar otras actividades que el gato pueda realizar. Por ejemplo: saludar, avanzar, volver,
saludar, avanzar o avanzar, saludar, avanzar, saludar, volver. De este modo, observarán que
distintas secuencias producen resultados diferentes.
Como el ejercicio está pensado para ejercitar estas variantes, no tiene la leyenda de que se
cumplió el objetivo.
Repasando:
o Un comando o “primitiva” es una acción que genera un efecto.
o Un programa es una secuencia de comandos.
o Correr o ejecutar un programa es hacer que un autómata realice los comandos de
un programa.
o Se pueden definir nuevos bloques (procedimientos) para realizar secuencias
específicas.
o La denominación adecuada de los procedimientos contribuye a la legibilidad.
o La definición de la estrategia y la división en tareas facilita la comprensión de la
solución global.
14
INTRODUCCIÓN A LA PROGRAMACIÓN
Reconocer que las computadoras pueden repetir una tarea cuantas veces sea
necesario.
Bloque Repetir
Solución:
Una buena práctica para mejorar la legibilidad de una solución es crear un procedimiento
principal que contenga la solución al desafío. En este caso, crear un bloque Saltar 30 veces.
Recordemos que conviene nombrar a los procedimientos con nombres que indiquen el
propósito de ese conjunto de comandos, preferentemente usando un verbo en infinitivo
(Saltar), en este caso, Saltar 30 veces que es el objetivo que pide el desafío.
15
INTRODUCCIÓN A LA PROGRAMACIÓN
Dentro del procedimiento principal, utilizar el bloque Repetir que requiere seleccionar la/las
primitivas que se repetirán (Saltar) e indicar cuántas veces debe repetirse (30 veces), como se
muestra a continuación:
Para finalizar:
En un programa se pueden repetir secuencias de comandos tantas veces como sea
necesario
Usar el bloque Repetir ayuda a generar programas más compactos y legibles.
En general, cuando un comando (o una secuencia de comandos) se repite se debe usar el
bloque Repetir.
En el casillero en blanco del bloque se indicará el número de veces que se deben repetir
los comandos.
La invocación a un procedimiento principal (bloque “Saltar 30 veces”) hace más legible
la solución que se busca.
16
INTRODUCCIÓN A LA PROGRAMACIÓN
Se define un procedimiento para comer manzanas en cada ubicación de las mismas, y otro
procedimiento para ubicar al autómata.
El bloque Repetir se usa para repetir el conjunto de acciones o primitivas que se realiza más de
una vez (por ejemplo, Mover a la derecha, Comer manzana).
En este punto conviene introducir el concepto de “patrón”, como secuencia de primitivas que
se realizan más de una vez. Los alumnos deben identificar estos patrones al analizar la estrategia
que implementarán.
17
INTRODUCCIÓN A LA PROGRAMACIÓN
Ejercicio 6.2: Tito enciende las luces. Construya un programa que permita al robot
encender todas las luces.
En esta solución, probablemente intenten repetir 4 veces la primitiva Prender Luz porque
existen 4 focos, pero hay un problema, ¿cuál es?
Ejercicio 6.3: El Alíen y las Tuercas. Construya un programa que permita el Alíen junte
todas las tuercas.
En este desafío puede haber un problema con la última tuerca.
Ejercicio 6.5: María come sandías. Construya un programa que permita a María morder
todas las sandías que se encuentran en el tablero.
Ejercicio 6.6: Alimentando a los Peces. Construya un programa que permita al buzo
buscar la comida y que alimente a los peces.
Prestar atención, en cada solución, a tener en cuenta la “pista” que se menciona en el enunciado
del desafío.
Ejercicio 6.7: Instalando Juegos. Construya un programa que permita al extraterrestre
instalar videojuegos en las tres computadoras de la biblioteca. Para ello debe encender
cada computadora, ingresar la contraseña (que en este caso es ABC), cargar el juego y
finalmente apagar la máquina.
Ejercicio 6.8: La gran Aventura del Mar Encantado. Construya un programa que permita
al héroe (ubicado en el casillero del extremo inferior izquierdo) logre escapar en el
unicornio con la princesa. Para ello debe superar una serie de pruebas en el siguiente
orden.
Ejercicio 6.9: Reparando la nave. Construya un programa que permita al marciano
aprovisionarse de carbón y hierro para reparar su nave y así poder ponerla en
funcionamiento.
18
INTRODUCCIÓN A LA PROGRAMACIÓN
19
INTRODUCCIÓN A LA PROGRAMACIÓN
20
INTRODUCCIÓN A LA PROGRAMACIÓN
Determinar el COMO
o las primitivas
o los procedimientos
o las repeticiones
Programar
21
INTRODUCCIÓN A LA PROGRAMACIÓN
Objetivos
Pista: Desde la posición del docente, es sencillo determinar cuál de las puertas está abierta.
Hacer que el docente, siguiendo las instrucciones dadas por los alumnos, salga del aula por una
puerta o la otra.
Este es un caso de “escenario cambiante”, es decir, el autómata tiene que evaluar la situación
y realizar una u otra acción (SI… Entonces … SINO …).
22
INTRODUCCIÓN A LA PROGRAMACIÓN
Objetivos
Ejercicio 8.1.: El mono y las bananas. Hacer que el mono coma la banana (si hay banana),
23
INTRODUCCIÓN A LA PROGRAMACIÓN
Este bloque ejecuta los comandos que contiene siempre y cuando se cumpla la condición
indicada por el Sensor, en este caso: ¿Hay banana acá?
Ejercicio 8.2.: La elección del mono. Construya un programa en el cual el mono coma una
manzana cuando hay una manzana y que coma una banana cuando hay una banana.
Para resolver este ejercicio, no alcanza con el bloque SI, dado que son 2 frutas: banana o
manzana, por tanto, deben usar el control Si-sino
Gracias a la Alternativa condicional, la cual consta de dos partes: una condición y una acción.
(Si se cumple la condición, entonces será realizada la acción), podemos hacer que nuestro
programa sea válido para escenarios cambiantes.
Ejercicio 8.3.: Laberinto corto. Construya un programa en el cual el robot avance un paso
en la dirección correcta.
Ejercicio 8.4.: Tres naranjas. Construya un programa en el cual el marciano recorrer las
casillas y comer las naranjas.
Ejercicio 8.5.: Tito recargado. Construya un programa en el cual Tito encienda las luces.
Ejercicio 8.6.: Laberinto largo. Construya un programa en el cual el robot avance hasta el
final, en las direcciones correctas.
24
INTRODUCCIÓN A LA PROGRAMACIÓN
Objetivos
Distinguir entre escenarios con secuencias de tamaño fijo y escenarios con secuencias
de tamaño variable.
Comprender la noción de repetición condicional y reconocer las dos partes de las que
consta toda repetición condicional.
Identificar la estructura de un problema y utilizar esa información para resolverlo.
Solución:
Para determinar cómo es el escenario, primero hay que ejecutar varias veces la actividad.
Podemos observar que varía el número de celdas hasta llegar al final.
25
INTRODUCCIÓN A LA PROGRAMACIÓN
Para afrontar esta situación aparece un nuevo control, Repetir hasta que, que requiere no una
cantidad fija para repetir como antes sino un SENSOR que le indique la ocurrencia de un suceso,
en este caso, si llegó al final.
Se utiliza el control Repetir hasta que, que ejecutará las primitivas que se incluyen en el
bloque (Prender Luz y Mover abajo), hasta que, se cumpla la condición expresada por el sensor
¿Llegué al final?
Solución:
26
INTRODUCCIÓN A LA PROGRAMACIÓN
Actividades:
Resolver estas actividades, recordando que deben: definir la estrategia, dividir en subtareas,
representar cada subtarea con un procedimiento y nombrarlos adecuadamente.
Super Tito 2: Variante del anterior, el escenario presenta ahora algunas celdas sin
luz.
Laberinto con queso
El superviaje
27
INTRODUCCIÓN A LA PROGRAMACIÓN
MARCO CONCEPTUAL
1. Herramientas conceptuales
Estrategia de solución y división en subtareas
Legibilidad y elección de nombres adecuados
Algorítmica básica: recorridos
Si bien, los primeros ejercicios son muy sencillos, es básico para el objetivo de este curso que en
cada uno de los ejercicios la estrategia de solución elegida sea explicitada y luego expresada a
través de subtareas. Esto se logra combinando las herramientas del lenguaje con las demás
herramientas conceptuales de manera adecuada; pero el concepto fundamental subyacente en
todo momento explicitar la estrategia de solución a través de la adecuada división en subtareas
(además de la habilidad de nombrar adecuadamente cada una y de utilizar las herramientas del
lenguaje adecuadas para construir la solución).
La herramienta del lenguaje básica para expresar subtareas y estrategias es el procedimiento.
Resumiendo, los pasos recomendados para solucionar un problema mediante un programason:
1. Idear una estrategia de solución, y explicitarla.
2. Expresar la estrategia mediante alguna división en subtareas.
3. Declarar y nombrar adecuadamente un procedimiento principal que exprese la estrategia
ideada.
4. Declarar y nombrar adecuadamente procedimientos que expresen las subtareas.
5. Utilizar estos procedimientos para definir el procedimiento principal, y validar que la
estrategia de solución resulte clara al leerlo. Seguir para esto el principio de utilizar como
máximo una estructura de control por procedimiento (para fomentar aún más la subsiguiente
división en subtareas).
6. Definir cada uno de los procedimientos que expresan subtareas, repitiendo para cada sub-
problema particular los pasos antedichos para definir la solución a un problema.
b) Legibilidad
Para entender el concepto de legibilidad, primero tenemos que saber que “un programa es una
descripción ejecutable de la solución a un problema computacional”.
Los programas son entidades “duales” dado que deben indicarle a una máquina cómo funcionar,
pero, también deben comunicar la solución propuesta a las personas.
O sea, los programas son manipulados por dos entidades: máquinas, pero también personas.
Las definiciones y propuestas tradicionales ponen todo el énfasis en la máquina que ejecuta el
programa y en su funcionamiento, y dejan en segundo plano el valor comunicacional del
programa, invisibilizando de alguna manera a las personas que los programan.
En este curso se enfatiza el valor comunicacional de un programa y se valora la “legibildad” de
las soluciones propuestas.
Se dice que un programa es legible cuando puede ser leído con sencillez por una persona, y
entendido con poca o ninguna explicación adicional.
La legibilidad se ve expresada en la elección de nombres adecuados para las entidades que se
escriban en el programa: procedimientos, parámetros, variables y otras entidades.
Si bien no existe una definición precisa de qué constituye un nombre adecuado, existen algunos
criterios generales: Por ejemplo, es universalmente aceptado que los nombres de una o dos
letras son extremadamente inadecuados en la mayoría de los casos, y también que los nombres
extremadamente largos (por ejemplo, que ocupan todo un renglón o más), también. Se suelen
favorecer nombres cortos pero descriptivos. En el caso de los comandos, por ejemplo, estos
nombres usualmente requieren verbos en infinitivos: Avanzar, tocar, …
29
INTRODUCCIÓN A LA PROGRAMACIÓN
Adicionalmente, se requiere que el nombre brinde una idea correcta respecto del propósito de
la entidad nombrada, pues si no usualmente conduce a confusiones que limitan o complican la
legibilidad (por ejemplo, es inadecuado nombrar con el identificador Rojo a un valor que luego
se utiliza para dibujar figuras verdes, o nombrar como Avanzar un paso adelante a un
procedimiento que permanece en el lugar; en cambio habrían sido nombres adecuados Verde y
Permanecer en el lugar, respectivamente.
La correcta utilización de estas herramientas conceptuales tiene un impacto directo en la calidad
de los programas que se escriben. Esto es fundamental cuando se forman programadores
profesionales, pues código de calidad significa mayor productividad. Sin embargo, esta forma de
pensar y organizarse tiene valor más allá de las aplicaciones profesionales de la programación,
y es por eso una de las razones por las que desde la iniciativa Program.AR, que provee el
contexto de este curso, se busca generalizar la enseñanza de las Ciencias de la Computación.
Las estrategias de solución, la correcta comunicación de soluciones a problemas, y mecanismos
elementales de solución de problemas sencillos habilitan y fomentan la formación de
capacidades de pensamiento de alto orden, que hoy día es aceptado como forma fundamental
del pensamiento humano.
c) Algorítmica básica: recorridos
Básicamente, un recorrido es un esquema de repetición en el cuál se realiza una tarea para cada
uno de los elementos de una serie, pues recorre la secuencia de elementos de a uno, procesando
de alguna forma cada uno de ellos.
La idea de un recorrido es organizar la división en subtareas a la hora de resolver una tarea que
requiere trabajar con cada uno de los elementos de una secuencia, de manera tal de simplificar
la confección de una solución y garantizar el correcto funcionamiento de la misma. De esta
forma, habrá subtareas para iniciar el recorrido, determinar si se terminaron los elementos,
procesar un elemento, pasar al siguiente elemento y para finalizar el recorrido.
La secuencia de elementos que un recorrido se encarga de procesar puede ser muy concreta
(por ejemplo, una serie de elementos en fila, como ser frutas o señales) o ser más abstracta (por
ejemplo, una serie de posiciones distantes a visitar en un mapa o incluso un recorrido sobre
números para resolver un problema numérico tal como calcular una factorial). Sin embargo,
cuanto más abstracta resulte la secuencia, más complejo será transmitir la idea adecuadamente.
Por eso, se recomienda que en un curso inicial los recorridos se mantengan lo más concretos
que sea posible. Los ejemplos del cuaderno fueron elegidos para garantizar esta cuestión.
2. Herramientas del lenguaje
2.1. Acciones (comandos - “verbos”)
Comandos primitivos; secuencia de comandos
Procedimientos y parámetros
Repetición simple y repetición condicional
Alternativa condicional
2.2. Datos (expresiones - “sustantivos”)
Valores (literales numéricos y otros)
Sensores y datos primitivos; sensores de interactividad
Operadores, parámetros y Variables
30
INTRODUCCIÓN A LA PROGRAMACIÓN
Procedimientos:
La siguiente forma de combinación de comandos primitivos que se propone trabajar es el
procedimiento. Los procedimientos son la herramienta que plasma de manera más precisa la
noción de abstracción que se busca transmitir, y por eso se consideran una herramienta
fundamental.
Un procedimiento en su forma más simple no es más que una acción compleja (obtenida, por
ejemplo, por secuenciación de acciones más elementales) a las que se les asigna un nombre que
la identifica. Puede entenderse esta herramienta también como una forma de definición de
nuevos comandos. Por ejemplo, si se cuenta con el comando primitivo AvanzarUnPaso(), se
puede definir el procedimiento AvanzarTresPasos() como la secuencia AvanzarUnPaso();
AvanzarUnPaso(); AvanzarUnPaso(). Tal cual se describió anteriormente, la elección de un
nombre adecuado que describa de manera precisa el propósito del procedimiento es básica para
la correcta legibilidad del programa.
31
INTRODUCCIÓN A LA PROGRAMACIÓN
Los procedimientos constituyen uno de los pilares fundamentales de este enfoque de enseñanza
de la programación. Son la forma de explicitar en el lenguaje la división en subtareas, y por ello
comparten la importancia de dicha herramienta conceptual.
La división en subtareas y procedimientos pueden verse como dos instancias, una del lado
conceptual y la otra del lado del lenguaje, del mismo concepto fundamental: la abstracción.
Es importante hacer una observación sobre la denominación de procedimiento, en algunas
herramientas o enfoques lo que aquí se denomina procedimiento se puede encontrar nombrado
como funciones, bloques, subrutinas, o alguna otra forma. Pero en cada caso, es claro que se
trata de un mecanismo de abstracción sobre comandos, una forma de definir nuevos comandos.
En su forma más simple, los procedimientos solamente le dan nombre a alguna acción compleja
devenida a partir de combinación de otros comandos. Sin embargo, el verdadero poder
expresivo de los procedimientos se encuentra cuando se los combina con la noción de
parámetro.
Los parámetros son una herramienta que permite expresar muchos procedimientos diferentes
mediante un único procedimiento parametrizado. Un parámetro es como un “agujero” que el
procedimiento tiene, y que debe ser completado con un dato: el argumento. El argumento
provisto para completar el parámetro determina cuál de las instancias específicas expresadas
por el procedimiento parametrizado se busca utilizar.
Los parámetros son otra forma de conseguir abstracción: muchos casos particulares son
expresados de una sola vez a través de un procedimiento parametrizado. Sin embargo, esta
forma de abstracción es mucho más difícil de transmitir que la de procedimiento, especialmente
a estudiantes que recién se inician en la programación. Por esa razón, en este curso los
parámetros aparecen de manera tardía, y no se hace un fuerte hincapié en ellos.
La noción de parámetro y parametrización es crítica en la formación de un programador
profesional.
Repetición simple y condicional
La clasificación de comandos continúa con diversas formas de combinación de comandos: dos
formas de repetición (simple y condicional) y una forma de alternativa (condicional). Estas
herramientas permiten aumentar el poder expresivo de la persona que programa al habilitar o
facilitar comportamientos complejos, que son o bien difíciles o bien imposibles de expresar
utilizando solamente las herramientas previas.
Nuevamente, la didáctica por indagación debe ser tenida en cuenta al presentar las
herramientas, para que de esa forma la utilización de las mismas no sea el resultado de una
receta, sino el fruto de la necesidad. Los ejercicios propuestos guían en este enfoque.
A la hora de presentar repeticiones es conceptualmente más simple comenzar con una forma
de repetición que repite un número fijo de veces.
La forma avanzada de repetición que se presenta en el curso es la que se denomina repetición
condicional, pues la cantidad de repeticiones no se conoce a priori, y se utiliza una condición
como mecanismo para determinar cuándo dejar de repetir. Esta forma de repetición es conocida
por muchos con nombres menos descriptivos, como “while” o “do while” (mientras) o “repeat
32
INTRODUCCIÓN A LA PROGRAMACIÓN
2.2. Expresiones
La siguiente categoría de elementos de un lenguaje de programación que consideramos es la de
expresiones, que son la manera de describir información, y por ello equiparables a los
“sustantivos” de un lenguaje natural.
En su forma más básica, las expresiones aparecen en forma literal, por ejemplo, para representar
números (2, 17, 42, etc.) o cadenas de caracteres ("hola", "Este es un string", etc.) o valores de
verdad (verdadero y falso).
Las expresiones pueden ser:
nombres que representan información de manera indirecta, a saber, parámetros y
variables, y
sensores y datos primitivos que representan la información que la máquina puede
recolectar del medio ambiente en el que ejecuta.
33