jueves, 10 de octubre de 2019

ROBÓTICA EDUCATIVA

La Robótica Educativa es un sistema de enseñanza interdisciplinaria que potencia el desarrollo de habilidades y competencias en los alumnos

Este sistema de enseñanza es interdisciplinario porque abarca áreas de diferentes asignaturas del programa escolar reglado. Así, en los cursos de Robótica Educativa bien estructurados, se trabajan áreas de Ciencias, Tecnología, Ingeniería y Matemáticas, lo que en inglés se conoce con las siglas STEM (Science, Technology, Engineering, Mathematics), así como áreas de Lingüística y también de Creatividad.

VÍDEO SOBRE APLICACIÓN DE ROBÓTICA EN SECUNDARIA, EXPLICADO POR ALUMNOS. EDUCATIVA

ROBÓTICA



¿QUE ES UN ROBOT?
“Manipulador programable y multifuncional diseñado para mover materiales, partes, herramientas o dispositivos específicos mediante movimientos programados para realizar diferentes tareas” .



“Agente activo artificial cuyo ambiente es el mundo físico” [Russell y Norvig]
“Conexión inteligente de percepción a acción” [Jones y Flynn]
“Una máquina programable capaz de percibir y actuar en el mundo con cierta autonomía” [Sucar]




"VÍDEO DE ROBÓTICA"

miércoles, 9 de octubre de 2019

Aplicaciones para programar

Programar con bloques

Pilas bloques:

Pilas Bloques es una aplicación para aprender a programar, desarrollada especialmente para el aula.
Se proponen desafíos con diversos niveles de dificultad para acercar a las y los estudiantes al mundo de la programación por medio de bloques.

¿Qué es programar por medio de bloques?

Es desarrollar programas con acciones e instrucciones incorporadas en bloques o piezas prediseñadas. El resultado de encastrar los bloques entre sí es el programa que resuelve el problema ó desafío planteado.

¿Por qué es positiva esta modalidad de aprendizaje?

  • Porque cada concepto abstracto asociado a la programación tiene su representación visual.
  • Porque ahorra las dificultades que genera la sintaxis formal de un lenguaje escrito (¡y la frustración cuando cometemos un error al escribir!). Los bloques se seleccionan, arrastran, encastran y listo.

¿En qué se diferencia Pilas Bloques de otras herramientas?

La principal diferencia es que esta plataforma fue pensada para acompañar una secuencia didáctica para el aprendizaje de la programación en la escuela.

¿Qué es una secuencia didáctica?

Es el plan mediante el cual se propone aprender un tema. La secuencia didáctica de Pilas Bloques fue ideada y probada por docentes e investigadores argentinos. Hoy en día, esta propuesta se está profundizando y ampliando. 

¿Quién puede hacer los desafíos de Pilas Bloques?

Los desafíos pueden ser realizados por niños de 3 a 99 años ;) .

¿Y cualquiera puede hacer los desafíos por su cuenta?

La herramienta está pensada como ayuda al docente y al alumno en el proceso de aprendizaje de la programación en un entorno escolar. 
En la secuencia didáctica que se plantea, la indagación autodidacta es fundamental.
Nuestra recomendación, no obstante, es que el docente sea el que guíe y asista el proceso de aprendizaje del alumno.

Les dejo uno link para seguir programando online  y seguir programando:
http://program.ar/pilas-bloques-primaria/

http://pilasbloques.program.ar/

http://gobstones.github.io/gobstones-web/

http://program.ar/formacion-docente/

Tipos de programación

Programación estructurada
Un lenguaje de programación puede ser una potente herramienta en manos de un programador adiestrado. Pero las herramientas por sí solas no son garantía de calidad; los mejores programadores disponen de técnicas específicas para obtener el máximo rendimiento de sus programas. En la corta historia de la programación de computadoras, los informáticos han desarrollado nuevas metodologías que han conseguido hacer más productivos a los programadores y más fiables a los programas.
Por ejemplo, los informáticos de finales de los 60 reconocían que la mayoría de los programas FORTRAN y BASIC estaban repletos de sentencias GoTo, las cuales transfieren el control a otras partes del código. La estructura lógica de un programa con sentencias
GoTo puede llegar a parecerse a una intrincada red de araña. Cuanto mayor es ese programa, mayor es el laberinto lógico y la posibilidad de cometer errores. Cada rama de un programa representa un cabo suelto que el programador debe pasar por alto.
En un intento por superar estos problemas, los informáticos desarrollaron la programación estructurada, una técnica para hacer más productivo y sencillo el proceso de programación. Un programa estructurado no depende de sentencias GoTo para controlar su flujo de ejecución. En lugar de ello, está construido a base de pequeños programas, llamados módulos o subprogramas, los cuales a su vez también están construidos a partir de otros módulos más pequeños. El programador combina estos
subprogramas mediante las tres estructuras de control básicas: secuencia, repetición y selección. Un programa está bien estructurado si cumple las siguientes reglas:

