¿Cual es mejor lenguaje de programación para aprender?


Hay muchas comunidades potenciales que podrían ser encuestadas para este análisis. aunque GitHub y Stack Overflow se utilizan en casi en casi todos los análisis que vamos  a ver  debido indudablemente a su voluntaria,   pero  también a su grandisma exposición pública de los datos necesarios para el análisis.

Asimismo, todas las clasificaciones numéricas deben tomarse con sumo cuidado, porque estas  pueden ser sustancialmente menos relevantes que la agrupación de  lenguajes de programación (en muchos casos, un lugar en la lista no es distinguible del siguiente).

De todos modos  la separación entre los niveles de lenguajes en la trama, sin embargo, es generalmente representativa de las diferencias sustanciales en la popularidad relativa.
Además, cuanto más abajo en los rankings un lenguaje  de programacion  va, menos datos hay disponibles para clasificar los lenguajes.

Más allá de los niveles superiores de lenguajes, dependiendo de la instantánea, la cantidad de datos a evaluar es mínima, y ​​la ubicación real de los lenguajes se vuelve menos confiable cuanto más adelante en la lista se avanza. De   todos modos  aunque  todos estas listas no puedan ser exactas al 100% ,estos rankings que vamos a ver son una buena referencia para entender como se están construyendo actualmente lo sistemas actuales ofreciéndonos una  idea  de cuales son las tecnologías preferidas

 

Ranking de PYPL

El índice de popularidad de PYPL se crea al analizar la frecuencia con la que se buscan los tutoriales de idiomas en Google.

Cuanto más se busca un tutorial de idioma, más popular se supone que es el lenguaje de   programacion , asi  que es un indicador adelantado dado que. ls datos brutos provienen de Google Trends.

Si cree en la sabiduría colectiva, el índice de Popularidad del Lenguaje de Programación de PYPL puede ayudarle a decidir qué lenguaje de programacion estudiar o cuál usar en un nuevo proyecto de software.

Lista mundial en  Abril de  2018 comparado   con datos un año  hacia atrás :

Rank Change Language Share Trend
1 Java 22.62 % -0.8 %
2 Python 22.05 % +5.2 %
3 Javascript 8.56 % +0.2 %
4 PHP 8.22 % -1.8 %
5 C# 7.95 % -0.7 %
6 C 6.38 % -1.1 %
7 R 4.26 % +0.4 %
8 Objective-C 3.7 % -1.0 %
9 Swift 2.92 % -0.6 %
10 Matlab 2.31 % -0.4 %
11 Ruby 1.7 % -0.4 %
12 TypeScript 1.58 % +0.5 %
13 VBA 1.39 % +0.0 %
14 Visual Basic 1.27 % -0.3 %

Ranking de GitHut

GitHut  asociado al famoso repositorio  de codigo  Github     también tiene su propio ranking

El ganador  sin duda  es   #1(26,5%)  Javascript  desarrollado  originalmente por Netscape en 2002.  A pesar de tener nombres similares, Javascript no está relacionado con Java como todos sabemo

JavaScript (abreviado como js) es un lenguaje de programación interpretado  orientado a objetos ​ basado en prototipos, imperativo, débilmente tipado y dinámico.

Se ha estado  usando  años a tras  principalmente en su forma del lado del cliente , implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas , pero  actualmente ha tomado mucha transcendencia , y de ahi  su posición en este ranking  debido a su facilidad de uso en el lado del servidor(Server-side JavaScript o SSJS)

A  partir de mediados de la década de los 2000, ha habido una proliferación de implementaciones de JavaScript para el lado servidor. Node.js es uno de los notables ejemplos de JavaScript en el lado del servidor, siendo usado en proyectos importantes

# Ranking

Programming Language

Percentage (Change)

Trend

1 JavaScript
22.947% (-2.606%)
2 Python
16.127% (+0.848%)
3 Java
9.960% (+0.001%)
4 Go
7.236% (+1.238%)
5 Ruby
6.732% (+0.237%)
6 C++
6.423% (+0.779%)
7 PHP
6.094% (-1.242%)
8 TypeScript
4.807% (+1.999%)
9 C#
3.375% (-0.647%)
10 C
2.890% (-0.442%)
11 Shell
2.327% (+0.146%)
12 Scala
1.406% (-0.011%)
13 Swift
1.168% (-0.025%)

githut.PNG

Ranking  de Stack Overflow

Stack Overflow es uno de los  sitios de preguntas y respuestas mas famosos   para programadores de todo el mundo .  Gracias a ello este  ranking  rastrea los lenguajes más populares en su encuesta anual para desarrolladores. Para el informe de 2018, Stack Overflow obtuvo respuestas de más de 100.000 desarrolladores, lo que lo convierte en un buen vistazo a las tecnologías más populares entre programadores.

Esto es lo que hay en la lista:

  • #1: Javascript: A pesar de tener nombres similares, Javascript no está relacionado con Java. Permite a los desarrolladores crear elementos interactivos en los sitios web, convirtiéndolo en uno de los lenguajes más omnipresentes de la web y el más popular del mundo.
  • #2: HTML: Aunque técnicamente no es un lenguaje de programación – es un “lenguaje de marcas” – HTML es la base para la estructura de cada sitio web.
  • #3: Cascading Style Sheets, o CSS: el lenguaje de programación más utilizado para diseñar sitios web y aplicaciones basadas en navegadores.
  • #4: SQL: Structured Query Language (Lenguaje de consulta estructurado). Permite tratar grandes cantidades de datos mediante el acceso y la gestión de bases de datos. La mayoría de las veces se usa en conjunción con otro lenguaje, como PHP.
  • #5: Java: Java fue inventado originalmente por Sun Microsystems en 1991 como lenguaje de programación para sistemas de televisión interactiva. Desde la compra de Sun, Oracle ha convertido a Java en una potencia. El lenguaje de programación es la forma más común de construir aplicaciones Android.
  • #6: Bash/Shell: Shell no es exactamente un lenguaje de programación. En su lugar, un script de shell instruye a un sistema operativo para que ejecute automáticamente una lista prediseñada de comandos. Por ejemplo, un script shell puede hacer que un sistema operativo convierta cada archivo “.bmp” en un “.jpg” siempre que se ejecute.
  • #7: Python: Python data de 1989 y es amado por sus fans por su código altamente legible. Muchos programadores creen que es el lenguaje más fácil de usar.
  • #8: C#: Este lenguaje, pronunciado “C-Sharp”, fue desarrollado por Microsoft. Es un rival al aún más popular Java y ampliamente utilizado por los desarrolladores de software empresarial.
  • #9: PHP se utiliza para sitios web y aplicaciones que son pesados en datos. Incluso alimenta WordPress y Facebook. Pero muchos programadores odian PHP con pasión. “PHP no es tanto un lenguaje como una colección aleatoria de cosas arbitrarias, una explosión virtual en la fábrica de palabras clave y funciones”, escribió Jeff Atwood, fundador de Stack Overflow.
  • #10: C++ es una rama del lenguaje de programación C. Fue creado originalmente en 1983, y se puede encontrar en todo, desde aplicaciones web de escritorio hasta infraestructura de servidores.
  • #11: C, uno de los lenguajes de programación más antiguos aún en uso común, fue creado a principios de la década de los 70. En 1978, el legendario manual del lenguaje, “The C Programming Language”, fue publicado por primera vez.
  • #12: Typescript es relativamente joven según los estándares de lenguajes de programación. Lo creó Microsoft en 2012. Está estrechamente relacionado con el mega-popular JavaScript y diseñado para ejecutar grandes aplicaciones.
  • #13: Ruby ha ganado muchos elogios por ser fácil de leer y escribir. También es popular Rails, un framework complementario para Ruby que facilita la creación de aplicaciones web. El lema oficial de la lengua es “El mejor amigo de un programador”.
  • #14: Swift fue lanzado por Apple 2014, promocionado como una mejor y más fácil manera de construir software. Swift se ha puesto de moda; Lyft, entre otros, lo utilizó para hacer su aplicación para iPhone.

Ranking de RedMonk

Redmonk   sigue un proceso básico similar  a los anteriores : extraen clasificaciones de idiomas de GitHub y Stack Overflow, y combinan  una clasificación que intente reflejar la tracción de código (GitHub) y discusión (desbordamiento de pila). La idea no es ofrecer una representación estadísticamente válida del uso actual, sino más bien correlacionar la discusión y el uso del lenguaje en un esfuerzo por extraer ideas sobre posibles tendencias futuras de adopción.

La fuente de datos utilizada para estas consultas es el archivo GitHub. Consultan lenguajes de  programación  por solicitud de extracción de una manera similar a la que usó GitHub para ensamblar el Estado del Octoverse 2016.

