viernes, 29 de mayo de 2015

Project Soli, el futuro llega de la mano de Google


Uno de los proyectos más innovadores e interesantes que ha presentado Google en su conferencia I/O 2015 es el llamado Project Soli, que consiste en tecnología de radar aplicada a dispositivos electrónicos de modo que podamos controlar prácticamente cualquier dispositivo con sólo algunos gestos y movimientos de nuestras manos.

Si bien existen otras propuestas para lograr el control de dispositivos mediante movimientos, ninguno de ellos había propuesto usar tecnología de radar (que no está limitada por la posición del emisor-sensor o por los materiales que lo rodean) para tales fines.

Este es un proyecto en desarrollo y puede que falte mucho tiempo para que lo veamos convertido en realidad, sin embargo no deja de ser prometedor y bastante sorprendente. Miren el video de presentación para que se den una idea de lo que podría esperarnos en el futuro próximo de la mano de Google:


Lógica de Programación (22) - Estructuras repetitivas anidadas

Así como podemos anidar estructuras de selección, también es posible insertar un ciclo dentro de otro. Las reglas para construir estructuras repetitivas anidadas son las mismas en ambos casos: la estructura interna debe estar incluida totalmente dentro de una estructura externa y no puede haber solapamiento. En esta gráfica vemos algunos ejemplos de cómo deberían verse (estructuralmente) los ciclos anidados:



Las variables de control de los ciclos toman valores de modo tal que por cada valor de la variable de control del ciclo externo se debe ejecutar totalmente el ciclo interno. Es posible anidar cualquier tipo de estructura repetitiva, siempre y cuando se cumplan las condiciones de la figura anterior.

El mejor ejemplo que tenemos de ciclos anidados es el de un reloj, ya que por cada vuelta de la manecilla de las horas (el ciclo externo), la manecilla de los minutos (el ciclo interno) debe dar 60 vueltas; a su vez, por cada vuelta de la manecilla de los minutos, la de los segundos debe completar 60 vueltas también. Un algoritmo para representar el funcionamiento de un reloj se vería algo así:

algoritmo Reloj
var
   entero: hora, minuto, segundo
inicio
   desde hora <- 0 hasta 23 hacer
      desde minuto <- 0 hasta 59 hacer
         desde segundo <- 0 hasta 59 hacer
            escribir (hora + ";" + minuto + ":" + segundo)
         fin_desde
      fin_desde
   fin_desde
fin

En este ejemplo, el ciclo controlado por la variable segundo deberá dar 60 vueltas para que el ciclo controlado por minuto pueda dar una vuelta. A su vez, este último ciclo deberá dar 60 vueltas para que el ciclo más externo, el que es controlado por la variable hora pueda dar una vuelta.

Mira cómo funciona este programa en C#:



Observa que la salida de este programa nos muestra la siguiente secuencia:
0:0:0
0:0:1
0:0:2
0:0:3
0:0:4
0:0:5
0:0:6
0:0:7
...
0:0:59
0:1:0
0:1:1
0:1:2
0:1:3
0:1:4
0:1:5
0:1:6
0:1:7
...
0:1:59
0:2:0
0:2:1
0:2:2
0:2:3
0:2:4
0:2:5
0:2:6
0:2:7

Lo cual concuerda perfectamente con el comportamiento que esperamos para nuestro programa.

En este otro algoritmo, visualizamos las tablas de multiplicar de los números del 1 al 9.

algoritmo Tablas_Multiplicar
var
   entero: i,j, prod
inicio
   desde i<-1 hasta 9 hacer
      desde j<-1 hasta 10 hacer
         escribir(i + "x" + j + "=" + prod)
      fin_desde
   fin_desde
fin

En este algoritmo, el ciclo interno, controlado por j deberá dar 10 vueltas completas antes de que el ciclo exterior, controlado por i, pueda dar una vuelta, dándonos una salida similar a la siguiente:

1x1=1
1x2=2
1x3=3
...
1x10=10
2x1=2
2x2=4
2x3=6
...
2x10=20
3x1=3
3x2=6
3x3=9
...

Mira cómo se ve este programa funcionando en C#



En los dos ejemplos anteriores hemos usado ciclos desde pero, ¿podemos anidar otra clase de estructuras repetitivas? la respuesta es: sí, si podemos. Mira este otro ejemplo. Ahora vamos a hacer un algoritmo que nos permita calcular el promedio de las 5 calificaciones obtenidas por un grupo de alumnos (del cual no sabemos el tamaño) y vamos a ir mostrando en cada iteración el promedio obtenido; al mismo tiempo, vamos a mostrar el promedio general del grupo una vez que se hayan terminado de capturar las calificaciones de todos los alumnos.

