馃摍 Funciones y Procedimientos - Java#

Tabla de Contenido#

  • 1 - Instalar Java

  • 2 - Ejemplos procedimientos

  • 3 - Ejemplos funciones

  • 4 - Ejercicios

Instalar Java#

Descargar el kernel

Ejecuta la siguiente celda. No la modifiques!

%%sh
wget -q https://github.com/SpencerPark/IJava/releases/download/v1.3.0/ijava-1.3.0.zip
unzip -q ijava-1.3.0.zip
python install.py

wget -qO- https://gist.github.com/SpencerPark/e2732061ad19c1afa4a33a58cb8f18a9/archive/b6cff2bf09b6832344e576ea1e4731f0fb3df10c.tar.gz | tar xvz --strip-components=1
python install_ipc_proxy_kernel.py --kernel=java --implementation=ipc_proxy_kernel.py
Installed java kernel into "/usr/local/share/jupyter/kernels/java"
e2732061ad19c1afa4a33a58cb8f18a9-b6cff2bf09b6832344e576ea1e4731f0fb3df10c/install_ipc_proxy_kernel.py
e2732061ad19c1afa4a33a58cb8f18a9-b6cff2bf09b6832344e576ea1e4731f0fb3df10c/ipc_proxy_kernel.py
Moving java kernel from /usr/local/share/jupyter/kernels/java...
Wrote modified kernel.json for java_tcp in /usr/local/share/jupyter/kernels/java_tcp/kernel.json
Installing the proxy kernel in place of java in /usr/local/share/jupyter/kernels/java
Installed proxy kernelspec: {"argv": ["/usr/bin/python3", "/usr/local/share/jupyter/kernels/java/ipc_proxy_kernel.py", "{connection_file}", "--kernel=java_tcp"], "env": {}, "display_name": "Java", "language": "java", "interrupt_mode": "message", "metadata": {}}
Proxy kernel installed. Go to 'Runtime > Change runtime type' and select 'java'
/content/install.py:164: DeprecationWarning: replace is ignored. Installing a kernelspec always replaces an existing installation
  install_dest = KernelSpecManager().install_kernel_spec(

Instrucciones para activar el kernel

Dirigite a Entorno de ejecuci贸n > Cambiar tipo de entorno de ejecuci贸n > Elige la opci贸n Java > Da click en Guardar

Importar Librerias#

// Libreria para usar potencia y otras funciones matem谩ticas
import java.lang.Math;

// Libreria para usar el objeto Scanner (leer variables)
import java.util.Scanner;

// Libreria para obtener fecha actual
import java.util.Date;

Ejemplos Procedimientos#

Recordemos que un procediemiento es una funci贸n que no retorna un valor (se debe utilizar la palabra reservada void).

Ejemplo 1.

Imprimir un Hola Mundo con un procedimiento

void miFuncion() {
    System.out.println("Hola Mundo, desde una funci贸n!");
}

miFuncion();
Hola Mundo, desde una funci贸n!

Ejemplo 2.

Imprimir la fecha actual con un procedimiento.

public static void fechaActual(){
    Date fecha = new Date();
    System.out.println(fecha);
}

fechaActual();
Thu Oct 12 03:52:06 UTC 2023

Ejemplo 3

Crea un procedimiento que me diga si un numero ingresado es par o impar.

void esPar(int numero){
    if (numero % 2 == 0){
        System.out.println("El numero " + numero + " es par.");
    } else {
        System.out.println("El numero " + numero + " es impar.");
    }
}

esPar(5);
esPar(120);
esPar(21);
El numero 5 es impar.
El numero 120 es par.
El numero 21 es impar.

Ejemplo 4

Realizar un procedimiento que me convierta una frase ingresada por el usuario a mayusculas y que imprima en pantalla.

public static void convertirMayuscula(String frase){
    String fraseMayus = frase.toUpperCase();
    System.out.println(fraseMayus);
}

Scanner scn = new Scanner(System.in);
System.out.println("Ingrese una frase: ");
String frase = scn.nextLine();

convertirMayuscula(frase);
Ingrese una frase: 
Hola mundo desde Java
HOLA MUNDO DESDE JAVA

Modificaci贸n del ejemplo anterior. Ahora se debe preguntar cuantas frases desea convertir a mayusculas (se debe ingresar cada frase).

public static void convertirMayuscula(String frase){
    String fraseMayus = frase.toUpperCase();
    System.out.println(fraseMayus);
}

Scanner scn_iter = new Scanner(System.in);
System.out.print("Ingrese el numero de oraciones que desea convertir: ");
int iter = scn_iter.nextInt();

for (int i=1; i<=iter; i++){
    Scanner scn = new Scanner(System.in);
    System.out.println("Ingrese la frase " + i + ": ");
    String frase = scn.nextLine();

    convertirMayuscula(frase);
}
Ingrese el numero de oraciones que desea convertir: 2
Ingrese la frase 1: 
Algun texto de prueba 1
ALGUN TEXTO DE PRUEBA 1
Ingrese la frase 2: 
Another text with some words
ANOTHER TEXT WITH SOME WORDS

Ejemplos Funciones#

Recordemos que las funciones retornan uno o m谩s valores (se utiliza la palabra reservada return).

Ejemplo 1.

Implemente la siguiente formula (sumatoria). Donde \(n\) debe ingresarlo el usuario.

\[ \sum_{i=1}^{n}\dfrac{n(n+1)}{2} \]

La sumatoria se define de la siguiente manera:

\[ \sum_{i=1}^{n}X_i = X_1 + X_2 + X_3 + ... + X_n \]
// Funci贸n sumatoria con parametro n
public static double sumatoria(int n){
    int contN = 1;
    double sum = 0;

    while (contN <= n){
        sum += (double) (contN * (contN + 1))/2;
        contN++;
    }
    return sum;
}

// Ingresar el termino n
Scanner input = new Scanner(System.in);
System.out.print("Ingrese n: ");
int n = input.nextInt();

// Llamar la funci贸n sumatoria e ingresar el argumento
double sumatoria1 = sumatoria(n);
System.out.println("El resultado de la sumatoria es: " + sumatoria1);

// Otros valores
double sumatoria2 = sumatoria(34);
System.out.println("El resultado de la sumatoria con n=34 es: " + sumatoria2);

double sumatoria3 = sumatoria(60);
System.out.println("El resultado de la sumatoria con n=60 es: " + sumatoria3);
Ingrese n: 15
El resultado de la sumatoria es: 680.0
El resultado de la sumatoria con n=34 es: 7140.0
El resultado de la sumatoria con n=60 es: 37820.0

Ejemplo 2.

Implemente la siguiente f贸rmula matem谩tica (productorio). Donde \(n\) debe ingresarlo el usuario.

\[ \prod_{i=1}^{n}\dfrac{n+1}{2n} \]

La productoria o productorio se define de la siguiente manera:

\[ \prod_{i=1}^{n} X_i = X_1 \cdot X_2 \cdot X_3 \cdot ... \cdot X_n \]
public static double productorio(int n){
    int contN = 1;
    double prod = 1;

    while (contN <= n){
        prod *= (double) (contN + 1)/(2 * contN);
        contN++;
    }
    return prod;
}

// Ingresar termino n
Scanner input = new Scanner(System.in);
System.out.print("Ingrese n: ");
int n = input.nextInt();

// Llamar la funci贸n productorio e ingresar el argumento
double product = productorio(n);

System.out.println("El resultado del productorio es: " + product);
Ingrese n: 5
El resultado del productorio es: 0.1875

Ejemplo 3

Realice una funci贸n calculadora. El usuario debe ingresar dos numeros y un operaci贸n a realizar entre ellos.

public static double calculadora(double num1, double num2, String operacion){
    double resultado = 0;
    if (operacion.equals("suma")){
        resultado = num1 + num2;
    } else if (operacion.equals("resta")) {
        resultado = num1 - num2;
    } else if (operacion.equals("division")) {
        resultado = num1/num2;
    } else if (operacion.equals("multiplicacion")) {
        resultado = num1*num2;
    } else {
        System.out.println("Operaci贸n no valida.");
    }
    return resultado;
}

// Leer numeros y operaci贸n
Scanner scn = new Scanner(System.in);
Scanner scnStr = new Scanner(System.in);

System.out.println("Ingrese el primer numero: ");
double numero1 = scn.nextDouble();

System.out.println("Ingrese el segundo numero: ");
double numero2 = scn.nextDouble();

System.out.println("Ingrese la operaci贸n: ");
String oper = scnStr.nextLine();

// Llamando la funci贸n
double res = calculadora(numero1, numero2, oper);
System.out.println("El resultado de la " + oper + " es: " + res);

// Otros argumentos
double res2 = calculadora(453, 5454, "multiplicacion");
System.out.println("El resultado de la multiplicacion es: " + res2);
Ingrese el primer numero: 
45
Ingrese el segundo numero: 
100
Ingrese la operaci贸n: 
multiplicacion
El resultado de la multiplicacion es: 4500.0
El resultado de la multiplicacion es: 2470662.0

Ejemplo 4.

Realice una funci贸n que cuente el numero de palabras de una oraci贸n ingresada por el usuario.

public static int contarPalabras(String oracion){
    int lenString =  oracion.length();
    int cont = 0;
    int contPalabras = 1;

    while (cont < lenString){
        char letra = oracion.charAt(cont);
        if (letra == ' '){
            contPalabras++;
        }
        cont++;
    }
    return contPalabras;
}

// Leer frase
Scanner input = new Scanner(System.in);
System.out.print("Ingrese la oraci贸n: ");
String oracion = input.nextLine();

// Llamar la funci贸n
int numPalabras = contarPalabras(oracion);
System.out.println("La oraci贸n tiene: " + numPalabras + " palabra(s)");

// Probando con otra frase
String quijote = "En un lugar de la Mancha, de cuyo nombre no quiero acordarme";
System.out.println("La oraci贸n " + "\"" + quijote + "\"" + " tiene: " + contarPalabras(quijote) + " palabra(s)");
Ingrese la oraci贸n: Texto con seis palabras para probar
La oraci贸n tiene: 6 palabra(s)
La oraci贸n "En un lugar de la Mancha, de cuyo nombre no quiero acordarme" tiene: 12 palabra(s)

Ejemplo 5

Realiza una funci贸n la cual verifique un nombre de usuario y una contrase帽a (ingresados por el usuario). Si la contrase帽a o el usuario es incorrecto debe retornar 0 e imprimir un mensaje, en caso contrario debe retornar 1 e imprimir un mensaje.

Nota. Debe hacerse dentro de un ciclo while.

public static int verificarUsuario(String usuario, String password){
    String usuarioCorrecto = "juanperez@gmail.com";
    String passwordCorrecto = "123456";
    if (usuario.equals(usuarioCorrecto) && (password.equals(passwordCorrecto))){
        System.out.println("Bienvenido!");
        return 1;
    } else {
        System.out.println("Usuario o contrase帽a incorrecta.");
        return 0;
    }
}

Scanner scnStr = new Scanner(System.in);

String usuario, password;
int verificacion = 0;

while (verificacion != 1){
    System.out.print("Ingrese su usuario: ");
    usuario = scnStr.nextLine();
    System.out.print("Ingrese su contrase帽a: ");
    password = scnStr.nextLine();
    verificacion = verificarUsuario(usuario, password);
}

// Instrucciones que desee realizar
Ingrese su usuario: pass123
Ingrese su contrase帽a: 123456
Usuario o contrase帽a incorrecta.
Ingrese su usuario: juanperez@gmail.com
Ingrese su contrase帽a: 123456
Bienvenido!

Ejemplo 6

Realice una funci贸n que imprima los n煤meros pares o impares entre un intervalo de n煤meros, tambien debe devolver la cantidad de n煤meros. El usuario debe ingresar los dos n煤meros (intervalo) y especificar si desea los impares o pares.

Nota. Debe validarse el intervalo y el String del tipo de operaci贸n

// Funci贸n contadora de numeros pares o impares
public static int paresImpares(int numIni, int numFin, String operacion){
    int contador= 0;
    for (int i=numIni; i<=numFin; i++) {
        if (operacion.equals("Pares") && (i % 2 == 0)) {
            System.out.println(i + " es par.");
            contador++;
        } else if (operacion.equals("Impares") && (i % 2 != 0)) {
            System.out.println(i + " es impar.");
            contador++;
        }
    }
    return contador;
}

// Funci贸n para validar el intervalo
public static int verifIntervalo(int num1, int num2){
    if (num1 >= num2){
        System.out.println("Intervalo incorrecto. " + num1 + " es mayor o igual que " + num2);
        return 0;
    } else {
        return 1;
    }
}

// Funci贸n para validar la operaci贸n
public static int verifOperacion(String oper){
    if (oper.equals("Pares") || (oper.equals("Impares"))){
        return 1;
    } else {
        System.out.println("Operaci贸n incorrecta.");
        return 0;
    }
}

// Inicio del programa
Scanner scn = new Scanner(System.in);
Scanner scnStr = new Scanner(System.in);

// Inicializar variables
int numIni = 0, numFin = 0;
int contadorNums = 0;
String operacion = "";
int intervaloCorrecto = 0, operacionCorrecta = 0;

// Validaci贸n del intervalo
while (intervaloCorrecto != 1){
    System.out.print("Ingrese el n煤mero inicial: ");
    numIni = scn.nextInt();
    System.out.print("Ingrese el n煤mero final: ");
    numFin = scn.nextInt();
    intervaloCorrecto = verifIntervalo(numIni, numFin);
}

// Validaci贸n de operaci贸n
while (operacionCorrecta != 1){
    System.out.print("Desea ver los numeros 'Pares' o 'Impares'?: ");
    operacion = scnStr.nextLine();
    operacionCorrecta = verifOperacion(operacion);
}

// Realizar operaci贸n y mostrar resultado
contadorNums = paresImpares(numIni, numFin, operacion);
System.out.println("Hay " + contadorNums + " " + operacion + " entre " + numIni + " y " + numFin);
Ingrese el n煤mero inicial: 4
Ingrese el n煤mero final: 15
Desea ver los numeros 'Pares' o 'Impares'?: Impares
5 es impar.
7 es impar.
9 es impar.
11 es impar.
13 es impar.
15 es impar.
Hay 6 Impares entre 4 y 15

Ejercicios#

  1. Realice una funci贸n que retorne la cantidad de n煤meros primos entre 0 y un n煤meor ingresado. Debe validar que el numero entero ingresado sea mayor a 3 y tambi茅n debe imprimir los n煤meros primos.

  2. Realice una funci贸n que cuente el n煤mero de vocales en un frase o palabra. El usuario debe ingresar la frase o palabra, adem谩s se debe validar que el tama帽o sea mayor o igual a 2.

  3. Realice una funci贸n que convierta un n煤mero decimal a binario. El usuario debe ingresar el n煤mero por consola.

  4. Realice una funci贸n que reciba como argumento un n煤mero entero y retorne sus divisores.