En el lado positivo, en este ranking  también eliminan  la queja más común con respecto a los rankings históricamente: que las mediciones por repositorio pueden sobreestimar la importancia de un lenguaje determinado(JavaScript, con mayor frecuencia).

Para ser incluido en este análisis, un lenguaje debe ser observable dentro de GitHub y Stack Overflow.

Con todas las consideraciones  aquí está la trama del primer trimestre para 2018.

http://sogrady-media.redmonk.com/sogrady/files/2018/03/lang.rank_.118.png

 

No se hacen afirmaciones aquí de que estos rankings sean representativos del uso general más amplia mente. No son nada más ni nada menos que un examen de la correlación entre dos poblaciones que creen que son predictivas del uso futuro, de ahí su valor.

 

Es difícil  dar un prevision a futuro del uso de cada lenguaje,pero desde luego lo que ya nadie duda es que Java va perdiendo cada vez mas protagonismo, protagonismo que va lentamente reemplazado por otros lenguajes como  Javascript  , Python  , Ruby  o C#

 

Anuncios

Robots de todos los precios y para todas las edades


Lo que se ve se recuerda  y  lo que se hace se aprende, de modo  que la educación  quizás sea nuestro mayor recurso a explotar para cambiar y mejorar el mundo en el que vivimos.

La robótica es, sobre todo, un medio para aprender y según todas las previsiones  de  analistas  parece ser que será la tecnología del futuro .

Con la robótica, los niños potencian su creatividad, la lógica visual y sus habilidades sociales para trabajar en equipo. Al ayudarles a construir sus propios robots, se hacen más responsables de ellos ya que valoran más el resultado final.  Además, es una forma divertida para que se familiaricen con el funcionamiento de la electrónica y la programación.

A continuación,  vamos  a  ver  un pequeño resumen  (ordenados de menor  a mayor precio ) de  algunas  posibilidades de “robots” educativos sin duda  ideales para regalar a los más pequeños en esta fechas : de una forma muy divertida no solo jugaran sino  que también aprenderán nociones de electrónica y robótica de un modo muy didáctico.

 

 

 24,95€

Ecorobot

Estimula la curiosidad por el entorno, el interés por conocer como funcionan las cosas y el pensamiento creativo y constructivo.Ayuda a desarrollar el interés por las energías alternativas sostenibles y la conciencia ecológica.Los 14 robots son: Row, Boxer, Crab, Turtle, Slither, Quadru, Surf, Boat, Walker, Wheel, Auto, Roly Poly, Beetle y Dog.

Funcionan directamente bajo la luz solar gracias a un minipanel solar que incorpora  si bien e interiores también puede utilizarse   bajo luz  potente  (recomiendan exponerlo  a   luz halógena de 50W).

Hay dos niveles de construcción, en el segundo están Roly Poly, Auto, Slither, Surf, Boxer, Crab y Row, constituyendo un divertido reto para la habilidad (hasta 14 robots diferentes )

En este producto ,el objetivo está más relacionado con la construcción y comprensión del funcionamiento de un robot que  la  propia programación, aunque se da una vision de las energías renovables al funcionar el Ecorobot por energía solar.

Ideal para niños  a partir de 9 años.

 45,87€

Cebek

Es un brazo robotizado con pinza y mando con cable, en formato kit para ensamblar ref C-9895 de la marca CEBEKIT de FADISEL.Viene con un manual muy gráfico y entretenido de montar. De fácil manejo con su mando, como se ve en el video.

Se trata de un autentico brazo-robot con cinco grados de libertad. Equipado con 5 motores independientes, las palancas de la unidad de control controlan la rotación de la base, el movimiento del codo y de la muñeca, y la apertura y cierre de la pinza.Puede agarrar, liberar, levantar, bajar y girar. Una luz de búsqueda en la pinza aumenta la diversión cuando funciona en la oscuridad.

Se suministra con su mando por cable. Es ideal para prácticas de Ciclos Formativos y de robótica. Manual muy gráfico y entretenido de montar.

Permite una carga máxima de 100 gramos. Precisa de cuatro pilas de 1,5 V tipo D (no incluidas).

También puede programar y controlar automática y autónomamente su brazo-robot a través de la plataforma abierta Arduino. Esta alternativa evita la necesidad de que el controlador sea un ordenador, y permite añadirle sensores al robot y practicar con distintos algoritmos de teoría de control y cinemática inversa.

Compone una serie de Kits Robot para el futuro ingeniero permitiendo descubrir de una manera agradable como familiarizarse con la electrónica y la mecánica

Recomendado a partir de 10-12 años. Se recomienda la supervisión de un adulto.

 

 50$

Ozobot

Papel en blanco y rotuladores de colores bastan para programar el funcionamiento de Ozobot. Este pequeño dispositivo es capaz de interactuar tanto con dispositivos electrónicos (la pantalla de un tablet iOS o Android) como con entornos físicos clásicos como el papel.

Ozobot se programa en el ordenador para que siga una serie de instrucciones o indicarle las reglas básicas que deben regir su movimiento, y posteriormente, en un entorno real, podemos componer su campo de prueba.

Como otros robots de este tipo, las aplicaciones principalmente para competir y jugar con ellos son bastante variadas.

Se aconseja  para niños de más de 9 años.

80€

Bee Bot

 

Una opción pensado  para los mas pequeños (hasta 5 años ) que proviene del sector educativo es Bee Bot. Este pequeño robot permite escalar el grado de dificultad del aprendizaje a realizar, partiendo de un juguete con controles físicos que nos dejan la programación direccional sin ningún elemento extra, pero que también acepta la programación desde una aplicación o el ordenador con una simulación más compleja.

Es además recargable, por lo que nos evitamos las pilas  y de paso  se da una visión de las energías renovables .

85€

Mi primer kit de robótica

Desde el milagro  tetecnológicoe la empresa española   BQ   nos proponen un kit único en el mercado con todo lo necesario para que pueda montar sus propios robots en casa de una forma cómoda y sencilla,  con un público destino de  niños entre 5  a 9 años .

Una oportunidad perfecta para compartir tiempo y afición con los más pequeños en una actividad muy enriquecedora para ambas partes.

El kit está formado por 10 componentes electrónicos y un portapilas con los que podrá montar la electrónica de cualquier PrintBot y muchos otros juegos .

En un mundo en el que el dominio de las nuevas tecnologías será muy pronto esencial para cualquier ciudadano, este kit es el primer paso para alcanzar nuestro objetivo: revolucionar el proceso de aprendizaje, incluso ya desde la primera etapa, jugando.

Nos  explican ademas   que el proceso de montaje es muy sencillo:

  • Elija los componentes electrónicos necesarios para montar un printbot o cualquier juego robótico que se te ocurra.
  • Elija la carcasa adecuada
  • Comience el montaje de todas las piezas.
  • Programe e instale el código.
  • Disfrute del robot y recuerde que siempre podrá desprogramarlo y desmontarlo para fabricar otro toda las veces que quiera

Los juguetes y robots que implican total libertad de diseño nos fascinan. La imaginación entra en juego en la fase de diseño y construcción y posteriormente, a la hora de programar, entra más la parte lógica y esquemática del juego, que corre a cargo de Arduino.

 

Este kit de robótica de BQ podemos ampliarlo cuanto queramos, pues disponemos de numerosas piezas y elementos a añadir. Y por si fuera poco, es compatible con las impresoras de BQ, por lo que podremos crear e imprimir nuestra propia carcasa para el robot en tres dimensiones.

Más información  aqui: Mi primer kit de robótica

 

 

 

 

100€

Ollie Sphero

Los creadores de la Sphero 2.0 han puesto recientemente en el mercado una evolución de la misma llamada Ollie pensado  para los mas pequeños (hasta 5 años ). Este robot se centra más en la velocidad, giros y piruetas que podemos hacer con él mediante una conexión bluetooth con un smartphone.

Pero tanto la Sphero como el nuevo Ollie incluyen una serie de aplicaciones para comenzar a conocer el mundo de los robots, que se complementa con dos aplicaciones de programación (macroLab y orbBasic) muy sencillas de usar y que son ya usadas en algunos centros educativos de EEUU.

 

150€

Lego Wedo

Lego es toda una referencia al hablar de juguetes y robótica para todas las edades. Wedo es su plan para los más pequeños (a partir de 7 años), y se compone de piezas con engranajes, motores, sensores y demás elementos necesarios para construir libremente un robot o seguir las instrucciones y acabar montando alguno de los 12 modelos preestablecidos y que cuentan con instrucciones paso a paso.

 

Estos robots, una vez construidos, se conectan de forma sencilla y directa a un ordenador mediante un cable USB, donde el niño/a puede programar mediante iconos el comportamiento que desea para su creación.

Más información  aqui:  LEGO 9580 WeDo – Conjunto de construcción

160€

Parrot Jumping Sumo

