Link Log

Una manera de perder el tiempo…

Archive for the ‘Programación’ Category

Reloj en Java

with 13 comments

Actualización: http://www.israelsc.mx/programacion/java/reloj-en-java/

Bueno, después de mucho mucho tiempo, aquí traigo de nuevo otro programa en Java, este programa solo es un simple reloj analógico (ya saben, esos que tienen manecillas).

Bueno, acá el reloj resultante:

Reloj en Java

Reloj en Java

Acá el código:

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;

public class RelojProyecto extends JFrame{
    public static void main(String[] args) {
        RelojProyecto app = new RelojProyecto();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    Reloj Cara;

    public RelojProyecto() {
	super( "Reloj Proyecto" );
	setVisible( true );
	setResizable( false );
        Container content = this.getContentPane();
        content.setLayout(new BorderLayout());
        Cara = new Reloj();
        content.add(Cara, BorderLayout.CENTER);
        this.pack();

        Cara.start();
    }
}

class Reloj extends JPanel {

    private int horas;
    private int minutos;
    private int segundos;

    private static final int   espacio = 10;
    private static final float dosPi = (float)(2.0 * Math.PI);
    private static final float tresPi = (float)(3.0 * Math.PI);
    private static final float rad = (float)(Math.PI / 30.0);

    private int tamano;
    private int xCentro;
    private int yCentro;
    private BufferedImage muestra;
    private javax.swing.Timer t;

    public Reloj() {
        this.setPreferredSize(new Dimension(300,300));
        t = new javax.swing.Timer(1000,
              new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      update();
                  }
              });
    }

    public void update() {
        this.repaint();
    }

    public void start() {
        t.start();
    }
    public void stop() {
        t.stop();
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        int ancho = getWidth();
        int alto = getHeight();
        tamano = ((ancho < alto) ? ancho : alto) - 2*espacio;
        xCentro = tamano/2 + espacio;
        yCentro = tamano/2 + espacio;

        if (muestra == null
                || muestra.getWidth() != ancho
                || muestra.getHeight() != alto) {

            muestra = (BufferedImage)(this.createImage(ancho, alto));
            Graphics2D gc = muestra.createGraphics();
            gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                RenderingHints.VALUE_ANTIALIAS_ON);
            caraReloj(gc);
        }

        Calendar now = Calendar.getInstance();
        horas   = now.get(Calendar.HOUR);
        minutos = now.get(Calendar.MINUTE);
        segundos = now.get(Calendar.SECOND); 

        g2.drawImage(muestra, null, 0, 0);

        Manecillas(g);
    }

    private void caraReloj(Graphics g) {

        g.setColor(new Color(209, 234, 255));
        g.fillOval(espacio, espacio, tamano, tamano);
        g.setColor(Color.black);
        g.drawOval(espacio, espacio, tamano, tamano);

        for (int seg = 0; seg<60; seg++) {
            int inicio;
            if (seg%5 == 0) {
                inicio = tamano/2-10;
            } else {
                inicio = tamano/2-5;
            }
            diseno(g, xCentro, yCentro, rad*seg, inicio , tamano/2);
        }
    }

        private void Manecillas(Graphics g) {
        int radioSegundero = tamano/2;
        int radioMinutero = radioSegundero * 3/4;
        int radioHora   = radioSegundero/2;

        float fsegundos = segundos;
        float anguloSegundero = tresPi - (rad * fsegundos);
        diseno(g, xCentro, yCentro, anguloSegundero, 0, radioSegundero);

        float fminutos = (float)(minutos + fsegundos/60.0);
        float anguloMinutero = tresPi - (rad * fminutos);
        diseno(g, xCentro, yCentro, anguloMinutero, 0, radioMinutero);

        float fhours = (float)(horas + fminutos/60.0);
        float anguloHora = tresPi - (5 * rad * fhours);
        diseno(g, xCentro, yCentro, anguloHora, 0, radioHora);

	Font font = new Font("Arial", Font.BOLD, 16);
	g.setFont(font);
	g.drawString( "12", 140, 40 );
	g.drawString( "1", 205, 55 );
	g.drawString( "2", 245, 100 );
	g.drawString( "3", 265, 155 );
	g.drawString( "4", 245, 210 );
	g.drawString( "5", 205, 255 );
	g.drawString( "6", 145, 270 );
	g.drawString( "7", 90, 255 );
	g.drawString( "8", 45, 210 );
	g.drawString( "9", 25, 155 );
	g.drawString( "10", 45, 100 );
	g.drawString( "11", 80, 55 );
	Font font1 = new Font("Arial", Font.BOLD, 12);
	g.setFont(font1);
	g.drawString( "RELOJ", 130, 80 );
	g.drawString( "QUARTZ", 125, 220 );
    }

    private void diseno(Graphics g, int x, int y, double angulo, int minRadius, int maxRadius) {
        float sine   = (float)Math.sin(angulo);
        float cosine = (float)Math.cos(angulo);

        int dxmin = (int)(minRadius * sine);
        int dymin = (int)(minRadius * cosine);

        int dxmax = (int)(maxRadius * sine);
        int dymax = (int)(maxRadius * cosine);
        g.drawLine( x+dxmin, y+dymin, x+dxmax, y+dymax);
    }
}