• Esta construido sobre la base de módulos lógicamente coherentes.

• Los módulos están ordenados jerárquicamente.
• Es sencillo y fácil de leer.

Pascal y Ada fueron diseñados para fomentar la programación estructurada y disuadir del «código spaghetti». El éxito de estos lenguajes indujo a los informáticos a desarrollar versiones de Basic y ORTRAN que siguieran los patrones de la programación

estructurada.

La evolución de Basic

El lenguaje de programación Basic ha pasado por tres fases en su evolución. Estos ejemplos muestran el modo en el que el proceso de programación ha cambiado durante las tres últimas décadas. Los dos primeros son listados completos del programa para acertar el número (el algoritmo desarrollado anteriormente); el tercer ejemplo es el esbozo de un programa para jugar a una tragaperras.

1. Basic de los primeros días. El programa con las

líneas numeradas está escrito en una versión simple
de Basic (el único tipo disponible en los primeros
días). Las sentencias son ejecutadas por
orden numérico a menos que una sentencia GoTo transfiera
el control a otra parte del programa.

10 REM INITIALIZE

20 RANDOMIZE
30 PRINT “ACIERTA EL NÚMERO”
40 PRINT “ESTOY PENSANDO EN UN NÚMERO COMPRENDIDO ENTRE 1 Y 100.”
50 PRINT “INTENTA ACERTARLO”
60 LET C = 0
70 LET N = INT(RND(1) * 100)
80 INPUT “¿CUÁL ES TU APUESTA?”;G
90 IF G = N THEN PRINT “¡ENHORABUENA! HAS ACERTADO”
100 IF G < N THEN PRINT “EL NÚMERO INTRODUCIDO ES MENOR QUE EL QUE BUSCO.
INTÉNTALO OTRA VEZ”
110 IF G > N THEN PRINT “EL NÚMERO INTRODUCIDO ES MAYOR QUE EL QUE BUSCO.
INTÉNTALO OTRA VEZ”
120 LET C = C + 1
130 IF C = 7 THEN GOTO 180
140 IF G <> N THEN GOTO 80
150 IF G <> N THEN PRINT “¡HAS GASTADO TUS SIETE INTENTOS! EL NÚMERO QUE TENÍAS
QUE ACERTAR ERA” ;N
160 END

2. Basic estructurado. El siguiente programa modular

está escrito en QuickBASIC, una versión
más moderna del lenguaje que dispone de ciertas
características de programación estructurada.
El programa principal se ha reducido a un
puñado de sentencias al comienzo del listado
(tras la sentencia DECLARE); estas sentencias
muestran la lógica general del programa. A medida
que se ejecuta, el programa principal utiliza
sentencias CALL para transferir el control a
cada uno de los tres subprogramas, los cuales
se encargan del inicio del juego, de cada uno de
los turnos y del final del mismo.

10 REM INITIALIZEREM El juego de acertar el número

REM escrito por Rajeev Pandey
DECLARE SUB StartGame (Counter!, Number!)
DECLARE SUB Turn (Counter!, Guess!, Number!)
DECLARE SUB EndGame (Number!)
CALL StartGame(Counter, Number)
DO
CALL Turn(Counter, Guess, Number)
LOOP UNTIL (Guess = Number) OR (Counter = 7)
IF Guess <> Number THEN
CALL EndGame(Number)
END IF
SUB EndGame (Number)
PRINT “¡Has gastado tus 7 intentos!”
PRINT “El número que tenías que acertar era”; Number
END SUB
SUB StartGame (Counter, Number)
PRINT “¡Bienvenido al juego de acertar el número. Estoy pensado
en un número”
PRINT “comprendido entre 1 y 100 y tienes que acertarlo.”
Counter = 0
RANDOMIZE TIMER
Number = INT(RND(1) * 100)
END SUB
SUB Turn (Counter, Guess, Number)
INPUT “¿Cuál es tu apuesta?”; Guess
IF Guess = Number THEN
PRINT “¡Enhorabuena! Has acertado.”
ELSE
IF Guess < Number THEN
PRINT “El número introducido es menor que el que busco.
Inténtalo otra vez.”
ELSE
PRINT “El número introducido es mayor que el que busco.
Inténtalo otra vez.”
END IF
END IF
Counter = Counter + 1
END SUB

3. Visual Basic. La imagen muestra un ejemplo

del popular Visual Basic de Microsoft, un moderno
entorno de programación que incluye
muchas de las ideas y herramientas de la programación
orientada a objetos.