Esta incorporación a la colección de MiniDrones de Parrot es rápido, resistente y también ágil, efectúa acrobacias que nunca se han visto antes. A través de este aparato, simple y fácil de utilizar, Parrot ha reinventado la experiencia de jugar con robots.

Jumping Sumo genera su propia conexión Wi-Fi (AC), lo que permite una conexión automática con tu smartphone o tableta en cuanto ejecutas la aplicación gratuita FreeFlight 3 (para smartphones y tabletas iOS y Android, disponible en octubre de 2014 para Windows 8.1 y Windows Phone 8.1). Gracias a su avanzado sistema de saltos, Jumping Sumo puede saltar hasta 80 cm vertical y horizontalmente. Se desplaza hasta 7 km/h  se detiene, gira y coge curvas de 90° o 180° muy rápidamente.

Con sus ruedas ajustables, Jumping Sumo ofrece 2 experiencias diferentes. Según tu nivel de experiencia, puedes optar por la estabilidad (ruedas desplegadas) o la velocidad (ruedas plegadas). Gracias a su diseño robusto y resistente a los golpes, puedes saltar, rodar y explorar sin detenerte. Y lo que es aún más asombroso, Jumping Sumo siempre aterriza sobre sus ruedas. Como está equipado con un giroscopio y un procesador de alta velocidad, el piloto puede aprovechar al máximo su infalible agilidad y control de conducción superintuitivo. Jumping Sumo demuestra su personalidad osada a través de sus luces LED parpadeantes y sonidos, ¡no dudes en personalizar tu robot con una gama de pegatinas según tu estado de ánimo! Programa tus propios espectáculos y representa diferentes coreografías con movimientos y trucos para fascinar a tus espectadores. Batería de iones de litio con una autonomía de 20 minutos y compatible con el MiniDrone Rolling Spider.

 

Jumping Sumo tiene la capacidad de saltar hasta 80 cm vertical y horizontalmente. Carga previamente el resorte para anticipar tus saltos o utiliza uno de los 3 modos: Jumper, Kicker y Auto-Balance. Jumping Sumo siempre aterriza sobre sus ruedas.

Rueda y Gira en un abrir y cerrar de ojos. Muévete hacia adelante y hacia atrás y ajusta tu velocidad para adaptarla a la situación. Jumping Sumo puede rodar a una velocidad de 7 km/h y esquivar cualquier obstáculo que encuentre en su camino girando 90°/180° simplemente moviendo un dedo.

Con una cámara gran angular de 640 x 480 píxeles, ves lo que él ve. Guarda*, transmite y haz fotos y vídeos en tu smartphone y tableta (*en una unidad flash micro USB, se vende por separado).

La aplicación FreeFlight 3, para Smartphone y tabletas iOS y Android, y disponible en octubre de 2014 en Windows 8.1 y Windows Phone 8.1, también controla el MiniDrone Rolling Spider. Jumping Sumo genera su propia conexión Wi-Fi (AC), con un rango de control de hasta 50 metros.

Un “mapa de ruta” te permite programar una secuencia de acciones. Al ingresar en la aplicación, el itinerario aparece entre los movimientos predeterminados de tu Jumping Sumo.

Este   robot tiene   un público destino de  niños entre 5  a 9 años .

Más información  aqui:  Parrot – MiniDrone Jumping Sumo, color blanco (PF724000AA)

 

 

 

 

 

180€

mOwayduino

La gente de Minirobots, una empresa española, logró poner en el mercado el año pasado su robot educativo Mowayduino. Como habrá deducido por su nombre, se trata de un robot basado en Arduino y que viene dotado de sensores de proximidad y luz, así como micrófono y altavoz, pero también se puede ampliar con diferentes módulos como la conectividad WiFi o una cámara.

Para programar su funcionamiento podemos recurrir al propio entorno de desarrollo de Arduino o recurrir a Java, Python o incluso Scratch.

Por cierto, el software para programar el mOwayduino está disponible tanto para Windows como para Mac y Linux.

Ideal para niños  a partir de 9 años.

 

200€

Fischertechnik Robo Tx

 

 

La creación de un robot más complejo arranca con el Robo TX de Fischertechnik. Más de 400 piezas y numerosos sensores y actuadores como el ultrasónico, de luz infrarroja o de temperatura pone en las manos de los mayores de diez años una infinidad de posibilidades para crear un modelo robótico capaz de medir distancias o gestionar tareas complejas como si de una cadena de montaje se tratara.

Tecnología Experiencia directa y entender fácilmente  mediante un módulo básico Ingenioso a los detalles técnicos refinados – todo puede ser combinado – para el juego de la diversión sin límites

Fischertechnik – Entender la tecnología mientras juegas!  El bloque “polifacéticos” La base para todos los juegos de construcción fischertechnik   Fischertechnik se ha utilizado con éxito en las escuelas, la educación y la formación  en  niños  a partir de 9 años.

Este kit está pensado expresamente para participar en competiciones robóticas donde poner a prueba nuestros avances.

Ideal para niños  a partir de 9 años.

Más información  aqui:  Fischertechnik Robo Tx – Juego de construcción robotizado

229$

Kibo

Cuanto menos peculiar es la manera en que el robot Kibo quiere que lo programen. Nada de aplicaciones o programas de ordenador. Todo es manual y tangible en tres dimensiones ya que los módulos que permiten a Kibo modificar su comportamiento son bloques físicos.

Los pequeños ingenieros solo deben crear con ayuda de los bloques el programa que pretenden que ejecute el robot. Una vez colocados los módulos, se escanea la secuencia y pulsando el botón de ejecutar, el robot Kibo se pone en marcha.

 

Este robot ha nacido de una campaña de financiación colectiva y esta diseñado  para  un público destino de  niños entre 5  a 9 años .

 250$

Dash&Dot

 

Una de las soluciones de robótica para niños más completa del mercado se ha estrenado hace poco Pensado  para los mas pequeños (hasta 5 años ) se e llama Dash&Dot y comienzo con unos pequeños robots que podemos controlar a distancia, la gama de accesorios, piezas Lego (el sistema es compatible) o lenguajes de programación de iniciación

 

Si optamos por las aplicaciones, con edades recomendadas a partir de 4 años, ahí ya entran en juego los accesorios. Desde una montura para colocar un smartphone y grabar vídeo con él, a un xilófono que podremos controlar desde la aplicación correspondiente.

Si queremos ir más allá, Dash&Dot son compatibles con Blocky de Google, permitiendo la programación a un nivel superior, yéndonos ya a una edad recomendada de más de 8 años. El kit de iniciación sin accesorios cuesta 250 dólares.

 

 

Y si piensa que este pequeño insecto no permite infinidad de actividades relacionadas no solo con la programación sino con la lengua, las matemáticas o incluso la creatividad artística (se puede proponer crear una “funda” o disfraz para el robot), toma nota porque en la red podemos encontrar verdaderas maravillas

 

 

340€

Lego Mindstorms EV3

 

Uno de los clásicos ya veteranos de la robótica para niños es sin duda el Mindstorms de Lego. El modelo EV3 es el que la compañía enfoca en el mercado de consumo, pero su origen es el educativo.

Controla y ordena a su robot con el mando a distancia incluido o descarga la aplicación gratuita para su dispositivo iOS o Android

El corazón del set es el ladrillo inteligente EV3, equipado con un potente procesador ARM9, un puerto USB para proporcionar funciones WiFi y conexión a Internet, un lector de tarjetas Micro SD, botones retroiluminados y 4 puertos de motor.

Incluye 3 servomotores interactivos, un control remoto, un sensor de color mejorado y rediseñado, un sensor de contacto rediseñado, un sensor de infrarrojos y más de 550 elementos LEGO Technic.

Incluye más de 550 elementos LEGO Technic: ¡todo lo que necesitas para crear asombrosos robots!

Con la base del clásico ladrillo de Lego, el kit permite la construcción de varios modelos de robots complejos a los que se puede dar “vida” usando un sistema de programación con interfaz intuitiva y basada en los iconos.

Ideal para niños  a partir de 9 años.

Más información  aqui:  LEGO Mindstorms – EV3, juguete electrónico (31313)

 

500€

Robotis Mini

También con un claro enfoque para la competición, si queremos, entra en escena Robotis Mini, el hermano pequeño de un modelo que se usa en competiciones internacionales de robótica.

Con este robot, el reto no está solo en la construcción del propio robot sino en sacar provecho del gran potencial de sus posibilidades basadas en los 16 motores o actuadores digitales. Los que se inician en el mundo de la robótica tienen la opción de realizar una programación visual o directamente colocando el robot en las diferentes posiciones que se quiere que adapte, grabarlos y dejar que el software lo convierta en instrucciones para el robot.

 

En el caso de niños que ya tienen experiencia programando, hay un modo tipo Arduino pero implementado por la propia compañía. Y por último hay opción de que sea directamente desde un smartphone vía bluetooth como decidamos qué respuesta debe dar el robot según en sensor que se active o directamente botones de movimiento.

