sábado, 19 de mayo de 2007

Cómo cabrear a tu profesor con las prácticas.

Buscando viejos apuntes de la Universidad me he encontrado con ésto. Va dirigido a los estudiantes de informática; supongo que serán los que les encuentre la gracia.

Abusa de los comentarios
//Incluimos la libreria stdio.h
#include “stdio.h”
//Declaramos la variable i
int i;
//Declaramos la variable j
int j;
//Empezamos el programa
int main() {
//Imprimimos por pantalla el resultado
printf(”Hola mundo”);
//Imprimimos un retorno de carro
printf(”\n”)
//Si i es igual a j
if (i==j)
//entonces
{
//incrementamos i
i++;
//decrementamos j
j–;
//cerramos el if
}
//damos el valor de retorno
return 0;
//finalizamos el programa
}

Incluye huevos de pascua
Mete un huevo de pascua en todas tus prácticas. Por ejemplo, si tienes que hacer un menú e introduces una opción invalida, imprime por pantalla 100 veces “Es que usted no sabe leer?”

Incluye una licencia en todas tus practicas
Puedes hacer tu programa charityware, como VIM, o crear tu propia licencia que imposibilite ir al baño durante la ejecución del programa

Asegurate de que leen tu código
Haz que, nada más ejecutarse, el programa pida una clave que se puede encontrar en alguna parte del código entre los comentarios. Procura que esté bien oculta.

Deja claro que no usas Windows
Por ejemplo, puedes incluir system(”sleep 1″) cada dos instrucciones. Esta parte es muy importante ya que, puesto que casi nunca te dicen en qué sistema operativo debe correr el programa, muchos profesores dan por supuesto que optarás por Windows. Si te dicen que no les compila/funciona, pregunta qué compilador usaron y si es para Windows responde: “En la documentación se decía claramente que sólo corría en Linux, ¿es que no se la ha leído?”

No seas creativo
Cuando tengas que hacer una base de datos introduce datos aburridos y no pienses mucho. Por ejemplo, llama a las personas Señor Uno, Señor Dos, Señor 3… Por supuesto, estas personas deben vivir en la Calle Uno, Calle Dos, Calle Tres…

Adjunta bibliografía
Pero asegurate de que solo contenga la siguiente línea:
Google : http://www.google.com

Fragmenta el código tanto como puedas
Muchos profesores se empeñan en que para un programa de 400 lineas te crees varios ficheros para “mejorar” el código, así que haz un fichero para cada función y asegurate de hacer muchas. De esta forma tu código será mucho más legible y el profesor estará satisfecho. No te olvides de poner nombres creativos a tus ficheros de código: uno.c uno.h dos.c dos.h etc.

Dale a la documentación un formato irritante
Imprime los folios en orientación horizontal y grapalos por la derecha. Si eres muy osado, pon una grapa en la esquina superior izquierda y otra en la esquina inferior derecha. Cuando te digan algo responde “Es la de la fotocopiadora, que está loca!”. En tu portada, incluye uno de esos ScreenBeans del Office que muestran una mesa de jurado poniendo mostrando pancartas con una puntuación de 10. Imprime algunas hojas a doble cara, sobre todo las del final, para que se las salte. Echa la culpa a las impresoras del laboratorio. Comienza los párrafos con muletillas como “Vamos a ver” o “Pues…”

Aprovecha las tutorías
Pide por lo menos una a la semana. Cuando te explique algo responde con esta pregunta: Pero, y un programador de verdad, ¿cómo lo haría?. Procura llevarle la contraria con frases como: Pues yo creo que eso no es así. Si te pregunta que cómo crees tú que es responde: No se, pero estoy seguro de que así está mal.

No demuestres lo que sabes hasta la entrega
Explícale a tu profesor que sería más fácil hacer cuaquier práctica con HTML porque es un lenguaje interpretado, igual que Pascal. Intenta convencerle de que es mejor hacer un documento de texto que una base de datos y buscarlo todo a mano.

Incluye un miembro extra en el equipo
Cuando te pregunte quién es Jorge López di que es tu amigo invisible, que tu psiquiatra te ha dicho que trates el tema con naturalidad y que eres muy sensible con las bromas. Cuando pregunte quién es Lucas Sanz di que es el amigo invisible de Jorge López.

No aprendas a manejar el descompresor a la hora de empaquetar tu entrega. Comprime con .ACE y cambia la extensión a ZIP.

