viernes, 29 de junio de 2012

Cuestionario Examen

Saludos
Despues de una semana muy agetreada les publico acontinuación el cuestionario para el examen del día de mañana sábado, por favor respondanlo y no tendran problemas para obtener 100 de calificación jejeje

Yo se que es tarde, pero el cuestionario solo es un medio por el cual quiero ayudarles, el examen estará basado exactamente en dichas preguntas, por lo tanto no me agradaría escuchar quejas como: "Es que usted dijo que lo subiría el domingo" "es que eso no lo vimos". Todos los conceptos fueron vistos en clase e incluso expuestos por ustedes, si fueron observadores y tomaron notas con eso tuvieron para estudiar.

Sin mas aqui esta el cuestionario:



PROGRAMACIÓN AVANZADA
1.       Describe las siguientes características de Java
a.       Orientado a objetos
b.      Seguro
c.       Portable
d.      Interpretado y compilado
e.      Multihilo
2.       ¿Qué es la maquina virtual de Java?
3.       ¿Qué es el SDK?
4.       Menciona 3 versiones de JAVA y su características
5.       ¿Qué es NetBeans?
6.       ¿Qué es objeto?
7.       ¿Qué es una clase?
8.       ¿Qué es un mensaje entre objetos?
9.       ¿Qué es la herencia?
10.   ¿Cuáles son las ventajas de la herencia?
11.   Describe la relación “Es un”
12.   Ejemplifica la herencia en JAVA
13.   ¿Qué es un método?
14.   ¿Qué es un atributo?
15.   ¿Qué son las clases abstractas?
16.   Menciona cual es la finalidad de las siguientes palabras reservadas: public y private en una clase
17.   ¿Qué es el polimorfismo?
18.   Pasos en NetBeans para crear un nuevo proyecto JAVA
19.   Pasos en NetBeans para agregar una nueva clase
20.   Pasos en NetBeans para agregar un formulario
21.   Pasos en NetBeans para ejecutar un formulario

sábado, 9 de junio de 2012

Primer aplicación Swing JAVA

Saludos,
después de haber peleado en clase con los paquetes y la clase "Áreas" que no todos tenían, les publico a continuación el proyecto integro que utilizo para la explicación.





DESCARGAR


Por favor descargar el archivo, descomprimir y abrir mediante la opción "Abrir proyecto" en NetBeans heee!!!.

Les recuerdo que las tareas para esta semana son:
- Terminar el formulario que calcule el área de cuadrados, triángulos y círculos.
- Investigar, probar o usar las diferentes formas de JOptionPane

jueves, 7 de junio de 2012

Creación de formularios Windows en JAVA

Saludos!!





Finalmente si algunos logran ver esta entrada de blog publicada hoy jueves, y no miércoles como esperaba la mayoría, les recuerdo que deben entregar funcionando su el programa de áreas, y también deben llevar un ejemplo de programa utilizando formularios de Windows.


Para que empiecen a adentrarse en los conceptos visuales (tipo Windows) de Java vamos a utilizar Swing ¿Qué es?, aquí les dejo un link con algo de documentación que utilizaremos.

http://www.polinux.upv.es/drupal/files/charlaSwing.pdf

Echenle un vistazo...

jueves, 31 de mayo de 2012

Clase JAVA: Áreas

Después de alguno días de ausencia por este blog, hoy le comparto el código fuente de la clase Java que les mostré en la sesión anterior, por favor creen una nueva clase llamada "Áreas" y copien dentro el código:

package upav.orizaba.com;

public class Areas {
    public float pi=  3.1416f;
   
    public float Cuadrado(int lado) {
        return lado*lado;
    }
   
    public float Triangulo(int base, int altura) {
        return (base*altura)/2;
    }
   
    public float Circulo(float radio) {
        return pi*(radio*radio);
    }
   
    public float Circulo(int diametro) {
        return Circulo((float)diametro/2);
    }
}



Recuerden que una clase, es mientras no se use, solo la definición de atributos y métodos de un objeto. Por lo tanto podemos deducir que por si sola es como LÁPIZ o una GOMA no serán útiles hasta que sean utilizados o llamados (por mensajes)  desde proceso.

