Ejercicios de Programación: Calculemos el Factorial de un número

Calculemos el factorial de un número

Debido a qué me encuentro cansado después de un largo día en el trabajo, será una entrada breve, pero siempre con el objetivo de compartir algo por día, para así también me sirva como repaso, en esta ocasión, simplemente voy a mostrarles algunas maneras que conozco para calcular el Factorial de un número, claro, utilizando el lenguaje Python.

Nota: Para poder realizar la solución de un problema, primero que nada debemos entenderlo, en este caso, el problema es obtener el factorial de un número cualquiera, a estas alturas espero sepas como se calcula el factorial de un número, pero si no es así, déjame mostrarte. El factorial de un número, se calcula multiplicando este número por todos los números anteriores a él hasta el 1. Esto es:

6! = 6 * 5 * 4 * 3 * 2 * 1, lo que nos da como resultado 720.

Sabiendo esto, veamos que opciones tenemos con Python para llevar a cabo esta operación.

Nota 2: Para simpleza de la entrada, todas las formas que veremos, las probaremos calculando el factorial del número 6, obviamente el procedimiento será el mismo para cualquier número.

Haciéndolo de forma “sucia”

print(6 * 5 * 4 * 3 * 2 * 1)

Utilizando la función built-in de Python

from math import factorial
factorial(5)

Utilizando un ciclo “while”

def fact_1(n):
    factorial_total = 1
    while n > 1:
        factorial_total *= n
        n -= 1
    return factorial_total

Utilizando recursividad

def fact_recursividad(n):
    if n > 1:
        return n * fact_recursividad(n - 1)
    else:
        return 1

Utilizando recursividad y el operador ternario 😀

def fact_ternario(n):
    return n * fact_ternario(n - 1) if n > 1 else 1

EDICIÓN (24/04/2016):
Gracias a la observación de Daniel en los comentarios, añado la forma elemental para
realizar el procedimiento.
Saludos.

def fact(n):
    if n == 0:
        r = 1
    else:
        r = n * fact(n - 1)
    return r

Ahora, si ejecutas el código podrás notar que todos devuelven el mismo resultado para cualquier número, pero podemos observar que tenemos diferentes maneras de programar la solución.

Factorial: Resultados

 

 

 

 

Puedes encontrar el código utilizado en esta entrada, comentario de mejor foma en el siguiente repositorio de Github https://github.com/TheMushrr00m/factorial-python 😀

Si tienes alguna duda, no dudes en dejar tu comentario, si te parecio interesante o tienes algún punto en el que piensas que podría mejorar algo, por favor no dudes también en dejar tu comentario, de igual forma comparte la entrada para que pueda llegar a alguien a quien le pueda resultar útil. Saludos.

Valores Truthy y Falsy

Hola a todos, hace tiempo que no escribo en el blog, pero pienso que es buen momento para retomarlo, y que mejor que hacerlo sobre algo que me llamó la atención estos días, los valores Truthy y Falsy.

Para quienes me conocen, no es secreto que mi lenguaje favorito, aquél con el que comencé en la programación, y con el que me gusta hacerlo todo siempre que se me permite es Python.

Pero últimamente he estado trabajando mucho con Javascript, en especial, ganando experiencia con su nueva especificación ECMAscript 2015,.

Algo que me llamó la atención, fue leer acerca de la expresión que establece el titulo de esta entrada, los valores Truthy y Falsy. Todos conocemos que en los lenguajes de programación, tenemos los valores “booleanos” True y False, así que se podrán estar preguntar, ¿de qué rayos está hablando? Bien, en palabras fáciles de digerir, podemos decir que cada elemento del lenguaje tiene un valor booleano intrinsico-primitivo.

Valores Truthy y Falsy

Valores Truthy y Falsy

 

 

 

Teniendo primeramente los valores que ya todos conocemos True y False, pertenecientes a la clase bool, nos encontramos con lo siguiente:

Valores Falsy

None  # Valor None perteneciente a la clase NoneType.
0  # Valor 0 perteneciente a la clase int.
""  # Valor cadena vacía perteneciente a la clase str.
[]  # Valor lista vacía perteneciente a la clase list.
()  # Valor tupla vacía perteneciente a la clase tuple.
{}  # Valor diccionario vació perteneciente a la clase dict.

Así que no te convence eso…puedes probarlo por ti mismo, en el intérprete de Python prueba utilizando bool() para evaluar cada uno de esos datos, verás que todos evaluarán como False…¿ahora me crees?

