sábado, 5 de diciembre de 2009

Calculando Números Primos con Java

Ociosidad, esta pequeña aplicación o programa sencillo muestra como utilizar y generar nuestras propias librerías en Java y reutilizarlas en otros programas.

Concepto.

En ciencias de la computación, una biblioteca (o librero) es un conjunto de subprogramas utilizados para desarrollar software. Las bibliotecas contienen código y datos, que proporcionan servicios a programas independientes, es decir, pasan a formar parte de éstos. Esto permite que el código y los datos se compartan y puedan modificarse de forma modular. Algunos programas ejecutables pueden ser a la vez programas independientes y bibliotecas, pero la mayoría de éstas no son ejecutables. Ejecutables y bibliotecas hacen referencias (llamadas enlaces) entre sí a través de un proceso conocido como enlace, que por lo general es realizado por unsoftware denominado enlazador.

Obtenido de la WikiPedia

El programa. Se desea obtener n cantidad de números primos, el usuario debe de introducir el número final para obtener los números primos.

Por ejemplo: Yo usuario deseo saber cuales son los números primos que hay hasta el número 50.

Herramienta con la que trabajo es NETBEANS.

Primero creare una Librería Java a la cual le he puesto el nombre de aritmetica ahora creare un paquete que le pondré el nombre de metodos en este paquete creare una clase llamada primos.java.

La clase primos.java se encargara de calcular los números primos y devolver el resultado impreso en la pantalla del usuario.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package metodos;

/**
*
* @author Remmi
*/
public class primos {

    int j, i, dv, sum;
    boolean primo;

    public void primos(int valores) {

        for ( i = 2; i < valores; i += 1) {
            primo = true;

            for ( j = 2; j < i / 2; j += 1) {
                if (i % j == 0) {
                    primo = false;
                    break;
                }
            }
            if (primo) {
                //El 4 no es primo xD.
                if (i == 4) {
                } else {
                    System.out.print(i + " - ");
                }

            }
        }
    }
}

Ya que tenemos nuestra libreria aritmetica.jar con su respectivo paquete llamado métodos y nuestro método para calcular los números primos llamada clase primo.java, pasamos a crear nuestra aplicación.

Para ello pedí un nuevo proyecto “Java Aplication” al cual llame cprimos, yo trabajare en modo consola por razones de tiempo.

 

Nos vamos al proyecto, seleccionamos la carpeta Libraries, damos clic con el botón derecho Agregar JAR/Folder

package cprimos;

import metodos.*;
import java.io.*;

/**
*
* @author Remmi
*/
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        //variables
        int total;

        //Creamos una instanacia de primos
        primos pm = new primos();

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("+++ Calculadora de Números Primos +++");
        System.out.println("Hasta donde deseas calcular: ");
        total = Integer.parseInt(bf.readLine());

        //Hacemos el paso de parámetros al método primos de la clase métodos
        pm.primos(total);

    }
}

La salida en pantalla es la siguiente:

image

La ventaja de trabajar con nuestras propias clases y librerías es que podemos reutilizarlas en otras aplicaciones, de esta forma nos ahorraremos el tener que volver a escribir el mismo método para el cálculo de un factor… etc. Este ejemplo es muy pobre, pero podemos crear grandes aplicaciones y librerías bien estructuradas para el uso en aplicaciones potentes. 

viernes, 4 de diciembre de 2009

Nostalgias cuando era niño Windows 95

Hoy me entro la nostalgia por regresar a la edad en que comencé a programar (12 años) cuando existía el mitico Windows 3.11 y su predecesor Windows 95 la maravilla, pues buscando por internet pude hacer de una copia OEM de windows 95 con propositos educativos claro, comencé la instalación de FreeDOS en mi máquina virtual usando VirtualBOX y una vez finalizada la instalación del sistema  base MSDOS me dispuse a instalar el mítico Windows 95

image

Dura nostalgia que regresa a casa, jajajaja lo que era el mejor sistema operativo de Microsoft xD para mi porque fue el primero que conocí (de ahí me enamore de Unix/Linux) , hoy en día maquinas potentes y lo que no fue ya no volverá a ser, solo en el museo de nuestros recuerdos lo podemos encontrar.

