package prylista; public class Lista { private Nodo inicio; private Nodo fin; public Lista(){ inicio=fin=null; } public boolean esVacia(){ return inicio==fin && fin==null; } public void insertarInicio(int dato){ Nodo n=new Nodo(dato, inicio); if(esVacia()){ inicio=fin=n; }else{ inicio=n; } } public void insertarFin(int dato){ Nodo n=new Nodo(dato, null); if(esVacia()){ inicio=fin=n; }else{ fin.setSiguiente(n); fin=n; } } public int size(){ Nodo aux=inicio; int cont=0; while(aux!=null){ cont++; aux=aux.getSiguiente(); } return cont; } public int valorIndice(int indice){ Nodo aux=inicio; int cont=0; while(contfin.getDato()) return -1; int inf=0; int sup=size()-1; while(sup>=inf){ int c=(inf+sup)/2; if(valor==valorIndice(c)){ return c; }else if(valor>valorIndice(c)){ inf=c+1; }else{ sup=c-1; } } return -1; } public void imprimir() throws Exception{ if(esVacia()) throw new Exception("Vacia"); Nodo aux=inicio; while(aux!=null){ System.out.println(aux.getDato()); aux=aux.getSiguiente(); } } }
data structures site, Sitio donde publicaré mis avances de estructuras de datos, colas, pilas, alboles, grafos, tree, stack, queue, graph, también la programación en java, novedades, ejercicios que he desarrollado.
Búsqueda por palabras claves
No se olviden de consultar por palabras claves!
Ejemplo de Estructura de datos en java, tutorial de estructura de datos
Búsqueda personalizada
martes, 19 de noviembre de 2019
Búsqueda binaria en estructura de datos, data structure and binary search
jueves, 17 de octubre de 2019
Ejercicios de estructura de datos colas
Para resolver un ejercicio de colas necesitamos de ciertas clases como son:
Entidad (Paciente, Persona, Auto, Transacción, etc) dependiendo del tipo de ejercicio.
Nodo (Nodo de Paciente)
Cola (Colección de Nodos)
Principal (Programa invocante)
Creamos un nuevo proyecto y sobre este creamos una nueva clase en este caso vamos a generar una cola de pacientes
Implementación de la clase Paciente.
package prycolas; import java.time.LocalTime; public class Paciente { private String cedula; private String nombre; private LocalTime hora; public Paciente(String cedula, String nombre) { super(); this.cedula = cedula; this.nombre = nombre; hora=LocalTime.now(); } public String getCedula() { return cedula; } public void setCedula(String cedula) { this.cedula = cedula; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getHora() { return " "+hora.getHour()+":"+hora.getMinute() +"-"+hora.getSecond(); } public void setHora(LocalTime hora) { this.hora = hora; } }Implementación de la clase Nodo de Pacientes.
package prycolas; public class Nodo { private Paciente dato; private Nodo siguiente; public Nodo(Paciente dato, Nodo siguiente) { super(); this.dato = dato; this.siguiente = siguiente; } public Paciente getDato() { return dato; } public void setDato(Paciente dato) { this.dato = dato; } public Nodo getSiguiente() { return siguiente; } public void setSiguiente(Nodo siguiente) { this.siguiente = siguiente; } }Implementación de la clase Cola con sus métodos para insertar, extraer, listar, verificar si está vacía
package prycolas; public class Cola { private Nodo inicio; private Nodo fin; public Cola() { super(); inicio = fin = null; } public boolean esVacia() { return inicio == fin && fin == null; } public void encolar(Paciente p) { Nodo n = new Nodo(p, null); if (esVacia()) { inicio = fin = n; } else { fin.setSiguiente(n); fin = n; } } public Paciente desencolar() throws Exception { if (esVacia()) { throw new Exception("No hay elementos en la cola"); } Nodo aux = inicio; inicio = inicio.getSiguiente(); if (inicio == null) { fin = inicio; } return aux.getDato(); } public void imprimir() throws Exception { if (esVacia()) { throw new Exception(" Cola vacia"); } Nodo aux = inicio; while (aux != null) { System.out.println(aux.getDato().getNombre() + " llego a las " + aux.getDato().getHora()); aux = aux.getSiguiente(); } } }Invocación desde el programa principal creando un objeto cola, el cual tiene un menú de opciones
package prycolas; import java.util.Random; import java.util.Scanner; public class Principal { private static int leerEntero(String mensaje, int min, int max) { Scanner ingreso = new Scanner(System.in); int dato; do { System.out.println(mensaje + "entre " + min + " y " + max); dato = ingreso.nextInt(); } while (dato < min || dato > max); return dato; } private static String leerString(String mensaje) { Scanner ingreso = new Scanner(System.in); String dato; System.out.println(mensaje); dato = ingreso.nextLine(); return dato; } public static int menu() { System.out.println("Menú Opciones"); System.out.println("1. Encolar cliente"); System.out.println("2. Atender cliente"); System.out.println("3. Imprimir cola de clientes"); System.out.println("4. Salir"); int opcion = leerEntero("Seleccione una opcion", 1, 4); return opcion; } public static void main(String[] args) { // TODO Auto-generated method stub Cola clientes = new Cola(); int op; do { op = menu(); switch (op) { case 1: String cedula=leerString("Ingrese la cédula: "); String nombre=leerString("Ingrese el nombre: "); clientes.encolar(new Paciente(cedula,nombre)); break; case 2: try { Random aleatorio = new Random(); Paciente sale = clientes.desencolar(); System.out.println("Atendiendo a "+sale.getNombre()+" espere ..."); int tiempo_atencion=1000+aleatorio.nextInt(10000); Thread.sleep(tiempo_atencion); System.out.println(sale.getNombre()+ " fue atendido en "+tiempo_atencion/1000+"seg"); } catch (InterruptedException e) { System.out.println(e.getMessage()); }catch (Exception e) { System.out.println(e.getMessage()); } break; case 3: System.out.println("Pacientes en cola "); try { clientes.imprimir(); } catch (Exception e) { System.out.println(e.getMessage()); } break; case 4: break; } } while (op != 4); } }
jueves, 4 de julio de 2019
sumar 2 arboles binarios
public void sumar(Nodo a, Nodo b) { if (a != null || b != null) { if (a != null && b != null) { insertar(a.getDato() + b.getDato()); sumar(a.getIz(), b.getIz()); sumar(a.getDer(), b.getDer()); }else if(a!=null){ insertar(a.getDato()); sumar(a.getIz(), null); sumar(a.getDer(), null); } else{ insertar(b.getDato()); sumar(null, b.getIz()); sumar(null, b.getDer());} } } void sumar(Arbol a, Arbol b) { sumar(a.raiz, b.raiz); }
jueves, 20 de junio de 2019
Determinar el altitud del arbol java con recursividad, niveles del arbol con recursividad.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package pryarboles; /** * * @author cisco */ public class Arbol { private Nodo raiz; public Arbol() { raiz = null; } public void insertar(int dato, Nodo actual) { if (actual == null) { raiz = new Nodo(dato); } else { if (dato < actual.getDato()) { if (actual.getIzquieda() == null) { Nodo nuevo = new Nodo(dato); actual.setIzquieda(nuevo); } else { actual = actual.getIzquieda(); insertar(dato, actual); } } else { if (actual.getDerecha() == null) { Nodo nuevo = new Nodo(dato); actual.setDerecha(nuevo); } else { insertar(dato, actual.getDerecha()); } } } } public void insertar(int dato) { insertar(dato, raiz); } public int imprimirPreOrden(Nodo actual, int n, int mayor) { if (actual != null) { // System.out.println(actual.getDato() + " " + n); if(n>mayor) mayor=n; int a=imprimirPreOrden(actual.getIzquieda(), n + 1, mayor); int b=imprimirPreOrden(actual.getDerecha(), n + 1, mayor); if (a > b ) { return a; } return b; } return mayor; } public void imprimirPreOrden() { System.out.println(imprimirPreOrden(raiz, 1, 0)); } }
jueves, 23 de mayo de 2019
hilos en java, ejercicio listas circulares, insetar nodos en listas doblemente enlazadas
Se desea crear una lista circular con números perfectos utilizando hilos
package prylistascircular; /** * * @author laboratorio */ public class Nodo { private int dato; private Nodo anterior; private Nodo siguiente; public Nodo(int dato, Nodo anterior, Nodo siguiente) { this.dato = dato; this.anterior = anterior; this.siguiente = siguiente; } public int getDato() { return dato; } public void setDato(int dato) { this.dato = dato; } public Nodo getAnterior() { return anterior; } public void setAnterior(Nodo anterior) { this.anterior = anterior; } public Nodo getSiguiente() { return siguiente; } public void setSiguiente(Nodo siguiente) { this.siguiente = siguiente; } }
package prylistascircular; /** * * @author laboratorio */ public class Circular { private Nodo inicio; private Nodo fin; public Circular() { inicio = fin = null; } public boolean esVacia() { return inicio == null && fin == null; } public void insertarInicio(int dato) { Nodo nuevo = new Nodo(dato, fin, inicio); if (esVacia()) { inicio = fin = nuevo; } else { inicio.setAnterior(nuevo); fin.setSiguiente(nuevo); inicio = nuevo; } } public void insertarFin(int dato) { Nodo nuevo = new Nodo(dato, fin, inicio); if (esVacia()) { inicio = fin = nuevo; } else { inicio.setAnterior(nuevo); fin.setSiguiente(nuevo); fin = nuevo; } } public void imprimir() { Nodo aux = inicio; do { System.out.println(aux.getDato()); aux = aux.getSiguiente(); } while (aux != inicio); } }
package prylistascircular; /** * * @author laboratorio */ public class Hilo implements Runnable { private Circular lista; private int min; private int max; public Hilo(Circular lista, int min, int max) { this.lista = lista; this.min = min; this.max = max; } @Override public void run() { for (int i = min; i < max; i++) { int acum = 0; for (int j = 1; j <= i / 2; j++) { if (i % j == 0) { acum += j; } } if (acum == i) { lista.insertarFin(i); System.out.println("Inserto; " + i); } } } }
package prylistascircular; /** * * @author laboratorio */ public class PryListasCircular { /** * @param args the command line arguments */ public static void main(String[] args) throws InterruptedException { // TODO code application logic here Circular lista = new Circular(); Hilo h1 = new Hilo(lista, 1, 1000); h1.run(); Hilo h2 = new Hilo(lista, 8000, 9000); h2.run(); Hilo h3 = new Hilo(lista, 33550030, 33551000); h3.run(); h1.join(); h2.join(); h3.join(); lista.imprimir(); } }
viernes, 17 de mayo de 2019
Casos de prueba, qué son, cómo se realizan, definición de los casos de prueba.
CASOS DE PRUEBA
IntroducciónUn aspecto esencial en el control de calidad del software son las pruebas. Una prueba de software es todo proceso orientado a comprobar la calidad del software mediante la identificación de fallos en el mismo.
Existe un tipo de pruebas denominadas funcionales, en las cuales se hace una verificación del comportamiento del sistema, para ello se debe realizar un conjunto seleccionado de ejecuciones controladas (planificadas).
Las pruebas permiten detectar en qué puntos el producto no cumple sus especificaciones, es decir, comprobar su funcionalidad, esto implica necesariamente la ejecución del software.
Cómo ya se mencionó anteriormente se debe realizar una planificación que consiste en definir los aspectos a examinar y la forma de verificar su correcto funcionamiento, punto en el cual adquieren sentido los casos de prueba.
Definición
Según la definición del ISTQB:" Los casos de prueban son un conjunto de valores de entrada, precondiciones de ejecución, resultados esperados y postcondiciones de ejecución, desarrollados para un objetivo particular de condición de prueba, tal como para ejercer una ruta de un programa en particular o para verificar el cumplimiento de un requisito específico."Para que sirven?
Los casos de prueba sirven para determinar que un requisito es completamente satisfactorio. Son un insumo clave en el proceso de automatización de pruebas.Los casos de prueba se desarrollan para definir las cosas que es necesario validar a fin de asegurar que el sistema funciona correctamente y está construido con un alto nivel de calidad.
Algunas metodologías como RUP recomiendan crear por lo menos dos casos de prueba para cada requisito. Uno de ellos debe realizar la prueba positiva de los requisitos y el otro debe realizar la prueba negativa.
Mejores prácticas para un buen caso de prueba
1. Los casos de prueba deben ser simples y transparentes. Deben ser claros y concisos, ya que el creador del caso de prueba no puede realizarlos.2. Haga un caso de prueba con el usuario final en mente. Un probador debe hacer casos de prueba con la perspectiva del usuario final en mente.
3. Evitar la repetición de casos de prueba. Si se requiere un caso de prueba para llevar a cabo otro caso de prueba, llame al caso de prueba sobre la base del ID del caso de prueba.
4. No abandone la aplicación entregada. No asuma una aplicación que funcione mientras prepara el caso de prueba. Cumpla con los requisitos y documentos de diseño.
5. Proporcionar cobertura 100%. Asegúrese de crear casos de prueba que verifiquen todos los requisitos de software que se enumeran.
6. Los casos de prueba deben ser identificables. Proporcione un nombre a la ID del caso de prueba para que pueda identificarse fácilmente. Esto es útil para detectar errores o identificar un requisito en una etapa posterior.
7. Repetible e independiente. El caso de prueba debe generar los mismos resultados cada vez, independientemente de quién ejecute la prueba.
8. Revisión por pares
Una vez que haya realizado los casos de prueba, los evaluará un colega. Sus colegas pueden encontrar errores en sus casos de prueba, que usted mismo pasó por alto.
Ejemplo de Casos de prueba.
Hay una variedad de formatos para elaborar casos de prueba, en realidad no existe un formato único y estandarizado, dado que dependiendo el negocio o escenario será necesario personalizar los datos para ajustarlo a lo que se requiere probar, sin embargo hay campos mínimos que se deben contemplar en todos los casos de prueba.
Suscribirse a:
Entradas (Atom)