Dicho esto, cualquier otro valor, es considerado un valor Truthy . Sencillo ¿cierto?

 

Valores Truthy y Falsy

 

 

 

 

 

 

 

 

En el caso de JS no existe mucha diferencia con respecto a Python,

Como valores Falsy (además de false)  tenemos:

0  // (cero) de la clase Number.
NaN  // (Not a Number) de la clase Number.
""  // (cadena vacía) de la clase String.
null  // de la clase Object.
undefined  // de la clase Undefined.

Valores Truthy:

En JS al igual que Python, cualquier otro valor diferente a los anteriores, es considerado como verdadero o Truthy además de algunos valores que pueden resultar curiosos como:

Infinity  // Number(Al igual que NaN, son números especiales de JS)
"0" , "true", "false"  // String
function(){}  // Function
[]  // Object (Array)
{}  // Object

Y bien, es todo por ahora, mi nuevo propósito es publicar una entrada por día,
por más pequeña que sea, para ganar ese habito, y poder yo mismo mejorar en la programación,
y como persona, puesto que una vez me dijeron qué cada día se aprende algo nuevo, y que si
esto no se cumplía, es porque estaba desaprovechando mi tiempo.

Así que es todo por hoy, espero les sirva está información, si tienen algún comentario no
duden en escribirlo, y si les parece interesante el articulo, sería un gran gesto que lo compartieras.

Si quieren saber un poco más sobre esto, aplicado a JS,
una buena referencia es el siguiente articulo:

Saludos 😀

“Visual Studio Code” – Editor Multiplataforma por parte de Microsoft

Buen día a todos los lectores del blog, déjenme felicitarlos ya que tienen buen gusto 😀

En esta entrada, quiero dar mi punto de vista y no tanto hacer eco de esta noticia, que desde el día de ayer a estado en boca de todos los que nos desenvolvemos en las actividades cotidianas de Internet y la informática.

Hablo de la noticia que dieron los chicos de Microsoft el día de ayer en su conferencia BUILD 2015, acerca de su nuevo editor de código Visual Studio Code el cual es multi-plataforma, esto es, que puede correr bajo Windows, GNU/Linux y OS X.

Visual Studio Code

Visual Studio Code – Portada del Sitio

En lo personal, luce exactamente igual a editores que ya tienen un tiempo entre nosotros  y que a mi me gusta mucho utilizar, como Brackets, Sublime Text o Atom.

Creo que no es novedad comentar que soy un fiel usuario de Arch Linux y esto no se que tan beneficioso pueda ser para nosotros los usuarios de sistemas GNU/Linux.

Llevamos mucho tiempo escuchando noticias acerca del espionaje y de la falta de privacidad que nos proporcionan las grandes empresas de Internet así es, Microsoft pertenece a estas empresas, .

Si son observadores, en la imagen que puse arriba estoy mostrando la portada del sitio oficial de Visual Studio Code, y como podrán notar en la parte justo arriba de donde se muestra el vídeo de presentación del editor, vemos el siguiente mensaje…

By installing Visual Studio Code, you agree to the terms and data collection described here

No lo sé, pero no confío en estas recopilaciones de datos por parte de Microsoft.será que en realidad solo les interesa lo que suceda en torno a su editor…

Pero como les comenté al inicio de esta entrada, únicamente quería dar una opinión acerca de Visual Studio Code, que por lo que pude observar es que ofrece características necesarias para el día a día de nosotros los desarrolladores, ademas de que es compatible con muchos lenguajes de programación.

