LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Documentos relacionados
QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET...

TAD: Pila. TALLER: TAD Pila

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

FACULTAD DE INGENIERÍA

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

LEER Y ESCRIBIR ARCHIVOS DE TEXTO CON PHP. FUNCIONES FOPEN (MODOS), FGETS, FPUTS, FCLOSE Y FEOF. EJEMPLOS (CU00836B)

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

5. Sentencias selectivas o condicionales

Tema 5. Estructura de datos Pila

REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C)

Alonso Ramírez Manzanares Computación y Algoritmos 10.03

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

GENERALIDADES DEL LENGUAJE C

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Tema 6. Gestión dinámica de memoria

EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Java para programadores

GUÍA BÁSICA DE SCHEME v.4

Conceptos de Arquitectura de Computadoras Curso 2015

Elementos léxicos del lenguaje de programación Java

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

CLASE DATE DEL API JAVA. MÉTODOS BEFORE, AFTER, TOLOCALESTRING, TOGMTSTRING Y GETTIME. EJEMPLOS. (CU00924C)

Instrucciones de control

CREAR TABLAS EN BASES DE DATOS CON phpmyadmin. TIPOS DE DATOS BÁSICOS (VARCHAR, INT, FLOAT). INSERTAR FILAS. (CU00840B)

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Estructuras de Datos. La pila es un objeto dinámico en constante cambio.

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

COMPARAR CADENAS CON PHP STRCMP, == Ó ===? NO DISTINGUIR MAYÚSCULAS O MINÚSCULAS: STRCASECMP. RELLENAR CON STR_PAD. (CU00829B)

Curso de Java Introducción a la Programación III

Introducción a Java LSUB. 30 de enero de 2013 GSYC

4. Operadores Operador asignación

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Estructuras de Datos Declaraciones Tipos de Datos

Tema 2. El lenguaje JAVA

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Tema: Introducción al IDE de Microsoft Visual C#.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Escuela Politécnica Superior de Elche

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

EJEMPLO DE CÓDIGO JAVA BÁSICO. CREAR CLASES CON CAMPOS, CONSTRUCTOR Y MÉTODOS. LA PALABRA CLAVE THIS (CU00652B)

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Manual de turbo pascal

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Elementos de un programa en C

Universidad de Managua

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Laboratorio. Instalación de Visual Studio Community. Back To Basics Instalando Visual Studio Community. Versión: 1.0.

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Operadores lógicos y de comparación en programación. Not, and, or Ejemplos. (CU00132A)

Programación Estructurada

Introducción al lenguaje Java

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Pruebas de unidad con JUnit

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Metodología y Tecnología de la Programación

Ejercicios de Programación Tema 7. Programación Orientada a Objetos

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

TEMA 4. ESTRUCTURAS DE CONTROL

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS

Pruebas de escritorio

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Guía práctica de estudio 05: Diagramas de flujo

FUNDAMENTOS DE PROGRAMACIÓN Curso: 2013/14 EXAMEN PARA ALUMNOS PRESENTADOS AL PRIMER PARCIAL PRIMERA PARTE. EJERCICIO 1 Cuestiones (1 punto)

Retículos y Álgebras de Boole

Programación Orientada a Objetos. Java: Excepciones

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

1. Aplicaciones del J2SE SDK1.4.2 de Sun.

Lección 2 Introducción al lenguaje C

La sintaxis básica para definir una clase es la que a continuación se muestra:

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Manejo de Bases de Datos Mysql en Lenguaje C

Tema: Autómata de Pila

PASO DE PARÁMETROS O ARGUMENTOS EN C. POR DEFECTO, POR VALOR O POR REFERENCIA. SIZEOF MEMORIA (CU00550F)

fundamentos de programación (unidad 4) programación estructurada en Java

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

Editor de código Visual Basic. Lista de miembros automática, sugerencias de sintaxis, autocompletado y otras opciones. (CU00313A)

Programación Orientada a Objetos. Java: Excepciones

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00921C)

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

El Autómata con Pila

2. Estructura de un programa en Java

Clase adicional 2. Estructuras básicas de control. Temas

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Tema 3. Aplicaciones de Tipo Consola

Guía - Taller # 2 (JAVA)

Tema 7. Generación de código

Transcripción:

APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen: Entrega nº23 curso Lenguaje de programación Java Nivel Avanzado I. Autor: Manuel Sierra y José Luis Cuenca

