domingo, 13 de noviembre de 2011

Bonus Point 6

Autor: Gianinna Salazar.
Competencia: Aplica las Ciencias de la ingeniería (Nivel 1).
Asignatura: Desarrollo y Aplicación Cliente Servidor.
Palabras clave: Informe, lenguaje Java y programa Netbeans.


Descripción de la Actividad

Les voy a compartir mi experiencia, como estudiante de 1er año de Ingeniería civil informática, sobre la vez que tuve que realizar un programa en Netbeans.


El trabajo consistía en crear un programa en Java que permitiera al usuario ingresar una frase y al ingresarlo este debía verificar si lo ingresado era una frase o eran números.
Si lo ingresado era un número, el programa tenía que mostrar un mensaje de error diciendo que solo se permitían letras y no números y si lo ingresado era una frase, este debía separar las consonantes de las vocales.  



Solución



Paso 1: Ejemplos.

Entrada                                            proceso                                         salida
jorge                                                [proceso]                                        jrg - oe
Gianinna                                          [proceso]                                      Gnnn-iaia
azUl                                                 [proceso]                                         zl-aU
VERDE                                            [proceso]                                     VRD-EE
@hotmail                                         [proceso]                      Error: @ no es una letra.
12345                                               [proceso]                      Error: 1 no es una letra.                               
Comp utador                                    [proceso]            Error: Espacio no es una letra.                            
    mesa                                            [proceso]            Error: Espacio no es una letra.                            
http//                                                 [proceso]                     Error: / no es una letra.
EscObA                                            [proceso]                                  scba-EOA
PaRaLeLePíPeDo                            [proceso]                            PRLLPPD-aallieo
Rec4tángulo                                      [proceso]                   Error: 4 no es una letra.
+                                                        [proceso]                   Error: + no es una letra.
las 2:30                                              [proceso]          Error: Espacio no es una letra.
jorge.a.ms                                          [proceso]                    Error: .  no es una letra.




Paso 2: Análisis y Diseño (Proceso).

La solución estándar al problema de determinar las vocales y las consonantes de una frase, la cual es ingresada por teclado, es separar las vocales de las consonantes para así determinarlas más fácilmente. Esto se hace con un for en donde recorre toda la frase (letra por letra) y si es igual a una vocal minúscula o mayúscula la guarda en una variable llamada vocal.
En el caso de que no sea vocal la guarda como consonante en una variable llamada consonante.


El programa solo reconocerá caracteres tales como vocales y consonantes cualquier otro carácter distintos a estos no será validado, por lo que el programa arrojara un error que especifique lo que es y donde se encuentra, posteriormente la frase será descalificada del concurso.




En la imagen se muestra el proceso de Exception en donde existen dos excepciones una para los espacios y otro para cualquier carácter distinto a letra.
Esto se hace dentro de un metodo en donde se especifica el carácter para cualquier frase distinta de letra ente entra en un for y lo verifica para saber si existe esto en la frase ingresada por el usuario, luego de encontrarlo entra en un if donde si el carácter es igual a un espacio muestra un mensaje de Error para espacio y si no es espacio tira un error donde dice que el carácter no es una letra.




Paso3: Código Fuente.

Clase Principal

package separarletrasexception;
import java.util.*;
/**
 *
 * @author gianinna
 */
public class SepararLetrasException {
    public static void main(String[] args) {
        try{
        Scanner leer= new Scanner(System.in);
        System.out.print("Ingrese una frase:");
        String frase= leer.nextLine();
       
        String consonante="";
        String vocal="";
        int voc = 0; //Contador de vocal
        int con = 0; //Contador de vocal
       
        for(int i =0; i<frase.length();i++)
        {   //Condición para encontrar las vocales
            if(frase.charAt(i)=='a'||frase.charAt(i)=='e'||frase.charAt(i)=='i'||
               frase.charAt(i)=='o'||frase.charAt(i)=='u'||frase.charAt(i)=='A'||
               frase.charAt(i)=='E'||frase.charAt(i)=='I'||frase.charAt(i)=='O'||
               frase.charAt(i)=='U')
            {
                //Cuenta las vocales       
                voc++;
                vocal=vocal+frase.charAt(i);
                ChequearFrase(vocal);
            }
            else
            {   //Cuenta las consonantes
                con++;
                consonante=consonante+frase.charAt(i); 
                ChequearFrase(consonante);
            }
                 
        }
        System.out.println("Las consonantes son: "+consonante);
        System.out.println("Las vocales son: "+vocal+"\n");
        }
        catch (ExceptionParaLetras e){                              //En caso de error entra al cath
                System.out.println("Error:"+ e.getMessage());       //Muestra el error
        }
        finally {
                System.out.println("Fin del programa");               //Finaliza el programa 
                }
    }
       