Programación orientada a objetos

La programación estructurada representó un enorme paso hacia delante para los programadores; les permitió producir programas mejores y más fiables en menos tiempo.
Pero ésta no fue la última palabra en lo referente a la programación; en la actualidad, la OOP (Programación orientada a objetos, Object-Oriented Programming)
ha capturado la atención de la comunidad desarrolladora de software. Este tipo de programación
se utilizó por primera vez en la década de los 70 a través de un lenguaje llamado Smalltalk. En la OOP, un programa no es sólo una colección de sentencias
paso a paso o de procedimientos; es una colección de objetos. Estos elementos contienen datos e instrucciones y pueden enviar y recibir mensajes. Por ejemplo, un botón de una aplicación multimedia podría ser un objeto que contuviera una descripción del aspecto de dicho botón y un script que dijera lo que debe hacer cuando reciba un clic del ratón desde el sistema operativo. Este objeto botón puede ser reutilizado fácilmente en otros programas porque contiene todo lo necesario para operar.
Con la tecnología OOP, los programadores pueden construir programas a partir de objetos prefabricados del mismo modo que los albañiles pueden fabricar una casa a partir de muros prefabricados. La OOP también facilita el uso de características de un programa en otros, de modo que los programadores no tengan que empezar de cero con cada nuevo programa. Un objeto que ordena alfabéticamente las direcciones de una base de datos para un mailing también puede utilizarse en un programa que ordene las reservas de un hotel.
Smalltalk aún sigue utilizándose para la programación OOP, aunque cada vez son más los lenguajes que incluyen esta tecnología. C++, que utilizamos en un ejemplo anterior, es un popular dialecto de C que soporta programación orientada a objetos.
C++ no contiene objetos visuales como iconos. En apariencia, se parece a cualquier otro lenguaje. Pero su naturaleza orientada al objeto permite que los programadores escriban programas alrededor de objetos lógicos en lugar de procedimientos. Java tiene más diseño OOP que C++.
Las herramientas y técnicas orientadas al objeto se han vuelto algo corriente en bases de datos, programas de creación multimedia y otros entornos software. Esta programación está especialmente adaptada para programas con mucha carga interactiva (como sistemas operativos gráficos y juegos) y programas que imiten o reflejen alguna parte dinámica del mundo real (como simulaciones y sistemas de control de tráfico aéreo). Muchos expertos creen que la OOP es el futuro.

Programación orientada a objetos

El paradigma de la programación estructurada sigue la visión clásica de los datos como material en bruto que
se procesan en una cadena de montaje.
Todos los programas informáticos procesan datos de una forma o de otra.
Pero internamente, la programación orientada a objetos rechaza la metáfora de la línea de montaje.
El dogma fundamental de la OOP es que el software debe estar diseñado utilizando las mismas técnicas que emplean las personas para comprender y categorizar el mundo que los rodea.
En OOP, un programa se diseña para estar compuesto por objetos, cada uno de ellos con sus propias características o atributos (llamadas propiedades) y las acciones que puede realizar (llamadas métodos).
Cada objeto tiene una cara «pública»: las propiedades y métodos que otros objetos pueden ver y con los que pueden interactuar. Los objetos también tienen métodos privados para su uso interno.
En OOP, los datos están todos juntos, o encapsulados, con los métodos y propiedades del objeto. Cada uno de ellos puede mantener su propio almacén de datos.
La OOP también cuenta con la idea de la categorización jerárquica de objetos, lo que permite que los programadores puedan crear nuevos objetos que deriven de otros que ya estén definidos. El nuevo objeto puede heredar las propiedades
y métodos del objeto del que desciende, además de poder definir otras propiedades y métodos en caso de ser necesario.
Las personas han utilizado las jerarquías durante siglos para comprender el mundo físico y biológico.
¿Cómo se puede poner todo esto en práctica para, digamos, un sistema operativo gráfico? Por ejemplo, podría existir un objeto «ventana» genérico, entre cuyas propiedades se incluyese su tamaño, posición, color, etc., y los métodos que contuviesen las instrucciones de lo que se debe hacer cuando se redimensiona o cierra esa ventana. De ésta puede derivar otra ventana más específica que, por ejemplo, dispusiera de barras de desplazamiento.

Programación visual

