24 ago 2010

Semana 3 - Optimizar código

Para la primer presentación elegí el tema de optimizadores de código, del cual trataré dar un concepto general para lograr tener una idea clara de que es lo que se busca con la optimización.




Descargar: Optimizadores.pdf

Semana 2 - Python

Mi elección de lenguaje de programación fue Python. Aquí les muestro un poco de información, algunos manuales, tres ejemplos sencillos que elaboré y como probar nuestros programas en Ubuntu y en Windows.

¿Qué es Python?

Python es un lenguaje de programación de alto nivel creado por Guido van Rossum a principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty Python”. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un código legible. Se trata de un lenguaje interpretado o de script. Además es un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.

Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple, clara y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una aplicación en Python sea sencillo, muy rápido y, lo que es más importante, divertido.

Algunos casos de éxito en el uso de Python son Google, Yahoo, la NASA, Industrias Ligh & Magic, y todas las distribuciones Linux, en las que Python cada vez representa un tanto por ciento mayor de los programas disponibles.

Manual para Python

Buscando en Internet me encontré con un muy buen manual para comenzar en el mundo de la programación en Python. Es como un pequeño libro para los que empezamos a programar, ya que es muy claro en su explicación. Comienza hablando un poco sobre la historia y conceptos básicos, nos muestra como instalar Python en nuestra computadora y nos da una ayuda para crear nuestro primer programa con el ejemplo conocido por todos "Hola Mundo".

Descargar desde Google Docs: Python para Todos
Introducción a Python: Hola Python

Programas sencillos en Python

El siguiente programa imprime en pantalla "Hola Mundo":
Descargar: Hola.py

#!/usr/bin/python
print "Hola Mundo"

Un pequeño ejemplo de entrada y salida de datos es el siguiente:
Descargar: PrimerPrograma.py

#!/usr/bin/python

# Uso de comillas dobles
print "Este es mi primer programa en Python"

# Uso de comilla simple
print 'Bienvenido\n'

# Introducir una cadena a la variable nombre
nombre = raw_input('Escribe tu nombre: ')

# Introducir un entero a la variable edad
edad = int(raw_input("Cual es tu edad: "))

# Imprime texto y pide entrada de datos
print 'Numero favorito:',
numero = int(input())

# Notese la forma diferente de entrada de datos
print "Tu color preferido: "
color = raw_input()

# Imprimir variables almacenadas
print'\n\nTu nombre es %s' %nombre
print'Tu edad es de %d' %edad

# Otra forma de imprimir variables
print "El color preferido de", nombre ,"es el %s" %color
print "El numero favorito de", nombre ,"es el %d" %numero

En el ejemplo anterior estuve probando lo flexible que es Python en cuanto a la sintaxis del código fuente, ya que como observaran en unas ocasiones use comilla simple y en otras comillas dobles para la impresión de texto en pantalla. También experimente con las diferentes formas que hay para introducir datos y la forma en como pueden ser impresos.

También les dejo el link para descargar el código fuente en Python para la impresión de la serie de Fibonacci.
Descargar: Fibonacci.py

Python en Ubuntu

Existen varias implementaciones distintas de Python: CPython, Jython, IronPython, PyPy, etc. CPython es la más utilizada, la más rápida y la más madura. Cuando la gente habla de Python normalmente se refiere a esta implementación.

CPython está instalado por defecto en la mayor parte de las distribuciones Linux y en las últimas versiones de Mac OS. Para comprobar si está instalado abre una terminal y escribe python. Si está instalado se iniciará la consola interactiva de Python y obtendremos parecido a lo siguiente:

Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

La primera línea nos indica la versión de Python que tenemos instalada. Al final podemos ver el prompt (>>>) que nos indica que el intérprete está esperando código del usuario. Podemos salir escribiendo exit(), o pulsando Control + D.

Cuando ya tenemos el código fuente de un programa en Python lo debemos de guardar con la extensión (.py) y estará listo para ser probado desde el terminal. Hacer esto en Ubuntu es muy sencillo solo escribimos lo soguiente en el terminal:

~/Documents$ python Hola.py

Esto nos debio haber mostrado en el terminal nuestro programa.
Nota Importante: Es necesario estar en la ruta correcta donde se encuentra el archivo.