Los programadores nuevos desconocen el uso de MSDOS comandos básicos para la supervivencia, ya todo es clic + clic y suprimir, los que crecimos con estos cambios en la informática creo que aún seguimos admirados de lo que podías hacer en ese entonces con 2 gigas de disco duro (el disco que jamás llenarías) y apenas 32 megas de RAM

Y aun lo recuerdo como si fuera ayer, con una suite llamada NETSCAPE GOLD que venía en un cd, con un icq que nadie que pertenezca a la era del Messenger se ha de acordar o con el mítico protocolo Gopher, que tal una conexión por telnet o usar Verónica que tiempos aquellos.

En fin dicen que recordar es volver  a vivir. 

miércoles, 2 de diciembre de 2009

Google México Cambia el diseño.

 

googlemexico

Hacía tiempo que este diseño sencillo estaba en pruebas con el dominio GOOGLE.COM para algunos usuarios, hoy para los que usamos el navegador de GOOGLE (CHROME) tenemos la posibilidad de ver el nuevo sitio de GOOGLE, más sencillo y con solo pasar el puntero del mouse el objetivo es gastar menos ancho de banda .

Solo la versión en ingles es compatible con los otros navegadores (www.google.com )

image

Pero a mi me gusto más este diseño de Google se ve más colorido xD

image

domingo, 22 de noviembre de 2009

Promedio de Grupos (C++ Ejercicio While)

Esta es una adaptación del programa anterior pero usando el ciclo while

#include <conio.h>
#include <iostream.h>

void main ()
{

    //Variables Globales.
    double calf=0,scalf=0, pcalf=0,mcalf=0,pmg=0,cf=0,global=0,x=0;

    //Variables para los for
    int grupo=0, alumnos=0, materias=0, calificaciones=0;

    //While para los grupos
    while (grupo!=2)
    {
      //Sumador de Grupo -- Grupo vale 0+n donde n es un número natural > 0.
      grupo++;

      /*Estas variables se hacen 0 para no arrastrar basura al otro cálculo*/
      x=0;
      pmg=0;

      //While para contar los alumnos
      while (alumnos!=2)
      {
       //Sumador de Alumnos -- Alumnos vale 0+n donde n es un número natural > 0.
       alumnos++;

       /*Estas variables se hacen 0 para no arrastrar basura al otro cálculo*/
       scalf=0;
       mcalf=0;

        while (materias!=2)
        {

         //Sumador de Materias -- materias vale 0+n donde n es un número natural > 0.
         materias++;

          while (calificaciones!=3)
           {
            calificaciones++;

            cout << "Digite la calificación: "<<calificaciones<<" : ";
            cin >> calf;

             //Calcula la suma de calificaciones.
               scalf +=calf;
              pcalf = scalf/3;

           }//Fin While Calificaciones

            calificaciones=0;

        } //Fin While Materias

        /*Hacemos el contador 0 en el primer paso para que este vuelva a entrar al siguiente.
     O sea que materias = 0 + n
     */
        materias=0;

         //Sumador para calcular el pomedio del Alumno
          mcalf += pcalf;
          cf= mcalf/2;
          cout << "La Calificación Promedio del alumno es: "<< alumnos << " : "<< cf <<endl;

               //Sumador para calcular el promedio del Grupo.
               pmg += cf;

      } // Fin While Alumnos

      /*Hacemos el contador 0 en el primer paso para que este vuelva a entrar al siguiente.
     O sea que alumnos = 0 + n
     */
      alumnos=0;

      x = pmg/2;

               cout << "La calificación del Grupo " <<  grupo  << " Es: "<<x<<endl;

             //Sumador para el promedio total de los Grupos
             global+=x;
    } //Fin While Grupos

     /*Hacemos el contador 0 en el primer paso para que este vuelva a entrar al siguiente.
     O sea que grupo = 0 + n
     */

     grupo=0;

     global/=2;
     cout << "El promedio de todos los grupos es: "<< global;

     //Espera que el usuario presione una tecla para continuar (Borland C++ Custom)
     getch();
}

