Mostrando entradas con la etiqueta concepto. Mostrar todas las entradas
Mostrando entradas con la etiqueta concepto. Mostrar todas las entradas

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

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.  

Pensamiento computacional



Es el proceso de pensamiento implicado en la formulación y resolución de un problema.



Introducción de las T.I.C

           

La introducción de estas tecnologías en el contexto pedagógico, se le ha denominado internacionalmente- electronificación educativa y se manifiestan como propuestas electrónico.



Comunicativas que organizan el entorno pedagógico diseñando propuestas educativas interactivas que trascienden los contextos físicos, fijos, institucionales, con la finalidad de hacerlos accesibles a cualquiera en cualquier tiempo y lugar, siendo una de sus características esenciales la posibilidad de interacción en tiempo real y a escala global.





Se trata de introducir la tecnología al proceso educativo, sin alterar la esencia social y humana de dicho proceso, sin perder el componente afectivo de la convivencia interpersonal, sin suplir al maestro en la enseñanza, pero sobre la base de reconocimiento del paso al progreso que implica el uso de la tecnología.





Internet y el acceso a dispositivos móviles cada vez más intuitivos ha puesto un cambio de paradigma en el uso de la tecnología. Ese cambio también se evidencia en el ámbito de la educación, en el que cada vez más cosas se pueden hacer, aprovechando la red y sus posibilidades, tanto en el aula de clases como fuera de ella.



martes, 8 de octubre de 2019

¿Qué es la Robótica?

La robótica es una rama de la ingeniería y de las Ciencias de la Computación que estudia el diseño y construcción de maquinas capaces de desempeñar tareas de manera autónoma.