Programación

Tipos de programadores [casi una infografía]

(Aviso: la imagen está incompleta, dele a “Continuar leyendo” para ver más)

Seguir leyendo …

La clase Robot de Java

Hace tiempo, cuando recién empezaba a programar en Java, ví el nombre de esta clase Robot. A mi me pareció un nombre bastante atractivo, por lo que decidí ver en la documentación del API de Java para saber como usarla.

Yo tenía las sospechas de que seria algo bastante dificultoso de hacer, pero no fue así; solo sabiendo lo básico de la programación orientada a objetos fue necesario para poder hacer unos ejemplos.

Esta clase nos permite manejar mediante metodos las pulsaciones del teclado y del mouse e incluso añadirles un cierto delay(retardo), por lo que se me ocurrio jugarle una broma a mis amigos.

El código lo adjunto aquí en archivo rar que contiene el fuente .java, está un poco desordenado ya que no es un trabajo o algo por estilo, sino un programa que se me ocurrio hacer en mis tiempos de ocio para probar el funcionamiento de esta clase(^^’).

El fuente es un applet, por lo que no podran ejecutarlo así como así, ya que al acceder a metodos nativos del sistema(pulsaciones de teclado), necesito primero firmarlo, lo cual si les interesa lo pueden buscar en google o simplemente me lo hacen saber para responderles.

Además les dejo la url del applet ya subido a un hosting gratuito, en donde podran ver en funcionamiento la broma, la cual no hace mas que escribir algo en el bloc de notas y luego te reinicia la pc.

http://claydergc.webs.com/applet.htm

Como decía es necesario firmar el applet, por lo que por ser una broma les aparecerá que acepten que se ejecute el applet en su browser el cual esta con un nombre que no es mio, si mal no recuerdo el nombre que le puse fue “Juan”, para que mis amigos no sepan que fui yo.

Por lo demás no se preocupen, solo es una prueba del funcionamiento de la clase java.awt.Robot, lo unico si les recomiendo que guarden todo lo que esten haciendo porq les reiniará la pc; en todo caso eso pueden verlo en el codigo que adjunté si es que no deseean ejecutar el applet.

http://seccperu.org/files/PruebaRobot.rar

Bueno, espero les haya servido de algo este post.

Saludos.

Anagramas en Java

Un anagrama es una palabra que resulta de la transposición de las letras de otra palabra. Por ejemplo con ifx podemos obtener ifx,ixf,fix,fxi,xif,xfi (saber cuales de estas son palabras reales es un asunto totalmente distinto …). Hacer un programa en java para obtener todas estas posibles conjugaciones no es difícil, pero es interesante porque se requiere usar un método recursivo y esta clase de métodos tiende a seguir el patrón pocas líneas de código bastante dolor de cabeza. Esta es sólo una manera de solucionar un anagrama, debe de haber varias más.

import java.util.ArrayList;

public class Anagrama {
    private ArrayList<String> soluciones=new ArrayList<String>();

    public Anagrama(){  }

    public static void main(String args[]){
        Anagrama a=new Anagrama();
        String palabra="ifx";
        a.resolver(palabra);
        System.out.println(a.getSoluciones());
    }

    public void resolver(String palabra){
        palabra=palabra.toLowerCase();
        char[] letras=palabra.toCharArray();
        int tamanioPalabra=letras.length;
        int numeroIteraciones=0;
        char[] cadenaActual=new char[letras.length];
        resolver(letras,cadenaActual,tamanioPalabra,numeroIteraciones);
    }

    private void resolver(char[] letras,char[] cadenaActual,
            int tamanioPalabra,int numeroIteraciones){
        if (numeroIteraciones==tamanioPalabra){
            getSoluciones().add(new String(cadenaActual));
        }
        numeroIteraciones++;
        for(int i=0;i<tamanioPalabra;i++){
            if (letras[i]=='A'){
                //Como se paso todas las letras a minúscula, se usa "A"
                //para indicar que la letra en esa posición ya se utilizó,
                //de ser así sólo paso a la siguiente letra
            }else{
                char valorEliminado=letras[i];
                //valorEliminado es la letra que ya use y no
                //se debe seguir usando
                cadenaActual[numeroIteraciones-1]=valorEliminado;
                letras[i]='A';
                //Un valor q le doy para mostrar que ya lo elimine
                resolver(letras,cadenaActual,tamanioPalabra,numeroIteraciones);
                letras[i]=valorEliminado;
            }
        }
    }

