miércoles, 28 de abril de 2010

Lenguaje C# - Primera parte (variables)

Del mismo modo como hice un post para iniciar con el lenguaje ActionScript, voy a hacer uno de como iniciar con C#, ya que he tenido que dar clases de algoritmia con el lenguaje y una constante es la dificultad para aprender el lenguaje desde ceros.

Antes que nada es necesario entender los conceptos básicos de la algoritmia, conceptos como variables, condiciones, ciclos, arreglos son necesarios para empezar a trabajar con cualquier lenguaje de programación, así que haré un pequeño resumen de cada uno de los elementos que acabo de mencionar.
memoria ram
..


Varibles: las variables son espacios en memoria RAM que almacenan información que necesitan los sistemas para su ejecución, ejemplos de variables, son los datos del usuario en el correo electrónico o en Facebook, generalmente están compuestas por Nombre, Tipo de Dato y Valor.

La memoria RAM, funciona como un gran Bus, que tiene espacios disponibles para N cantidad de variables entre más grande sea la memoria RAM, más variables puede manejar sin fallar, y del mismo modo que un bus, la memoria puede funcionar con sobrecupo, sin embargo el rendimiento va a ser lento.

SobreCupo
lo sé, esto no es un bus, pero la imagen expresa lo que quiero decir.

La variable como su nombre lo indica, es un objeto que está cambiando, y por lo tanto no cuenta con información constante, el cambio de la información se ve reflejado en tiempo de ejecución, es decir cuando una aplicación desarrollada es ejecutada al final por el usuario.

En C# la declaración de las variables se hace con un orden especifico, este orden es igual para lenguajes como JAVA. Esta es una demostración del orden en el que se deben declarar las variables.


Como se ve en la imagen, la declaración de las variables esta dada primero que todo por el tipo de dato, esto funciona como una categoría para almacenar información, de esta manera, se pueden crear variables de tipo numéricas, de cadenas de caracteres, de valores verdaderos o falsos, etcétera, después del tipo de dato va el nombre de la variable así pues si lo que vamos a almacenar es la suma de dos números enteros el resultado se debe almacenar en una variable de tipo entero.

int resultado = 2+2;

Nota: Una de las condiciones del lenguaje C#, así como de JAVA y por herencia tomadas del lenguaje C es que todas las sentencias de código deben terminar con punto y coma ( ; ) exceptuando condiciones, ciclos y funciones.

Los tipos de datos más comunes son los numéricos (int, double, float, uint, entre otros), los de caracteres (char y string) y los de valores verdaderos o falsos (bool).

Teniendo en cuenta lo anterior es posible crear una variable de cualquier tipo de dato, pero la condición es que esa variable solo almacenará información de ese tipo de dato, es decir en un contenedor de agua no se puede depositar cerveza (si, yo siempre con el cuento de la cerveza)

Estos son algunos ejemplos de como se crean variables para cada tipo de información:

string saludo = "Hola, cómo estas?";
double gradosCentigrados = 4.5;
int totalManzanas = 50;
bool habilitado = true;

Nota: las variables tienen una definición que está orientada bajo los estándares de la ECMAScript, por eso no tienen espacios ni caracteres especiales, si quieres ver más de eso, puedes leer esto.

Este es el primer articulo de una serie que iré escribiendo en primera medida para retomar el blog y en segunda para explicar los conceptos básicos del lenguaje C#.

Espero sus comentarios.
..

Leer más...

miércoles, 21 de abril de 2010

Lanzamiento de ADOBE CS5 - El evento

El sábado 17 de Abril, estuve en el evento de lanzamiento de la Suite Adobe CS5 y Flash Builder 4 (FB4), evento organizado por el Adobe User Group Xpert.

Marlon Ceballos hizo una excelente presentación sobre lo nuevo de programas como InDesign, Illustrator, Photoshop y Flash Catalyst, después Andres Rodrigues, nos hizo una demostración de cómo implementar la interfaz diseñada con Flash Catalyst en un proyecto de FB4, en seguida estuve hablando sobre el consumo de WebServices desde FB4 sin necesidad de conocer nada de ActionScript 3 y para finalizar de nuevo Marlon, nos presento algunas de las novedades de Flash Professional, sin duda alguna, una de las herramientas que más cambios ha tenido desde que Adobe la adoptó.

