viernes, 12 de agosto de 2016

Capítulo 61. Java: Metodos Get y Set


Diario de un programador.- Día 158


JAVA.


Ya pasado del día 157 se ha visto en cada lenguaje las instrucciones y operaciones que son comunes entre ellos, (variables, ciclos, condiciones, etc.) Es hora de ver y aprender los aspectos únicos de cada lenguaje. Como son cosas nuevas las que se verán a continuación en este y los capítulos siguientes, volveré a explicar en forma tranquila y pausada para tratar en lo posible de que no se quede ninguna duda.

Métodos Set y Get


Es muy probable que en algún momento, sea necesario obtener el valor de un atributo (variable) de un método para poder utilizarlo en algún otro sitio. Las variables que se declaran dentro de un método se conocen como variables locales, y sólo se pueden utilizar en ese método. Cuando termina ese método, se pierden los valores de sus variables. Por lo tanto, para poder acceder a esas variables locales, es que se utilizan los métodos Set y Get. Lo que hace el método Set, es establecer o dar un valor a un atributo, en cambio el método Get, lo que hace es recuperar o conseguir ese valor para que pueda ser utilizado más tarde. Como ejemplo, crearé 3 métodos. Un método Set, un método Get y por último un método para mostrar el valor del atributo recuperado.


Para empezar, crearé un proyecto nuevo al cual llamaré GetySet01 (El nombre da lo mismo, ese escogí yo) y posteriormente crearé una clase a la cual llamaré Métodos.


Esta clase tendrá dos atributos; Nombre y edad, los cuales tendrá como modificadores de acceso private
Un atributo para una clase, se le conoce también con el nombre de "variable de instancia", la mayoría de las declaraciones de variables de instancia van precedidas por el modificador de acceso private. Las variables declaradas como private son accesibles sólo para los métodos de esa clase.
Por regla general, las variables de instancia se deben declarar como private y los métodos como public, aunque pueden haber excepciones.


Lo siguiente, será crear el método Set que reciba un nombre escrito por el usuario (el cual será solicitado en otra clase).


Aprovecho de dejar en claro que tanto la palabra Set como Get utilizada en los nombres de los métodos no son obligatorias. Se utilizan simplemente como "guía" para saber que método establece un valor y qué método recupera un valor. Los métodos podría llamarlos como yo quisiera y no pasaría nada, pero como dije antes, esos nombres sirven de guía y es bueno ponerlos para tener una idea de que hace ese método.

Este método set, no retorna ningún valor ("void", los métodos set no retornan valores, solamente los establecen) En sus paréntesis se puede ver que recibe como parámetro una cadena de caracteres que en este caso en nombrada como "nom". En la línea 6 se puede ver como la variable de instancia "nombre", tomará el valor de "nom" cuando este reciba algún dato
De esta misma forma, voy a crear el método set que reciba la edad escrita por el usuario.


Muy bien, ya están creados los métodos set. Ahora crearé los métodos get. El primero me servirá para recuperar el valor del atributo "nombre" y el segundo me servirá para recuperar el valor del atributo "edad"


El primer método "getNombre", se puede ver que es un método que tiene un tipo de retorno de tipo "String", además de que este método (y el siguiente) no tiene parámetros ya que no necesita de ningún argumento para completar su tarea, a diferencia de los anteriores. La línea 12 indica que este método debe devolver o retorna el valor del atributo "nombre". Al devolver dicho valor, se pude ocupar en otro sitio, como se verá más abajo. Para el método "getEdad" la explicación es la misma. Este método retorna el valor del atributo "edad".

Ahora, en esta clase solo falta crear un método que utilice los datos "retornados" por estos métodos. Voy a crear el método "datosPersonales" que se encargará de esta tarea.


Este método, es un método que no devuelve ningún valor ni recibe atributos, porque simplemente se encarga de mostrar el contenido de los métodos get mediante las instrucciones System.out.println.
El código completo de esta clase es el siguiente:

public class Metodos{
    private String nombre;
    private int edad;
   
    public void setNombre(String nom){
      nombre = nom;
    }
    public void setEdad(int ed){
      edad = ed;
    }
    public String getNombre(){
      return nombre;
    }
    public int getEdad(){
      return edad;
    }
    public void datosPersonales(){
      System.out.println("Nombre: " + getNombre());
      System.out.println("Edad: "+ getEdad());
    }
}//fin class