Las posibilidades de ampliación son bastantes, incluyendo piezas impresas en 3D o una serie de actuadores y sensores más complejos.

 

Ideal para niños  a partir de 9 años.

Más información  aqui:  Robotis Darwin-Mini

Fuente aqui

Top lenguajes de programación


El índice de la  Comunidad Programación TIOBE es un indicador de la popularidad de los lenguajes de programación. El índice se actualiza una vez al mes. Las calificaciones se basan en el número de ingenieros cualificados en todo el mundo, cursos y proveedores de terceros. Los motores de búsqueda populares como Google, Bing, Yahoo !, Wikipedia, Amazon, YouTube y Baidu se utilizan para calcular las clasificaciones. Es importante señalar que el índice TIOBE no es sobre el mejor lenguaje de programación  en el que la mayoría de líneas de código se han escrito.

El índice se puede utilizar para comprobar si sus habilidades de programación siguen siendo hasta la fecha o para tomar una decisión estratégica sobre qué lenguaje de programación debe adoptar cuando se inicia la construcción de un nuevo sistema de software.

Oct 2014 Oct 2013 Change Programming Language Ratings Change
1 1   C 17.655% +0.41%
2 2   Java 13.506% -2.60%
3 3   Objective-C 10.096% +1.10%
4 4   C++ 4.868% -3.80%
5 6 change C# 4.748% -0.97%
6 7 change Basic 3.507% -1.31%
7 5 change PHP 2.942% -3.15%
8 8 Python 2.333% -0.77%
9 12 change Perl 2.116% +0.51%
10 9 change Transact-SQL 2.102% -0.52%
11 17 change Delphi/Object Pascal 1.812% +1.11%
12 10 change JavaScript 1.771% -0.27%
13 11 change Visual Basic .NET 1.751% -0.18%
14 change Visual Basic 1.564% +1.56%
15 21 change R 1.523% +0.97%
16 13 change Ruby 1.128% -0.12%
17 81 change Dart 1.119% +1.03%
18 24 change F# 0.868% +0.37%
19 change Swift 0.761% +0.76%
20 14 change Pascal 0.726% -0.03%

De Google Dart, el sucesor proclamado de JavaScript, entra en el top 20 por primera vez. Competidores de Dart como CoffeeScript (posición 133) y mecanografiado (posición 122) no impresionan todavía. La adopción de Dart tuvo un comienzo lento después de su nacimiento a finales de 2011 porque los ingenieros temían que otros navegadores que Chrome de Google no apoyarían Dart. Y tenían razón. Pero ahora que el compilador de Dart a JavaScript está maduro  reclama para generar código, incluso más rápido que JavaScript-escrita a mano,así que  el lenguaje Dart parece tener un futuro brillante. Es interesante observar que, al mismo tiempo que Dart entra en el top 20, JavaScript está perdiendo algunas posiciones.

 

El resto de lista de los lenguajes de programación se muestran a continuación:

Position Programming Language Ratings
21 ML 0.704%
22 SAS 0.679%
23 PL/SQL 0.676%
24 PostScript 0.655%
25 ActionScript 0.614%
26 Logo 0.613%
27 MATLAB 0.608%
28 Lisp 0.582%
29 OpenEdge ABL 0.509%
30 COBOL 0.417%
31 Assembly 0.411%
32 Fortran 0.386%
33 Ada 0.385%
34 C shell 0.379%
35 D 0.376%
36 cT 0.373%
37 Erlang 0.370%
38 Common Lisp 0.367%
39 ABAP 0.367%
40 Haskell 0.341%
41 Scala 0.341%
42 Go 0.332%
43 Tcl 0.325%
44 PL/I 0.310%
45 Lua 0.300%
46 Scheme 0.299%
47 Scratch 0.290%
48 CFML 0.286%
49 Groovy 0.277%
50 Hack 0.259%

La siguiente lista de idiomas denota # 51 a # 100. Dado que las diferencias son relativamente pequeñas, los lenguajes de programación sólo se enumeran (en orden alfabético)

  • (Visual) FoxPro
  • 4th Dimension/4D
  • Alice
  • APL
  • Awk
  • Bash
  • bc
  • BlitzMax
  • Bourne shell
  • cg
  • CL (OS/400)
  • Clean
  • Clojure
  • EmacsLisp
  • Factor
  • Forth
  • Icon
  • Inform
  • Io
  • Ioke
  • J
  • JScript.NET
  • LabVIEW
  • LadderLogic
  • M4
  • Magic
  • Max/MSP
  •  Modula-2
  • Modula-3
  • Moto
  • NATURAL
  • NXT-G
  • OCaml
  • OpenCL
  • Oz
  • PILOT
  • Programming Without Coding Technology
  • Prolog
  • Pure Data
  • Q
  • RPG (OS/400)
  • S
  • Smalltalk
  • SPARK
  • StandardML
  • TOM
  • VBScript
  • VHDL
  • X10
  • Z shell

 

 

 

Como ha podido  observarse  C, Java y C++ se encuentran en los primeros puestos  continuado conservado su posición año tras año. Observese  como c#   del que hemos hablado en este blog  para comunicarnos con Netduino conserva un excelente 5º lugar   Por otro lado, lenguajes como Dart que se encontraban en el lugar número 81 el año pasado, han sabido ganarse un lugar entre los primeros veinte de este ranking de popularidad.

Fuente aqui

Como se programan apps moviles con MIT App Inventor (bloques lógicos)


App inventor es un framework creado inicialmente por el MIT (Instituto tecnológico de Massachusetts)  siendo adoptado por google, para que cualquier persona con interés pueda crearse su propia aplicación movil, ya sea para su empresa, para su casa o por otros interéses.

Para  crear una aplicación con app inventor hay que realizar tres pasos:

  • El diseño “estetico ” de la aplicación , en la que se seleccionan los componentes para su aplicación( botones,cajas de texto,imágenes,etc).
  • El editor de bloques  , donde se  escogen los bloques  lógico que  sean necesarios según la aplicación que tenga pensada de hacer.
  • Desplegar la app para su prueba en el terminal o en el emulador

Gracias al framework  App inventor, se pueden  crea  app moviles  sin conocimientos de programación  esplicitos pues  este hace la programación móvil sencilla y al alcance de cualquiera.

Casi cualquier tipo de aplicación se  puede crear con App Inventor (todo depende de las ganas y empeño que le pongas)  por ejemplo   puede crear una app android para su empresa o negocio   (App inventor es fenomenal para este tipo de aplicaciones)  y cuando este lista ,puede subirla  a Google Play como  con cualquier otro tipo de programación y ademas  obtener ingresos  si la pone  pago o incluye publicidad  usando los principales métodos de monetización como, Admob, leadbolt, mobpartner.

 

 

A continuación estos  son los principios de la programación  del MIT App Inventor  que vamos a tratar en este post:

1-Comportamiento de eventos

 ¿Cómo se programa el comportamiento evento de respuesta de una aplicación?Para aclararlo o se verán los siguientes ejemplos: 

  •  ¿Cómo convertir un botón rojo cuando un usuario hace clic en él?
  • ¿Cómo hablar cuando el usuario agita el teléfono?

2-Condicional (if) 

¿Cómo se programa una aplicación para tomar decisiones?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo iniciar y pausar un archivo de sonido cuando el usuario hace clic en un botón?
  • ¿Cómo se auto-responde a una “WHERE” texto de una persona en particular?

3-Incrementar un Valor:

¿Cómo añadir una a algo en la memoria de la computadora? Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se cuenta el número de veces que un botón se ha hecho clic?
  • ¿Cómo se cuenta atrás desde 10?

4-Dibujo:

¿Cómo dibujar formas e imágenes?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se crea un lienzo de dibujo?
  • ¿Cómo se dibuja un círculo en 10,10?
  • ¿Cómo se muestra una imagen en el centro del lienzo?

5-Variables :

¿Cuándo se necesita :definir una variable y cómo hacerlo?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se hace para que cada vez que el usuario hace clic en un círculo más grande se dibuja?
  • ¿Cómo se hace una bola para ir y venir?

6-Localizacion y Ubicación : 

¿Cómo sabes dónde estás?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se puede determinar la latitud, longitud y dirección de la calle?
  • ¿Cómo se determina lo lejos que están de otro lugar?

7-Procesamiento de la lista (por lotes) :

¿Cómo se hace algo para todos los elementos de una lista?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se envía un texto a una lista de tus amigos?
  • ¿Cómo añadir una lista de números?

8-Lista Transversal (dirigido por el usuario) :

¿Cómo paso a través de una lista basada en eventos iniciados por el usuario?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo crear un pase de diapositivas de modo que el usuario hace clic para ir a la siguiente imagen?
  • ¿Cómo agregar un botón anterior para hacer la presentación de diapositivas ir hacia atrás?
  • ¿Cómo se hace eso por lo que el pase de diapositivas es de nuevo al frente?