algoritmo promedios
var
   entero: i, cal, suma_alum, suma_grupo, num_alumnos
   real: promedio_alum, promedio_grupo
   cadena: respuesta
inicio
   num_alumnos<-1
   suma_grupo<-0
   hacer
      suma_alum<-0
      desde i<-1 hasta 5 hacer
         escribir("Dame la calificación número " + i + " del alumno " + num_alumnos)
         leer(cal)
         suma_alum <- suma_alum + cal
      fin_desde
      promedio_alum = suma_alum / 5
      escribir ("El promedio del alumno número " + i + " es de " + promedio_alum)
      suma_grupo<- suma_grupo + promedio_alum

      escribir ("¿Deseas capturar las calificaciones de otro alumno? S/N")
      leer(respuesta)
      si (respuesta="S") entonces
         num_alumnos++
      fin_si
   fin_hacer
   promedio_grupo = suma_grupo / num_alumnos
   escribir("El promedio total del grupo es " + promedio_grupo)
fin

Prueba el programa en C#:



Como vemos, en este algoritmo anidamos un ciclo desde dentro de un ciclo hacer-mientras, lo cual comprueba que podemos anidar cualquier clase de estructuras haciendo a nuestros programas bastante versátiles y potentes.

Es con esta lección que damos cierre a la tercera sección de nuestro curso de Lógica de Programación. En la siguiente sección aprenderemos todo sobre la creación de subprocedimientos y funciones para ogranizar mejor nuestros programas, especialmente cuando se trata de aplicaciones más extensas y complejas.

Pero por ahora, toca practicar. Resuelve estas actividades propuestas y no dudes en contactarme si tienes alguna duda o comentario al respecto. ¡Hasta la próxima!

ACTIVIDADES DE APRENDIZAJE

1. Escribe un programa que muestre una cuadrícula de m filas por n columnas y un caracter que el usuario desee mostrar. Por ejemplo, si el usuario decide mostrar una cuadrícula de 5 filas por 3 columnas mostrando una letra x, debería verse algo como esto:
xxx
xxx
xxx
xxx
xxx

2. Crea un algoritmo que simule el funcionamiento de una caja registradora. Por cada artículo se debe leer la cantidad, el precio unitario y la descripción. Al final debe mostrarse una lista de los artículos comprados, la cantidad de artículos y el total a pagar, incluyendo además el IVA del 16%.

3. Modifica el ejemplo de los promedios creado en esta lección, pero ahora supón que no conocemos cuántas calificaciones se van a capturar por cada alumno. Es decir, un alumno puede tener 3 calificaciones, otro puede tener 5, otro puede sólo tener 1, etcétera.

jueves, 28 de mayo de 2015

Lógica de Programación (21) - Comparación de los ciclos mientras, hacer-mientras, repetir y desde


Hemos aprendido que en la mayoría de los lenguajes de programación contamos con tres poderosas estructuras que nos permiten repetir una sentencia o conjunto de sentencias en nuestros programas: las estructuras mientras, hacer-mientras y repetir. Y si bien cada una tiene sus características propias, también pueden llegar a causar confusión debido a las características que comparten. Por ello, en esta lección vamos a recapitular las principales diferencias entre estas estructuras y daremos algunos consejos de cómo elegir la más adecuada para nuestros programas.

Vamos a resumirlo en una tabla sencilla que bien nos puede servir como "acordeón" para escribir nuestros primeros programas mientras desarrollamos la habilidad de emplearlas a discreción a través de la experiencia.



Estructura
Características y usos
mientras-hacer
  • Su uso más frecuente es cuando la repetición no está controlada por un contador, o cuando no sabemos a ciencia cierta cuántas veces se va a repetir el ciclo.
  • La prueba de la condición de repetición ocurre al inicio del ciclo, por lo que el cuerpo de instrucciones del ciclo podría no ejecutarse ni una sola vez.
  • Se debe usar cuando se desea saltarse la repetición del ciclo si la condición de prueba es falsa.