Ahora lo que voy a hacer, es crear otra clase para solicitar al usuario que ingrese sus datos personales. A esta clase la llamaré "Inicio"


En esta clase, voy a solicitar del usuario su nombre y edad. Para ello tendré que utilizar la clase Scanner, además de declarar la variable "nombre" y "edad" que utilizaré para guardar los datos.


Lo siguiente que voy a hacer, será crear un objeto que me permita utilizar la clase "Metodos" y sus métodos.


Esto ya casi está listo. Lo próximo que voy a hacer, será solicitar los datos al usuario.


Y por último, llamaré a los métodos para que hagan su tarea.


La línea 16 se encarga de enviar los datos de la variable "nombre" que está en el parámetro, hacia el método setNombre. Lo mismo hace la línea 17 pero con la variable "edad". En la línea 18 se ejecuta el método que finalmente recupera y muestra los datos ingresados por el usuario.

Si se ejecuta este programa, muestra el siguiente resultado.

El código de esta clase es el siguiente:

import java.util.Scanner;
public class Inicio{
  public static void main(String[]args){
  Scanner ingresoSt = new Scanner(System.in);
  Scanner ingresoEd = new Scanner(System.in);
  String nombre;
  int edad;

  Metodos datos = new Metodos();
 
  System.out.print("Ingresa tu nombre: ");
  nombre = ingresoSt.nextLine();
  System.out.print("Ingresa tu edad: ");
  edad = ingresoEd.nextInt();
 
  datos.setNombre(nombre);
  datos.setEdad(edad);
  datos.datosPersonales();
 
  }//fin main
}//fin class

Espero se haya entendido. Lo único que queda es practicar y practicar


Gustavo J. Cerda Nilo
Febrero 2016, Agosto 2016




jueves, 11 de agosto de 2016

Como unir o concatenar cadenas en C, Java, Python, Small Basic

Diario de un programador. Anexo B: Códigos


Como concatenar cadenas: Concatenar significa unir una o más letras / palabras. Algunos lenguajes simplemente con agregar el signo "+" ya se pueden unir, mientras que con otros, hay que utilizar funciones.

C
Programa utilizado: Code Blocks 13.12



#include <stdio.h>
#include <string.h>

int main(void){
  char cadena1[6] = "hola ";
  char cadena2[6] = "mundo";
  strncat(cadena1, cadena2,5);//5 = nro de letras

  printf("%s\n", cadena1);


return 0;
}

//Escrito por Gustavo J. Cerda Nilo, diciembre 2015


JAVA
Programa utilizado: Net Beans 8.0.1

public class Concatenar{
    public static void main(String []args){

        String cadena1 = "Hola ";
        String cadena2 = "mundo";
        String cadena3 = cadena1 + cadena2;
       
        System.out.println(cadena3);
    }
}//fin class

//Escrito por Gustavo J. Cerda Nilo, diciembre 2015


PYTHON 3.5

Programa utilizado: Idle

cadena1 = "Hola "
cadena2 = "mundo"
cadena3 = cadena1 + cadena2
print(cadena3)

#Escrito por Gustavo J. Cerda Nilo, diciembre 2015


SMALL BASIC
Programa utilizado: Small Basic 1.1

cadena1 = "hola "
cadena2 = "mundo"
cadena3 = cadena1 + cadena2

TextWindow.WriteLine(cadena3)

'Escrito por Gustavo J. Cerda Nilo, diciembre 2015


Capítulo 60. Ejercitando lo aprendido en PHP. Parte 2

Esta es la última parte de esta maratón de ejercicios, pero como quien dice por ahí que tan solo con la práctica se aprende. Bueno, aquí vamos.


Diario de un programador.- Dia 155

9.- Escriba un programa que muestre la tabla de multiplicar del 1 al 10 de un número almacenado en una variable:

<?php

  function Tabla($numero){
                    for($i = 1; $i <= 10; $i++){
                                         printf("%d x %d = %d<br>", $numero, $i,($i * $numero));
                    }                  
  }
  Tabla(7);

?>


10.- Escriba un programa que entregue la suma de todos los números que se encuentren en un determinado rango. Por ejemplo, si los números son 1 y 7, debe entregar como resultado 2 + 3 + 4 + 5 + 6 = 20.

