APUNTES JAVA

Bucles determinados


               Son aquellos que sabemos de antemano cuantas veces se repetirá

·        For

·        For-each

For


Sintaxis

For (inicio bucle; condición; contador bucle)  { código….}

Inicio bucle: Normalmente la iniciaremos con una variable a la que le daremos valor en ese momento, este tipo variables para identificarlas mejor podemos llamarlas i,j,z…

Condición: Es aquello que tiene que cumplirse para que continúe ejecutándose el bucle.

Contador bucle: Forma de incrementar o decrecer

Ejemplo: Crearemos un número aleatorio de veces que se repetirá nuestro nombre en la ventana de inmediato.

public class Practica15_Bucles_determinados_For {


      public static void main(String[] args) {      

            int numero=(int)(Math.random()*10);

            String nombre="david";

            for(int i=0; i<numero ;i++ ) {

                   System.out.println(nombre);      

                                 }

                   System.out.print("el nombre se ha repetido "+numero+" veces ");

      }

}

Ejemplo2: Aparecerá una ventana emergente que nos pedirá nuestro correo electrónico, Cuando lo introduzcamos valorará en primer lugar si el char @ está en el mail introducido y por otra parte si hemos puesto un punto.

import javax.swing.JOptionPane;

public class Practica16_Bucles_determinado_for2 {

      public static void main(String[] args) {

            boolean arroba=false;

            boolean Punto=false;            

            int Contador_arrobas=0;

            int Contador_punto=0;

            String mail= JOptionPane.showInputDialog("introduce tu email");

            for (int i = 0 ; i< mail.length();i++) {

                   if (mail.charAt(i)=='@') {

                          Contador_arrobas++;

                           arroba= true;

                          }

                   if (mail.charAt(i)=='.') {

                          Contador_punto++;

                          Punto=true;

                          }

            }

            

            if (arroba==true && Punto==true && Contador_arrobas ==1 && Contador_punto ==1) {System.out.println("Correo correcto");}

            else if (arroba==false || Contador_arrobas >1 || Punto==false || Contador_punto>1 ) {System.out.println("intentalo otra vez Sam");}

      }

}

Ejemplo3:

Existe una propiedad del objeto array lenght que nos indica la longitud de una matriz y nos resulta muy útil para recorrer un array.

public class Practica19_Bucles_determinados_for5_arrays_length

      public static void main(String[] args) {

          

            int[]array= {10,20,30,50,60,-658,1,2,3,4,5,6,-1,-2,-3,-4,-5,-6,-7,-8,-9};

            for (int i=0; i<array.length ;i++) {

                   

                   System.out.println("en posició "+i+" esta el numero "+array[i]);           

            }

      }

}

MATRICES (ARRAYS O ARREGLOS)

Una matriz es una estructura de datos que nos permite almacenar una gran cantidad de valores del mismo tipo. El tamaño que va a tener el array lo determinaremos en el inicio.


SINTAXIS


Int [] nombre_array=new

Int [número valores almacemados]

Long

Long

Short

short

Doublé

double



Ejmplo. Declaramos una matriz de elementos que sean números enteros.


3

6

8

10

20







Posición

0

Posición

1

Posición

2

Posición

3

Posición

5



La declaramos:

Int[] array = new int [5];


Ahora la iniciaremos (cargar los datos). Siempre la iniciaremos desde 0, por lo que un array de 5 posiones irá del 0 la 4.


Array [0]= 3;

Array [1]= 6;

Array [2]= 8;

Array [3]= 10;

Array [4]= 20;


También la podríamos declarar en línea.


Int[] array = {3,8,10,20};




BUCLE FOR EACH




      Es un método más tapido para recorrer un bucle.



SINTAXIS



For (


String

Variable : variable a recorrer){código…}

Int

Long





Ejmplo 1:


public class Practica20_Bucles_determinado_ForEach {