hacer-mientras
  • Se usa cuando la repetición no está controlada por un contador, o cuando no sabemos a ciencia cierta cuántas veces se va a repetir el ciclo.
  • La prueba de la condición de repetición ocurre al final del ciclo, por lo que el cuerpo de instrucciones del ciclo se ejecuta por lo menos una vez.
  • Se usa cuando se desea saltarse la repetición del ciclo si la condición de prueba es falsa.
repetir - hasta_que
  • Se usa cuando la repetición no está controlada por un contador, o cuando no sabemos a ciencia cierta cuántas veces se va a repetir el ciclo.
  • La prueba de la condición de repetición ocurre al final del ciclo, por lo que el cuerpo de instrucciones del mismo se ejecuta por lo menos una vez.
  • Se usa cuando se desea repetir el cuerpo del ciclo hasta que la condición sea falsa, es decir, se repite mientras la condición sea verdadera.
desde-hacer
  • Ciclo de conteo que se usa cuando el número de repeticiones se conoce por adelantado y puede ser controlado por un contador.
  • La prueba de la condición de repetición se ejecuta al inicio del ciclo, por lo que el cuerpo de instrucciones del mismo podría no ejecutarse ni una sola vez. Aunque esto último implicaría un muy mal diseño y empleo de la estructura.
  • El cuerpo del ciclo se repite mientras que la variable contador alcance el valor límite establecido al inicio del ciclo.

En la siguiente lección vamos a aprender la forma correcta de anidar ciclos para lograr que nuestros programas ejecuten repeticiones dentro de cada repetición, como ocurre en el caso de un reloj. Pero ya nos adentraremos en eso a detalle. ¡Hasta la próxima!


Enlace: Índice del curso


Google Inbox, ya abierto para todos, sin invitaciones



En Octubre pasado, la gente de Google nos presentó Inbox, una nueva aplicación de email que propone una forma más eficiente de trabajar con el correo electrónico mediante la clasificación inteligente en categorías y la inclusión de recordatorios y otras novedades.



Cuando se presentó, Inbox era accesible sólo con invitación, como ocurre con muchos de los productos de la compañía. Sin embargo, el dia de hoy, Google anuncia que Inbox está finalmente abierto a todos los usuarios, sin invitaciones, tanto en su versión web como en su aplicación para Android por lo que ya pueden acceder a ella libremente.

Enlaces:



Google I/O 2015, en vivo en IsraelCapetillo.com



¿Quieren enterarse de las novedades que Google tiene para nosotros este año y que próximamente estarán disponibles para todos? ¡Sigan en directo el Google I/O 2015 aqui mismo! ¡Está a punto de comenzar!

(Y si llegaron a esta nota después de que haya terminado, no se preocupen, pueden ver la conferencia grabada en YouTube en este mismo video ;) )


miércoles, 27 de mayo de 2015

MalMath, app para resolver ecuaciones paso a paso


MalMath es una calculadora para Android que resuelve ecuaciones simples y complejas y nos entrega una explicación de la resolución paso a paso a fin de que podamos aprender el proceso a detalle.

La calculadora cuenta también con funciones de creación de gráficas y hasta un generador de ecuaciones para practicar, en el cual podemos definir el nivel de dificultad para ponernos retos cada vez más interesantes.



Los creadores insisten en que esta es una app destinada a ayudar en las tareas al mostrar desde el planteamiento del problema hasta su resolución detallada y los gráficos correspondientes a la solución. Aunque bien sabemos que habrá estudiantes que lo usen como "acordeón" para resolver rápidamente la tarea sin pensar en lo que están haciendo. 



Como toda herramienta, puede usarse para bien o para mal. Todo depende de la persona que la use.

Enlaces:



Lógica de Programación (20) - Sentencias de salto interrumpir y continuar


Aunque no es una práctica muy extendida en el ámbito de la programación estructurada, en ocasiones es necesario disponer de una manera de salir anticipadamente de un ciclo o de continuar con la ejecución de ciertas sentencias cuando se cumpla una condición determinada. A estas sentencias se les llama sentencias de salto y son dos: interrumpir y continuar.

Sentencia interrumpir.
En ocasiones, un programador desea terminar un ciclo en un lugar determinado del cuerpo del mismo en vez de esperar a que el ciclo termine de modo natural por su entrada o por su salida. Un modo de conseguir esto, siempre que se use con precaución y con un control completo del ciclo, es mediante la sentencia interrumpir.