Muchas personas encuentran más fácil trabajar con imágenes en lugar de con palabras.
Las herramientas de programación visual permiten a los programadores crear grandes secciones de sus programas arrastrando imágenes y apuntando a objetos en pantalla, lo que elimina una gran parte del tedioso proceso de codificar al modo tradicional.
HyperCard de Apple fue probablemente el primer ejemplo de un entorno de programación visual. HyperCard incluía un lenguaje de programación llamado Hyper- Talk, aunque un programador no necesitaba conocer este lenguaje para crear aplicaciones
productivas.
En la actualidad, el Visual Basic de Microsoft es utilizado ampliamente por profesionales y fanáticos de la programación debido a su propuesta de programación visual. Visual J++ aplica una estructura similar pero con el lenguaje Java. Las herramientas
de programación visual actuales no han conseguido aún transformar el proceso de programación en una tarea visual; los programadores todavía tienen que saber
codificar para llevar a cabo operaciones más complejas. Pero estas herramientas pueden ahorrar horas de tiempo de codificación, sobre todo cuando se crean interfaces de usuario, la cubierta gráfica que interactúa con los usuarios. Debido a que pueden simplificar muchas de las complicadas tareas del proceso de programación, los lenguajes visuales han conseguido acercar este arte a los no programadores.

Lenguajes para los usuarios

Algunos lenguajes están diseñados para los no-programadores. No son tan potentes y versátiles como las herramientas profesionales pero cumplen con las necesidades más modestas de sus usuarios.

Lenguajes de macro

Muchos lenguajes orientados al usuario están proyectados para que sus usuarios potenciales puedan crear programas, llamados macros, que automaticen tareas repetitivas.
Los lenguajes de macro orientados al usuario (también conocidos como lenguajes de script) están incluidos en muchas aplicaciones, utilidades y sistemas operativos. A través de estas macros, el usuario de una hoja de cálculo puede construir un programa para crear automáticamente informes mensuales que localicen datos contenidos en otras hojas de cálculo, los inserten en una hoja nueva y calculen los resultados mediante
fórmulas contenidas en los ficheros de meses anteriores. A través de un lenguaje de script de un sistema operativo, un usuario podría automatizar el proceso de backup de todos los documentos creados durante la última semana.
Algunos lenguajes de macro requieren que usted diseñe y teclee el código a mano, del mismo modo que si estuviera codificando en Basic. De hecho, Microsoft Office incluye una variación de tipo script de Visual Basic llamado VBA (Visual Basic para aplicaciones, Visual Basic for Applications). Otro tipo de generadores de macros «observa » mientras el usuario ejecuta una secuencia de comandos y acciones, y los registra para convertirlos después en una macro. El usuario puede entonces examinar y editar la macro para llevar a cabo las acciones necesarias en determinadas circunstancias.

Programar

¿De qué modo programa la gente?
Muchos usuarios de computadoras dependen de aplicaciones programadas profesionalmente (hojas de cálculo, programas de edición de imágenes, navegadores web, etc.) como herramientas para la resolución de sus problemas. Pero, en ciertas ocasiones, es necesario o deseable escribir un programa en lugar de utilizar uno escrito por otra persona.
Como actividad humana, la programación de computadoras es algo relativamente nuevo. Pero la programación es una forma especializada del antiguo modelo de resolución de problemas.
Esta actividad suele implicar cuatro pasos:

Entender el problema. Definir el problema con claridad es, con frecuencia, el
paso más importante, y casi siempre más descuidado, que debe darse para la resolución
de ese problema.
Idear un plan para la resolución del problema. ¿Qué recursos, personas, información, computadoras, software y datos tenemos disponibles? ¿Cómo deben
ponerse estos recursos en funcionamiento para resolver el problema?
Llevar a cabo el plan. Esta fase suele estar solapada con el paso 2, ya que muchos esquemas de resolución de problemas suelen desarrollarse sobre la marcha.
Evaluar la solución. ¿Se ha resulto correctamente el problema? ¿Es una solución válida para otros problemas? El proceso de programación también suele estar dividido en cuatro fases, aunque casi siempre están solapadas unas con otras:

• Definición del problema.
• Creación, depuración y verificación del algoritmo.
• Escritura del programa
• Verificación y depuración del programa.
Casi todos los problemas de programación suelen ser tan complejos que no pueden resolverse de una sola vez. Para transformar un problema en un programa, el
programador suele crear una lista de problemas más pequeños, cada uno de los cuales puede subdividirse a su vez en subproblemas que también pueden subdividirse.
Este proceso, llamado refinamiento por pasos, es similar al que realiza un escritor para esbozar las líneas maestras de lo que será su obra. Los programadores suelen referirse a este tipo de proceso como un diseño de arriba a abajo, ya que el problema se aborda desde arriba, con las ideas principales, y se va desarrollando hacia abajo con los detalles concretos.
El resultado es un algoritmo, un conjunto de instrucciones paso a paso que, una vez completadas, resuelven el problema original. Los programadores suelen escribir algoritmos en un formato llamado pseudocódigo, un cruce entre lenguaje informático y lenguaje real. Cuando todos los detalles del algoritmo están en su sitio, el programador puede traducir todas las pseudoinstrucciones en un lenguaje informático.