Written by Link X

May 18, 2009 at 9:09 pm

Posted in Java

Tagged with ,

Comenzando Con C

leave a comment »

En este verano estoy inservible (algunos dirán que es todo el año…), por lo que me puse a leer un manual de C (para descansar de Java y su “hermoso” System.out.println y del Mono con su misma sintaxis pero diferente nombres…), si bien aun no se gran cosa de C, por lo menos pase a C mi incompleto programa convertidor de unidades.

Pondré algunos ejemplos de ves en cuando, ya que aun no me se bien la sintaxis de este lenguaje, ademas de que es mas difícil que Java(mal acostumbra el cab…).

Aquí algunos ejemplos:

Te pregunta tu nombre y edad.

#include <stdio.h>
int main(void){
   char nom[10];
   int edad; 

   printf( "¿Cual es tu nombre y tu edad? \n" );
   scanf( "%s %d", &nom, &edad );
   printf( "Tu nombre es %s y tu edad es %d \n\n", nom, edad );
}

Numeros del 1 al 100

#include <stdio.h> 
int main(void){
   int i = 1;
   while(i <= 100){
         printf( "%d \n", i );
         i++;
        }
}&#91;/sourcecode&#93;

El "maravillo" convertidor de medidas...
&#91;sourcecode language='cpp'&#93;#include <stdio.h> 
int main(void){
    int KM, CM, Y, op;
    double RES;

    printf( "\n Ingrese la operacion \n" );
    printf( "1.- Centimetros a Pulgadas \n" );
    printf( "2.- Yardas a Metros \n" );
    printf( "3.- Kilometros a Millas \n\n" );

    scanf( "%d", &op );

    switch(op){
               case 1:
                      printf( "Centimetros a pulgadas \n" );
                      printf( "Ingrese los centimetros \n" );
                      scanf( "%d", &CM );
                      RES = CM * 2.3;
                      printf( "El resultado es: %.0f pulgadas \n\n", RES );
                      break;
               case 2:
                      printf( "Yardas a Metros \n" );
                      printf( "Ingrese el numero de Yardas \n" );
                      scanf( "%d", &Y );
                      RES = Y * 0.914401828;
                      printf( "El resultado es: %.7f metros \n\n", RES );
                      break;
               case 3:
                      printf( "Kilometros a Millas \n" );
                      printf( "Ingrese el numero de Kilometros \n" );
                      scanf( "%d", &KM );
                      RES = KM * 0.621;
                      printf( "El resultado es: %.1f millas \n\n", RES );
                      break;
              }
}

Written by Link X

July 13, 2008 at 8:04 am