Python en Windows

Windows al contrario de Ubuntu, no tiene preinstalado Python, por lo que es necesario descargar la aplicación necesaria para Windows.
La versión estable de Python para Windows actualmente es 2.6.4, y la puedes descargar desde el soguiente link:
Descargar: Python 2.6.4 para Windows

Una vez terminada la descarga ejecutamos la aplicación y seguimos las instrucciones en pantalla, que nos pedirán la ubicación de la instalación y los paquetes que deseamos instalar, el proceso de instalación es sencillo.
Una vez instalado Python, tendremos que configurar el PATH de Windows para que nos reconosca los comandos de Python en el terminal.

Si lo anterior resulto bien, ahora ya podemos probar nuestros programas desde el terminal de la siguiente manera, muy similar al terminal de Ubuntu.

C:\Users\RamonEsteban\Documents\Hola.py

Me gustaría en una próxima publicación detallar la instalación de Python en Windows y la configuración del PATH, así como crear los arcvhivos ejecutables (.exe) para que los que no tienen Python instalado en su computadora, logren ver nuestros programas.

Recursos

Python 2.6.5 documentación
Descargar Python para diferentes sistemas operativos
Guía para principiantes

>La información mostrada al inicio también se encuentra dentro del manual Python para Todos.
>Dudas y aclaraciones, dejen un comentario.

17 ago 2010

Un poco sobre paradigmas...

Con respecto a las ciencias de la computación, Robert Floyd, fue quien por primera vez habló del concepto de Paradigma de Programación y lo define como: "Un proceso de diseño que va más allá de una gramática, reglas semánticas y algoritmos, sino que es un conjunto de métodos sistemáticos aplicables en todos los niveles de diseño de programas".

En nuestra época es muy diverso el uso de la programación. Podemos programar desde un simple control de un televisor, hasta un robot que se mandará a la luna con fines de expedición. Para cada una de las necesidades se han creado diferentes lenguajes de programación, cada uno de ellos difiere en lo fácil que resulta realizar determinadas tareas que con otro lenguaje, cada uno tiene ventajas y desventajas según lo que se desea hacer.

En la actualidad existen muchos paradigmas de programación, pero los mas esenciales son los siguientes, de los que trataré de explicar en pocas palabras en que consiste cada uno de ellos.

Paradigma imperativo: Consiste en una serie de comandos que una computadora ejecutará. Estos comandos detallan de forma clara y específica el cómo hacer las cosas y llevarán al programa a través de los distintos estados. En otras palabras son instrucciones que le dicen a la computadora como realizar determinada tarea.
Los elementos importantes del paradigma son las variables, tipos de datos, expresiones y estructuras de control.

Paradigma funcional: Considera al programa como una función matemática donde el dominio representaría el conjunto de todas las entradas posibles y el rango sería el conjunto de salidas posibles. Esto se podría entender mejor como una secuencia:
Entrada de parámetros >> Subrutina o función >> Salida de valores.
Algo importante es aclarar que en un lenguaje funcional no existe el concepto de variables y tampoco operaciones de asignación.

Paradigma lógico: Este consiste en el uso del conocimiento de la lógica para los lenguajes de programación. Se basa en reglas lógicas que luego, a través de un motor de inferencias lógicas, responder preguntas planteadas al sistema y así resolver los problemas. El mejor ejemplo de esto sería Prolog.

Paradigma orientado a objetos: Basado en la idea de encapsular estado y operaciones en objetos. Programar con este paradigma es como tratar de simular o modelar los objetos del mundo real. Las propiedades generales de este paradigma son: a) El encapsulamiento: Se refiere a que el código o datos de un objeto podrían estar ocultos para cualquier objeto externo a él. b) Herencia: Es crear nuevos objetos a partir de otros.

*Esta información la obtuve principalmente de una página que encontré en Internet que me pareció muy buen texto con ejemplos claros, aunque con conceptos un poco difusos, así que recurrí a Wikipedia para comparar los conceptos y lograr dar una explicación un poco mas entendible.

Referencia: Paradigmas de Programación.

16 ago 2010

Semana 1 - Mapa conceptual