Por lo tanto para dar uso a nuestra clase, la debemos de mandar a llamar desde la clase INICIAL que tiene el mismo nombre del proyecto y que tiene un método "main(String[] args)"; en mi caso el proyecto se llama UPAV2 por lo tanto busco la clase llamada UPAV2.java y ahí dentro pego el siguiente código:


    public static void main(String[] args) {
        // Mensaje de saludo

        System.out.println("Saludos a TODOS!!!");
        

        // Es en esta línea de código donde la CLASE Áreas se convierte en un OBJETO llamado oAreas
        // de aquí en adelante este objeto tendrá todas los atributos y métodos definidos en la clase
        Areas oAreas = new Areas();

         
        // Al presionar punto después de escribir el nombre del objeto, aparecen los métodos, que para 
        // nuestro ejemplo seleccionamos "Cuadrado" y enviamos como valor 8 para obtener un resultado.
        float resultado = oAreas.Cuadrado(8);
  
        // Imprimimos el resultado
        System.out.println("El área de un cuadrado de lado 8 es: " +  resultado);
    }



Solo les recuerdo que en la misma clase inicial deberán de agregar al principio, antes de la declaración de la clase la siguiente línea para que puedan utilizar la clase Área:

import upav.orizaba.com.*;

Ejecuten y prueben su programa, deberá de funcionar sin problemas, pueden imprimir el resultado o bien pueden llevar el proyecto funcionando la siguiente clase.



martes, 15 de mayo de 2012

Iniciando el nuevo curso: Programación avanzada JAVA

Saludos!!!
Como lo dice el titulo, el material que publicaré a partir de este post estará orientado al desarrollo de aplicaciones de escritorio JAVA J2SE
Por ahora les encargo instalar el siguiente software para realizar nuestras primeras prácticas en el lenguaje de programación:



  1. JDK. Descargable desde aquí:  http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u4-downloads-1591156.html; descarguen por la favor la que dice: 
     

    Java SE Development Kit 7u4

    Windows x86 (32-bit)
  2. y el IDE NETBeans, del cual la liga es la siguiente:  http://netbeans.org/downloads/7.0/index.html y eligan el idioma ESPAÑOL (Si alguno maneja muy bien el ingles descargue la correspondiente jejeje); escojan el paquete JAVA SE.

Instalen dichas herramientas en el mismo orden, cualquier duda por favor avisenme.

Les recuerdo la tarea:
- Cual es el futuro de JAVA (¿Qué ha pasado con él? ¿Cual es su vigencia?, etc.)


lunes, 19 de marzo de 2012

Código fuente "EL GATO"

Después de pelear, pelear y pelear con los símbolos ASCII extendidos y con el gotoXY me he decidido finalmente en el código para el GATO (triste y azul que no se olvida....).

Antes de publicar el código quiero comentarles algunas cuestiones:

- ASCII Extendido: Así se le denomina a los símbolos del código ASCII que van del 127 a 255 que no son soportados por el tipo de dato "char" de C++; pero si por el "unsigned char"; para no entrar en aspectos de código que no utilizamos en las sesiones preferí no utilizar dichos símbolos y reemplazarlos por los símbolos ASCII del 1 al 126. Revisen la imagen del código ASCII que publique en un blog anterior para observar los símbolos.

- gotoxy (conio.h): Gotoxy significa go to (x, y), es decir ir a (x, y), donde (x, y) es una coordenada de nuestra pantalla. Dicha función no viene incluida con la librería "conio.h" que provee el code:blocks y para agregarla había que realizar ciertas acciones, para ejemplo práctico de nuestro proyecto fue mejor no realizar ninguna acción extraña o fuera de contexto.
Finalmente tome la decisión de hacer una CLASE (Programación Orientada a Objetos) llamada "conio" que incluye dos funciones principales: mensajeXY() e Imprimir(); donde:
  • mensajeXY: Permite la impresión de un texto en una posición especifica de la pantalla basado en las coordenadas X (Columna) y Y (Renglón). Un ejemplo de su eso es:  mensajeXY("Hola mundo", 10, 3) dicha linea imprimirá el texto "Hola mundo" a partir de la columna 10 y renglón 3.
  • Imprimir(): Se debe colocar solamente una vez al final de todas las instrucciones "mensajeXY()" con el fin de mostrar en pantalla impreso todo el texto.