De la idea al algoritmo
Vamos a desarrollar un sencillo algoritmo para ilustrar todo el proceso. Emperezaremos con el planteamiento del problema:

Un profesor de un colegio necesita un programa para jugar a «adivinar el número » que ayude a que sus estudiantes desarrollen su lógica y les permita practicar la aritmética.
En este juego, la computadora escoge un número comprendido entre 1 y 100 y ofrece al jugador varias oportunidades para adivinarlo. Tras cada intento fallido, la máquina responde diciendo si el número introducido es mayor o menor que el que debe adivinarse.
En resumen, el problema es escribir un programa que pueda:

jugar a “adivinar el número”

Refinamiento por pasos
Lo primero de todo es dividir el problema en tres partes: comienzo, mitad y finalización.
Cada una de estas tres partes es en sí misma un pequeño problema de programación por resolver.

inicio del juego
repetir el proceso hasta que se acierte el número o se alcance el número
máximo de intentos
fin del juego

Estos tres pasos son el esqueleto desnudo del algoritmo. Una vez completado, estas tres partes serán ejecutadas en secuencia. El siguiente refinamiento debe completar algunos detalles de cada parte:

inicio del juego
mostrar las instrucciones
escoger un número comprendido entre 1 y 100
repetir el proceso hasta que se acierte el número o se alcance el número
máximo de intentos
solicitar el número al usuario
responder a su solicitud
fin repetir
fin del juego
mostrar un mensaje de finalización 

La parte central de nuestras instrucciones incluyen una secuencia de operaciones que se repiten en cada turno: todo lo comprendido entre «repetir» y «fin repetir». Pero
estas instrucciones carecen de detalles cruciales. ¿Cómo, por ejemplo, debe responder la computadora a los valores introducidos por el usuario? Podemos sustituir la parte de «responder a su solicitud» con instrucciones que varíen dependiendo del número
introducido:

si valor_introducido = número, entonces mostrar acierto y terminar;
en caso contrario, si valor_introducido < número, entonces mostrar que
valor_introducido es menor;
en caso contrario, mostrar que valor_introducido es mayor

Por último, necesitamos indicarle a la computadora cuando han finalizado las siete oportunidades que el usuario tiene para acertar. Para ello, establecemos un contador a 0 al comienzo y lo incrementamos en una unidad en cada turno. Cuando el contador alcance 7, el bucle se detiene, y la computadora muestra un mensaje. El algoritmo final tiene este aspecto:

inicio del juego
mostrar las instrucciones
escoger un número comprendido entre 1 y 100
establecer contador a 0
repetir el proceso hasta que se acierte el número o contador = 7
solicitar el número al usuario
si valor_introducido = número, entonces mostrar acierto y terminar;
en caso contrario, si valor_introducido < número, entonces mostrar
que valor_introducido es menor;
en caso contrario, mostrar que valor_introducido es mayor
incrementar contador en una unidad
fin repetir
fin del juego
mostrar un mensaje de finalización

Estructuras de control
Una computadora no es capaz de comprender este algoritmo, pero el pseudocódigo está claro para cualquier persona familiarizada con las estructuras de control, estructuras lógicas que controlan el orden en el que se ejecutan las instrucciones.
Este algoritmo usa tres de estas estructuras: secuencia, selección y repetición.
Una secuencia es un grupo de instrucciones que se ejecutan por orden desde la primera hasta la última. En nuestro algoritmo de ejemplo, como en la mayoría de los lenguajes de programación, la secuencia es la estructura por defecto, es decir, se ejecuta a menos que otra sentencia diga lo contrario:

mostrar las instrucciones
escoger un número comprendido entre 1 y 100
establecer contador a 0

Una estructura de selección (o de decisión) se utiliza para tomar decisiones lógicas (escoger entre dos líneas de acción diferentes en función de ciertas condiciones).
Habitualmente toma la forma de «si (if) una condición es verdadera, entonces (then) haz algo y si no lo es (else) haz otra cosa diferente»:

si valor_introducido < número, entonces mostrar que valor_introducido
es menor;
en caso contrario, mostrar que valor_introducido es mayor

Una estructura de repetición es un mecanismo para construir bucles. Permite que una secuencia de pasos se repitan varias veces, normalmente hasta que se satisfaga una determina condición. Es nuestro algoritmo, las sentencias indentadas tras «repetir» y «fin repetir» se ejecutan continuamente hasta acertar el número o que el contador llegue a 7:

repetir el proceso hasta que se acierte el número o contador = 7
solicitar el número al usuario
...
incrementar contador en una unidad
fin repetir

