Guia Lab-03

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

ESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS

GUÍA DE LABORATORIO NRO. 03

PROGRAMA: INGENIERÍA DE SISTEMAS


EXPERIENCIA CURRICULAR: ESTRUCTURA DE DATOS
CICLO: III
TURNO: MAÑANA – TARDE - NOCHE
SEMESTRE: 2024-1
AUTORES:
DOCENTE: MS. ING.
SESIÓN Nº: 3
LUGAR: LAB

PROTOCOLO DE SEGURIDAD/ NORMAS BÁSICAS PARA EL TRABAJO EN EL


LABORATORIO
 Está prohibido comer o beber.
 Debe haber orden en la mesa de trabajo
 Debe portar la guía de laboratorio

- En relación al laboratorio
 El horario del laboratorio, aunque amplio, es limitado.
 Tomar en cuenta las normas de convivencia dentro del laboratorio. Si no están, deben pedirse
al profesor
 Haber leído con atención el guion de la práctica antes de entrar en el laboratorio
 Los generadores de las prácticas que impliquen montajes eléctricos no deben ponerse en
marcha hasta que el profesor haya revisado el circuito montado
 Otros.

I. TEMA:
Ordenación recursiva con QuickSort y MergeSort.

II. RESULTADO DE APRENDIZAJE:


Aplica los conceptos recursividad y manejo de archivos en la construcción de soluciones
informáticas en una organización

Pág. 1 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

III. OBJETIVO DE LA PRACTICA:


 Configurar el NetBeans.

 Desarrollar los ejercicios propuestos por el docente.

IV. LECTURAS PREVIAS A LA PRACTICA/FUNDAMENTO TEÓRICO SOBRE EL


TEMA
BeginningJava data structures and algorithms: sharpen your problem solving skills
bylearning core computer science concepts in a pain-free manner - Chapter 2 - Sorting
Alghoritms and Fundamental Data Structures

V. METODOLOGÍA:
 Solución de los ejercicios propuestos con la guía del docente.

 Realizar un informe de toda la secuencia del laboratorio propuesto.

VI. RECURSOS:
 Laboratorio de cómputo (computadora y proyector multimedia) con conexión a internet.
 Utilizar la plataforma Blackboard para acceder a la información de la experiencia curricular.

VII.Protocolos de seguridad: Conoce los siguientes protocolos del laboratorio de cómputo.


 No comer o beber mientras se está trabajando en el laboratorio.
 Leer el procedimiento de laboratorio antes de iniciar la experiencia para conocer de ante
mano los peligros con los que va a trabajar.
 https://www.ucv.edu.pe/wp-content/uploads/2020/01/MV1.4-ANEXO-2-PROTOCOLO-DE-
SEGURIDAD-EN-LABORATORIO-DE-COMPUTO-Y-AFINES-DE-LA-UCV-2021.pdf

VIII. DESARROLLO DE ACTIVIDADES:


VIII.1. Descripción
 El trabajo de laboratorio consiste en resolver un ejercicio, que permitirá organizar
sistemáticamente la información en torno al tema de la sesión.
 El estudiante hará uso de las herramientas digitales (NetBeans, Office)
 El estudiante debe analizar la información requerida con el fin de resolver el ejercicio
de laboratorio.

Pág. 2 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS
6.2. Proceso del trabajo de laboratorio
A continuación, siga los pasos indicados para desarrollar las actividades en la ficha de trabajo
respectivo

EJERCICIO DESARROLLADO # 01
Desarrollar una aplicación para realizar el registro de Alumnos. Los datos a almacenar son dni,
nombres, edad, promedio. Utilizar para este ejercicio ordenamiento recursivo QuickSort.

Creando la clase Alumno:

public class Alumno {


String dni,nom;
int edad;
double prom;

public Alumno() {
}

public Alumno(String dni, String nom, int edad, double prom) {


this.dni = dni;
this.nom = nom;
this.edad = edad;
this.prom = prom;
}

public String getDni() {


return dni;
}

public void setDni(String dni) {


this.dni = dni;
}

public String getNom() {


return nom;
}

public void setNom(String nom) {


this.nom = nom;
}

public int getEdad() {


return edad;
}

public void setEdad(int edad) {


this.edad = edad;

Pág. 3 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

public double getProm() {


return prom;
}

public void setProm(double prom) {


this.prom = prom;
}

Creando la clase QuickSort


public class Quick {
public void ordenarQ(Alumno[] array) {
array= quicksort1(array);
}

public Alumno[] quicksort1(Alumno numeros[]) {


return quicksort2(numeros, 0, numeros.length-1); //se entrega el arreglo, posicion
izquierda y derecha del arreglo
}

public Alumno[] quicksort2(Alumno numeros[], int izq, int der) { //recepciona


if (izq >= der) { //verifica que no haya cruce entre posiciones
return numeros;
}
int i = izq, d = der;
if (izq != der) { //realice los cambios
int pivote;
Alumno aux;
pivote = izq; //se asigna la izquierda al pivote
while (izq != der) {
while (numeros[der].getEdad() >= numeros[pivote].getEdad() && izq < der) {
der--;
}
while (numeros[izq].getEdad()< numeros[pivote].getEdad() && izq < der) {
izq++;
}
if (der != izq) {
aux = numeros[der];
numeros[der] = numeros[izq];
numeros[izq] = aux;
}
}
if (izq == der) {
quicksort2(numeros, i, izq - 1);
quicksort2(numeros, izq + 1, d);
}

Pág. 4 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

} else {
return numeros;
}
return numeros;
}
}

Ingresando elementos a un arreglo de Alumnos para realizar el ordenamiento:


package Vista;

import Control.Merge;
import Control.Quick;
import Modelo.Alumno;

public class Consola {

public static void main(String[] args) {


Alumno[] array = new Alumno[3];

array[0] = new Alumno("41742587","Juan Perez",21,14);


array[1] = new Alumno("10587458","Diego Livano",27,11);
array[2] = new Alumno("52962858","Vania Salcedo",17,12);

System.out.println("ANTES DEL ORDENAMIENTO");


String cad="";
for(Alumno a:array) //recorre 1 hasta el N
{
cad = cad + "["+a.getNom()+"]"+"["+a.getEdad()+"]";
}
System.out.println(cad);

Quick objQ = new Quick();


objQ.ordenarQ(array);

System.out.println("DESPUES DEL ORDENAMIENTO");


cad="";
for(Alumno a:array) //recorre 1 hasta el N
{
cad = cad + "["+a.getNom()+"]"+"["+a.getEdad()+"]";
}
System.out.println(cad);
}

Como resultado tenemos:

Pág. 5 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

Ahora realizaremos el mismo ejercicio con ordenamiento recursivo MergeSort:


Implementamos la clase Alumno:
package Modelo;

public class Alumno {


String dni,nom;
int edad;
double prom;

public Alumno() {
}

public Alumno(String dni, String nom, int edad, double prom) {


this.dni = dni;
this.nom = nom;
this.edad = edad;
this.prom = prom;
}

public String getDni() {


return dni;
}

public void setDni(String dni) {


this.dni = dni;
}

public String getNom() {


return nom;
}

public void setNom(String nom) {


this.nom = nom;
}

public int getEdad() {


return edad;
}

public void setEdad(int edad) {


this.edad = edad;

Pág. 6 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

public double getProm() {


return prom;
}

public void setProm(double prom) {


this.prom = prom;
}

Luego implementamos la clase Mergesort


package Control;

import Modelo.Alumno;

public class Merge {

public void ordenarM(Alumno[] array) {


array = mergesort(array,0, array.length - 1);
}

public Alumno[] mergesort(Alumno vector[], int izq, int der) {


int mitad;
if (der > izq) {
mitad = (der + izq) / 2;
mergesort(vector, izq, mitad);
mergesort(vector, mitad + 1, der);
merge(vector, izq, mitad + 1, der);
}
return vector;
}

private void merge(Alumno vector[], int izq, int mitad, int der) {
Alumno[] aux = new Alumno[vector.length];//Vector auxiliar
int contador = 0;
int i = izq;//Indice de la parte izquierda
int j = mitad;//Indice de la parte derecha
int k = izq;//Indice del vector resultante

while ((i <= mitad - 1) && (j <= der)) {


//Mientras que i esta en la parte izq y j en la dcha
if (vector[i].getEdad() <= vector[j].getEdad()) {
aux[k++] = vector[i++];
} else {
aux[k++] = vector[j++];

Pág. 7 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

}
//Copia los elementos que estaban en la posicion correcta:
while (i <= mitad - 1) {
aux[k++] = vector[i++];
}

while (j <= der) {


aux[k++] = vector[j++];
}

//Copia los elementos en el vector original


for (i = izq; i <= der; i++) {
vector[i] = aux[i];
}

}
}

Pág. 8 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

Por último, implementamos en modo consola el algoritmo recursivo MergeSort:


package Vista;

import Control.Merge;
import Control.Quick;
import Modelo.Alumno;

public class Consola {

public static void main(String[] args) {


Alumno[] array = new Alumno[3];

array[0] = new Alumno("41742587","Juan Perez",21,14);


array[1] = new Alumno("10587458","Diego Livano",27,11);
array[2] = new Alumno("52962858","Vania Salcedo",17,12);

System.out.println("ANTES DEL ORDENAMIENTO");


String cad="";
for(Alumno a:array) //recorre 1 hasta el N
{
cad = cad + "["+a.getNom()+"]"+"["+a.getEdad()+"]";
}
System.out.println(cad);

Merge objM = new Merge();


objM.ordenarM(array);

System.out.println("DESPUES DEL ORDENAMIENTO");


cad="";
for(Alumno a:array) //recorre 1 hasta el N
{
cad = cad + "["+a.getNom()+"]"+"["+a.getEdad()+"]";
}
System.out.println(cad);
}

Como resultado tenemos lo siguiente:

Pág. 9 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

EJERCICIOS PROPUESTOS

EJERCICIO # 01
La empresa seguros S.A.C desea implementar una aplicación que permita el manejo de su data,
con los siguientes requerimientos:
Elabore un programa que ordene mediante QuickSort por código de los trabajadores que
incluyen código, nombre, apellido, sexo, edad, estado civil, área (Contabilidad o Finanzas),
fecha de ingreso (Formato SimpleDateFormat) y muestre una estadística que indique:
 Número de vocales totales, consonantes, dígitos, espacios en blanco y otros símbolos,
con su respectivo porcentaje.
 Número de trabajadores por sexo, número de trabajadores por área, número de
trabajadores por estado civil, número de trabajadores mayores y menores de edad.

Pág. 10 de 11
ESCUELA PROFESIONAL DE
INGENIERÍA DE SISTEMAS

EJERCICIO # 02
Desarrollar una aplicación para realizar el registro de nuevos productos. Los datos a almacenar
son código, descripción, stock, stock mínimo y precio. Utilizar para este ejercicio
ordenamiento recursivo MergeSort.

EJERCICIO # 03
Desarrollar una aplicación para realizar el registro de clientes. Los datos a almacenar son
código, nombres, dni, genero, correo y celular. Utilizar para este ejercicio ordenamiento
recursivo QuickSort.

Pág. 11 de 11

También podría gustarte