Promedio de Grupos (C++ Ejercicio)

Este es un problema que nos encargaron en la clase de fundamentos de programación, existe la posibilidad de adaptarlo en While, pero ahorita no lo hare xD.

El problema dice:

Se desea obtener el promedio de cinco grupos que están en un mismo año escolar, cada grupo puede tener seis alumnos, cada alumno puede llevar cuatro materias y cada materia se promedian tres calificaciones para el promedio de materias, lo que se desea obtener es el promedio grupal (los cinco) el promedio de cada grupo y el promedio de cada alumno.

El programa es:

#include <conio.h>
#include <iostream.h>

//Declarar inicio del programa
void main ()
{
    //Variables Globales.
    double calf=0,scalf=0, pcalf=0,mcalf=0,pmg=0,cf=0,global=0,x=0;

    //Variables para los for
    int grupo, alumnos, materias, calificaciones;

     //Define inicio del programa

     for (grupo = 1; grupo <= 5 grupo++)
     {
              x=0;
              pmg=0;
         //Define inicio del ciclo de alumnos
         for (alumnos = 1; alumnos<= 6; alumnos++)
         {
                scalf=0;
                mcalf=0;
             //Materias
             for (materias = 1; materias <=4; materias++)
             {

                //Define el for para las calificaciones de materia.
                for (calificaciones=1; calificaciones <= 3; calificaciones++)  //Trabajar con 100+100+90 /3 = 96.66666666666667
                {

                     cout << "Digite la calificación: "<<calificaciones<<" : ";
                     cin >> calf;

                     //Calcula la suma de calificaciones.
                     scalf +=calf;
                     pcalf = scalf/3;

                } //Fin  del ciclo de las calificaciones.

                 //Contador para las materias y sacar el promedio aquí 96*4=384/4

             }  // Fin del Ciclo de Materias

                //Sumador para calcular el pomedio del Alumno
                mcalf += pcalf;

               cf= mcalf/2;
               cout << "La Calificación Promedio del alumno es: "<< alumnos << " : "<< cf <<endl;

               //Sumador para calcular el promedio del Grupo.
               pmg += cf;

         }//Fin ciclo de alumnos

             x = pmg/2;

               cout << "La calificación del Grupo " <<  grupo  << " Es: "<<x<<endl;

             //Sumador para el promedio total de los Grupos
             global+=x;

     }//Fin ciclo de Grupo

     global/=2;
     cout << "El promedio de todos los grupos es: "<< global;
       getch();
}

martes, 17 de noviembre de 2009

Un simple programa que imprime mi nombre en ensamblador.

 

.MODEL SMALL
.STACK
.DATA
nombre  DB 'Francisco Javier Guerrero Martínez $'

.CODE
main proc
;el siguiente código imprime en pantalla lo que esta guardado en el segmento de datos
mov ax,seg nombre
mov ds,ax
mov dx,offset nombre
mov ah,9h
int 21h
MOV   AX, 4C00h             ; salida a DOS
    INT   21h                   ; se genera una interrupción 21h
main endp
end main

sábado, 24 de octubre de 2009

Es interesante leer las malas traducciones.

Yo soy un fanático de los juegos en línea que no incluyan violencia y estén basado en ANIME, hoy estando de ocioso me puse a buscar algo nuevo, Flyff ya me enfade xD, Ragnarok estoy hasta el tope aparte de que soy ADMINISTRADOR de un servidor privado, así que me dedique a buscar y entre la búsqueda encontré

Destiny OnLine que no se que de se trata pero a eso entrare

El cliente para descargar Destiny OnLine esta basado en BitComent pero con una serie de malas traducciones al español.

image

Al agrandar la imagen veras que dice lo siguiente:

BitCometLite es descargado… creo que sería más factible o entendible “Esta descargando”.

Desvargar D: me recuerda a algunos players de Ragnarok.