      public static void main(String[] args) {


      String []dias_semana=new String[7];

            int contador =0;

                          for (int i=0;i<dias_semana.length;i++) {             dias_semana[i] =JOptionPane.showInputDialog("dime el dia "+ (i+1));

            }

            

            for (String j:dias_semana) {

                   contador++;

                   

                   System.out.println(" el dia de la semana "+contador + " es "+j);

            }




MATRICES BIDIMENSIONALES




Para conseguir un array en dos dimensiones introduciremos un array dentro de otro. Para encontrar una semejanza pensemos en una tabla.


0,0

1,0

2.0

3.0

0.1

1.1

2.1

3.1

0.2

1.2

2.2

3.2




Este array lo declararíamos de la siguiente manera:


Int [ ] []array = new int [numero columnas][numero filas];

Int [ ] [ ] array = new int [4][3];


Otra forma es hacerlo in line:

Int [ ] []array = { {10,5,63,90,2,3} , {1,93,58,20,58} {10,15,20,30,40,50,60} , {1,2,3,4,5,6,7,8}};



Ejmplo 1:


En el siguiente ejercicio crearemos un array en dos dimensiones que rellenaremos con números aleatorios e imprimiremos en la ventana de inmediato. Para poderlo realizar necesitaremos crear un bucle for anidado (un for dentro de otro).

public class Practica21_Matrices_Bidimensionales {


    public static void main(String[] args) {

    

         

         int[][] array=new int [4][5];

         

         for (int i =0; i<4;i++) {

               

               for (int j=0;j<5;j++) {

                    

                    array[i][j]= (int)(Math.round((Math.random()*100)));

                    System.out.println("En la posición( "+ i +" , "+j+ ") : " + array[i][j]);

               

               }

               

               System.out.print("\n");       

               

         }

    }

}




Ejemplo2:

    En este caso crearemos registro de forma aleatoria (Math.random) y los imprimiremos en la venta de inmediato, pero en esta ocasión utilizaremos un bucle for each.




public class Practica23_Matrices_Bidimensionales_forEach {


    public static void main(String[] args) {


         int matriz [][]=new int [5][10];

         

         

         for (int [] TodaLAmatriz:matriz) {

               

               System.out.println("");

               

               for (int posicion_actual:TodaLAmatriz) {

         

                    posicion_actual =(int)Math.round((Math.random()*100));

                    System.out.print(posicion_actual +"   ");             }   

         }        

    }

}







Ejemplo3:



En el siguiente caso tenemos una tabla de exceel en la que existen una serie de interés que cargan sobre unos capitales iniciales, generando incrementos sobre capital.



10%

11%

12%

13%

14%

15%

10000,00

10000,00

10000,00

10000,00

10000,00

10000,00

11000,00

11100,00

11200,00

11300,00

11400,00

11500,00

12100,00

12321,00

12544,00

12769,00

12996,00

13225,00

13310,00

13676,31

14049,28

14428,97

14815,44

15208,75

14641,00

15180,70

15735,19

16304,74

16889,60

17490,06




public class Practica24_Matrices_Bidimensionales_forEach2 {


    public static void main(String[] args) {

    

         

         double acumulado, interes=0.1;

         

         

         double[][] saldo= new double [6][5];

         

         for (int i=0; i<6;i++) {

               

               saldo[i][0]=10000;

               acumulado=10000;

               

               for (int j=1;j<5;j++) {

                    acumulado=acumulado+(acumulado*interes);

                    saldo[i][j]=acumulado;

               

               }

               interes=interes+0.01;

         }

         for(double[] TodalaMatriz:saldo) {

               System.out.print(" ");

               

               for (double posicionActual:TodalaMatriz) {

                    

                    System.out.printf("%1.2f",posicionActual);

                    System.out.print(" ");

                    

               }

               

               System.out.println("  ");

               

         }

    }


}




















POO



               POO surgen entre las décadas de los 60/70 y son las siglas de Programación Orientada a Objetos que viene del Inglés OOP (Object Oriented Programming). Es un paradigma informático que en su momento revolucionó la forma de programar, anteriormente la programación estaba orientada a procedimientos (Fortran, Cobol, Basic, etc), esto generaba una serie de problemas:

·        El código era muy largo

·        En caso de error era muy complejo de solucionarlo por otro programador, porque era fácil acabar creando código espagueti (instrucciones como go to o go sub hacían que el programa saltara constante mente de un lado a otro).

·        Si existía un error el programa se caía.

·        Era muy complicado reutilizar un programa para otro que fuera parecido.


Para resolver todos estos problemas se generó POO. El programa que creamos se subdivide en pequeños programas u objetos (módulos o clases), independientes que al final se unen formando un todo (modularización). Cada objeto va a tener una serie de características (un estado, unas propiedades o atributos y un comportamiento).




Esto nos facilita mucho las cosas, ¿para qué sirve dividir el programa en objetos?:

·        Si un objeto se cae el resto del programa puede seguir funcionando, debido a la modularización del programa.

·        Es más fácil detectar en que parte del programa está fallando ya que iremos directamente al objeto que falla. Tratamiento de excepciones.

·        Podemos reutilizar cada uno de nuestros objetos en un nuevo programa (herencia).

·        Encapsulamiento los objetos son completamente independientes, se comunican entre sí en un punto determinado pero no tiene por qué depender del resto.


 Un objeto tendrá una serie de características:

     Un estado: Como se encuentra en este justo momento (Activo, inactivo; encendido, pagado; incrementar, decrecer, estático, dinámico…)

     Unas propiedades o atributos: Características del objeto (Color, peso, altura…)

     Un comportamiento o método: ¿Qué puede hacer? (Sumar, restar, dividir, encender, apagar).






     Clase: Modelo donde se redactan las características comunes de un grupo de objetos. Arrancando con esa base se pueden construir diferentes objetos.

o  Ejm. El tronco de un árbol: todos los arboles tienen un tronco como base.

§ A partir de esto existen diferentes objetos: Naranjo, olivo, abedul, pino….


     Objeto: Ejemplar perteneciente a una clase y pose una serie de propiedades y comportamientos.

o  Propiedades (atributos): valor, color, posición…

o  Comportamientos ¿Qué es capaz de hacer? : sumar, restar, multiplicar, cambiar de color, modificar su posición en el espacio, encender, apagar….


Nosotros podremos acceder a las propiedades y comportamiento desde (pseudocódigo).


Ø Propiedades o atributos: Son las Variables o constantes que tiene una clase. Para acceder a las propiedades y modificarlas utilizamos la nomenclatura del punto ( nombre_objeto . propiedad = Valor)

o  Arbol.color=”amarrilo”;

o  Arbol.Altura=2000;

o  Arbol.ancho=50;

Ø Comportamiento o método: Para acceder a los comportamientos y modificarlas utilizamos la nomenclatura del punto ( nombre_objeto . método () ).

o  Arbol.Flexividad();

o  Arbol.Crecimineto();

o  Arbol.Enraizamiento();



     Ejemplar de clase. Instancia de clase. Ejemplarizar una clase. Instanciar una clase: Hacer una llamada a una clase para poderla utilizar.




Ejemplo.



1º. Crearemos una clase llamada árbol.


 package poo_arbol;


public class arbol {


    // ATRIBUTOS

    

    int alto,ancho;

    String copa,colorHoja;

    

    

    //le daremos valor a cada una de las propiedades COMPORTAMIENTOS O MÉTODOS

    

    public arbol() {

         

         alto = 1500; ancho=50; copa = "redonda" ; colorHoja = "verde";

               }

    

}




2º. Ahora utilizaremos la Clase árbol para construir el Naranjo.


public class Arbol_Naranjo {


    public static void main(String[] args) {

         

         

         /* Instanciar una clase. Ejemplar de clase:

          * realizamos una llamada al arbol que es la matriz con una serie de valores

          * prederterminados ya por nostros y que ahora podemos utilizar o modificar.     

          */

         arbol Naranjo = new arbol();

         

         System.out.println

                    ("UN NARANJO TIENE: \n\n"

+ "De color de hoja:                         " + Naranjo.colorHoja + "\n"

+ "con una altura de:                        " + Naranjo.alto     + "\n"

+ "su tronco tiene una circunferencia de:    " + Naranjo.ancho    + "\n"

+ "Su compa es :                             " + Naranjo.copa     + "\n"

                          );


    }


}





     Modularización: Dividir un programa en módulos o ficheros (lclases). Cuando construimos un programa necesitaremos como mínimo dos clases. Siempre existirá una clase principal donde estará el método main  que es en la que se ejecuta el programa. En el instanciaremos otras clases.


     Encapsulamiento/encapsulación: Es proteger las propiedades o atributos en nuestro caso sería la clase árbol (alto,ancho,copa,colorHoja). Para ello pondremos el modificador de acceso pribate delante de las variables. Así evitaremos que las propiedades o atributos puedan ser modificados en otra clase.

Ejm.


package poo_arbol;

public class arbol {

    // ATRIBUTOS LOS ENCAPSULAMOS CON PRIVATE

    private int alto,ancho;

    private String copa,colorHoja;

    //METODO CONSTRUCTOR en el que le damos valor a nuestras variables

    public arbol() { alto = 1500; ancho=50; copa = "redonda" ; colorHoja = "verde"; }

}



     Métodos: Es la forma que tiene de comunicarse las clases entre sí, los conectores.

o  Método Gettes o captadores: Devuelve o capta el valor de una propiedad sin modificarlo.

§ Public int/String… variable (){return + código ;}

o  Método Stters o definidores: Define o establece el valor de una propiedad.

§ Public void nombre_metodo(){codigo}

La palabra void indica que el método no devuelve ningún valor.



Ejm.

package poo_arbol;

public class arbol {

    // ATRIBUTOS LOS ENCAPSULAMOS CON PRIVATE

    private int alto,ancho;

    private String copa,colorHoja;

    

    private int oscilacion,absorcion_agua;

    private boolean es_de_secano,Es_de_Humedal;

    

    //CONSTRUCTOR EN EL QUE LE DAMOS VALOR A NUESTRAS VARIABLES

    public arbol() { alto = 1500; ancho=50; copa = "redonda" ; colorHoja = "verde"; }


    // METODO GETTER: permite mostrar


    public int r_alto()        {return alto;}     // método getter

public int r_ancho()       {return ancho;}   // método getter

public String r_copa()     {return copa;}         // método getter

public String r_colorHoja() {return colorHoja;} // metodo getter


    // METODO SETTER: modifica valores de las variables

    

    public void setter_oscilacion()       {oscilacion=20;}

    public void setter_absorcion()   {absorcion_agua=50;}

    public void setter_es_de_secano() {es_de_secano=true;}

    public void setter_Es_de_Humedal() {Es_de_Humedal=false;}


    }



package poo_arbol;


public class Arbol_Naranjo {


    public static void main(String[] args) {

         

         

         /* instanciar una clase. ejemplar de clase:

          * realizamos una llamada al arbol que es la matriz con una serie de valores

          * prederterminados ya por nostros y que ahora podemos utilizar o modificar.     

          */

         arbol Naranjo = new arbol();

         

         System.out.println

                    ("UN NARANJO TIENE: \n\n"

+ "De color de hoja:                         " + Naranjo.r_colorHoja() + "\n"

+ "con una altura de:                        " + Naranjo.r_alto()     + "\n"

+ "su tronco tiene una circunferencia de:    " + Naranjo.r_ancho ()   + "\n"

+ "Su compa es :                             " + Naranjo.r_copa ()   + "\n"

                    );

    }

Inicia sesión para ver o añadir un comentario.

Otros usuarios han visto

Ver temas