9-Agregar elementos a una lista :

¿Cómo se puede grabar información en una lista?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se puede grabar notas de entrada por el usuario?
  • ¿Cómo grabar los números de teléfono de los textos entrantes?

10-Persistencia :

¿Cómo grabar datos de forma constante?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se graba un mensaje de forma persistente-a salir un texto auto-respuesta?
  • ¿Cómo persistentemente grabar notas ingresadas por un usuario?

11-Actividad temporizado :

¿Cómo se puede repetir una acción, haciendo una pausa entre cada iteración?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se juega un sonido cada segundo?
  • ¿Cómo se mueve una nave espacial facilidad por la pantalla?

¿Cómo iniciar y detener una actividad programada?Para aclararlo o se verán los siguientes ejemplos: 

  • ¿Cómo iniciar y detener la reproducción repetida de un sonido?
  • ¿Cómo se inicia una nave espacial cuando el usuario habla, y lo detenga cuando el usuario agita el teléfono?

12-Listas temporizadas :

¿Cómo se procesa cada elemento de una lista, haciendo una pausa en el medio?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se juega una lista de las notas musicales?
  • ¿Cómo se inscribe la palabra “código” usando lenguaje de señas americano?

13-Procedimientos :

¿Cómo y por qué debería definir un procedimiento?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo codificar un procedimiento para visualizar una lista?
  • ¿Cómo codificar un procedimiento para visualizar cualquier lista?
  • ¿Cómo codificar un procedimiento para visualizar cualquier lista en cualquier etiqueta?

1-EVENTOS

Cómo se programa el comportamiento evento de respuesta de una aplicación?

Piense en una aplicación como una máquina de respuesta a eventos. El usuario hace clic en un botón, la aplicación responde. Un texto entra, la aplicación envía una respuesta automática. Un platillo volante golpea un asteroide, que explota. Su trabajo como programador es programar dichos eventos-respuestas. En App Inventor, lo hace directamente  el código es esencialmente un conjunto de eventos-respuestas, de los bloques cuando-do. Echa un vistazo a las siguientes muestras:

Ejemplo 1. ¿Cómo convertir un botón rojo cuando el usuario hace clic en él?

OK, esto es una aplicación muy tonto, pero no nos llevará a empezar. La aplicación aparece y hay un botón gris. Cuando los toques de usuario (clics) el botón, los cambios de color del botón a rojo. El clic del botón, Button1.Click, es un acontecimiento, algo que le puede pasar a la aplicación. El oro al bloqueButton1.Click se denomina-controlador de eventos. Los bloques dentro de él son la respuesta al evento.conjunto significa cambiar algo, en este caso, cambie BackgroundColor del botón en rojo. Los bloques, en su conjunto, se especifica que cuando el usuario hace clic en el botón que debe ponerse en rojo

 

Ejemplo 2¿Cómo se dice “estoy temblando” cuando el usuario agita el teléfono?

 

Esta aplicación tiene dos componentes, una AccelerometerSensor y una TextToSpeech. Cuando el usuario se sacude el teléfono o la tableta, el AccelerometerSensor detecta el evento y el controlador de eventos cuando AccelerometerSensor1.Shaking se dispara. El componente TextToSpeech está llamada a llevar a cabo la respuesta de hablar las palabras “estoy temblando”.

 

2-BUCLES  

Condicionales: ¿Cómo se programa una aplicación para tomar decisiones?

Con App Inventor, se pueden programar controladores de eventos ( como una aplicación debe responder a algo así como el usuario hace clic en un botó)n. Pero a veces una aplicación no debe responder a un evento al mismo tiempo todos. Aquí es donde si los bloques, conocidos como “condicionales”, llegada a tierra permiten la aplicación para tomar decisiones y forman la base de la inteligencia artificial.

 

Ejemplo 1. ¿Cómo iniciar y pausar un archivo de sonido cuando el usuario hace clic en un botón?

Este comportamiento de la Tengo una aplicación Sueño ilustra la forma fundamental de que una aplicación toma decisiones. Hay un botón con la imagen de Martin Luther King en él. La acción tomada cuando se hace clic en el botón no siempre es el mismo. Si el archivo de sonido (el discurso de Martin Luther King) está jugando, debe ser pausado. Si no está jugando, debe ser iniciado. El bloque if-else se utiliza para ramificar basado en la situación. Se comprueba la propiedad isPlaying del componente Player.Si bien es cierto, detiene la voz. Si es falsa (lo demás), el discurso es (re) inicia.

 

Ejemplo 2. ¿Cómo se auto-responde a una “WHERE” texto de una persona en particular?

Si su hijo o amigo deja esta aplicación en ejecución, siempre se puede saber dónde están enviando una “WHERE” texto a ellos. Este código ilustra una compleja si-test, uno con una “y” cláusula, ya que debe probar que tanto el remitente es un número de teléfono particular y el texto enviado fue “WHERE”. Si ambos son verdaderos, un texto de respuesta automática y se envía de nuevo al número de teléfono.

 

 

 

 

3-VARIABLES

¿Cómo se puede incrementar una propiedad de variable o componente?

Propiedades de los componentes y variables se denominan células de memoria, algo así como las celdas de una hoja de cálculo. Vamos a usar este tipo de células de memoria para hacer cosas como mantener el marcador de un juego o grabar la ubicación de un ImageSprite.

A menudo, es necesario cambiar el valor almacenado en una celda de memoria. Su sencillo pensar en el establecimiento de la puntuación de un juego de 5, o algún otro número fijo, pero ¿cómo se establece la puntuación en relación a su valor actual, por ejemplo, cómo se realiza la programación de manera que la puntuación se convierte en uno más? La siguiente ejemplos demostrarán esta actividad fundamental deincrementar una variable.

Ejemplo 1. ¿Cómo se cuenta el número de veces que un botón se ha hecho clic?

En este juego muy tonto, las puntuaciones de los usuarios un punto haciendo clic en un botón. Cuando el botón etiquetado como “Marca un punto” se hace clic, el ScoreLabel (mostrando 0 arriba) cambia a 1. Si se vuelve a hacer clic, se cambia a 2, y así sucesivamente. Estos son los bloques para este comportamiento:

Los bloques pueden ser confusas, en un principio, pero la comprensión de ellos es una clave para entender cómo funciona la computación. En pocas palabras, los bloques pueden leerse como: “cuando se hace clic en el botón, cambiar ScoreLabel.Text a su valor anterior + 1

Pero vamos a examinar más de cerca los bloques para que realmente entienda lo que está pasando. “Set” significa “cambio”, por lo que los medios de bloque, de color verde oscuro a la izquierda, “cambiar el texto de la ScoreLabel”.

El bloque verde más claro con la etiqueta “ScoreLabel.Text” es un bloque de “obtener”. “Get” quiere decir que ir a buscar en una celda de memoria y ver lo que hay. La primera vez que se hace clic en el botón, el “get” devuelve el valor inital de 0, por lo que 0 +1 = 1 se establece en ScoreLabel.Text (y 1 aparece en la interfaz de usuario). La segunda vez que se hace clic en el botón, el valor actual de ScoreLabel.Text es 1, por lo que 1 +1 = 2 se coloca en ScoreLabel.Text.

Puede ayudar a darse cuenta de que los bloques son realmente ejecutados de derecha a izquierda. La aplicación evalúa primero la derecha del lado “+” de “conseguir” el valor actual en la etiqueta y añadir 1 a la misma. El de la izquierda es entonces realizado y el resultado de la “+” es “set” en la etiqueta.

 

 

Ejemplo 2. ¿Cómo se cuenta-atrás desde 10 y reproducir un sonido a 0.

Con la aplicación de cuenta regresiva, una etiqueta de muestra 10 para comenzar y luego comienza la cuenta atrás, 9,8,7 … hasta 0. Cuando se llega a 0, se reproduce un sonido. Estos son los bloques:LLa “cuando Clock.Timer” se activa periódicamente. La fila superior de bloques disminuyeCountLabel.Text -. El texto se ajusta a sí mismo menos 1 Así que la primera vez que los factores desencadenantes del temporizador, el texto se ajusta a 10-1 = 9, la segunda vez para 9-1 = 8, y así on.On cada iteración, la aplicación utiliza un bloque if para comprobar si la cuenta ha llegado a 0. Si es así, se reproduce el sonido y el temporizador de reloj está desactivado para detener la actividad.

 

4-GRAFICOS

¿Cómo se dibujan formas e imágenes en un lienzo?

 Ejemplo 1. ¿Cómo se crea un lienzo de dibujo?

El componente Canvas es un sub-panel dentro de su aplicación. Las lonas se utilizan para el dibujo y la animación – que su aplicación puede dibujar objetos, y le puede dar al usuario la capacidad de dibujar objetos.