Esta sentencia se puede usar para terminar una estructura de repetición y cuando se ejecuta produce que el flujo del programa salte fuera a la siguiente sentencia inmediata fuera del ciclo. La sentencia interrumpir debe colocarse en el interior del cuerpo del ciclo para implementar su funcionamiento. Mira el siguiente ejemplo, en el cual interrumpimos el ciclo una vez que el usuario introduce un número entre 1000 y 2000.

algoritmo Interrumpir_Ciclo
var
   entero: num
inicio
   hacer
      escribir ('Introduce un número entre 1000 y 2000')
      leer (num)
      si (num < 1000 o num > 2000) entonces
         escribir ('Número no válido. Por favor introduce otro número.')
      si_no
         interrumpir
      fin_si
   mientras (1 = 1)
fin

Este es un ejemplo peculiar. Observa que la condición de repetición del ciclo hacer-mientras es una que siempre es verdadera (1=1), por lo que, en teoría, estaríamos ante un ciclo infinito. Sin embargo, dentro del cuerpo del ciclo incluimos la sentencia interrumpir, la cual se activará al momento que el usuario introduzca un número cuyo valor esté dentro del rango esperado.

Observa el programa funcionando en C#.



Sentencia continuar
Esta sentencia hace que el flujo de ejecución "se brinque" el resto del cuerpo de un ciclo para continuar con la siguiente iteración del ciclo. Esta característica suele ser útil en algunas circunstancias. Esta sentencia no hace que el ciclo termine prematuramente, sino que sólo permite saltarnos una o varias de sus iteraciones.

En el siguiente ejemplo, mostramos en pantalla todos los números entre 0 y 20 que NO son múltiplos de 4.

algoritmo Múltiplos_4
var
   entero: i
inicio
   desde i<- 0 hasta  20 hacer
      si (i mod 4 = 0) entonces
         continuar
      fin_si
      escribir (i)
   fin_desde
fin

Mira cómo funciona en C#



Como podemos ver, no importa cuál sea la estructura de repetición que ocupemos, siempre hay una forma de modificar su comportamiento mediante estas dos sentencias. En las próximas lecciones haremos una comparación de cada una de las estructuras repetitivas que hemos aprendido, además de aprender la forma en que podemos anidar estas estructuras para hacer nuestros programas aún más potentes. ¡Hasta la próxima!




martes, 26 de mayo de 2015

Windows 10 Phone Companion, para integrar Win 10 con Android e iOS



Con cada día que pasa, Microsoft nos sigue sorprendiendo con su nuevo enfoque respecto a su apertura y extensión hacia otras plataformas. Satya Nadella, CEO de Microsoft, ha dejado claro que quiere que Windows sea más que un sistema operativo: quiere que se convierta en toda una experiencia multiplataformas independientemente del sistema operativo que se tenga. De ahi que veamos cada vez más aplicaciones destinadas a dispositivos Android e iOS con la intención de que usemos sus productos sin importar qué dispositivo movil utilicemos.

Hoy la noticia es Phone Companion, una app para Windows 10 que permitirá conectar y sincronizar las fotos, videos, notas e incluso otras aplicaciones entre nuestra computadora y nuestro dispositivo Android o iOS. Mediante Phone Companion podremos también acceder en ambas plataformas a Cortana, el asistente personal de Windows que hará competencia a Siri.



Sin duda esta nueva actitud de apertura de Microsoft va a resultar en muchos beneficios para todos los usuarios.


Enlace: Windows Blog


Scratch, programación para los más pequeños



Son cada vez más los países del mundo que incluyen en sus programas escolares oficiales la enseñanza de la programación de computadoras como una materia obligatoria desde los niveles más básicos. Así como la enseñanza del inglés como segunda lengua va cobrando fuerza en los sistemas educativos, la programación de computadoras se va abriendo camino como una habilidad esencial para las nuevas generaciones, tan inmersas en la era digital.

Pero mientras esa realidad educativa se implementa en los programas de estudios oficiales de nuestro querido país (que, para como vamos, seguro faltará mucho), podemos encontrar muy buenas herramientas gratuitas con las que los más pequeños de la casa pueden aprender a programar computadoras desde edades muy tempranas.

Tal es el caso de Scratch, una aplicación para Android que facilita a los niños el aprendizaje de la programación mediante juegos y actividades didácticas muy divertidas. La interfaz de la aplicación es muy colorida y sencilla para que los niños se vean atraídos a usarla. Scratch cuenta con dos versiones: la normal y una llamada Scratch Jr, para niños de 5 años en delante. 



