Archive for the ‘Programación’ Category
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
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);
}
}
Comenzando Con C
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++;
}
}
El “maravillo” convertidor de medidas…
#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;
}
}
Java AWT
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.
Ejemplos sencillos en Mono
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<=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>=-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<=10; i++){
Console.WriteLine(num + " x " + i + " = " +num*i);
}
}
}
Haciendo bailar al Mono

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.
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
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 );
}
}
Listas en Java
Bueno, este programa hace lo mismo que el anterior, solo que esta hecho de la manera “tradicional”, es decir, sin usar ArrayList o LinkedList. Se podría decir que la lista esta hecha de forma manual.
Clase Nodo
public class NLista1{
String nom;
int calif1;
int calif2;
int calif3;
double prom;
NLista1 liga;
}
Programa
import java.util.*;
public class Lista1 {
public static void main (String args[]) {
Scanner leer = new Scanner(System.in);
NLista1 inicio = null;
NLista1 fin = null;
NLista1 nuevo = null;
NLista1 aux = null;
int op;
do{
nuevo = new NLista1();
System.out.println( "Ingrese el nombre del estudiante" );
nuevo.nom = leer.next();
System.out.println( "Ingrese la primer calificación" );
nuevo.calif1 = leer.nextInt();
System.out.println( "Ingrese la segunda calificación" );
nuevo.calif2 = leer.nextInt();
System.out.println( "Ingrese la tercer calificación" );
nuevo.calif3 = leer.nextInt();
if(inicio == null){
inicio = nuevo;
nuevo.liga = null;
}
else{
fin.liga = nuevo;
nuevo.liga = null;
}
fin = nuevo;
Promedio(nuevo);
System.out.println( "¿Desea ingresar otro estudiante?" );
System.out.println( "1.-Si \t 2.-No" );
op = leer.nextInt();
}
while(op != 2);
aux = inicio;
while(aux != null){
System.out.println( "Nombre \t Promedio" );
System.out.println( aux.nom + "\t" + aux.prom );
aux = aux.liga;
}
}
public static double Promedio(NLista1 nuevo){
int suma = nuevo.calif1 + nuevo.calif2 + nuevo.calif3;
nuevo.prom = suma/3;
return nuevo.prom;
}
}