Por lo general, usted quiere que su lienzo para llenar todo el ancho de la pantalla de la aplicación, por lo que establecer el ancho para llenar los Padres “, como en los bloques anteriores. Generalmente usted quiere tener otros componentes encima o por debajo, por lo que establece el Altura a un número fijo.

Una ubicación de un objeto en el lienzo se define con una X, Y valor en relación con la esquina superior izquierda del lienzo. X es la ubicación horizontal del objeto, siendo 0 la izquierda de las fronteras y X cada vez más grande como un objeto se mueve a de la derecha. Y es la posición vertical con 0 en el borde superior e Y cada vez más grande como un objeto se mueve hacia abajo.

Ejemplo 2. ¿Cómo se dibuja un círculo en 10,10?

Canvas tiene bloques de función para dibujar un círculo o una línea. El drawCircle tiene tres parámetros,x, y, y el radio. X es la ubicación horizontal, Y es la posición vertical, y r es el radio del círculo que se elaborará. Un valor x de 10 significa que el círculo se encuentra a 10 píxeles a la derecha del borde izquierdo del lienzo. A y-valor de 10 significa que el círculo se encuentra a 10 píxeles hacia abajo desde la parte superior del lienzo

Ejemplo 3. ¿Cómo se dibuja un círculo donde los toques de usuario

El evento Canvas.Touched se activa cuando los toques de usuario (clics) el lienzo. Tiene parámetros x e y que especifican la ubicación del contacto. El touchedSprite parámetro especifica si el contacto se produjo en una ImageSprite – no es importante para este comportamiento.Usted quiere dibujar el círculo en el lugar del contacto, de modo ratón sobre los parámetros x y y, agarrar obtener bloques para ellos, y conectarlos a las ranuras para x una y en el bloque drawCircle. Es un poco confuso porque los parámetros de evento Touched se nombran los mismos que los parámetros (slots) para la función drawCircle.


Ejemplo 4. ¿Cómo se mueve una imagen en el centro del lienzo en App Inventor 2?

Los bloques de la muestra localizar x ImageSprite1 en medio del lienzo con la x propiedades x Anchura y Altura. Tales referencias abstractas significan el código funcionará incluso si el lienzo cambia de tamaño.Como alternativa, puede colocar los números fijos en la X e Y de la MoveTo (de manera similar a cómo se utilizó 10,10 en el ejemplo anterior. ¿Sabes por qué medio se resta el ancho y la altura del sprite?Tenga en cuenta que no hay ningún bloque “DrawImage” como x drawCircle. En cambio, con el diseñador arrastra componentes ImageSprite x en un x lienzo y especificar el archivo de imagen (foto), que define su apariencia. No hay forma para crear dinámicamente sprites con los bloques, sólo se puede hacer de ellos (in) visible y localizarlos como en este ejemplo.

 

 

5-POSICIONAMIENTO

¿Cómo saber dónde estás?

El LocationSensor comunica con los satélites GPS y otros mecanismos para determinar la ubicación de su teléfono / tablet.

Ejemplo 1. ¿Cómo se puede mostrar su latitud, longitud y dirección?

El evento se desencadena LocationSensor.LocationChanged 1) cuando la aplicación se pone primero una lectura de los satélites GPS u otros mecanismos, y 2) cuando el teléfono o los cambios de ubicación de la tableta. Si usted está caminando alrededor, podría desencadenar muchas veces. Puedes controlar la frecuencia con LocationChanged se activa con las propiedades LocationSensor.TimeInterval yLocationSensor.DistanceInterval. El TimeInterval se establece en 60.000 ms, o 1 minuto, de manera predeterminada. Esto significa que LocationChanged sólo se activa de nuevo después de un minuto.En esta muestra, las lecturas de ubicación se muestran en las etiquetas. Latitud y longitud son los números, mientras que la propiedad currentAddress proporciona una dirección de calle de su ubicación actual. Al caminar alrededor, verá los números y cambio de dirección.

Ejemplo 2. ¿Cómo saber lo lejos que se está de un punto dado?

App Inventor no proporciona un bloque de “distancia” para calcular la distancia entre dos coordenadas GPS. Pero hay fórmulas matemáticas conocidas para aproximar una distancia tal entre dos puntos. La solución es crear su propio bloque – procedimiento – y enchufe en una de las fórmulas conocidas. La “distancia” procedimiento anterior se utiliza una fórmula de http://geokoder.com/distances . Una vez que tenga un procedimiento distancia, se puede llamar así, como en la fila inferior del controlador de eventosLocationChanged. Este ejemplo calcula la distancia desde su ubicación actual y el campus de la Universidad de San Francisco.

 

LISTAS

6-¿Cómo se hace algo para todos los elementos de una lista?

Listas de datos se encuentran en muchas de las aplicaciones. Cuando utiliza Facebook, por ejemplo, hay una lista de sus amigos, una lista de sus actualizaciones de estado, etc En su aplicación, usted puede realizar un seguimiento de sus amigos los números de teléfono, una lista de sus cuentas del pasado en un juego, o el número de millas que ejecutó cada día la semana pasada. Con casi cualquier software, es probable que haya listas de datos implicados.

App Inventor, como la mayoría de los idiomas, ofrece una manera de procesar los elementos de una lista, para realizar la misma operación en cada artículo. Con App Inventor, normalmente se utiliza una para cadabloque en la lista. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. ¿Cómo se envía un texto a una lista de tus amigos?

La lista phoneNumberList se define en la parte superior. Tiene datos “concretos” (por ejemplo, los tres números de teléfono ficticios). La mayoría de aplicaciones almacenan dinámica, los datos generados por los usuarios, pero para este ejemplo vamos a centrar en el procesamiento una vez que tenga una lista.Los bloques dentro de la de cada bloque se repiten para cada elemento de la lista phoneNumberListdado. En este caso, hay tres elementos, por lo que los tres bloques interiores se repitieron tres veces.Nueve bloques totales serán ejecutados (“ejecutado” es el término de la informática para la realización de la operación que los define en bloque. No se preocupe, nadie está siendo asesinado!). El texto “que le falta” será enviado a los tres números. La de cada uno en la lista se llama un “bucle”, porque la aplicación de bucles hasta la parte superior de la de cada uno después de ejecutar el bloque interior inferior. En la terminología de ciencias de la computación, decimos las iteraciones de aplicaciones a través de los artículos.El ítem parámetro definido en la de cada uno es un marcador de posición y siempre mantiene el elemento actual que se está procesando. La primera vez en el ciclo es “111-1111”. La segunda vez que a través de ella es “222-2222”, y la tercera vez que es “333-3333”. Así, todos los números se envían el mensaje.


 Ejemplo 2. ¿Cómo añadir una lista de números?

La lista de los números de este ejemplo es fijo, pero en general la lista sería de datos dinámicas, generadas por los usuarios, por ejemplo, en una aplicación de entrenamiento el usuario introduciría las millas que corrían cada día y los datos se almacenan en una lista.El para cada bloque en la lista se utiliza para recorrer los números. elemento es la variable de marcador de posición – posee el número actual cada vez que la fila de bloques en el que se ejecuta For cada uno. El primer elemento tiempo es 7, luego 3, luego 11, luego 5. El total variable se define para almacenar la suma en ejecución. En la primera iteración, total se establece en su valor anterior (0) más artículo, que es 7, por lo que se convierte en 0 7 = 7. En la segunda iteración, el total se establece en su valor anterior (7), además de elemento, que es 3, por lo que se convierte en 7 +3 = 10. Después de que el tercer total más iteración tiene 21 años y después de que el cuarto total de iteración es 26 y el foreach completa. Después de la de cada bucle, se muestra el total en una etiqueta (por lo que alguien va a ver los frutos del trabajo apps!).

 

 

 

7-Lista de usuarios de navegación: ¿Cómo paso a través de una lista de la información?

App Inventor proporciona una para cada bloque para procesar una lista de información de una sola vez. Pero lo que si usted tiene una aplicación, como una presentación de diapositivas, en la que el usuario controla el movimiento a través de la lista? Para programar este comportamiento, va a utilizar una variable índice para realizar un seguimiento de su posición en la lista. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. ¿Cómo se crea una presentación de diapositivas de modo que el usuario hace clic para ir a la siguiente imagen?