Posted in C/C++

Tagged with ,

Java AWT

leave a comment »

Aquí esta un ejemplo muy pero muy sencillo de gráficos en Java.

El programa en si no hace nada, solo se muestra lo que se necesita para crear una ventana con botones (que no hacen nada…).

import java.awt.*;
public class ejemplo{
    public static void main( String args[] ){

       Button boton = new Button( "Soy un botón y el de abajo no hace nada" );
       Button boton2 = new Button( "El botón de arriba no hace nada" );
 
       Frame vent = new Frame( "Ejemplo Java AWT" );
       vent.setLayout(new FlowLayout());
       vent.add( boton );
       vent.add( boton2 );
       vent.setSize( 300, 150 );
       vent.setVisible( true );

       vent.addWindowListener(new Conclusion());
    }
}

Creo que todo el código se entiende, lo único que se puede llegar a no entender es la ultima linea (vent.addWindowsListener…), esta es una linea muy importante, ya que sin ella no cierra la ventana.

Written by Link X

June 18, 2008 at 11:13 pm

Posted in Java

Tagged with , , ,

Ejemplos sencillos en Mono

leave a comment »

Comenzando con mono, aquí están unos pequeños ejemplos para comenzar a acostumbrarse a la sintaxis del lenguaje.

Imprime del 1 al 100

using System;
class Mas100{
   public static void Main( string[] args ){
       int i = 1;
       while(i&lt;=100){
            Console.WriteLine(i);
            i++;
       }
   }
}

Imprime del -1 al -100

using System;
class Menos100{
    public static void Main( string[] args ){
        int i = -1;
        while(i&gt;=-100){
           Console.WriteLine(i);
           i--;
        }
    }
}

Pregunta nombre y edad y luego los imprime

using System;
class Preguntas{
   public static void Main( string[] args ){
      string nom;
      int edad;

      Console.WriteLine( "¿Cual es tu nombre?" );
      nom = Console.ReadLine();
      Console.WriteLine( "¿Cual es tu edad?" );
      edad = int.Parse(Console.ReadLine());

      Console.WriteLine( "Tu nombre es: " +nom+ " y tu edad es: " +edad );
   }
}

Pide un numero y luego realiza la tabla del numero correspondiente

using System;
class Tablas{
   public static void Main( string[] args ){
       int num;

       Console.WriteLine( "Ingrese el numero de la tabla que desea" );
       num = int.Parse(Console.ReadLine());

       for(int i=1;i&lt;=10; i++){
           Console.WriteLine(num + " x " + i + " = " +num*i);
       }
   }
}

Written by Link X

June 10, 2008 at 2:28 am

Posted in C#, Mono

Tagged with ,

Haciendo bailar al Mono

with one comment