No vengas a clase. ¿Para qué están las tutorías?. Aparece dos días antes de la entrega preguntando dónde encontrar el enunciado, y quejándote de lo sobrecargado que estás con las demás prácticas. Si además lo complementas con preguntas de las del ‘howto’ y consigues entregar a tiempo, te asegurarás de que tu profesor corregirá tu práctica con imparcialidad, incluso cuando descubra que se parece “mucho” a la de otro grupo.

lunes, 14 de mayo de 2007

Java (3. Conceptos básicos de la programación)

Tenemos una idea de lo que es Java. Tenemos el entorno preparado para empezar a programar... y si pensabas que en este capítulo ya ibamos a tirar código estás muy equivocad@. :P

Intentaré no extenderme mucho, ya que éste capítulo tiene un montón de detalles en los que se podría profundizar más; pero no es el objetivo.

Todos tenemos una idea de lo que es un ordenador; pero pocas personas son conscientes de todo lo que ocurre en su interior cuando estamos abriendo un correo, escuchando música o ejecutando un juego.

Hablaremos, y muy poco, de la CPU. La CPU es el "cerebro" de nuestra máquina. Es la encargada de procesar toda la información que llega a nuestro ordenador, tratarla y dar un resultado. El ser humano utiliza el lenguaje para transmitir información. Para ello contamos con un léxico, reglas gramáticales, etc. Un ordenador es más sencillo que todo eso; nuestro ordenador sólo entiende de "1" y "0" (binario). Evidentemente esto es una forma cómoda para nosotros. Por nuestro ordenador lo que circula son impulsos eléctricos y su ausencia o no hará que se determine si ha llegado un "1" o un "0". Cada uno de estos valores se le denomina bit. Los bits se agrupan en grupos de 8 para formar un byte. 1024 bytes = 1 kilobyte; 1024 kilobytes = 1 Megabyte; ...

En los comienzos de la informática se programaba en código máquina. Más tarde se facilitaron un poco las cosas gracias al lenguaje ensamblador. Un lenguaje de bajo nivel y específico al diseño de la CPU (registros, instrucciones, etc). Lo cual quiere decir que un programa escrito para una máquina A probablemente no funcionaría para una máquina B.

Vamos a pegar un gran salto... por arte de mágia los lenguajes fueron evolucionando hasta llegar a los lenguajes de alto nivel.

La sintaxis se asemeja mucho a la forma de hablar del hombre y con la Programación Orientada a Objetos, además, copia su realidad, su forma de pensar y de entender las cosas.

La Programación Orientada a Objetos es una forma de entender la programación. Toda entidad del mundo real queda reflejada en forma de objeto en nuestro programa. Todo objeto existe independientemente de los demás, es autosuficiente. Sólo él es dueño de su estado.

Un objeto, además de existir, tiene unas propiedades o atributos que definen su estado. También cuenta con una serie de métodos que le permite realizar ciertas acciones.

Pongamos como ejemplo a una persona llamada Ramón.
 

Ramón tiene 34 años, pesa 71 Kg y mide 179 cms.
Además, como buen andaluz, Ramón sólo sabe comer, cantar y bailar.

Es muy fácil determinar cuáles son los atributos y los métodos de Ramón.
Atributos
Nombre: Ramón
Edad: 34
Peso: 71
Altura: 179

Al igual que sus métodos.
Métodos
comer();
cantar();
bailar();

Podríamos decidir que el método "comer()" modifique el "Peso" de Ramón. Que el método "cantar()" haga que Ramón le cante a la Virgen de la Esperanza es lo último que se pierde. Y que el método "bailar()" haga que Ramón levante los brazos y se ponga a girar sobre si mismo.

Si nos fijamos bien, hemos creado a Ramón a partir de un patrón. Ese patrón es lo que se conoce por Clase. Una clase no existe en el mundo real. Podemos encontrar millones de personas en el mundo, cada una de ellas será una instancia de la clase "Persona"; es decir, existen millones de objetos del tipo "Persona" en el mundo.

En nuestro mundo, las personas solo tienen nombre, edad, altura y peso. Y lo único que saben hacer es comer, cantar y bailar. Teniendo la Clase definida podremos crear cuantos objetos queramos. Es más, no podíamos crear a Ramón si no hemos definido antes la clase "Persona".

Un ejemplo más para que quede claro.

Clase "Coche":
Atributos
Nombre
Color
Cilindrada
Velocidad Actual

Métodos
Acelerar();
Frenar();

Creémonos un coche (Objeto del tipo de la Clase Coche):
Atributos
Nombre: SEAT León :D
Color: Negro
Cilindrada: 2000
Velocidad actual: 0