En este ejemplo, el usuario hace clic en un botón para ordenar a través de una presentación de diapositivas de fotos. Las fotos son en el pic1.jpg archivos multimedia, pic2.jpg y pic2.jpg, todos los cuales han sido cargados en la aplicación. El índice variable se define para realizar un seguimiento de la fotografía actual el usuario está viendo. Cuando el usuario hace clic en “Siguiente”, el índice se revisa para ver si el usuario ha ido demasiado lejos. Si el índice es menor que la longitud de la lista (3 en este caso), entonces el índice se incrementa y el siguiente archivo de imagen se coloca en Image1.Picture.Vamos a caminar a través de este ejemplo. Supongamos que pic1.jpg está mostrando para empezar.Cuando el usuario hace clic en “Siguiente”, el índice se revisa y es menor que la longitud de la lista (1 <3).Así índice se incrementa desde su valor inicial, 1, a 2, y se selecciona pic2.jpg y se muestra.La próxima vez que el usuario hace clic en “Siguiente”, el índice es del 2 por lo que sigue siendo inferior a 3, por lo que el índice se incrementa a 3 y el tercer cuadro, “pic3.jpg”, se muestra.Cuando “Next” se hace clic de nuevo, el índice es 3 por lo que el caso de prueba falla. Los bloques dentro del si no se ejecutan, así que no pasa nada. De hecho, el usuario puede seguir haciendo clic en “Siguiente” para siempre sin efecto.Una nota musical necesita tiempo para jugar.

Ejemplo 2. ¿Cómo agregar un botón anterior para hacer la presentación de diapositivas ir hacia atrás?

Esta muestra es similar a la “siguiente” código del botón anterior pero ahora los índices disminuciones variables y la presentación de diapositivas va hacia atrás. Los controles si-prueba si el índice es mayor que 1, porque si ya es 1, la primera imagen se muestra y no podemos ir más atrás.

Ejemplo 3. ¿Cómo se hace eso por lo que el pase de diapositivas es de nuevo al frente?

En este ejemplo, cuando el usuario hace clic en “Siguiente” y el último objeto ya está mostrando, el índice se vuelve a 1 y el primer elemento, “pic1.jpg”, se muestra de nuevo. Los bloques de conjunto Image1.Picture están fuera del bloque if-else, por lo que una imagen diferente siempre se muestra cuando “Next” se hace clic.

 

 

8-¿Cómo se puede grabar información en una lista?

Ejemplo 1. ¿Cómo se puede grabar notas de entrada por el usuario?

Este comportamiento ilustra los conceptos básicos de una toma de notas o Twitter como aplicación. En primer lugar, define una NoteList variable y inicializarlo al bloque de crear una lista vacía. Esto marca elNoteList variable como una lista de lo que puede poner los elementos en ella.Cuando el usuario entra en una nota en el NoteTextBox y hace clic en “Enviar”, agregar elementos a la lista que se llama para añadir la entrada del usuario hasta el final de la lista. NoteList se fija entonces enListLabel.Text para mostrarla al usuario, y la entrada del usuario en NoteTextBox se queda en blanco para prepararlo para la siguiente entrada.Nota: estos datos en esta muestra no es persistente, es decir, las notas introducidas por el usuario sólo se grabarán para la ejecución actual de la aplicación. Si ha detenido la aplicación y volver a abrirla, la lista de notas estaría vacía. Para aprender cómo grabar datos continuamente, consulte estas notas

Ejemplo 2. ¿Cómo se puede grabar los números de teléfono de mensajes SMS entrantes y luego llamar a uno al azar para decirles que han ganado un premio?

Esta aplicación es ideal para los concursos. Usted le pide a su audiencia en un texto que, a continuación, hacer clic en un botón para elegir un ganador y suena el teléfono de los ganadores!En primer lugar, definir un incomingTexts variables e inicializar al bloque de crear una lista vacía. Esto marca la variable como una lista para que pueda poner los artículos en ella.Cuando un texto se presenta en, Texting.MessageReceived se dispara. La aplicación comprueba en primer lugar para asegurarse de que el número no está ya en la lista. Si no lo es, se añade el número de la lista.Cuando esté listo, el usuario puede hacer clic en el botón PickWinnerButton.Click. En este controlador de eventos, elegir un artículo al azar está llamada a tomar un afortunado ganador y un componentePhoneCall se utiliza para llamar al número.

9-PERSISTENCIA

¿Cómo grabar datos de forma constante?

Al ingresar información en su página de Facebook o de otra aplicación, y que la información se guarda por lo que es allí la próxima vez que usted visita, se trata de datos persistentes. Lo contrario – los datos que “muere” cuando se cierra la aplicación – se llama datos transitorios. Los datos persistentes se almacenan en un sistema de base de datos o archivo, y no sólo en la memoria a corto plazo de la aplicación. App Inventor proporciona el componente TinyDB para el almacenamiento de datos en el teléfono o el almacenamiento persistente de la tableta. Echa un vistazo a estos ejemplos del uso de TinyDB para almacenar datos de forma constante:

Ejemplo 1. ¿Cómo se graba un mensaje de forma persistente-de salir para un SMS de texto auto-respuesta?

Esta muestra es de una aplicación “contestador texto máquina” que le permite grabar un mensaje para ser enviado en respuesta automática a los textos enviados a su teléfono. Cuando el usuario introduce un mensaje, hay que recordar constantemente lo que el usuario no tenga que escribirla de nuevo cuando la aplicación se cierra y re-lanzado (a menos que el usuario desea cambiar el mensaje de bienvenida).Cuando el usuario introduce un mensaje nuevo y haga clic en “Enviar”, el mensaje que se escriba se copia de OutgoingMessageTextBox en el OutgoingMessageLabel, que muestra el mensaje actual.Entonces TinyDB.StoreValue está llamado a recordar la entrada persistentemente – para grabar el mensaje que acaba de introducir en la base de datos. Los nombres de las etiquetas “mensaje” de la entrada en la base de datos y el valor almacenado es lo que introduce el usuario. La última fila de bloques dentro SubmitButton.Click sólo en blanco el OutgoingMessageTextBox lo que está listo para una nueva entrada.El almacenamiento de los datos es sólo parte de la ecuación – también es necesario para recuperar los datos, para llevarlo de la base de datos en la aplicación. En esta aplicación, los datos se recuperan en caso Screen.Initialize, que se activa cuando se abre la aplicación. La llamada TinyDB.GetValue pide la base de datos para devolver los datos con etiqueta “mensaje”. Si el usuario ha enviado algo que antes, se devolverá la entrada. Si no hay nada aún en la base de datos, TinyDB.GetValue devuelve el texto envalueIfNotThere (un mensaje por defecto).

Ejemplo 2. ¿Cómo se pueden  grabar notas introducidas por el usuario?

El usuario introduce una nota y haga clic en “Enviar”. En SubmitButton.Click, el elemento se agrega a la NoteList variable y entonces la lista, en su conjunto, se almacena en la base de datos con las “notas” de la etiqueta. La nueva lista se muestra en el cuadro de texto ListLabel y se queda en blanco.Cuando la aplicación se cierra y vuelve a abrir sus puertas, Screen.Initialize se dispara. TinyDB.GetValuese llama para recuperar la lista previamente almacenada en la base de datos. El resultado se coloca en la variable NoteList. Si no hay notas en la base de datos, por ejemplo, la primera vez que se utiliza la aplicación, a continuación, devuelve el valor TinyDB.GetValue valueIfTagNotThere, que se especifica como una lista vacía.

Información relacionada

Para estas muestras, los datos se almacenan directamente en el dispositivo por lo que es “local” en el dispositivo y en realidad para un solo usuario (por ejemplo, la toma de notas aplicación es para notas privadas). Cuando los datos está destinado a ser compartido entre múltiples dispositivos y usuarios, se requiere una base de datos de web.

Las muestras sólo proporcionan visualización de la lista rudimentaria – las listas se vierten en una etiqueta y por defecto que aparece en la forma: (item1 elemento2).

 

 

10-Actividad Programada

¿Cómo repetir una acción, haciendo una pausa entre cada iteración?

¿Cómo se programa el tiempo? ¿Cómo se programa la animación? Con muchos lenguajes de programación, conceptos como animación son empujados hacia atrás en el plan de estudios – que no podría llegar hasta un año o dos de los cursos. Con el enfoque basado en eventos de App Inventor, se puede explorar la actividad programada y la animación como un principiante. El componente de reloj de alto nivel sirve como un despertador, y utiliza su evento Timer para desencadenar la actividad programada. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. ¿Cómo se reproduce un sonido cada segundo?

El evento Clock.Timer cuando se activa repetidamente. Piense en ello como un reloj despertador. La propiedad Clock.TimerInterval, determina con qué frecuencia se reproducirá el sonido. Por defecto es 1000 milisegundos (1 segundo), así que si no lo cambia el sonido por encima jugará cada segundo.Puede establecer esta propiedad en el diseñador o con bloques.

Ejemplo 2.  ¿Cómo se puede reproducir un sonido cada cinco segundos en lugar de cada segundo? (¿Cómo se mueve una nave espacial facilidad por la pantalla?)