No es bueno solo programar en Java, por lo que también incluiré Mono(C# para los hijos de vecina), por lo que cuando publique un ejemplo en Java, tratare de hacerlo también en Mono.

Primero haré el clásico Hello World!

using System;

class HelloWorld{
	static void Main(){
		Console.WriteLine( "Hello World!" );
	}
}

Guardar esto con extensión .cs

Se compila con:
mcs HelloWorld.cs
Y se ejecuta con:
mono HelloWorld.exe

Cuando me adapte a las diferencias de Java y C# será mas fácil escribir código.

Written by Link X

June 9, 2008 at 10:51 pm

Posted in C#, Mono

Tagged with ,

Colas en Java

with 23 comments

Actualización: http://www.israelsc.mx/programacion/java/colas-en-java/

 

Ya puse unos ejemplos de listas y pilas, pero todavía hace falta el ejemplo de colas (no de esas, pero no estaría mal poner unos buenos ejemplos…).

Bueno, lo que hace este programa, es mostrar un menú para que el usuario seleccione lo que desee hacer, si insertar, retirar o mostrar la cola (de Java…).

import java.util.*;
public class Cola {
    public static void main( String args[] ){
       Scanner leer = new Scanner(System.in);

       colagenerica obj = new colagenerica();

       int op;
       int num;

       do{
          menu();
          op = leer.nextInt();

          switch(op){
              case 1:
                     System.out.println( "Numero a insertar" );
                     num = leer.nextInt();
                     if(obj.inscola(num)){
                        System.out.println( "fre"+obj.fre+"fin"+obj.fin+"aux"+obj.max );
                        System.out.println( "El numero "+num+" se inserto en la cola ["+obj.dret+"]" );
                        System.out.println();
                     }
                     else{
                          System.out.println( "Cola llena" );
                     }
                     break;
              case 2:
                    if(obj.retcola()){
                       System.out.println( "El dato retirado fue: "+obj.dret );
                    }
                    else{
                        System.out.println( "Cola vacia" );
                    }
                    break;
              case 3:
                    if(obj.fre==-1 && obj.fin==-1){
                       System.out.println( "Cola vacia" );
                    }
                    else{
                         System.out.println( "Estado de la cola:" );
                         for(int i=obj.fre; i<=obj.fin; i++){
                            System.out.print(obj.c[i]+" \t");
                         }
                         break;
                    }
          }
       }
       while(op != 4);
    }

    public static void menu(){
       System.out.println( "\t Menu para colas \n" );
       System.out.println( "1.- Insertar" );
       System.out.println( "2.- Retirar" );
       System.out.println( "3.- Estado" );
       System.out.println( "4.- Fin" );
       System.out.println( "\n Selecciona" );
    }
}

El programa usa métodos de la clase colagenerica, que puedes ver haciendo clic en mas

Read the rest of this entry »

Written by Link X

June 5, 2008 at 7:19 pm

Posted in Java

Tagged with , ,

Listas en Java (LinkedList)

with 9 comments

Actualización: http://www.israelsc.mx/programacion/java/listas-en-java-linkedlist/

 

De nuevo las listas, pero esta va vez con LinkedList, lo que permite que se agreguen o eliminen elementos en la lista al inicio o al final.

import java.util.*;
public class ListaLigada {

	public static void main (String args[]) {
		Scanner leer = new Scanner(System.in);

		int num;
		int op;

		LinkedList lista = new LinkedList();
		do{
			System.out.println( "\t Menú \t" );
			System.out.println( "Operaciones con listas" );
			System.out.println( "1.- Insertar al principio" );
			System.out.println( "2.- Insertar al final" );
			System.out.println( "3.- Borrar al principio" );
			System.out.println( "4.- Borrar al final" );
			System.out.println( "5.- Mostrar la lista" );
			System.out.println( "6.- Borrar toda la lista" );
			System.out.println( "7.- Salir" );
			System.out.println( "\n" );
			System.out.println( "Elija la operación que desee" );

			op = leer.nextInt();

			switch(op){
				case 1:
				      System.out.println( "Inserte numero" );
				      num = leer.nextInt();
				      lista.addFirst(num);
				      break;
				case 2:
				      System.out.println( "Inserte numero" );
				      num = leer.nextInt();
				      lista.addLast(num);
				      break;
				case 3:
				      System.out.println( "Se borrara el primer nodo" );
				      lista.removeFirst();
				      break;
				case 4:
				      System.out.println( "Se borrara el nodo final" );
				      lista.removeLast();
				      break;
				case 5:
				      System.out.println( "La lista es la siguiente" );
				      List lista2 = new ArrayList(lista);
                      Iterator it = lista2.iterator();
                      while (it.hasNext()){
                           System.out.println(it.next()+"");
                       }
                       break;
                case 6:
                      System.out.println( "Se borraran todos los elementos de la lista" );
                      lista.clear();
                      break;
                case 7:
                      System.out.println( "Al rato" );
                      break;
				}
			}

		while( op != 7 );
	}
}

Written by Link X

June 1, 2008 at 10:08 pm

Posted in Java

Tagged with , , ,