<?php
                    $num1 = 1;
                    $num2 = 7;
                    $aux = 0;
                   
                    echo "Numero 1 = ", $num1, "<br>";
                    echo "Numero 2 = ", $num2, "<br>";
                   
                    for($i = ($num1 + 1); $i < $num2; $i++){
                                         $aux = $aux + $i;
                    }
                    for($j = ($num1 + 1); $j < $num2; $j++){
                                         if($j ==($num2 - 1)){
                                                             printf("%d = ", $j);
                                         }
                                         else{
                                                             printf("%d +", $j);
                                         }
                    }
                    printf("%d<br>", $aux);
?>


11.- Escriba un programa que muestre una tabla de multiplicar como la siguiente:

 1     2    3    4     5    6     7    8    9  10
 2     4    6    8   10  12  14  16  18  20
 3     6    9   12  15  18  21  24  27  30
 4     8  12  16  20   24  28  32  36  40
 5   10  15  20  25   30  35  40  45  50
 6   12  18  24  30   36  42  48  54  60
 7   14  21  28  35   42  49  56  63  70
 8   16  24  32  40   48  56  64  72  80
 9   18  27  36  45   54  63  72  81  90
10  20  30  40  50   60  70  80  90 100



Encontré esta solución pero no me queda tan ordenada la tabla como en otros lenguajes, por más que "jugaba" con los espacios, solamente se movían un poco y luego nada. ¿Habrá una forma de arreglarlo sin hacer uso de html?

<?php
 
 for($a = 1; $a <= 10; $a++){
  for($b = 1; $b <= 10; $b++){
    if($a * $b < 10){
      printf("%d ", $a * $b);
    }
    else{
      printf("%d ", $a * $b);
    }
    if($b == 10){
      echo "<br>";
    }
  }
 }
 
?>

Diario de un programador.- Dia 156

12.- Escriba un programa que entregue  los divisores del número entero. Ej:
Si la variable vale 20, el programa responde:
20, 10, 5, 4, 2
Se omite el 1 ya que todos los número son divisibles por 1 y a pesar de que todos los números son divisibles por sí mismo, debe ser agregado de igual forma.

<?php
 
 $divisor = 0;
 $iterar = 0;
 $aux = 0;
 $num = 20;

 echo "Numero = ", $num, "<br>";

   if($num % 2 == 0){
     $iterar = $num / 2;
   }
   else{
     $iterar = ($num - 1) / 2;
   }
   for($i = 1; $i <= $iterar; $i++){
     if($num % $i == 0){
       $aux = $num / $i;
       if($aux != $divisor){
         $divisor = $aux;
       }
       if($i == $iterar){
         printf("%d", $divisor);
       }
       else{
         printf("%d,",$divisor);
       }
      }
    }
?>


13 Escriba un programa que muestre un rectángulo de asteriscos según valores almacenados en variables, por ejemplo:
Alto: 3
Ancho: 4

****
****
****



<?php
 
 $alto = 3;
 $ancho = 5;

 echo "Alto = ", $alto, "<br>";
 echo "Ancho = ", $ancho, "<br>";

 for($a = 1; $a <= $alto; $a++){
  for($b = 1; $b <= $ancho; $b++){
    printf("*");
  }
    echo "<br>";
 }
?>


Diario de un programador.- Dia 157

14 Escriba un programa que dibuje el triángulo del tamaño indicado por lo almacenado en una variable, de acuerdo al ejemplo:
Altura: 5

*
**
***
****
*****

<?php
 
 $alto = 5;
 
 echo "Alto = ", $alto, "<br>";

 for($x = 1; $x <= $alto; $x++){
   for($g = 1; $g <= $alto; $g++){
     if($g <= $x){
       printf("*");
     }
   }
   echo "<br>";
 }
?>


15.- Escriba un programa que determine la cantidad de dígitos en un número natural ingresado por el usuario:
Ingrese numero: 12345
12345 tiene 5 digitos

<?php
 
  $num = 123456;
  $contador = (log10($num) + 1);
 
  echo "Numero = ", $num, "<br>";
 
  printf("Tiene %d digitos<br>", $contador); 

?>


Esto es todo por ahora. En la siguiente clase, se empezará con nueva materia. Saludos



Gustavo J. Cerda Nilo
Febrero 2016, Agosto 2016




C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...