- conio.cpp: Este es el nombre del archivo que contiene las funciones de impresión en una posición especifica de la pantalla MS-DOS de 80 x 24 simulando el tan añorado gotoxy. Por favor pon atención en tener este archivo siempre junto al programa principal "Gato.cpp", en el código la referencia esta indicada como #include "conio.cpp"

Olvidando un poco la teoría les dejo unas imagenes del funcionamiento del programita:


 

 Y ahora sí el tan esperado código fuente del programa:

Gato.cpp

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include "conio.cpp"
using namespace std;

// Variables globales
string jugador1, jugador2;
int jugador;
string aGato[10]={"",};
string mensaje;

// Declaración de funciones
void ImprimirGato();
bool Tirar(int posic);
int buscarGanador();
bool buscarEmpate();

int main() {
    bool salir = false;
    int tiro=0;
    int resultado;

    system("cls");
    cout << "REGISTRO DE COMPETIDORES.  --El Gato--" << endl;
    cout << "--------------------------------------" << endl << endl;
    cout << "Escribe el nombre del JUGADOR 1:";
    cin >> jugador1;
    cout << "Escribe el nombre del JUGADOR 2:";
    cin >> jugador2;
    mensaje = "BIENVENIDOS";

    while (!salir) {
        if (jugador ==1) {
            jugador =2;
        }
        else {
            jugador =1;
        }

        ImprimirGato();
        cin>>tiro;
        if (Tirar(tiro)) {
            // Si el tiro fue válido volver a imprimir el gato
            resultado = buscarGanador();
            switch(resultado) {
                case 0: // Todavia no hay ganador
                    if (buscarEmpate()) {
                        mensaje = "EMPATE. Lo sentimos";
                        salir = true;
                    }
                    else {
                        mensaje = "Es TURNO de: " + (jugador==1?jugador2:jugador1);
                    }
                    break;
                case 1: // Ganador jugador 1
                    mensaje = "GANASTE!!! " + jugador1;
                    salir = true;
                    break;
                case 2: // Ganador jugador 2
                    mensaje = "GANASTE!!! " + jugador2;
                    salir = true;
                    break;
            }
        }
        else
        {
            // Mostrar mensaje de error en tiro
            mensaje = "Posicion ocupada!";
            if (jugador ==1) {
                jugador =2;
            }
            else {
                jugador =1;
            }
        }

    }
    ImprimirGato();
    cin.get();
    cin.get();

    return 0;
}


void ImprimirGato() {
    system("cls");

    conio a;
    a.mensajeXY("JUEGO DEL",26,3);
    a.mensajeXY("####  ####  ####  ####",26,4);
    a.mensajeXY("#     #  #   ##   #  #",26,5);
    a.mensajeXY("# ##  ####   ##   #  #",26,6);
    a.mensajeXY("#  #  #  #   ##   #  #",26,7);
    a.mensajeXY("####  #  #   ##   ####",26,8);

    a.mensajeXY("|   |",37,10);
    a.mensajeXY("|   |",37,11);
    a.mensajeXY("----+---+----",33,12);
    a.mensajeXY("|   |",37,13);
    a.mensajeXY("|   |",37,14);
    a.mensajeXY("|   |",37,15);
    a.mensajeXY("----+---+----",33,16);
    a.mensajeXY("|   |",37,17);
    a.mensajeXY("|   |",37,18);

    a.mensajeXY((aGato[1]==""?"1":aGato[1]),35,11);
    a.mensajeXY((aGato[2]==""?"2":aGato[2]),39,11);
    a.mensajeXY((aGato[3]==""?"3":aGato[3]),43,11);
    a.mensajeXY((aGato[4]==""?"4":aGato[4]),35,14);
    a.mensajeXY((aGato[5]==""?"5":aGato[5]),39,14);
    a.mensajeXY((aGato[6]==""?"6":aGato[6]),43,14);
    a.mensajeXY((aGato[7]==""?"7":aGato[7]),35,17);
    a.mensajeXY((aGato[8]==""?"8":aGato[8]),39,17);
    a.mensajeXY((aGato[9]==""?"9":aGato[9]),43,17);

    a.mensajeXY("JUGADORES",3,19);
    a.mensajeXY("X -" + jugador1,7,20);
    a.mensajeXY("O -" + jugador2,7,21);
    if (jugador==1) {
        a.mensajeXY("==>",3,20);
    }
    else {
        a.mensajeXY("==>",3,21);
    }

    a.mensajeXY(" ------------------------  ",52,21);
    a.mensajeXY("|                        | ",52,22);
    a.mensajeXY(" ------------------------ |",52,23);
    a.mensajeXY("   -----------------------",52,24);

    a.mensajeXY(mensaje,54,22);
    a.imprimir();
}