Pero les comento que lo probé en la versión de Windows, (Si, tengo una partición con Windows ya que mi trabajo como administrador SAP me hace necesitarlo, así como la Universidad, ya que, aunque le mostré al profesor que podía desarrollar los programas que me solicitaban en el lenguaje C# utilizando Xamarin, este me “pidió” obligo a tener que utilizar Visual Studio) y como no podía ser de otra forma, el aspecto visual es excelente, pero cuando lo probé en mi partición y sistema principal “Arch“, su integración con KDE no fue la mejor que podríamos esperar, por ejemplo, la barra de menú no se visualizaba, lo sé, poca cosa, pero es algo que debo comentarles.

Además de que por lo que noté solo se encuentra en versión 64 bits, corrijanme por favor si estoy equivocado, y debemos recordar que es software privativo.

Y tu… ¿Ya probaste Visual Studio Code?

Si desean probar este editor u obtener un poco mas de información, pueden hacerlo visitando el sitio oficial de visual studio code.

Y eso es todo por hoy, espero sus comentarios al respecto, sus experiencias o lo que quieran decirme.

Saludos.

Estructura de Datos – Listas Ligadas (Enlazadas) en Lenguaje C

Hola a todos los que lleguen a leer esta entrada.

En esta ocasión les dejo un video-tutorial que tuve que realizar en mi materia de Estructura de Datos, en el cual, debía mostrar como implementar las listas ligadas en el lenguaje de Programación C.

Aclaró que tal vez ustedes puedan tener otra forma para realizarlo, o al ver el vídeo se les ocurra alguna manera mas eficiente, si es así, quedo abierto a leer sus comentarios al respecto.

También les dejo la presentación que utilicé en el vídeo, se que es algo simple pero intenté explicar todo durante el vídeo, en fin, para algo podría servirles.

Listas Ligadas Simples (Presentación)

Y por si no fuera suficiente para ustedes, también les dejo el código fuente que realicé y se muestra en el vídeo, les recomiendo utilicen el IDE que yo utilizo, el cual es “Code Blocks“, a mi parecer es la mejor opción para escribir código C, claro, esto si no lo hacen desde algún sistema *nix, si es así, les recomiendo que lo hagan a lo hardcore desde terminal con Nano, Vim o Emacs. en Windows.

Code Blocks Logo

Si se animaron a probarlo, pueden descargarlo directamente desde su Sitio Web.

Y bien, espero sus comentarios sobre el vídeo, claro, siempre y cuando no sean acerca de la edición del vídeo, o de la forma en que hablo, les comento que lo realicé 2 horas antes de ir a la Universidad, estaba desvelado y no estaba 100% concentrado.

Era broma, si quieren comentar lo que sea no duden en hacerlo.

Saludos.

Curso de Programación Ruby – (Presentación)

Curso de Programación Ruby.

Presentación del Curso

Curso de Programación Ruby

Curso de Ruby

Este curso pretendo que sea ameno y didáctico, y espero que sirva para todas aquellas personas que estén interesadas a introducirse en el mundo del desarrollo de software a poder cumplir este objetivo, y que pronto comiencen a desarrollar sus propias aplicaciones.

Este curso será utilizando el lenguaje de programación Ruby . Esta dedicado para cualquier persona interesada en el mundo de la programación, desde chicos a grandes, sin importar si ya tienen experiencia con algún otro lenguaje.

Bien, sin mas por el momento los dejo con la presentación del Curso.

El objetivo es finalizar el curso en menos de un mes, los invito a que estén pendientes del blog y que se suscriban a mis redes para que se enteren al momento de que se publiquen las demas entradas del curso. 😀

Nueva versión del navegador “Firefox” nos permite desarrollar aplicaciones para “Firefox OS” fácilmente.

No cabe duda que últimamente todas las noticias que están saliendo entorno a “Firefox OS” son alentadoras, y nos demuestran, que este proyecto va por un excelente camino. Y como la gente de Mozilla nos tiene acostumbrados, la nueva versión de su navegador el mejor en mi opinión Firefox, así como la que ya tenemos disponible en su versión de prueba disponible en Firefox Nightly (versión de Firefox que prueba las funcionalidades antes de su lanzamiento en la versión oficial) nos permitirá desarrollar aplicaciones para Firefox OS directamente desde el navegador, algo que al leer me emociono mucho. 😀

El Web IDE como fue llamado, nos permitirá conectar dispositivos vía “USB” para desarrollar aplicaciones usando las características típicas de los móviles modernos (acelerómetro, brújula, etc.)

La idea de incluir un entorno de desarrollo integrado (IDE) para Firefox OS en las próximas versiones del navegador Firefox tiene sentido, ya que dejará de ser necesario instalar software adicional y facilitará el acceso a los programadores que quieran aventurarse en el mundo HTML5 y JS, sin necesidad de que tengan que aprender el uso de un ambiente de programación nuevo. El WebIDE estará disponible en la versión 31 del navegador Firefox, y esperan que en el futuro sea posible crear aplicaciones no solo para Firefox OS, sino también para iOS y Android.

Una vez creada la aplicación, podremos simular su funcionamiento desde el navegador, ejecutando un sistema de simulación incluido dentro del propio Firefox. En Mozilla Hacks  tienes más información sobre esta forma de programar aplicaciones, donde informan que ya hay varias plantillas disponibles.

También les dejo el video que la gente de Mozilla que publicó, donde nos dan una pequeña introducción:

Eso es todo por ahora, pero antes de irme, me gustaría saber que opinan de este gran proyecto de Mozilla, dejen sus comentarios.

Saludos.