Tal y como ilustra nuestro ejemplo, estas estructuras de control simples pueden combinarse para producir algoritmos más complejos. De hecho, cualquier programa informático puede construirse a partir de estas tres estructuras básicas.

Comprobación del algoritmo
El siguiente paso es comprobar el algoritmo. La verificación del programa completo vendrá más tarde; por ahora, esta fase está pensada para verificar la lógica del algoritmo.
Podemos seguir la serie de instrucciones probando con varios números. Podríamos, por ejemplo, utilizar como número objetivo el 35 y probar con el 15, 72, 52 y 35. Estos números comprueban las tres posibles condiciones de la estructura si-entonces- en caso contrario (if-then-else), y muestran lo que ocurre cuando el jugador escoge el número correcto. También es preciso verificar el algoritmo cuando se alcanzan los siete intentos que el jugador tiene para acertar el número y ver que el juego termina de forma satisfactoria.

Del algoritmo al programa
Una vez terminada la fase de comprobación, el algoritmo está preparado para convertirse en programa. Como ya disponemos de la estructura lógica del mismo, el proceso de codificación (escribir un programa a partir del algoritmo) es simple. Las sentencias del mismo se transforman directamente en líneas de código en el lenguaje de programación que mejor satisfaga las necesidades del programador.

Un programa simple
Echemos un vistazo a nuestro algoritmo escrito en C++, una popular variación del lenguaje C (el nombre de C no viene de ningún antojo de su creador; es una mejora de
otro que se llamaba B). Este programa, al igual que cualquier otro escrito en C++ que esté bien estructurado, dispone de tres partes, de forma análoga a las recetas de un libro de cocina:

1. La cabecera del programa, que contienen el nombre del mismo y los ficheros de datos (el equivalente al nombre y la descripción del plato a cocinar).
2. Las declaraciones y definiciones de las variables y cualquier otro elemento definido por el programador (los ingredientes utilizados en la receta).
3. El cuerpo del programa, que contiene las instrucciones del mismo encerradas
entre llaves, {} (el equivalente a los pasos de del problema a resolver).