bool Tirar(int posic) {
    bool retorno = false;
    if (aGato[posic]=="") {
        // Tirar
        if (jugador == 1) {
            aGato[posic] = "X";
        }
        else {
            aGato[posic] = "O";
        }
        retorno = true;
    }

    return retorno;
}

int buscarGanador() {
    int retorno =0;
    bool HayGanador = false;
    string cadenaGanadora;
    if (jugador == 1) {
        cadenaGanadora = "XXX";
    }
    else {
        cadenaGanadora = "OOO";
    }

    if (aGato[1] + aGato[2] + aGato[3] == cadenaGanadora) HayGanador = true;
    if (aGato[4] + aGato[5] + aGato[6] == cadenaGanadora) HayGanador = true;
    if (aGato[7] + aGato[8] + aGato[9] == cadenaGanadora) HayGanador = true;
    if (aGato[1] + aGato[4] + aGato[7] == cadenaGanadora) HayGanador = true;
    if (aGato[2] + aGato[5] + aGato[8] == cadenaGanadora) HayGanador = true;
    if (aGato[3] + aGato[6] + aGato[9] == cadenaGanadora) HayGanador = true;
    if (aGato[1] + aGato[5] + aGato[9] == cadenaGanadora) HayGanador = true;
    if (aGato[3] + aGato[5] + aGato[7] == cadenaGanadora) HayGanador = true;

    if (HayGanador) {
        retorno = jugador;
    }

    return retorno;
}

bool buscarEmpate () {
    bool retorno = false;
    string cadena ="";
    for (int i=1; i<=9; i++) {
        cadena = cadena + aGato[i];
    }
    if (cadena.length()==9){
        retorno = true;
    }

    return retorno;
}

 conio.cpp

#include <iostream>
#include <sstream>
using namespace std;

class conio {
    unsigned char tablero[80][24];
    void InicializarTablero();

    public:
        conio();
        void mensajeXY(string cadena, int x, int y);
        void mensajeXY(unsigned char simbolo, int x, int y);
        void imprimir();
};

void conio::mensajeXY(string cadena, int x, int y){
    for (int i=0; i<cadena.length(); i++){
        tablero[x+i-1][y-1] = cadena[i];
    }
}

void conio::mensajeXY(unsigned char simbolo, int x, int y){
    tablero[x-1][y-1] = (unsigned char)simbolo;
}

void conio::imprimir() {
    int x, y;
    for (y=0; y <24; y++){
        for (x=0; x <80; x++){
            cout << (unsigned char)tablero[x][y];
        }
        cout << endl;
    }
}

void conio::InicializarTablero(){
    int x, y;
    for (x=0; x <80; x++){
        for (y=0; y <24; y++){
            tablero[x][y]=' ';
        }
    }
}

conio::conio() {
    // Inicializar tablero
    InicializarTablero();
}

 

miércoles, 14 de marzo de 2012

Diseñando el programa del GATO

Después de varios días intentando subir los documentos prometidos necesarios para el diseño del programa del GATO en modo TEXTO, aquí los tienen:

FormatoPantallaTexto.pdf
- Este documento deberán de imprimirlo y sobre él dibujar la ventana del GATO, considerando que en cada cuadrito solo puede haber un símbolo o letra o numero.

ASCIItable.jpg
- Esta es la tabla con los códigos ASCII soportados por la computadora, descarguenla y conservenla, estoy segurisimo de que en cualquier momento de la vida la necesitaran.

Y para que se den una idea de como se utiliza el formato de diseño, les dejo la foto de mi propuesta de diseño:


Saludos

PD.: Es probable que el día viernes o antes les publique el código C++ para mandas a imprimir en una posición especifica de la pantalla basado en columnas y renglones.