X de la nave espacial de coordenadas define su ubicación horizontal. En cada evento de temporizador, la coordenada X se incrementa y la nave espacial parece más a la derecha. Si la propiedadClock.TimerInterval se establece en el valor predeterminado de 1000 ms, entonces el barco se moverá cada segundo, un movimiento muy agitado. Normalmente, para este tipo de animación, deberá definir el intervalo del temporizador a algo así como 40 ms.Pregunta: Una “imagen en movimiento” es en realidad una secuencia de imágenes mostradas muy rápido. La velocidad de fotogramas de una imagen en movimiento es el número de imágenes (frames) se muestra cada segundo. Si establece el intervalo del temporizador de la nave espacial de 40 m, ¿cuál será la velocidad de fotogramas para su “película”? ¿Cuál es la velocidad de cuadro típico de una película que se ve en el teatro? respuesta


Nota: para el movimiento de sprites, puede utilizar el reloj interno del sprite en lugar de un componente de reloj separada (ver detalles)

¿Cómo iniciar y detener una animación?

Así como usted puede dar vuelta a un reloj de alarma y se apaga, puede activar el temporizador de la componente de reloj y se apaga. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. Cuando el usuario hace clic en un botón de inicio, comience a reproducir un sonido cada segundo. Al hacer clic en un botón de parada, pare la reproducción del sonido.

El reloj tiene una propiedad Clock.TimerEnabled. Cuando es verdadera, la alarma del reloj está en lo que el temporizador se activará. Cuando Clock.TimerEnabled se establece en false el cronómetro está inactivo.

Cuando el usuario hace clic en el botón de inicio, TimerEnabled se establece en true para desbloquear la situación. Un segundo más tarde, y cada segundo después, el evento cuando Clock.Timer disparará y el sonido se reproducirá. Cuando el usuario hace clic en “Stop”, el temporizador se desactiva y el sonido deja de reproducirse.

Ejemplo 2. Cuando el usuario habla, empezar a mover la nave espacial.Cuando el usuario se sacude el teléfono, detener la nave se mueva.

Usted necesita dos componentes adicionales, un SpeechRecognizer que puede reconocer cuando el usuario está hablando, y un AccelerometerSensor que detecta cuando el dispositivo está siendo sacudió.El controlador de eventos Screen.Initialize se activa cuando se inicia la aplicación. El bloqueSpeechRecognizer.GetText abre el reconocedor de voz por lo que está esperando a que el usuario diga algo. Cuando el usuario habla, se activa el controlador de eventos SpeechRecognizer.AfterGettingText.Aquí, usted establece Clock.TimerEnabled en true para el temporizador reloj comenzará el desencadenamiento y el sprite comenzará a moverse. Cuando el usuario sacude el teléfono,AccelerometerSensor.Shaking se activa, el temporizador se desactiva para el sprite se detiene, y laSpeechRecognizer.GetText se llama a la espera de la próxima vez que el usuario habla.1. ¿Cómo se puede reproducir un sonido cada cinco segundos en lugar de cada segundo?

NOTA  :La propiedad Clock.TimerInterval determina la frecuencia desencadena el evento Clock.Timer. De forma predeterminada, el intervalo del temporizador se establece en 1.000 ms, o 1 segundo. Si lo establece en 5000, el evento Clock.Timer activará cada 5 segundos.

11-PROCEDIMIENTOS

 

¿Cómo y por qué debería definir un procedimiento?

Un procedimiento es una secuencia con nombre de instrucciones (bloques). En la vida real, cuando le digo a mi hijo a “cepillarse los dientes”, lo digo en serio para él para llevar a cabo un montón de pasos detallados, como el acaparamiento de su cepillo de dientes, abrir la pasta de dientes, poniéndolo sobre el cepillo de dientes, etc “cepillarse los dientes” es un procedimiento, un nombre para una secuencia de instrucciones. En App Inventor, puede definir un procedimiento, colocar bloques en él, y luego se puede llamar desde cualquier parte de la aplicación.

Considere el código a la derecha. Ambos controladores de eventos tienen código para mostrar una lista.Cuando un usuario envía una nueva entrada (cuando SubmitButton.Click), el elemento se agrega a la lista y la lista se muestra. Cuando se inicia la aplicación (cuando Screen.Initialize), los datos se recuperan de la base de datos en la lista, y se muestra la lista. Los bloques para mostrar una lista son los mismos en los dos controladores de eventos.

Este código está maduro para la refactorización. Refactoring significa modificar el código para que sea más legible y fácil de mantener, desde la perspectiva de un programador – refactorización no cambia el comportamiento de la aplicación en todos.

Extracción de código duplicado es una forma común de refactorizar. La idea básica es que el software cambia mucho: los insectos se encuentran que tienen que ser fijo, especificaciones de cómo el software se debe comportar el cambio, y el código, sobre todo un buen código, a menudo reutilizados. Cuando se realizan cambios en el software, usted no quiere tener que encontrar y también cambiar un montón de “dependencias”, por ejemplo, otro código que hace lo mismo. Es mejor tener código que hace una cosa en particular en un lugar, un procedimiento, y llame a ese procedimiento de todos los lugares que más lo necesitan. Entonces, si el procedimiento tiene que ser cambiado, se cambia en un solo lugar.

En los bloques de la derecha, el código para mostrar una lista aparece en dos controladores de eventos.Podemos refactorizar definiendo un DisplayList procedimiento, moviendo los bloques comunes en él, a continuación, llamarlo desde los dos controladores de eventos:

Ejemplo 1. ¿Cómo se define un procedimiento que muestra los elementos de una lista?

El código para mostrar la lista se encuentra ahora en el procedimiento DisplayList, y ambosSubmitButton.Click y Screen1.Initialize llamar al procedimiento. El bloqueo de llamadas representa todos los bloques dentro de la definición del procedimiento. Llamar a un procedimiento significa saltar en los bloques dentro del procedimiento y ejecutarlas. Una vez que se ejecutan todos los bloques, el control del programa retrocede al bloque por debajo de la llamada. Cuando se hace clic en el SubmitButton, agregar elementos a la lista se llama y luego se hace la llamada a DisplayList. El control del programa salta al procedimiento donde ListLabel.Text se establece en la cadena vacía y la de cada bloque se ejecuta.Cuando el de cada uno termina, el control del programa retrocede hasta debajo de la llamada DisplayListdentro del controlador de eventos cuando SubmitButton.Click – TextBox1.Text se establece en la cadena vacía y TinyDB.StoreValue se llama.El comportamiento, desde la perspectiva del usuario es el mismo, pero el código es mejor desde la perspectiva de un programador en términos de mantenimiento. Con este código refactorizado, si se encuentra un error en el código de visualización de la lista, o si se decide la lista se debe mostrar de una manera diferente (por ejemplo, las comas en entre elementos en lugar de nuevas líneas), el código sólo tiene que ser cambiado en un solo lugar.El diseño de su aplicación con los procedimientos del ejemplo anterior refactors código existente. A medida que se familiarice con los procedimientos, usted comenzará a incluirlos desde el principio de su diseño process.You ‘ll empezar a pensar en términos de una arquitectura de software más grande que consta de controladores de eventos, los procedimientos y las llamadas entre ellos. Como usted está diseñando una aplicación, antes de arrastrar en un solo bloque, usted pensará de los bloques de construcción – los procedimientos – que usted necesita.

Ejemplo 2. ¿Cómo se define un procedimiento que puede mostrar cualquier lista?

Un parámetro es un procedimiento de información necesita para hacer su trabajo. Se define parámetros para un procedimiento de modo que se puede reutilizar más general. Esta versión de DisplayList se le ha dado una lista de parámetros de modo que se puede utilizar para mostrar cualquier lista enviada a él. En este caso, el NoteList variable se envía como parámetro, pero usted podría llamarlo de algún otro lugar en su aplicación con una lista diferente. Tenga en cuenta que el procedimiento DisplayList original específico para el NoteList variables – no se podía utilizar para mostrar otras listas.Hay una cuestión más con este procedimiento que hace que sea menos que óptimo para su reutilización.Este procedimiento muestra la lista que lo envió en una etiqueta específica, ListLabel. Si su aplicación tiene varias listas y etiquetas, usted quiere que su procedimiento DisplayList para trabajar de manera más general. Los bloques siguientes muestran cómo hacerlo:

Ejemplo 3. ¿Cómo se define un procedimiento que ayuda a mostrar cualquier lista en cualquier etiqueta?

En lugar de realidad que muestra una lista, el procedimiento hace el trabajo de conversión de una variable de lista en texto que se puede poner en cualquier etiqueta. El procedimiento es genérico – que toma cualquier lista y devuelve el texto, y no se refiere a ninguno de los componentes específicos. Cualquier código que llama a este procedimiento, por ejemplo, Screen1.Initialize, proporcionará la lista específica como un parámetro para listToText, y colocará el texto resultante en una etiqueta específica.

 

 

Fuente  aqui