Sie sind auf Seite 1von 10

Control Número 2

Elías Oliverio Pérez Gómez

PROOJ2302-20-2019- PROGRAMACIÓN ORIENTADA A OBJETO-JAVA II

Instituto IACC

06 de Octubre de 2019
1 Desarrollo Control

1.1 Explicación Tipo Recursividad


Acá se está calculando la factorial de un número, como sabemos la factorial de un número está
representado por la multiplicación de todos los números comprendidos entre el número 1 y el
número al cual se le busca su factorial. En este caso se esta usando la Recursividad Directa, ya que
se puede apreciar que la función esta haciendo un llamado a si misma, para seguir ejecutando el
programa.
1.2 Código Fuente Clase Recursividad

1.2.1 Método Recursivo

Código Fuente Clase


SUmaRecursivoNumerosNaturales
/**

* Prueba de Clase SUmaRecursivoNumerosNaturales

* @autor : Elias Perez

* @Version : 1.0

* Asignatura: PROOJ2302-20-2019- PROGRAMACIÓN ORIENTADA A OBJETO-JAVA II

* Control: 2

**/

import java.util.*;

import java.util.Scanner;

//clase SUmaRecursivoNumerosNaturales

public class SUmaRecursivoNumerosNaturales{

static Scanner entrada = new Scanner(System.in);

//Metodo SUmaRecursivoNumerosNaturales

static int SUmaRecursivoNumerosNaturales (int n){

if (n==1)

return 1;

else

return n + SUmaRecursivoNumerosNaturales(n-1);
}

public static void main(String[] args){

int n;

System.out.print("Ingrese cantidad de terminos naturales a sumar: ");

n = entrada.nextInt();

System.out.print("La suma de los primeros numeros naturales es de :" +


SUmaRecursivoNumerosNaturales(n));

1.2.2 Evidencia de Compilación Exitosa y


Creación de Objetos
1.3 Código Fuente SumaFilaMatriz

1.3.1 SumaFilaMatriz

Código Fuente Clase Main


/**

* Prueba de Clase Main

* @autor : Elias Perez

* @Version : 1.0

* Asignatura: PROOJ2302-20-2019- PROGRAMACIÓN ORIENTADA A OBJETO-JAVA II

* Control: 2

**/

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

/**

* @author Elias Perez

*/

public class Main {

public static void main(String[] args) throws InterruptedException {

int tamano=6000;

long sumaMatriz=0;

Matriz matriz = new Matriz(tamano);

matriz.llenarMatriz(); //llamamos al metodo que llenara la matriz

long tinicio=System.currentTimeMillis(); //Tiempo inicio

//Realiza la suma normal de los valores de la matriz

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


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

sumaMatriz = sumaMatriz+matriz.matriz[i][j];

long tfinal=System.currentTimeMillis();//tiempo fin

System.out.println("La suma sin threads es: " +sumaMatriz+" tiempo: "+(tfinal-tinicio));

//crea los threads

SumaFilaMatriz suma1 = new SumaFilaMatriz (tamano, 0, 1000, matriz);

SumaFilaMatriz suma2 = new SumaFilaMatriz (tamano, 1000, 2000, matriz);

SumaFilaMatriz suma3 = new SumaFilaMatriz (tamano, 2000, 3000, matriz);

SumaFilaMatriz suma4 = new SumaFilaMatriz (tamano, 3000, 4000, matriz);

SumaFilaMatriz suma5 = new SumaFilaMatriz (tamano, 4000, 5000, matriz);

SumaFilaMatriz suma6 = new SumaFilaMatriz (tamano, 5000, 6000, matriz);

ExecutorService executor = Executors.newCachedThreadPool();

long tiinicio=System.currentTimeMillis();

//Ejecuta los threads

executor.execute(suma1);

executor.execute(suma2);

executor.execute(suma3);

executor.execute(suma4);

executor.execute(suma5);

executor.execute(suma6);

executor.shutdown();

boolean tasksEnded = executor.awaitTermination(1, TimeUnit.MINUTES);

if ( tasksEnded ){

long tifinal=System.currentTimeMillis();

System.out.println("La suma Con Threads es: " +matriz.getSuma()+" tiempo: "+


(tifinal-tiinicio));
}

Código Fuente Clase Matriz


/**

* Prueba de Clase Matriz

* @autor : Elias Perez

* @Version : 1.0

* Asignatura: PROOJ2302-20-2019- PROGRAMACIÓN ORIENTADA A OBJETO-JAVA II

* Control: 2

**/

import java.util.Random;

public class Matriz {

public int matriz[][]; //matriz cuadrada

public int tamano;

private long suma;

private final static Random generator = new Random();

public Matriz(int tamano) {

this.matriz = new int[tamano][tamano];

this.tamano = tamano;

this.suma = 0;

//genera numeros aleatorios entre 0 y 20 y los almacena en las posiciones d la matriz

public void llenarMatriz() {

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


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

matriz[i][j] = generator.nextInt(20);

public synchronized void sumaMatriz(long sum) {

this.suma = this.suma + sum;

public long getSuma() {

return suma;

Código Fuente Clase SumaFilaMatriz


/**

* Prueba de Clase SumaFilaMatriz

* @autor : Elias Perez

* @Version : 1.0

* Asignatura: PROOJ2302-20-2019- PROGRAMACIÓN ORIENTADA A OBJETO-JAVA II

* Control: 2

**/

public class SumaFilaMatriz implements Runnable{

int tamano;

int inicio, fin; //inicio y fin para los threads

Matriz matriz;
long sum;

public SumaFilaMatriz (int tamano, int inicio, int fin, Matriz matriz) {

this.tamano = tamano;

this.inicio = inicio;

this.fin = fin;

this.sum=0;

this.matriz=matriz;

//Tarea que ejecutaran los threads

public void run() {

for (int i=inicio; i<fin; i++){

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

sum = sum + matriz.matriz[i][j];

matriz.sumaMatriz(sum); //se envia la suma al metodo sincronizado

}
2 Bibliografía

 Sitio Web,
http://online.iacc.cl/pluginfile.php/5373509/mod_resource/content/0/progr
amacion_orientada_Objetos_II/Contenidos/02_contenido_POOII_V5.pdf#pa
ge=5&zoom=100,0,94 , Recursividad y Threads IACC Semana 2.
 Sitio Youtube https://www.youtube.com/watch?v=jEfmotrL7jQ Recursividad
en Java.

Das könnte Ihnen auch gefallen