Patricio Aros

xd

lunes, 10 de octubre de 2011

Ciclos en Java

Autor: Patricio Aros Erices
Competencia:  Desarrollo de software (Nivel 1).

Descripción de la actividad
    Lo que se pedia en esta actividad era, mediante el laboratorio, crear un programa usando Ciclos, los ciclos como su nombre lo indican hacen que algo se haga una y otra vez, puede ser indefinidamente o hasta cierto punto o regla. Tenemos asi varios tipos o sentencias por ejemplo for, se usa asi:

 
for (valores de entrada;condición de terminación;iteración por ciclo); 
Estructura de for en diagrama de flujo.
 
 Tenemos otro como es while:
 
 
while (condición de terminación)
Estructura en Diagrama de Flujo para while.
 
 
Puede usarse como condicion la palabra true, lo que origina que el ciclo no termine nunca, dentro de los ciclos
 se pueden usar otras sentencias como break y continue, las cuales hacen que se salga del ciclo y/o haga la
 siguiente iteracion con continue.  



Problema:

Tome un valor entero y regrese el número con sus dígitos invertidos. Ejemplo: dado el número 7631, regresa 1367.

Solucion:
Primero que nada, en lo general se crean ejemplos y dentro de os ejemplos los llamados casos extremos, que es cuando el usuario a quien se le solicitan datos ingresa otras cosas de manera erronea y para los cuales se crean mensajes como "revise bien" o "solo numeros" entre muchos otros solo se debe elegir. Un ejemplo de caso extremo para este ejercicio sería
1 -> P-> ?    
“El número ingresado es menor a dos dígitos”
 Donde se ingresa solo un digito y el cual si se trata de invertir queda igual, existen varias más pero creo que ya se captó la idea de que es un caso extremo.

Luego se continua con los datos de ingreso y de salida en este caso, se ingresan numeros de tipo entero(int) obteniendo lo mismo pero de manera invertida asi que su salida es tambien un int:
NOTA IMPORTANTE: Siempre se pide que en este tipo de ejercicios o donde se trabajes con numeros, que el numero final sea un entero y sea UN NUMERO, no 1 numero al lado de otro, por eso la mayor cantidad de veces intentamos usar System.out.Println(); este print difere del normal ya que al poner ln le estamos diciendo a java que es mensaje que esta dentro lo imprima dentro de la siguiente linea, si usaramos sysmtem.out.print(); imprimiria los numeros o palabras uno al lado del otro viendose como un solo numero pero no siendolo.

A continuacion se hace una generalizacion del problema, que es esto? es como lo resolvemos, la respuesta en si de como generar que el programa que luego escribamos funcione. La generalizacion de este problema es simple, primero que nada sacamos el modulo, el modulo se calcula con el signo % la mayoria de las veces con un 10 ya que si hacemos esto: 123764%10 en java el resultado de esa operacion seria 4, el ultimo numero de la cadena, entonces con este 4 lo convertimos en el primer número, como? sencillo, lo multiplicamos por 100000, por que? porque el numero es de 6 digitos y asi obtendremos el 400000 para luego poder ir haciendo lo otro, pero primero, ya que tenemos el 4 hay que eliminarlo, sino haria lo mismo con el numero 4 siempre generandose un error para eliminarlo es simple el numero 123764 se divide por 10, y como en java si trabajas con enteros, te da entero de resultado aun asi halla un numero con decimal asi que 123764/10 es igual a 12376 y asi podemos seguir con la cadena.


Explicado de manera mas sencilla:


Aquí esta explicado de manera mas sencilla lo expresado arriba









Luego de esto se procede con el final, el codigo. El codigo para este ejercicio es:

CODIGO:


/* 12.- Tome un valor entero y regrese el numero con sus dígitos invertidos.
 * Ejemplo: dado el número 7631, regresa 1367.
 */
import java.util.Scanner;

public class ClasePrincipal
{
    public static void main(String [] args)
    {   //Prepara al teclado para que capture el numero
        Scanner leer = new Scanner(System.in);
        int num;

        ClasePrincipal objetoCreado = new ClasePrincipal(); //Se crea un objeto de la clase Main

        System.out.println("Introduzca un numero: ");
        num = leer.nextInt(); //guarda el dato en la variable numero

        System.out.println("\nEste es el numero invertido:");
        objetoCreado.InvertirNumero( num ); //Declara objeto para que invierta el numero (aun no está implementado)
    }

    //Implementa el método Invierte
    public void InvertirNumero (int y )
    {
        int digitos = Cuenta(y);
        for (int i = 1; i < digitos; i++)
        {
            System.out.print(y % 10);
            y /= 10;
        }

        System.out.println(y);
     }

     public int Cuenta( int x )
     {
        int divisor = 1;
        int contador = 0;
        int digito = 1;

        while ( 0 != digito )
        {
            digito = x / divisor;
            divisor *= 10;
            contador++;
        }
        return --contador;
    }
}
Captura de pantalla del codigo en funcionamiento
REFLEXION:
Gran parte de los códigos que usamos ahora y que seguiremos haciendo para crear cosas, se usan los ciclos, por que? la respuesta es sencilla, ahorra mucho código, cuando realizemos grandes programas o softwares nos daremos cuenta que el espacio y orden son cosas muy fundamentales y que nos ahorraran un gran dolor de cabeza al momento de apreciar algun error o mejorar algo.

0 comentarios:

Publicar un comentario