        //Método donde se configura la exception para que revise que la frase solo
    //tenga letras.
    public static void ChequearFrase(String fraseln) throws ExceptionParaLetras{
        char caracter ='0';

        for(int i=0;i<fraseln.length();i++){
             
              //Obtengo la letra ubicada en la posicion i de la cadena <nombreln.length()>.
              caracter= fraseln.charAt(i);
             
         //Utilizando el metodo isLetter() de la clase Character, verifico si la variable
         //<caracter> es una letra.
         //Si esta variable contiene un caracter que no es letra, entonces el entra en el
         //ambito del if.     
           if(!Character.isLetter(caracter)){
               String error;
               if(caracter==' ')
               {error= "Espacio no es una letra. Solo se pueden usar letras en la frase.\n";}
               else{
                error = caracter+ " no es una letra. Solo se pueden usar letras en la frase.\n";}
              
                throw new ExceptionParaLetras(error);
             }
           }
         }
  }


Clase Heredada de la clase principal

package separarletrasexception;

/**
 *
 * @author gianinna
 */
public class ExceptionParaLetras extends Exception{
    public ExceptionParaLetras(String mgs) {
        super (mgs);
   
 }
}

Imagen netbeans clase principal:



Imagen netbeans heredada de clase principal:






Salida con frase correcta
Frase: hola



Salida con frase incorrecta
Frase: hola hola





Salida con frase incorrecta
Frase: ho23




Paso 4: Diagrama de Actividad.




Paso 4: Diagrama de Clase.



Reflexión

Este trabajo me sirvió para aprender del uso de Netbeans y de las diversas cosas que se pueden realizar con este programa.


Lo que mas me pareció interesante de realizar este programa fue el crear Excepciones, ya que uno crea una restricción permitiendo al usuario que solo ingrese lo que el programa pide y si por error ingreso algo que no correspondía le muestre en mensaje de error diciendo que lo que ingreso lo corresponde a lo pedido.
Este tipo de errores ocurren usualmente ya que no todas las personas entienden las instrucciones de la misma forma entonces un buen mensaje diciendo que lo ingresado no es lo permitido hace el usuario entienda mejor la instrucción e ingrese lo correcto. 


Laboratorio 17 de Nov: Applet.

Autor: Gianinna Salazar.
Competencia: Aplica las Ciencias de la ingeniería (Nivel 1).
Asignatura: Programación II.
Palabras clave: Informe, lenguaje Java y programa BlueJ.


Descripción de la Actividad

Les voy a compartir mi experiencia, como estudiante de 1er año de Ingeniería civil informática, sobre la vez que tuve que realizar un programa en Java, el cual tenía que pintar la mitad de un cuadrado de 7 x 7.


El trabajo consistía en crear un cuadrado que estuviera compuesto por cuadrados más pequeños de 7 x 7. Luego de tener el cuadrado listo, se pinta de color negro la mitad de este, lo que significa ir pintando cada cuadrado pequeño que compone a este cuadrado. 
Cuando el cuadrado este pintado se va poder apreciar un triangulo formado por 28 cuadrados pequeños.





Solución


Análisis y Diseño:


Análisis de entrada: 

Un cuadrado principal que está dividido en 7 cuadrados pequeños horizontal y 7 cuadrados pequeños vertical, donde hay variables de tipo entero como cuadHor = 7 , cuadVer = 7 (Los cuales dan la dimensión del cuadrado) y yCoord = 10 , xCoord = 10 Los cuales dan los espacios a cada extremo del cuadrado).


Análisis de salida: 

Cuadrados pequeños que rellenan un cuadrado de 7x7 (7 cuadrados pequeños horizontales y 7 cuadrados pequeños verticales) los cuales están pintados de color negro solo la mitad de este. Las variables para pintar los cuadrados son de tipo en tero x = 10, y = 10  y un contador = 0.



Para resolver este trabajo creo una case llamada applet1 que extiende de JApplet, después en la clase principal creó una variable llamada cuadHor de tipo entero con valor 7, permitiendo crear 7 cuadrados horizontales pequeños, una variable llamada cuadVer de tipo entero con valor 7, permitiendo crear 7 cuadrados verticales pequeños, una variable llamada yCoord de tipo entero con valor 10, para crear un espacio arriba del cuadrado, una variable llamada x de tipo entero con valor 10, para dar un espacio horizontal, una variable llamada y de tipo entero con valor 10, para dar un espacio vertical y por último una variable llamada contador de tipo entero con valor 0.

Luego creo un for y digo que para piso igual a 0 hasta piso menor a cuadVer se inicializa una variable llamada xCoord igual a 10, para dar espacio izquierdo del cuadrado, después en otro for digo que para plano igual a 0 hasta plano menor a cuadHor se cree el tamaño de los cuadrados pequeños que en este caso van a ser de 30 x 30 y de los espacios entre estos cuadrados que van hacer de 45.

Por último queda pintar la mitad del cuadrado con un color negro y creo un while diciendo que si la variable contador creado anteriormente es menos o igual a la variable piso se pinte la mitad del cuadrado de color negro.


Diagrama de flujo





       


Código de Fuente