Guarda el archivo D: digo se entiende pero no tiene coherencia… sería mejor GUARDAR el ARCHIVO.

INTALAR: Dios eso no tiene perdón xD

 

image

NetWork Opcion: SpanEnglish D :…. Se leería mejor opciones de Red.

El colmo xD

Cajita de Network Opcion (sin acento por favor)

Tipo de: [ LAN ] <—?  creo que les falto especificar o el tipo tenía hambre.

Mas descargado: [ No linite] D: ok ok esto xD… que onda Linite x_x Mas descargado ? no se leería mejor Limite de descarga

image

uff, eso demuestra que es importante saber lo que estemos haciendo y como se vera el producto al final

martes, 20 de octubre de 2009

Más incremento al ISR. xD

Comenzaré esta nota sencillamente con la siguiente frase… México en lugar de avanzar sigue a una Recesión

Para comenzar, yo no tengo preferencia partidista, tampoco soy fanático de la política, sin embargo estoy al tanto de como se mueven las cosas en el país. Hoy leyendo el diario Local “Diario de Yucatán” me llamo la atención el siguiente párrafo.

En el marco de una sesión maratónica que inició la medianoche del lunes, se avaló el dictamen que sube la tasa del ISR de su actual 28 por ciento a 30 por ciento, tanto para personas físicas como morales.

Admiro el trabajo que hacen es dificil dirigir un país.

La reforma a la Ley del Impuesto Sobre la Renta (ISR) incrementa de 28 a 30 por ciento este gravamen a las personas físicas que ganen mensualmente más cuatro salarios mínimos, a fin de fortalecer la recaudación fiscal el próximo año.

Esto no lo entiendo muy bien, aparte me cobrarán por recibir mi salario, es decir que si a mi mi jefe me paga semanalmente xD me cobrarán impuestos por mi trabajo.

Tal vez este distorsionado, pero yo aún no comprendo en que se gastan millones de pesos al año, quisiera entender en donde están los “empleos” que el “presidente del empleo” prometió a millones de estudiantes en sus fabulosos discursos a mi me consta porque tuve la “fortuna” de escuchar esos discursos de campañas en mi ciudad cuando aún vivía en Michoacán.

¿Nuestros actores políticos son cada vez más ineptos para los cargos?, quién sabe pero detrás de esto siempre hay intereses… Carlos Salinas de Gortari sigue burlándose el país a sabiendas de todos que este actor político “jodio mucho a México” – para el colmo es tanto el miedo que le tienen que nadie se ha preocupado en reformar esa ley que dice que el presidente después de su gestión durante 5 años es intocable xD – o sea que ninguna demanda puede hacerle nada y lo más gracioso que esas demandas o juicios solo son validas por 5 años, en fin… vivimos en un país controlado por mafias políticas, mafias que solo benefician a algunos, mientras que nuestros ilusos compatriotas son controlados por el poder de esas grandes televisoras mexicanas que se disputan ese Dupolio porque otro nombre no existe, en el cual solo muestran distorcionadas las cosas.

En México… no es que no se pueda prosperar, es que de tanta mafia que existe, al politico conservador… le conviene que JAMÁS esas personas apartadas de las ciudades tengan acceso a otros medios de información, justificando que no hay recursos para mejorar ?_?… no hay tal vez si reducimos la pensión de los presidentes para que se pongan a trabajar como cualquier otro ESTUDIANTE o empleado ahorraremos millones de pesos. Estamos en una situación muy delicada donde en lugar de avanzar entramos a un retroceso. Para mí es admirable a pesar de la “crisis mundial” que se vive a ver leido en un diario el siguiente encabezado.

La crisis, una ocasión para que China desarrolle el sector de la innovación

O este otro

China a un paso de convertirse en la segunda potencia económica mundial
Economistas esperan que el PIB chino crezca 9.5% sobre el de Japón durante el tercer trimestre del año

Es interesante que a pesar de la “crisis mundial” existan países que sepan como afrontarla… mientras que aquí solo hacemos ricos a “algunos”.

 