El listado del programa parece una versión más detallada del algoritmo original, pero tiene una importante diferencia: como es un programa informático, cada palabra, símbolo y signo de puntuación tiene un significado exacto y sin ambigüedad.
El texto destacado en negrita son palabras clave que tienen un significado predeterminado en C++. Estas palabras clave, junto con los símbolos especiales como 1 y 5, forman parte del vocabulario estándar del lenguaje. El programador define las palabras number, guess y counter de modo que formen parte del vocabulario del programa cuando éste se ejecute. Cada una de estas palabras representa una variable (una
parte de la memoria de la computadora a la que se le da un nombre y cuyo contenido puede examinar y cambiar el programa).
Este programa C++ es fácil de entender. Pero C++ no es inglés, por lo que algunas de sus partes pueden necesitar ocasionalmente algún tipo de aclaración o documentación.
Por ello, la mayoría de los programas incluyen comentarios (los Post-it del programador).
En C++, cualquier línea precedida por dobles barras (//) se considera un comentario.
La computadora ignora estas líneas, que sólo se incluyen para que las personas que lean esos programas puedan comprender (o recordar) algo acerca del mismo.

Dentro de la computadora
Antes de que pueda ser ejecutado, es necesario introducir el programa en la memoria de la computadora, guardarlo en un fichero en el disco y convertirlo al lenguaje máquina nativo de la computadora. Para introducir y guardar el programa, podemos utilizar un editor de textos. Un editor de textos es parecido a una procesador de textos pero sin características de formateo. Algunos editores de texto, diseñados especialmente para la programación, ofrecen indentación automática del programa y una comprobación limitada de errores mientras se está escribiendo.
Para convertir un programa en lenguaje máquina, necesitamos un software de traducción.
Dicho programa puede ser un intérprete (un programa que traduce y transmite cada sentencia de forma individual, del mismo modo que en las Naciones Unidas
se traduce un discurso del ruso al español), o un compilador (un programa que traduce el programa completo antes de pasarlo a la computadora, del mismo modo que un estudiante puede traducir la novela Guerra y Paz del ruso al español). La mayoría de los traductores de C++ son compiladores, ya que los programas compilados tienden a ejecutarse más deprisa que los interpretados.
Cualquier software de compilación actual es mucho más que un simple compilador.
Es un entorno de programación integrado que incluye un editor de textos, un compilador, un depurador (debugger) para simplificar el proceso de localización y corrección de errores, y otras utilidades de programación. Los errores sintácticos (violaciones
de las reglas gramaticales del lenguaje de programación) suelen mostrarse automáticamente tan pronto como se teclean en el editor. Los errores lógicos (problemas con la estructura lógica que provocan diferencias entre lo que se supone que el
programa debe hacer y lo que realmente hace) no siempre son sencillos de detectar.
Ésta es la razón por la que la depuración y la verificación son fases que se pueden llevar una gran parte del tiempo de desarrollo de un programa.

Lenguajes de programación
y metodologías
C++ es uno de los cientos de lenguajes de programación utilizados hoy en día. Algunos son herramientas para los programadores profesionales que se encargan de desarrollar el software que el resto de mortales utilizamos. Otros están orientados a ayudar a los estudiantes a aprender los fundamentos de la programación. Un tercer grupo permite que los usuarios de las computadoras automaticen tareas repetitivas y optimicen aplicaciones software. Desde los primeros días de la informática, los lenguajes de programación
han evolucionado hacia una forma más simple de comunicación entre las personas y las máquinas.

Lenguaje máquina y lenguaje
ensamblador
Cada computadora tiene un lenguaje nativo, un lenguaje máquina. Existen similitudes entre las distintas clases de lenguajes máquina: todos ellos tienen instrucciones para efectuar las cuatro operaciones aritméticas básicas, para comparar pares de números, instrucciones para formar bucles, etc. Pero, al igual que el español y el francés, cada uno de estos lenguajes máquina son lenguajes diferentes, y las máquinas basadas en uno de ellos no pueden entender los programas escritos en otro.
Desde el punto de vista de las máquinas, el lenguaje máquina es binario. Las instrucciones, las localizaciones de memoria, los números y los caracteres están representados por cadenas de ceros y unos. Como los números binarios son complicados de leer, los programas en lenguaje máquina suelen mostrarse convertidos a decimal (base 10), hexadecimal (base 16) o cualquier otro sistema de numeración. Aun así, estos programas siempre han sido difíciles de escribir, leer y depurar.

Para más información les dejo link:

Fundamentos de la programación
https://www.fdi.ucm.es/profesor/luis/fp/FP.pdf

¿Cómo formarse en Computación y a la vez aprender herramientas prácticas para dar en el aula?
http://program.ar/especializaciones-de-nivel-superior-en-ensenanza-de-las-ciencias-de-la-computacion/

Programación

Programación:
La programación es una de las áreas más importantes de las Ciencias de la Computación. Estas abordan el estudio de las computadoras desde los principios lógicos y formales que hacen posible su funcionamiento, es decir, más allá de los detalles que presentan las tecnologías concretas que utilizamos a diario. Como disciplina, la programación está orientada al desarrollo de una serie de habilidades de abstracción y operacionalidad. El primer tipo de habilidades incluye técnicas como la simplificación de problemas, la definición de soluciones generales aplicables a problemas similares y la asignación de nombres significativos a las distintas partes de una solución. El segundo tipo de habilidades, las operacionales, supone la definición de soluciones en términos de un conjunto de pasos que deben ejecutarse en un orden determinado para alcanzar un objetivo. 


PRINCIPALES CONCEPTOS ABORDADOS
Programas, legibilidad y estrategias de solución:

Un programa es una forma de expresar una solución a un problema de forma tal que una máquina pueda ejecutarlo. En este sentido, los programas no son más que un conjunto de símbolos –letras, números, etc.– que describen la solución que pensó alguien. Para poner efectivamente en funcionamiento un programa, tiene que haber una máquina que lo ejecute. La Programación, como área dentro de las Ciencias de la Computación, trabaja sobre los programas y la forma de construirlos y no sobre las máquinas que los ejecutan.

Una cuestión fundamental es que, además de ser ejecutados por una máquina, los programas tienen que poder ser leídos y entendidos por personas: para poder corregir, adaptar o modificar un programa, es imprescindible que pueda leerse y comprenderse con facilidad. Por ese motivo, la legibilidad de los programas es uno de los ejes fundamentales.

 Por otro lado, las máquinas solo pueden ejecutar un conjunto reducido de acciones simples. Para referirnos a ellas contamos con lo que llamamos comandos básicos. Sin embargo, al enfrentarnos a problemas complejos, resulta engorroso y complicado pensar formas de solucionarlos en términos de estos comandos. La Programación, como disciplina, provee herramientas para que podamos pensar programas considerando los elementos del problema abordado. En tal sentido, consiste en la construcción de estrategias de solución. Es decir, las ideas sobre cómo encarar la solución particular a un problema, qué elementos disponer para lograrla y de qué manera.

Un autómata es una máquina que se puede programar para realizar ciertas acciones de manera automática. Las computadoras y los robots son ejemplos de autómatas. Las instrucciones que puede ejecutar un autómata se denominan comandos. Cada autómata está provisto de determinados comandos, con una sintaxis rígida, y no reconoce otros diferentes. Los programas se construyen combinando de diversas maneras los comandos para hacer funcionar un autómata. Ejemplo de comandos: Dar un paso hacia adelante, Girar a la izquierda, Girar a la derecha, Estirar el brazo, Bajar la mano, Empujar con la mano, Agarrar el picaporte, Soltar el picaporte.

Otras conceptualizaciones
Procedimientos:
Los lenguajes de programación proveen diversas herramientas para expresar ideas al construir programas, por ejemplo, los comandos básicos, que podemos usar para indicarle a la computadora qué acciones básicas llevar a cabo. Sin embargo, en general, estos comandos resultan insuficientes para construir programas legibles y expresar soluciones con el vocabulario del problema abordado. Una de las herramientas fundamentales para construir programas son los procedimientos, que permiten que un programador defina sus propios comandos y decida su comportamiento. Si se les ponen nombres adecuados, los procedimientos pueden expresar soluciones en términos de los elementos que son propios del problema a resolver. Por lo tanto, contribuyen a la construcción de programas legibles. Además, se pueden usar para dividir la solución de un problema en partes más simples (o subproblemas) y luego combinarlas para resolver el problema original. De este modo, dan la posibilidad de plasmar en el programa la estrategia de solución escogida. 
En síntesis, es muy importante que cada vez que se busque resolver un problema se empiece por pensar cuáles son la estrategia de solución y las subtareas involucradas. Luego se deben utilizar estas ideas para definir los procedimientos que constituirán el programa. 

Otras herramientas de los lenguajes de programación:
Las herramientas que se estudian son transversales a todos los lenguajes de programación. Una vez que se conoce por ejemplo el lenguaje de programación Gobstones, se puede aprender rápidamente un nuevo lenguaje, investigando de qué forma aparecen en él esas mismas herramientas. Concretamente, además de los procedimientos, se trabaja sobre repetición simple, repetición condicional, alternativa condicional, parametrización, expresiones, operadores, tipo de datos, asignación, etc.

Representación de la información:
Todos los programas utilizan y transforman información. El texto, el sonido y las imágenes son algunos ejemplos de información que procesan las computadoras. Para poder escribir programas capaces de manipular estos datos, la información debe representarse de algún modo.
Internamente, las computadoras modernas representan la información utilizando dos estados que corresponden a la presencia o ausencia de corriente. Sin embargo, para referirnos a estos dos estados usamos los números 0 y 1. A esta unidad mínima de información se la denomina bit, y es la base de todas las representaciones de información de las computadoras actuales. No obstante, rara vez un programador piensa en términos de bits; en su lugar, se utilizan abstracciones que permiten razonar en términos de texto, imágenes, etc., y no tener que detenerse a pensar cómo se las representa con un sistema binario.

EL LENGUAJE DE PROGRAMACIÓN GOBSTONES:
Gobstones –que se pronuncia Góbstouns porque viene del inglés– es el lenguaje de programación que su nombre fue inventado por J.K. Rowling en las novelas de Harry Potter para denominar un juego de bolitas mágicas. Este lenguaje fue desarrollado por un equipo de la Universidad Nacional de Quilmes con el exclusivo propósito de servir como primer lenguaje de programación al aprender a programar, y se viene utilizando con éxito en diferentes ámbitos educativos.
Los programas se utilizan para operar sobre el cabezal de una máquina que trabaja sobre un tablero. En las celdas del tablero el cabezal puede colocar y retirar bolitas de colores. Además, puede desplazarse de una celda a celdas vecinas. 
Al ejecutar un programa, se comienza con un tablero particular, al que llamamos tablero inicial. El resultado final es otro tablero, denominado tablero final, que se obtiene luego de modificar el tablero inicial siguiendo las instrucciones del programa. En Gobstones, los programas siempre se usan para transformar un tablero inicial en un tablero final. 
El efecto del programa sobre el tablero es el conjunto de cambios entre un tablero inicial y uno final. Todos los desafíos que se presentan se expresan en términos del efecto esperado sobre el tablero. En muchos casos, los programas consisten en instrucciones para transformar un conjunto inicial de cosas –una biblioteca desordenada, los ingredientes para hacer pizza, etc.– en otro final –la misma biblioteca ordenada, la pizza lista–.
El entorno que usaremos para trabajar con Gobstones se llama Gobstones Jr., y puede utilizarse tanto en línea como sin conexión a Internet, luego de haberlo descargado e instalado en la computadora. En este entorno, las instrucciones se representan con bloques que pueden encastrarse y desencastrarse para formar programas, con lo que se evitan problemas de tipo sintáctico, que suelen ser muy frustrantes para aquellos que se inician en la programación.