La aplicación incluye tutoriales, tests y muchísimos bloques de programación prediseñados, todo diseñado de un modo muy didáctico para que los pequeños aprendan una habilidad que seguramente les será muy útil en el futuro, sin importar cuál sea el campo de actividad en el que se desenvuelvan.

Si quieren instalar y probar Scratch, dense una vuelta por su sitio oficial o descarguen directamente la aplicación desde Google Play. También, si quieren encontrar buenos recursos y tutoriales para iniciar con Scratch, encontrarán un sitio muy completo dando clic aqui.


Enlaces:





viernes, 22 de mayo de 2015

Taller GRATUITO: Internet de las cosas


¿Sabían que actualmente hay más cosas conectadas a internet que personas en la misma situación? Teléfonos, televisiones, tablets, computadoras, automóviles, relojes y hasta refrigeradores y hornos de microondas: vivimos en un mundo de dispositivos conectados a internet que se comunican y transfieren información entre sí, muchas veces con poca o nula intervención humana. Este es el mundo del Internet de las Cosas (IoT, por sus siglas en inglés) y si quieren profundizar más en este concepto o en las grandes oportunidades de desarrollo que presenta, no se pierdan el taller gratuito sobre el tema que se va a impartir en dos partes el próximo Jueves 28 de mayo. 

El taller será totalmente online y GRATIS, gracias a Donweb, empresa de hosting que provee el contenido del taller a través de dos especialistas en el tema: el ingeniero español Enrique Romero, un referente en el Internet de las Cosas que desde hace años viene incorporando e investigando las nuevas tendencias tecnológicas y Matías Albalá, un joven emprendedor tecnológico con más de 10 años de experiencia desarrollando distintos proyectos que conectan el mundo electrónico con la web.

Nada más entren al sitio oficial del taller y regístrense. ¡Hay pocos lugares! ¡Aprovechen!


jueves, 14 de mayo de 2015

Ibas bien, Microsoft...

 
Windows 10 promete ser la versión definitiva del sistema operativo de Microsoft y, por lo que hemos conocido sobre el tema en las últimas semanas, parece ser que así será. Tiene muchas cualidades que lo hacen muy atractivo y que podrían, por fin, redimir a Microsoft ante los ojos del mundo después de desaciertos tan garrafales como Windows Vista o el poco exitoso Windows 8. 

Todo parecía ir muy bien hasta ayer, cuando Microsoft decidió dar a conocer en su blog que, a pesar de todos los cambios recientes en sus prácticas, hay una que se niega a abandonar: la aberrante costumbre de sacar muchas versiones distintas del mismo Sistema Operativo, causando confusión en más de un usuario de la plataforma.

Según el blog de Microsoft, estas serán las versiones de Windows 10 que estarán disponibles en el mercado:
  • Windows 10 Home
  • Windows 10 Pro edition
  • Windows 10 Mobile
  • Windows 10 Enterprise
  • Windows 10 Mobile Enterprise edition
  • Windows 10 Education
  • Windows 10 IoT Core
La versión más popular será, seguramente, Windows 10 Home, dado que es la que está orientada al usuario promedio y con toda seguridad la veremos preinstalada en muchas computadoras y laptops del mercado. Las demás versiones cambian sus prestaciones (y sus precios) según el mercado al que van dirigidos. 

Ni modo, supongo que no todo puede cambiar de la noche a la mañana.

Fuente: Windows Blog

martes, 12 de mayo de 2015

Lógica de Programación (19) - Estructura desde

La característica común que comparten las estructuras repetitivas que hemos conocido hasta ahora es que el número de repeticiones de cada ciclo es relativamente indeterminado. Como ya estudiamos, en algunas de estas estructuras, dependiendo del cumplimiento de ciertas condiciones, el ciclo puede no repetirse ni una sola vez o puede repetirse muchísimas veces. Sin embargo puede que no sepamos cuántas veces se va a repetir el ciclo una vez que lo iniciemos.

Usando incrementos sucesivos, podemos lograr repeticiones de código.


Pero para aquellos casos en los que la cantidad de repeticiones del ciclo sea una cantidad cierta y conocida desde antes de iniciar la repetición, existe la estructura repetitiva desde, cuya sintaxis es la siguiente:

desde variable_de control <- valor_inicial hasta valor_final hacer
   sentencias
fin_desde