..
Toda la historia detrás del evento es bien larga y tuvo muchos detalles, que es bueno comentar, todo empezó cuando Marlon me pidió el favor de apartar el Auditorio del SENA para hacer el evento de lanzamiento, la fecha y hora del evento cambió muchas veces, unas veces por afán otras veces por falta de comunicación, otras veces por miedo al fracaso y a fin de cuentas el evento quedo programado para las 10:00Am del Sábado 17, las invitaciones fueron enviadas a través de correo electrónico, de Twitter, de Facebook y lo único que nos hizo falta fue hacer comercial en TV y enviar señales de humo. La convocatoria sirvió mucho ya que de manera sorprendente los cupos se agotaron en menos de 48 horas, y todo indicaba que sería un excelente evento.

El viernes el afán por tenerlo todo bien se notaba y personalmente estaba sufriendo ya que no tenía ni presentación ni ejemplo, por falta de tiempo no lo había podido preparar, al hablar con Marlon me dijo que todo estaba preparado y que al parecer yo era el único vago que no tenía nada listo, toda la tarde del Viernes y gran parte de la noche, estuve trabajando en el ejemplo y creo que todo salió muy bien, me fui a acostar temprano y misteriosamente Marlon seguía despierto y yo me fui a descansar.

Al siguiente día, muy a las 9AM llegué y ya había gente haciendo fila y esperando por entrar, entre ellos se encontraba Andres Rodriguez. La entrada la dimos a las 9:30 y Marlon, aun no llegaba, después de mucho esperar al fin recibí la llamada de Marlon pidiendo el favor de ir a recoger la tremenda caja que traía llena de regalos para los asistentes al evento, dentro de la caja misteriosa se encontraban varias camisetas, libros y más libros.


El evento inicio poco antes de las 10AM con la presentación de Marlon sobre InDesign, luego Illustrator (Me encanto la parte del manejo de perspectiva), Photoshop y su magia negra y Flash Catalyst, mostrándonos uno de los ejemplos que se encuentran en su sitio WEB de tutoriales, de inmediato Andres, continuó con su demostración de Flash Builder 4 integrandolo con el proyecto de Catalyst, haciendo la demostración de que tan fácil es crear aplicaciones con el FB4 y más si todo el diseño y la experiencia del usuario la hace un diseñador.

Luego llego mi turno, donde presente una de las novedades de Flash Builder 4, el panel de DATA/Service una poderosa herramienta para hacer conexiones a orígenes de datos como XML, WebServices, HTTPServices, BlazeDS, etc, sin necesidad de crear una sola línea de código, por mi gran boca me comprometí a crear un tutorial de eso en el blog, y muy pronto lo haré (lo sé, ya ha pasado tiempo y no he salido con nada, pero pronto lo haré). Ante la mirada incrédula de la mayoría de los espectadores cree una aplicación que consumía un WebService de ASPX sin necesidad de hacer mucho código y casi todo con el poderoso comando arrastrar y soltar.


Finalmente Marlon Ceballos hizo su presentación sobre Adobe Flash Professional CS5 y nos demostró las novedades en cuanto al nuevo Framework de manejo de texto el TLF, además del nuevo entorno de desarrollo de flash (al fin se puede decir que es un entorno de desarrollo) y la excelente posibilidad de crear proyectos integrados de Flash Professional y Flash Builder.


Al final del evento se hizo la repartición de los regalos y cada quien para su casa...no lo creo, realmente cayo un aguacero que nos dejo a muchos encerrados en el SENA hasta que descampara, pero esa es otra historia.

Si asististe al evento deja tus comentarios y si no fuiste, cuéntanos por que? y que crees que hizo falta.

Agradezco mucho a Marlon por la realización de un excelente evento y además por no demandarme por plagiar las fotos de su sitio: http://xpert.com.co/blog/eventos-adobe-cs5-comunidad-adobexpert-balance/ - Ese día no lleve cámara.

Leer más...

domingo, 4 de abril de 2010

Expresiones regulares Uso en JAVA

Nuevamente Fabian Castro ha escrito un nuevo tutorial en su blog sobre expresiones regulares aplicado a JAVA, gracias a su infinita entrega y benevolencia me permitió colgarlo en este blog como recopilación de información.

JAVA + Expresiones regulares; lo prometido es deuda (eso es lo que enseñan los abuelos), en este post implementaremos las expresiones regulares en JAVA, la verdad es fácil, claro si ya sabemos cómo funcionan.


--


Expresiones regulares Uso en JAVA

JAVA + Expresiones regulares; lo prometido es deuda (eso es lo que enseñan los abuelos), en este post implementaremos las expresiones regulares en JAVA, la verdad es fácil, claro si ya sabemos cómo funcionan.