import java.awt.*;
import javax.swing.*;
    public class applet1 extends JApplet {                                  //Clase que extiende de
                                                                                                  //JApplet
        public void paint(Graphics g) {                                          //Parte Gráfica
            int cuadHor = 7;                                
            int cuadVer = 7;
            int yCoord = 10;                                                             //Espacio arriba del cuadrado        
            int x=10;   
            int y=10;
            int contador=0;
               
                for (int piso = 0; piso < cuadVer ; piso++)
                {
                int xCoord = 10;                                                        //Espacio izquierdo del cuadrado
                for (int plano = 0; plano < cuadHor ; plano++)
                {
                    g.drawRect(xCoord, yCoord, 30, 30);                    //Porte del cuadrado 30,30
                    xCoord = xCoord + 45;                                         //Espacio entre cuadrados                      
                                                                                                 //horizontal                   
                }
                    yCoord = yCoord + 45;                                          //Espacio entre cuadrados
                                                                                                 //verticales
                   
                    while(contador<=piso){
                       g.fillRect(x,y,30,30);
                       y=y+45;
                       contador++;
                   
                    }
                    x=x+45;
                    y=10;
                    contador=0;
                }
              }     
         }   



Salida del programa





Aquí se puede apreciar la salida del programa, donde el cuadrado grande está dividido por cuadrados pequeños de 7 x 7 y pintado por la mitad de color negro.



Reflexión

Este trabajo me sirvió para aprender del uso de Applet que es una forma de crear programas gráficos, lo que es muy entretenido ya que se puede dar color, forma, porte, etc a una figura específica.



Una de las figuras que se pueden hacer en Applet son rectángulos, líneas, círculos y figuras específicas creadas por el programador.


En el transcurso de esta asignatura me fui dando cuenta que el realizar programas con Applet resulta interesante ya que uno como programador puede ir colocando recursos propios para una mejor gráfica. 

Programa en Java: Decide

Autor: Gianinna Salazar.
Competencia: Aplica las Ciencias de la ingeniería (Nivel 1).
Asignatura: Programación I.
Palabras clave: Crear un Programa, lenguaje java y programa BlueJ.


Descripción de la Actividad

Les voy a compartir mi experiencia, como estudiante de 1er año de Ingeniería civil informática, sobre la vez que tuve que realizar un programa en java.
El trabajo consistía en crear un programa Java (la clase se llama Decide) el cual permite al usuario ingresar un número entero positivo.

El programa debe ocupar las siguientes reglas y en la secuencia que se indican al momento de que el usuario ingrese un número:

  • Si es par mayor que 10 restarle 10
  • Si es impar mayor que 50 sumarle 12
  • Si es par menor que 50 sumarle 20
  • Si es impar sumarle 1




Solución

Para resolver este trabajo creo una clase llamada Decise e importo todas las librerías, luego en la clase principal creo una variable llamada "a" de tipo entero y creo un Scanner llamado "leer" que permite al usuario ingresar un número. 

Ahora creo un if en donde especifico que si el usuario ingreso un número par mayor que 10, se le reste 10, sino creo otro if especificando que si el usuario ingreso un número impar mayor que 50, se le sume 12, sino creo otro if especificando que si el usuario ingreso un número par  menor que 50, se le sume 20 y sino creo otro if especificando que si el usuario ingreso un número impar, se le sume 1.



Código del Programa


   import java.util.*;
    
    public class Decide                                                     //Creo la clase Decide
    {
     public static void main()  
     {
      int a;                                                                        //Creo la variable a
      Scanner leer=new Scanner(System.in);                       //Creo un Scanner
      System.out.println("Ingrese n° entero");                       //Le pido al usuario que 
      a=leer.nextInt();                                                         //ingrese un número entero
      
      
      if(a>10 && a%2==0){                                                 //Si es par mayor que 10 se resta 10
         a=a-10;
         System.out.println(" Resultado es "  +a);}                 //Muestra el resultado
      else
        if(a>50 && a%2==1){                                               //Si es impar mayor que 50 se suma 12
             a=a+12;
              System.out.println(" Resultado es "  +a);}            //Muestra el resultado
          else
               if(a<50 && a%2==0){                                        //Si es par menor que 50 se suma 20
                 a=a+20;
                  System.out.println(" Resultado es "  +a);}        //Muestra el resultado
              else
                   if(a%2==1){                                                  //Si es impar se suma 1
                     a=+1;
                     System.out.println(" Resultado es "  +a);}     //Muestra el resulta
       }    
     }



Salida del programa 






Aquí muestro la salida del programa, donde el usuario ingreso el número 11 y como decía la instrucción, cuando un numero sea mayor que diez se le reste 10, dio como resultado 1.




Reflexión

Este trabajo me sirvió para conocer mas sobre el lenguaje java, el uso del Scanner que permite tener una conexión entre el usuario y el programa y sobre la utilización del if y el else que en el transcurso del año es utilizado frecuentemente.



Cabe destacar que este tipo de trabajos, de problemas cotidianos, hace que los alumnos los puedan resolver gracias a los conocimiento entregados en clases por el profesor a cargo y al ser interesantes hacen que estos perduren en el transcurso de los años.