La estructura desde comienza con un valor inicial de la variable de control y es entonces que se ejecutan las sentencias que forman el cuerpo del ciclo. La variable de control entonces se incrementa en uno automáticamente y, si este nuevo valor no excede al final, se ejecutan de nuevo las acciones. Por lo tanto, las acciones que forman el cuerpo del ciclo se ejecutan para cada valor de la variable de control, desde el valor inicial hasta el valor final, con el incremento de uno en uno.

El incremento de la variable de control siempre es 1, a menos que se indique expresamente lo contrario. De requerir un incremento distinto a uno, lo expresaríamos del siguiente modo:

desde variable_de control <- valor_inicial hasta valor_final incremento <valor> hacer
   sentencias
fin_desde

Si el valor inicial de la variable de control es menor que el valor final, los incrementos deben ser positivos, ya que en caso contrario la secuencia de acciones no se ejecutaría. De igual modo, si el valor inicial es mayor que el valor final, el incremento debe ser negativo, es decir, sería un decremento. En este último caso, la estructura desde se representaría de este modo:

desde variable_de control <- valor_inicial hasta valor_final decremento <valor> hacer
   sentencias
fin_desde

Mira estos ejemplos:

1. Escribir un programa que muestre todos los números pares que hay entre 1 y 100.

algoritmo Pares
var
   entero: num
inicio
   desde num <- 1 hasta 100 hacer
      si (num mod 2 = 0) entonces
         escribir (num)
      fin_si
   fin_desde
fin

En este ejemplo, usamos la estructura desde para recorrer todos los números entre 1 y 100, aunque sólo escribimos en pantalla los que son pares, es decir, aquellos en los que num mod 2 es igual a 0.

Aquí puedes probar cómo funciona el algoritmo escrito en C#:



2. Escribir un programa que muestre todos los números impares que hay entre 1 y 100

algoritmo Impares
var
   entero: num
inicio
   desde num <- 1 hasta 100 incremento 2 hacer
      escribir (num)
   fin_desde
fin

En este caso hemos usado un incremento de 2 para poder mostrar los números impares. Mira el código en C#:



3. Escribir un programa que muestre los números pares que hay entre 1 y 100 en orden descendente

algoritmo Pares_Desc
var
   entero: num
inicio
   desde num <- 100 hasta 1 decremento 1 hacer
      si (num mod 2 = 0) entonces
         escribir (num)
      fin_si
   fin_desde
fin

Para este algoritmo usamos un decremento de modo que los números pares se muestren en orden inverso. Ahora iniciamos nuestro conteo desde el 100 y vamos descendiendo de 1 en 1 hasta terminar en 1.

Este es el programa corriendo en C#:





Como podemos observar, la estructura desde nos sirve muy bien para aquellas situaciones en las que el número de repeticiones que deseamos hacer es cierto y conocido. En cualquiera de estos ejemplos bien podríamos modificar los valores inicial y final para determinar cuántas veces debe repetirse el ciclo. Si bien el número de repeticiones es conocido, también hay maneras de interrumpir la repetición y lograr que el ciclo termine anticipadamente, pero eso lo estudiaremos a fondo en las siguientes lecciones. Por ahora toca practicar esta nueva estructura. ¡Hasta la próxima!


ACTIVIDADES DE APRENDIZAJE

  1. Escribe un programa que imprima en pantalla las primeras 5 potencias de 2. es decir, 21=2, 22=4, 23=8, etc.
  2. Modifica el programa anterior para que ahora sea el usuario quien indique qué número servirá como base y cuántas potencias desea mostrar.
  3. Escribe un programa que escriba en pantalla la tabla de multiplicar de un número dado por el usuario. Por ejemplo, si el usuario introduce un 3, el programa deberá mostrar la tabla del 3:3x1 = 3, 3x2 = 6, 3x3 = 9, etc.
  4. El factorial de un número n (representado como n!) se define como la multiplicación en secuencia de todos los números que hay entre 1 y n. Por ejemplo, 5! = 5x4x3x2x1, 7! = 7x6x5x4x3x2x1. Escribe un programa que calcule el factorial de un número dado por el usuario.

Enlace: Índice del curso




viernes, 8 de mayo de 2015

Windows 10 será 'la última versión de Windows'


Pero no se alarmen. Eso no quiere decir que Windows va a dejar de existir. Más bien se trata del nuevo modo que Microsoft estará empleando para actualizar su popular sistema operativo. Hasta ahora hemos visto cómo la compañía libera y comercializa nuevas versiones de su sistema operativo cada ciertos años. Sin embargo, eso está por cambiar.