Hola a todos! Esta es la primer tarea de la clase de Lenguajes de Programación, me atrase un poco con la subida de mis entradas al blog, pero espero reponerme en esta semana.

Lo visto en la primer semana fue del tema de la programación en general, por lo cual la tarea fue realizar un mapa conceptual donde expusiéramos lo que nosotros entendimos del tema. Aquí les dejo mi mapa conceptual, espero y sea clara la información, no solo por la calidad de la imagen, sino por la relación que cree entre los conceptos.

El inicio de mi mapa comienza con el concepto de Programación, de ahí lo subdivido en tres aspectos: las herramientas que el programador utilizara para desarrollar software, los lenguajes de programación que serán los casos de estudio en esta materia y las aplicaciones desarrolladas, que serán el producto final de una buena programación.

Ya que en clase hablamos algo de lenguaje máquina y lenguaje ensamblador, me puse a pensar en los inicios de la programación, que tan difícil habrá sido hacer que una máquina realizará operaciones que el humano necesitaba en ese momento, tal vez en sus inicios solo eran para cálculos matemáticos, pero para que se hicieran esos cálculos eran necesarias larguísimas series de ceros y unos, que en un principio era la única forma de comunicarse con una computadora.

Programar con cadenas de ceros y unos resultaba complicado para el humano, entonces se pensó en elaborar alguna herramienta que facilitara esta tarea, y como resultado se dio el lenguaje ensamblador, que mediante letras o grupos de letras y números, se lograba programar un poco más rápido, pero aun así no era lo ideal ya que no resultaba fácil memorizar los comandos que se utilizaban para realizar operaciones en el sistema.

Después se crearon los lenguajes de alto nivel, que facilitan mucho más la programación, ya que la mayoría de ellos usan comandos con palabras del inglés más fáciles de memorizar, y no dependian tanto de la máquina, sino que pueden ser utilizados en computadoras diferentes.

Es por eso que considero que nosotros como estudiantes somos muy afortunados de contar con herramientas que nos facilitan el aprendizaje practico de la programación, ahora podemos escribir nuestro código, usar herramientas de depuración para verificar si existen errores de escritura, y el uso de compiladores para probar nuestros programas y ver si realmente funcionan como deberían o no, y si es así lograr modificarlo pero sin que sea algo estresante.

Espero que juntos logremos aprender mucho en esta materia para en un futuro próximo llegar a ser de los mejores programadores de nuestro país.

9 ago 2010

Ping-Pong

Antes de comenzar con las entradas referentes a la clase de Lenguajes de Programación, no me quería quedar con las ganas de mostrarles mi último código que realicé en Java, en el curso de Verano de Programación impartido por Elisa Schaeffer.

Lo que intente hacer fue un juego parecido a uno de los primeros videojuegos de la historia, como lo fue el Atari Pong, bueno en si el Atari Pong fue una videoconsola, con un único juego, que simulaba una partida de tenis.

Primeramente había creado un juego con una sola barra y una pelotita que rebotaba en los contornos de la ventana y cuyo unico objetivo era no permitir que tocara la parte inferior.

Pero al final de cuentas opté por crear un juego para dos jugadores simultáneamente, y con la base del juego anterior cree el juego "Ping-Pong".

No había subido antes el código puesto que no estaba bien terminado, faltaba corregir unos pequeños errores pero ahora me di un poquito de tiempo para por fin terminarlo, y aquí les dejo unas imágenes de muestra de como se ve el juego en ejecución.


El juego consiste en dos barras con movimiento en vertical, cuyo objetivo es no dejar pasar la pelota hacia su lado de la ventana, cada que se golpea correctamente a la pelota se consigue un punto, pero si la pelota llega al extremo de la ventana se pierde una vida, con un contador inicial de 3 vidas, y pierde el que sobrepase de las 3 vidas perdias.

Los controles de la barra Naranja son "A" para desplazarse hacia arriba y "Z" para desplazarse hacia abajo. Y los controles de la barra Azul son las flechas de dirección "Flecha Arriba" para desplazarse hacia arriba, y "Flecha abajo" para desplazarse hacia abajo.

Les dejo el link de descarga por si les interesa ver el código, y tal vez les sirva como base para alguna otra cosa.

Descarga desde:
MediaFire: PingPong.java