Como podeis ver los atributos son datos que se almacenarán de una forma u otra. Y que no es lo mismo la forma que tiene de almacenarse el "Nombre" del coche a su "Velocidad actual". Por ello se introduce el concepto de tipo de dato. Cuando creemos nuestro objeto "Seat León" necesitaremos lo que se denominan variables para almacenar sus atributos. Una variable en programación se asemeja mucho al concepto de variable matemática. Una variable no es más que una referencia a cierta información que se encuentra en la memoria de nuestro ordenador.

Para poder acceder correctamente al contenido de esa variable debemos conocer el tipo de la misma. Por ejemplo:

Si queremos almacenar la cilindrada de nuestro coche necesitaremos una variable de tipo "entero". Si queremos almacenar el nombre del coche, necesitaremos una "cadena de carácteres".
La velocidad actual, al contar con decimales, podríamos usar un variable de tipo "entero con decimales".

Tampoco nos vamos a preocupar demasiado por el asunto de cómo almacenar los atributos y qué debemos hacer exactamente. Lo importante es saber la diferencia entre Objeto y Clase. Saber para qué sirven los atributos y para qué sirven los métodos.

En cuanto a éste último concepto. Ya hemos dicho que los métodos son "acciones" que pueden realizar los objetos. Nuestro coche tiene 2: "acelerar()" y "frenar()". Se adivina que cuando hagamos uso de ellos modificaremos la "Velocidad actual" del mismo.

<-- --="" descanso="">

Recopilando.

Hemos visto y entendido (espero) por qué Java es un lenguaje Orientado a Objetos. Hemos creado en nuestra mente nuestra 2 primeras Clases.

Vamos a suponer que conocemos la forma de pasar la Clase "Coche" a Java. Que ya sabemos escribir la sintaxis y además nos hemos creado un coche para acelerar y frenar con él.

Nuestra CPU no entenderá nada de lo que hemos escrito. La CPU no entiende el Código Fuente. Dijimos al principio que la CPU sólo entiende el código máquina. ¿Qué hacemos con nuestras flamantes 30 líneas de código escritas en Java?

Tenemos que convertirlas en el lenguaje que entiende nuestro microprocesador (CPU). Este proceso se llama compilación. Es realizado por el compilador de Java. Una vez compilado tendremos un fichero entendible por nuestra CPU....

¡FALSO!

Esto es lo que ocurre en la mayoría de lenguajes como C, C++, Pascal,... Dijimos en el primer capítulo que los programas de Java eran portables. Una misma aplicación funcionaría en una PDA, un sistema Unix, un PC con Windows, ... Esto es porque el compilador de Java no genera archivos compilados en código máquina. Si no en bytecodes. Los bytecodes son interpretados por la Máquina Virtual de Java (JVM) o cómpilados a código máquina nativo en tiempo de ejecución. No es la CPU quien ejecuta las aplicaciones Java directamente. Es la JVM quien se encarga de hacer de CPU y traducirle a su lenguaje los bytecodes. Cómo existen JVM en muchos sistemas nuestra aplicación funcionará en todos ellos.

Y se acabó este tema. Es importante entender los conceptos aquí introducidos. Se irán haciendo referencias a ellos constantemente y en el próximo capítulo (como en las series xD) pondremos a prueba lo que se ha explicado con un par de ejemplos prácticos.

Próximo cápitulo: 4. Nuestro primer programa.

Tutorial propiedad de www.pollodegomaconpolea.net de libre distribución siempre que se haga referencia a éste sitio.


viernes, 11 de mayo de 2007

Java (2. Preparando el entorno de desarrollo)

Hasta aquí tenemos una idea de que es Java y para qué puede servir. Aún no sabemos cuántas posibilidades tiene pero tenemos claro que queremos empezar a programar.


Lo principal cuando quieres desarrollar en una determinada plataforma es tener el SDK (Software Development Kit o Kit de Desarrollo de Software). Como su nombre indica, el SDK es un conjunto de herramientas, libres o de pago, que proporciona el desarrollador de la plataforma. En el caso de Java, Sun distribuye gratuitamente el SDK, y lo que es también de mucha ayuda, el código fuente (en el próximo capítulo se explicarán algunos terminos como éste).


A parte del SDK, y aunque es opcional, es muy interesante el uso de un IDE. Un IDE es un Entorno Integrado de Desarrollo.
Para hacer un programa en Java puedes usar el mismo bloc de notas de Windows. Una vez tengas el programa escrito tendremos que crear el archivo "ejecutable" (en java no se llaman así). Dicho de forma simple, convertiremos nuestro texto escrito en JAVA en un bonito programa listo para usar. Un IDE además de hacerte ésto con un sólo clic de ratón, te ayuda a detectar fallos de sintáxis, a buscar errores lógicos, etc...