JAVA nos ofrece un paquete especial para el manejo de expresiones regulares el cual es
java.until.regex presentándose dos clases: Pattern y Matcher donde dichas clases son finales (final) y con método constructor privado (Private) por ende no se puede crear Objetos ni heredar de dichas clases… ¿Cómo?!! ¿No puedo crear objetos de estas clases? No, no puedes crear objetos ni heredar de estas clases, ahí es donde uno dice “que clases tan inservibles” pero no es así porque al no poder heredar de ellas no se pueden modificar sus funciones y así las clases sirven para lo que fueron hechas, además al no poder crear objetos ellas nos entregan un objeto estándar para la clasificación y uso de las Expresiones regulares.

Muy bien la clase
Pattern tiene un método que es: compile(String regex), este método recibe como parámetro un String el cual es la expresión regular con la que queremos validar nuestros datos, dicho método nos devuelve un objeto estándar de la clase Pattern usándolo de la manera que queramos.

Después de tener el objeto de la clase
Pattern, que es el que nos ayudara a contener el patrón, necesitamos la clase Matcher este compara los datos contra la expresión regular, para obtener el objeto de dicha clase se usa el método matcher(CharSequence input) cuyo parámetro es en pocas palabras un String el cual es el dato que se quiere validar, al tener ya el objeto que valida el patrón contra el dato, podemos usarlo de cualquier forma, para identificar si el dato coincide con el patrón se usa el método .find() que retorna un booleano pero dicho método se entiende mejor en la práctica.

Nota: el siguiente ejemplo esta desarrollado en Netbeans 6.8, los archivos podrán ser descargados en formato .java y en proyecto Netbeans.

El ejemplo está basado en la validación de un correo electrónico, creare un formulario JAVA (JFrame) el cual contendrá un campo de texto y un botón; no me extenderé mucho con la creación de botones y campos de texto dentro del formulario la idea principal es entender cómo se implementan las expresiones regulares, en un próximo tutorial profundizaremos sobre la interfaz grafica en java; para la creación del formulario usaremos el siguiente fragmento de código:


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.*;
import javax.swing.*;

public class Main extends JFrame {

JTextField texto;
JButton boton;

public Main(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(null);
this.setLocation(200, 200);
this.setSize(225,100);
texto = new JTextField();
texto.setLocation(10, 10);
texto.setSize(200, 20);
this.add(texto);
boton = new JButton();
boton.setLocation(60, 30);
boton.setSize(100, 30);
boton.setText("Validar");
boton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
validar(texto.getText());
}
});

this.add(boton);
}

private void validar(String dato){
}

public static void main(String[] args) {
new Main().setVisible(true);
}

}

Lo que nos interesa es que al pulsar el botón se ejecutara el método validar(String dato), en este momento dicho método se encuentra vacio, así que le daremos el código de la validación para que el método quede así:

private void validar(String dato){
Pattern pat = Pattern.compile("^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\\.[a-zA-Z]{2,4}(\\.[a-zA-Z]{2,4})?$");
Matcher mat = pat.matcher(dato);
if(mat.find()){
JOptionPane.showMessageDialog(null, "el texto escrito es un correo");
}else{
JOptionPane.showMessageDialog(null, "el texto escrito NO! es un correo");
}
}



Si señores la expresión regular que esta hay valida un correo, casualmente es la misma que usamos para el tutorial anterior y ahora expliquemos línea por línea:


Pattern pat = Pattern.compile("^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\\.[a-zA-Z]{2,4}(\\.[a-zA-Z]{2,4})?$");


Esta Línea de código Activa el patrón a usar; es decir compila la expresión regular para poderla usar.

Matcher mat = pat.matcher(dato);


Esta línea de código crea el objeto de la clase
Matcher para comparar el patrón con el dato que queremos validar, pero para que eso ocurra debemos usar el método find() de dicha clase así:

if(mat.find()){
JOptionPane.showMessageDialog(null, "el texto escrito es un correo");
}else{
JOptionPane.showMessageDialog(null, "el texto escrito NO! es un correo");
}


El método find() devuelve un booleano el cual es verdadero si el dato coincide con el patrón y un false en caso contrario.

Este es el Final del Tutorial, espero haya sido de gran utilidad para ud's y pronto tutoriales de como crear interfaz gráfica en JAVA

DESCARGABLES

Proyecto NEtBeans 6.8

Archivos .JAVA

Archivo ejecutable .JAR


Leer más...