CLASE STACK A continuación vamos a explicar la clase Stack de Java, que implementa la interface List. Stack se traduce por pila y para recordar su significado podemos pensar en una pila de libros. También veremos las características más importantes de esta nueva implementación y haremos un ejemplo a modo de ejercicio. STACK La clase Stack es una clase de las llamadas de tipo LIFO (Last In - First Out, o último en entrar - primero en salir). Esta clase hereda de la clase que ya hemos estudiado anteriormente en el curso Vector y con 5 operaciones permite tratar un vector a modo de pila o stack. Las operaciones básicas son push (que introduce un elemento en la pila), pop (que saca un elemento de la pila), peek (consulta el primer elemento de la cima de la pila), empty (que comprueba si la pila está vacía) y search (que busca un determinado elemento dentro de la pila y devuelve su posición dentro de ella). Esta clase es muy sencilla y al crear un objeto de tipo Stack con el constructor básico evidentemente no contendrá ningún elemento. Un conjunto mucho más completo y consistente para operaciones de stack LIFO es proporcionado en la interface Deque y sus implementaciones, pero nosotros de momento vamos a limitarnos al estudio de la clase Stack. EJEMPLO USO CLASE STACK Realizaremos un ejemplo a modo de uso de pila. Uno de los casos más usados en informática de una pila es el de querer verificar si una determinada sentencia o instrucción está equilibrada en cuanto a número de paréntesis, corchetes o llaves de apertura y cierre. Cuando se escribe código de programación si no existe equilibrio entre signos de apertura (por ejemplo un paréntesis de apertura) y cierre (por ejemplo un paréntesis de cierre) ni siquiera debería procesarse la sentencia ya que no estaría formalmente bien construida. De esto se encargan los analizadores léxicos de los compiladores. Así que vamos a utilizar esta vez tan solo una clase Programa con el método main, donde vamos a ir analizando una sentencia para verificar si es equilibrada o no en símbolos de paréntesis, recorriendo todos sus caracteres desde el inicio hasta el final. Iremos construyendo nuestra pila apilando un símbolo (cada vez que detectemos un símbolo de apertura o desapilando de ella cuando detectemos un símbolo de cierre. Tendremos que ir analizando

todos los caracteres de una expresión y actuar cuando detectemos un paréntesis, operando en función de si el paréntesis leído es de abrir ( ( ) o cerrar ( ) ). El equilibrio en la escritura vendrá determinado al terminar el análisis en función de si la pila está vacía (hay equilibrio) o contiene algún elemento (no hay equilibrio). Ejemplo: analizamos la expresión Hay varios países (México, España) que comparten el mismo idioma (español o castellano). El resultado al finalizar el análisis de la sentencia sería que la pila está vacía, y esto querrá decir que nuestra sentencia es equilibrada en paréntesis y por tanto el resultado es correcto. Si analizáramos la expresión Hay varios países (México, España) que comparten el mismo idioma (español o castellano. El resultado al finalizar el análisis será que la pila contiene un paréntesis, lo que quiere decir que la expresión no es equilibrada y no tiene el mismo número de paréntesis abiertos que cerrados. Tendremos que tener en cuenta casos especiales como una expresión cuyo primer elemento sea un paréntesis de cierre. Por ejemplo: Hay varios países )México, España( la consideraríamos una expresión incorrecta ya que si la pila está vacía el primer elemento siempre tendrá que ser un paréntesis de apertura y no uno de cierre. Tendremos en cuenta por tanto que además de equilibrio exista corrección en la forma de construcción (que no puedan existir cierres de paréntesis que no se hayan abierto). Vamos a escribir ahora el siguiente código con el que vamos a trabajar: /* Ejemplo Interface List, clase Stack aprenderaprogramar.com */ import java.util.stack; public class Programa { public static void main(string arg[]) { String cadenano = "(Cadena no equilibrada en paréntesis(()()()))))"; String cadenasi = "(Cadena equilibrada en parentesis())"; System.out.println("Verificación equilibrado en paréntesis para cadenano:"); System.out.println(verificaParentesis(cadenano)); System.out.println("Verificación equilibrado en paréntesis para cadenasi:"); System.out.println(verificaParentesis(cadenasi)); public static boolean verificaparentesis(string cadena) { Stack<String> pila = new Stack<String>(); int i = 0; while (i<cadena.length()) { // Recorremos la expresión carácter a carácter if(cadena.charat(i)=='(') {pila.push("("); // Si el paréntesis es de apertura apilamos siempre else if (cadena.charat(i)==')') { // Si el paréntesis es de cierre actuamos según el caso if (!pila.empty()){ pila.pop(); // Si la pila no está vacía desapilamos else { pila.push(")"); break; // La pila no puede empezar con un cierre, apilamos y salimos i++; if(pila.empty()){ return true; else { return false;

En este ejemplo hemos creado la función verificaparentesis que nos devuelve un boolean indicando si dada una cadena, esta está equilibrada y correcta en paréntesis. Para ello se hace uso internamente en este método de una pila o stack. Así el programa principal main tan solo llama a esta función con una cadena de ejemplo (cadenano o cadenasi) para verificar su equilibrado y corrección en paréntesis. El diagrama de clases por tanto para BlueJ es muy sencillo y tiene tan solo la clase Programa: La salida que obtendremos por consola será similar a esta: CONCLUSIONES Hemos visto un claro ejemplo del uso de la clase Stack que aunque muy sencilla, es muy útil ya que su implementación es muy fácil de aprender con tan solo los 5 métodos comentados anteriormente (push, pop, peek, empty, search). EJERCICIO Crea una clase denominada VerificadorVocales con un método capaz de recibir una cadena y una vocal y devolver un resultado que será 1 si el número de la vocal pasada como parámetro es par (hay equilibrio en esa vocal), -1 si el número de la vocal pasada como parámetro es impar (no hay equilibrio en esa vocal) ó 0 (no existe esa vocal en la cadena). Para ello debes utilizar una pila (Stack). Crea una clase con el método main donde se pida al usuario una cadena y se le devuelva un mensaje informativo sobre si el números de a s, e s, i s, o s, u s es par o impar. El programa debe dar opción al usuario a seguir introduciendo cadenas si lo desea.

Ejemplo de una posible ejecución del programa: Qué cadena desea analizar? asgdhfjfgllijgfhdfghjdfftejfhgfhfgfgejjfjfhufjjfmfgffkhfghkfgfknghblgbu Resultado: El número de aes es impar, el número de ees es par, el número de ies es impar, el número de oes es 0 y el número de ues es par. Desea analizar otra cadena? N Gracias por utilizar el programa Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com. Próxima entrega: CU00924C Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&itemid=180