Ahora, en vez de tener grandes actualizaciones, tendremos cambios y mejoras progresivas que se irán incorporando casi sin que el usuario se de cuenta. Más o menos del mismo modo como se actualiza el navegador Google Chrome: los cambios ocurren tras bambalinas sin que el usuario sea consciente del número de versión que actualmente tiene instalada (alguien sabe, por cierto, ¿cuál es la versión de Chrome que está instalada en su computadora?).

Esto será posible porque los ingenieros y desarrolladores de Windows 10 han empezado a trabajar en los diferentes componentes del sistema operativo por separado y de manera independiente, de modo que pueden irse actualizando y mejorando progresivamente componentes independientes (como, por ejemplo, el menú Inicio) en lugar de esperar a que se libere una nueva versión del sistema operativo para poder incorporar los cambios. Esto quiere decir que, al menos en el futuro cercano, no habrá Windows 11 o 12.

Esto es un cambio muy significativo en el modo en que trabaja Microsoft, pues los lanzamientos de las nuevas versiones de Windows siempre eran anunciadas con bombo y platillo, lo cual ha contribuido a posicionar a la marca en el nivel en el que actualmente se encuentra. 

Una nueva era, un nuevo Microsoft. Bien por ellos.

Fuente: The Verge


jueves, 7 de mayo de 2015

Lógica de Programación (18) - Estructura repetir - hasta_que



Existen muchas situaciones en las que se desea que un ciclo se ejecute al menos una vez antes de comprobar la condición de repetición. En la estructura mientras, si el valor de la expresión booleana es inicialmente falso, el cuerpo del ciclo no se ejecutará; por otro lado, en la estructura hacer-mientras, el cuerpo del ciclo se ejecutará mientras que la expresión booleana sea verdadera. Pero, ¿qué sucede si necesitamos que el ciclo se repita mientras que la expresión booleana sea falsa? Ahi es donde entra en juego la estructura repetir - hasta_que.

Esta es la sintaxis de la estructura repetir - hasta_que:

repetir
   sentencias
hasta_que <condición>

Como ya hemos dicho, el cuerpo del ciclo repetir - hasta_que se repetirá mientras que la condición sea falsa y se detendrá hasta que sea verdadera. Justo lo opuesto a la estructura hacer-mientras.

Para comprender mejor el funcionamiento, vamos a repetir el primer ejemplo de la lección anterior, en el cual leemos las calificaciones de un grupo de alumnos (no sabemos cuántos) y luego calculamos su promedio; sólo que esta vez lo vamos a resolver usando la estructura repetir - hasta_que

algoritmo Promedio
var
   entero: cal, suma, cont
   real: promedio
   caracter: respuesta