Francisco Javier
C.O Grupo Halis del Sur

lunes, 19 de octubre de 2009

Google nos ha enseñado…

Como directivo general de la red Halis (http://www.ghalis.net) hemos ido aprendiendo un sin número de nuevas tácticas que a lo largo del desarrollo tecnológico Google ha ido perfeccionando.

La filosofía más eficiente para el desempeño de Google es, hacer algo sencillo pero funcional, el éxito de Google radica en la sencillez de sus herramientas, pero a la vez en el potencial que estas ofrecen.

En la logística manejada por Grupo Halis para su división de Juegos en Line, concretamente para el Servidor Stille-RO se han ido aplicando una serie de técnicas tanto administrativas como tecnológicas a fin de buscar la mejor experiencia para el usuario.

Entre nuestros estudios están, simplemente que el usuario no le interesa en si cuantas cosas raras han sucedido en el servidor, esto será lo último que lea, puesto que el se dedicará a los siguientes puntos críticos: Buscar información del servidor, si le convence donde puede registrarse y donde puede descargar el cliente.

Otro punto critico para que el usuario tienda a quedarse es el no hacerlo esperar tanto tiempo en la descarga, ofrecer miles de opciones por la cual el pueda tener acceso al cliente.

Una vez que has enganchado al usuario, procura que si has diseñado un sistema de quest, este no sea tan enredoso, lo último que el usuario leerá es el texto de la quest, este se enfoca solo en lo que da el arma, si le sirve o no, procurando ofrecer dentro del menú una opción para retornar al menú de armas o salir, algunos usuarios no les gusta estar dándole click al NPC cada vez que termine de ver un arma.

Estudiar el comportamiento del usuario en el juego a base de estadísticas, acceso al foro, y gustos, ayuda a entender como podrían ser las próximas implementaciones. La gran mayoría de los jugadores no tienen tiempo, y si tienes exceso de bots siempre abra la mejor manera de solucionarlo, sin embargo hay que entender esos excesos como un posible fallo en algo si el servidor proporciona acceso quest, tampoco hay que esclavizar al usuario, porque llegará un momento en el que este se fastidiará y dejará el servidor.

Estudia los pasos de Google y te darás cuenta de que la visión de ellos es muy critica respecto a como los usuarios usan sus productos, me sorprende también como Flyff OnLine ha cambiado su diseño en la página, creo que el exceso de dibujos llamativos confundián al usuario, aveces las propuestas menos llamativas son las que más pueden ayudarte a crecer.

 

Flyff –> 3 botones Importantes. –> Comunidad, Registrarse y Bajar el juego

Un botón no muy bien acomodado, puede representar grandes perdidas para una corporación.

 

Saludos.

viernes, 16 de octubre de 2009

IDE’s y Compiladores para C++

t181419-0 Resumidos y por ser más utilizados, se que existen otros.

Visual C++: Un producto de la familia .NET de Microsoft para desarrollar aplicaciones Windows, hay una versión de libre descarga llamada Express Edition que puede ser obtenida desde la siguiente dirección: http://www.microsoft.com/express/vc/

Borland Turbo C++ Explorer Edition: Versión reducida pero funcional del famoso C++ para Windows de la ex-Borland, podemos desarrollar aplicaciones tipo Windows y de Consola, al igual que otra clase de elementos para nuestro programa. Este puede ser descargado de la siguiente dirección: http://www.turboexplorer.com/cpp

Dev-C++: Entorno de Desarrollo de C++ que funciona bajo Windows utilizando el compilador GNU GCC, una de las ventajas es que aprendieras a programar de forma correcta en C++, con este IDE puedes desarrollar programas para Windows (Ventana Tipo) o Consola. Lo puedes descargar desde: http://www.bloodshed.net/index.html

COMPILADORES

GCC: Compilador en linea de comando para entornos UNIX/Linux, se basa en estándares ANSI/ISO así que no esperes encontrar palabras de complemento utilizadas por Turbo C++, este puede ser descargado desde la siguiente dirección:http://gcc.gnu.org/