    public ArrayList<String> getSoluciones() {
        return soluciones;
    }

    public void setSoluciones(ArrayList<String> soluciones) {
        this.soluciones = soluciones;
    }

}

Tutorial Tortoise SVN + SourceForge

A ver, primero necesitamos tener una cuenta en: SourceForge.net posteriormente descargar el cliente de SVN, en este caso será Tortoise Tortoise SVN
Quienes conocen, saben de su gran utilidad, desde mi punto de vista, es un software que funciona al mismo estilo de un puente, conectando y compartiendo un proyecto de desarrollo de software para trabajar en equipo [valga la redundancia], si andas en la universidad, esta es una gran alternativa para solucionar el principal problema que tenemos trabajando por separado el mismo proyecto…
Bueno, sin más que agregar, vamos por el tutorial!
Seguir leyendo …

Aplicando overwriting en componentes swing

Si hablamos de programación orientada a objetos, pues tambien tenemos que hablar de polimorfismo. El polimorfismo se podría dividir concretamente en dos sustantivos: sobreescritura (overwriting) y sobrecarga (overriding) de métodos, los cuales forman parte importante en la implementación del api del j2se.

Estos dos conceptos no son muy dificiles de entender, sin embargo, el ver la puesta en escena de estos conceptos se da casi siempre en nuestras propias clases, lo cual es sencillo ya que para nosotros nuestra clase es una caja blanca la cual podemos ver claramente. Lo que voy a mostrar ahora, es como aplicar la sobreescritura de métodos en la API del J2SE y para hacerlo aun mas grafico, lo aplicaré sobre la clase JFrame, la cual es una ventana de las normales que todos podemos ver.

A continuación pondré el código del programa:

Seguir leyendo …

Programando en C Sharp – 03

Hola!!! como van estimados lectores? todo bien? pues yo ando con las ganas de programar en C#, motivos? mmm… mejorar y compartir :D En esta ocasión vamos con la selección múltiple, para qué sirve? pues para evitar escribir tantos IFs como sean necesarios, es decir una manera óptima de reducir código fuente, veamos:


namespace Estaciones
{
 class Estaciones
 {
 static void Main(string[] args)
 {
 Console.WriteLine("Determinando la estación del año");
 Console.WriteLine("--------------------------------");
 Console.Write("Ingrese número de día: ");
 byte dia = byte.Parse(Console.ReadLine());
 // byte representa a un número de tamaño relavitamente
 // pequeño como se requiere[0-255], que sea hábito el tener en cuenta
 // los tipos de datos para trabajar pensando en la memoria...

y continuando con el ejemplo: Seguir leyendo …

Programando en C Sharp – 02

Buenos días!!! regreso de unas vacaciones otorgadas por la directiva de iFX, y continuando con el curso de programación en C#, vamos viendo estructuras condicionales simples, y sin más que agregar, aqui está el código:


using System;
namespace RendimientoEscolar
{
 class Promedio
 {
 //Método principal
 static void Main(string[] args)
 {
 Console.WriteLine("Determinando el rendimiento de alumno");
 Console.WriteLine("-----------------------------");
 Console.Write("Ingrese promedio: ");

 // Declaramos la variable: double promedio
 double promedio;
 promedio = double.Parse(Console.ReadLine());
 // La cual es asignada mediante un Console.ReadLine()
 // pero! tiene que ser "parseada" porque ReadLine lee los valores
 // del tipo string, asi que al momento de "parsear" va del siguiente modo:
 // tipo.Parse(Console.ReadLine());
 // tipo -> Int32, Int64, double, long, entre otros
 // cuidado con los valores tipo bool.

 if (promedio < 0 || promedio > 20)
 // Las barras significan "o" lógico.
 Console.WriteLine("Dato erróneo");
 else if (promedio <= 5)
 Console.WriteLine("Échale más ganas, tu puedes!");
 else if (promedio <= 10)
 Console.WriteLine("Venga vamos! puedes ser mejor, fala poco!");
 else if (promedio <= 15)
Console.WriteLine("Vas por buen camino! ");

 // En el siguiente caso, van las llaves porque se emplea 2 lineas
 // de código y el IF sin llaves solo permite una.
 else if (promedio <= 20)
 {
 Console.WriteLine("Bien, seguid adelante!");
 Console.WriteLine("Ahora, comparte lo que sabes");
 }
 // Finalmente el clásico .ReadLine() para detener la aplicación
 // y apreciar sus resultados.
 Console.ReadLine();
 }
 }
}

Saludos!

Sobre funciones y métodos

Mucha gente cuando empieza a programar, no entiende del todo este concepto de las funciones y el concepto de método, tanto porque o los profesores no son demasiado explícitos, o porque las funciones no son legibles al instante y pues en este post voy a intentar clarificar un poco eso un poco.

Primero que nada, una función no es un método, y viceversa, mucha gente confunde los términos porque en teoría tienen una aplicación parecida, pero hemos de diferenciar a la función del método con lo siguiente:

Función: Es una “acción” que se ejecuta al llamarse, y opcionalmente (y si es que ha sido definido así) con los parámetros que se le pasen (eso en ejecución) y pues por consiguiente, el trabajo que haga depende de esos parámetros o de cómo es que se llame. Por ejemplo:

Si definimos una función “Imprimir”

public void Imprimir(String cadena){

System.out.println(cadena);

}

Deberíamos ponerlo en donde lo necesitamos, de la siguiente forma:

Imprimir("Hola! a todos");

Para que imprima lo que le hemos pasado por parámetro haciendo el trabajo dependiente de eso que le pasemos!

Método: En cambio, un método siempre tiene una asociación con alguna clase, lo que muy aparte de la función de la función (valgan redundancias) va a depender tanto de los parámetros que se le pasen, como del objeto que esté operando en ese momento, osea prácticamente podríamos definir a un método, como la función dentro de un objeto, dejando en claro que todo método es una función, pero no toda función es un método. Por ejemplo:

En una clase definimos el método “Suma” de la siguiente manera:

public int suma(int y){

//la variable x es una variable declarada en el objeto supongamos,
 int x = this.x;
 int suma = x + y;
 return suma;
 }

En el main deberiamos definir el funcionamiento de esta manera:

//objetoOperacion o = new objetoOperacion()

//o.setX(10);

int suma = o.suma(20);
//Suponiendo que lo comentado arriba es correcto, deberíamos sumar un 20 al 10, osea daría un 30!
//System.out.println("La suma es: "+suma); //debe dar 30! 

Seguir leyendo …

Programando en C Sharp – 01

Y como dijo Jack, vamos por partes. Ahora comienza la programación en C#,
el IDE que utilizaremos es Visual Studio 2008, pueden descargar una versión
Express [de preferencia el instalador OffLine], espero que este curso sea de su agrado :D

using System;
// "System" es la libreria que usaremos(using) para el programa.

namespace IntercambioValores
 // Es una forma de agrupar lógicamente.
 // Podemos llevar un ordenamiento jerárquico, que
 // permite buscar y utilizar de manera sencilla las clases.

{
 class Program
 // Nombre de la clase
 {
 static void Main(string[] args)
 // Método principal del programa
 {
 // Declaración de variables
 int a, b, c;

 // .WriteLine: escribe valores y da un salto de linea.
 Console.WriteLine("Comenzando a programar en C#");
 Console.WriteLine("----------------------------");

 // .Write: comienza a recibir valores en la misma linea
 Console.Write("Ingrese un valor a: ");

 // Convertimos tipo de dato: string -> int
 a = Int32.Parse(Console.ReadLine());
 Console.WriteLine("Ingrese un valor b: ");
 b = Int32.Parse(Console.ReadLine());
 Console.WriteLine("----------------------------");

 // se utiliza una variable c para poder almacenar
 // temporalmente el cambio a->b, de lo contrario
 // las variables se reemplazan y caos total >.<
 c = a;
 a = b;
 b = c;
 Console.WriteLine("Los valores de a y b fueron intercambiados");
 Console.WriteLine("Ahora los nuevos valores son: ");
 Console.WriteLine("a: " +a);
 Console.WriteLine("b: " +b);
 Console.ReadLine();
 }
 }
}

Ahora bien, si lo que deseamos es desarrollar alguna fórmula matemática como la suma de los N primeros números naturales… En el main, estaría el siguiente código:

int CantidadNumeros;
double Resultado;
Console.WriteLine("Programando matemáticamente");
Console.WriteLine("---------------------------");
Console.Write("Ingrese la cantidad de numeros: ");
CantidadNumeros = Int32.Parse(Console.ReadLine());
//Determinamos la fórmula:
Resultado = CantidadNumeros * (CantidadNumeros + 1)/2;
Console.WriteLine("El resultado es: "+Resultado);
Console.ReadLine();

Saludos!