Es conveniente no acostumbrarse demasiado a la ayuda del IDE, sobre todo en los primeros pasos en el mundillo de la programación, así que intentaremos no exprimirlo demasiado al principio.


Bueno, a lo que importa. Tenemos muchas ganas de ver nuestra mega-aplicación funcionando que nos lanzará a la fama y desbancará a Google y Microsoft de la cumbre informática.


Nos descargaremos el SDK junto con el IDE de NetBeans. Podriamos haber elegido otro como Eclipse o Jdeveloper.


http://java.sun.com/j2se/1.5.0/download-netbeans.html


Instalación de NetBeans Instalación de NetBeans


El archivo pesa bastante así que tardará un rato, dependiendo de tu conexión.


Una vez bajado pasamos a la instalación. Es muy sencilla y nuestra presencia sólo se requerirá para ir pulsando NEXT NEXT NEXT....



Una vez instalado se nos creará un acceso directo en el escritorio a NetBeans. Y aunque hoy no vamos a hacer nada, antes de terminar la instalación es importante cuidar un aspecto del entorno.


Como dije al principio, el IDE no es más que una herramienta que nos facilita el trabajo, pero sin el SDK no sirve de nada. Nos hemos bajado una versión donde todo viene "junto" y no nos tenemos que preocupar de nada. Pero podría darse el caso de que instalamos el SDK y el IDE por separado, o, por ejemplo, sacan una versión más actualizada del SDK y queremos instalarla en nuestro ordenador. Para que el IDE (NetBeans en nuestro caso) hago uso de un SDK específico deberemos acceder al Manager de Plataformas de Java:



Pulsando ADD PLATFORM accederemos a esta pantalla donde buscaremos los SDK instalados en nuestro ordenador. Al principio, presumiblemente tendreis sólo uno.


Free Image Hosting at www.ImageShack.us


En cada actualización del SDK se corrigen errores, se añaden funcionalidades; por ello es importante estar actualizado y vincular la nueva versión del SDK al IDE como se acaba de explicar.


Y pim pam pum, bocadillo de atún. Ya tenemos el entorno de desarrollo listo para tirar código en JAVA.


Próximo cápitulo: 3. Conceptos básicos de la programación.


Tutorial propiedad de www.pollodegomaconpolea.net de libre distribución siempre que se haga referencia a éste sitio.



martes, 8 de mayo de 2007

Java (1. Introducción)

Decidido a ofrecer algo más educativo en el blog me voy a proponer ir escribiendo un pequeño tutorial de Java.



Sólo servirá como introducción en el mundillo ya que Java es demasiado extenso y mis ganas y mi tiempo muy limitados. :P Empecemos...


Como muchos sabreis, Java es un lenguaje desarrollado por Sun Microsystems en los años 90.
Su principal característica es que la compilación del código fuente genera bytecodes y este código es interpretado por la JVM (Java Virtual Machine) o Máquina Virtual de Java. Esto tiene una gran ventaja, la portabilidad.


Una misma aplicación puede ser ejecutada tanto en un sistema Windows, Linux, PDA,... El único requisito es tener instalada la máquina virtual de java; la cual se debe encontrar especificamente en dicha plataforma (código nativo).


Esta forma de entender la programación dio lugar al famoso axioma de Java: Write once, run anywhere (escríbelo una vez, ejecútalo en cualquier parte).


En cuanto a su sintaxis, Java hereda mucho de C++ y a la vez elimina algunos conceptos para hacer el modelado de datos más sencillo. Por ejemplo, no hay "Herencia múltiple" en Java, aunque ya se verán algunos trucos para poder implementarla. También se eliminó la aritmética de punteros a bajo nivel que tantos dolores de cabeza daba a los programadores de C. Por último, a diferencia de C++, Java es un lenguaje puramente Orientado a Objetos, lo cual está muy de moda y para los que empiezen desde cero en un lenguaje así es toda una ventaja el desviar tu mente de la antigua programación estructurada.


Y con esto y un bizcocho termina la pequeña introducción. Habrá algunos conceptos que suenen a chino, pero poco a poco se irán haciendo referencias a éstos. Cualquier duda, corrección, crítica... todo será bien recibido.


Próximo cápitulo: 2. Preparando el entorno de desarrollo.


Tutorial propiedad de www.pollodegomaconpolea.net de libre distribución siempre que se haga referencia a éste sitio.