inicio
   suma <- 0
   cont <- 0
   repetir
      escribir("Escribe la calificación:")
      leer(cal)
      suma <- suma + cal
      cont++;
      escribir("¿Deseas capturar otra calificación?" S/N")
      leer (resp)   
   hasta que (resp = 'N') o (resp = 'n')
   promedio <- suma/cont
   escribir("El promedio de las calificaciones capturadas es: " + promedio)
fin

Como puedes ver, al cambiar de estructura lo único que estamos cambiando es la forma como evaluaremos la condición que decidirá si se repite el ciclo o no. En la lección anterior usamos la estructura hacer - mientras y, por lo tanto, la condición que determinaba si el ciclo se repetía o no era:

   mientras (resp = 'S') o (resp = 's')

Esto quiere decir que repetíamos el ciclo mientras que fuera verdadero que la respuesta del usuario era 'S'. Usando la estructura repetir - hasta_que, esa condición cambia a

   mientras (resp = 'N') o (resp = 'n')

dado que ahora dejaremos que el ciclo se repita hasta que el usuario introduzca una 'N', es decir, lo repetiremos mientras que sea falso que la respuesta del usuario es 'S'.

Mira este otro ejemplo:

algoritmo Serie
var
   entero: contador
inicio
   contador <- 1
   repetir
      escribir (contador)
      contador++
   hasta_que contador > 30
fin

En este caso, estamos simplemente escribiendo en pantalla los números del 1 al 30. Iniciamos la variable contador en 1 y la mostramos en pantalla hasta que su valor sea mayor que 30 o, en otras palabras, mientras que sea falso que es mayor que 30.

Para resumir, podemos citar estas dos diferencias clave entre las estructuras mientras y repetir:
  • La estructura mientras termina cuando la condición es falsa, mientras que repetir - hasta_que termina cuando la condición es verdadera.
  • En la estructura repetir - hasta_que, el cuerpo del ciclo se ejecuta siempre al menos una vez; por el contrario, la estructura mientras es más general y permite la posibilidad de que el ciclo no se ejecute ni una vez. Para usar la estructura repetir-hasta_que, se debe estar 100% seguro de que el cuerpo del ciclo, bajo cualquier circunstancia, se repetirá al menos una vez.


En la próxima lección vamos a conocer una estructura de repetición más: la estructura desde. Por lo pronto, es hora de practicar. ¡Hasta la próxima!

ACTIVIDADES DE APRENDIZAJE

  • Repite los cuatro ejercicios de la lección anterior, pero ahora usa la estructura repetir - hasta_que.






miércoles, 6 de mayo de 2015

Orígenes IV: Las primeras versiones de los gadgets de hoy

Son muchos los gadgets a los que tenemos acceso hoy y que todos son más o menos útiles: celulares, tabletas, consolas de videojuegos, laptops, etc. Hay algunos, de hecho, sin los cuales ya no podemos vivir. Pero ¿cómo empezó toda esta dependencia de la tecnología? Gracias a iGyaan.in, he aquí las primeras versiones de 5 de estos gadgets sin los que hoy nuestra vida sería muy distinta:

1. El primer celular




El Motorola DynaTAC, inventado por Martin Cooper en 1973, es el primer teléfono celular que vio la luz. Medía aproximadamente 23 centímetros y pesaba unos 1.1 kg. Su batería duraba 35 minutos en llamada y le tomaba 10 horas para volverse a cargar. Sus únicas funciones eran marcar, escuchar y hablar. Para lo que debería servir un celular, pues. ¡Qué lejos estaba del concepto de smartphone de nuestros dias!

2. La primera computadora portátil




Se llamaba 'Osborne 1' y fue inventada por Adam Osborne en 1981. El tamaño de su pantalla era de a penas 5" (el tamaño promedio de la pantalla de cualquier smartphone actual), tenía 2 ranuras para discos de 5 1/4 ", módem y un teclado colocado en una de las tapas de la computadora. Debido a su peso (11 kg) y robustez, era considerada una computadora portátil más que una laptop. Su precio de salida en aquel entonces era de 1795 usd (unos 27,000 pesos al tipo de cambio de hoy).

3. La primera consola de videojuegos




Ralph H. Baer inventó la 'Brown Box' después de varios prototipos desarrollados entre 1967 y 1969. Esta curiosa cajita estaba formada por varios circuitos diseñados para salida de video y varios videojuegos preinstalados como Handball o Ping Pong, los cuales podían ser controlados mediante 2 controles formados por switches y diales giratorios. Toda una revolución para su tiempo, sin duda.

4. El primer smartwatch




Por mucho que los de Apple quieran hacernos creer otra cosa, la idea del smartwatch no es nada novedosa. Fue en 2001 cuando IBM, en asociación con Citizen, creó el WatchPad, un primitivo smartwatch con Linux que poseía una pantalla QVGA (320 x 240 pixeles) y aplicaciones para mensajería, calendario y conexión a otros dispositivos mediante Bluetooth. Bastante impresionante para su tiempo.

5. La primera Laptop




Fue en 1989 cuando Apple sacó al mercado la llamada Apple Macintosh Portable y contaba con un procesador Motorola 68000 de 16MHz, 1MB de RAM (un smartphone de hoy tiene 1024 veces más memoria, para que se den una idea) y capacidad de almacenamiento de 40 MB (lo que hoy ocupan unas 10 canciones, más o menos). Su pantalla era de 9.8 pulgadas con una resolución de 640x400 y su peso aproximado era de 7.2 kg. Por eso, los buenazos de Apple te regalaban una mochila para cargarla cuando adquirías una.


Comparar estos primeros gadgets con sus contrapartes modernas nos enseña mucho sobre los grandes pasos que ha dado la tecnología en un tiempo relativamente corto. Y sin duda nos pone a pensar en qué veremos en el futuro próximo, ¿no creen?


Fuente: iGyaan.in

Copyright © IsraelCapetillo.com - Un blog de tecnología, noticias geek y más Compartido por Gooyaabi Templates | Powered By Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com