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



Documentos relacionados
En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Modulo 1 El lenguaje Java

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

Sistema de Gestión Académica TESEO. Revisión 1.0. Servicio de Informática Área de Gestión (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES)

MATERIAL 2 EXCEL 2007

Índice ÍNDICE EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.) EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Centro de Capacitación en Informática

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Introducción al Dev-C++

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

MANUAL DE USUARIO CONTROL LOGÍSTICO DE TIEMPOS

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Capítulo 6. Introducción a la POO

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Prof. Dr. Paul Bustamante

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Introducción al tipo de dato ARRAY

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

Modelos y Bases de Datos

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

INSTRUCTIVO DEL COMANDO MAKE

Práctica 2: Simón dice

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Listas, Pilas, Colas y Punteros. Semana 3

Estructuras de Datos y Algoritmos. Árboles de Expresión

CAPÍTULO 17: ASPECTOS BÁSICOS DEL SISTEMA OPERATIVO WINDOWS

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

LINUX - Los archivos de órdenes I

Introducción a la programación orientada a objetos

Organización de Computadoras

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

7. Manejo de Archivos en C.

Tema 8 Procesos. * Definición informal: un proceso es un programa en ejecución

Prof. Dr. Paul Bustamante

P/. Factura Electrónica D/. Manual de Usuario Proveedores

SOLUCIÓN CASO GESTIÓN DE PERSONAL I

LABORATORIO 1 OPERACIONES DE ENTRADA Y SALIDA

El proceso de edición digital en Artelope y CTCE

Microsoft Excel. El Documento Excel. Interfase de Programa. Celdas

Unidad III El lenguaje de programación C

MANEJANDO FICHEROS Y CARPETAS

EDICIÓN Y FORMATO (II)

Base de datos en la Enseñanza. Open Office

Pilas y Colas. Capítulo 3

NOTIFICACIÓN DE MOVIMIENTOS DE ESTUPEFACIENTES POR PARTE DE LOS LABORATORIOS FARMACÉUTICOS Y ALMACENES MAYORISTAS DE DISTRIBUCIÓN

Para dudas, comentarios escribe a: C BASICO

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

MICROSOFT EXCEL Introducción: Qué es y para qué sirve Excel2007? TECNOLOGIA/ INFORMATICA: MS-EXCEL

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Programación Lineal. Ficha para enseñar a utilizar el Solver de EXCEL en la resolución de problemas de Programación Lineal

SOLUCION EXAMEN junio 2006

MANUAL PARA CREAR USUARIOS. Guía para crear, desactivar e inmovilizar Usuarios de Salesforce

La ventana de Microsoft Excel

Tema: Arreglos de Objetos en C++.

iseries Operations Navigator Administración de aplicaciones

CÓMO CREAR NUESTRO CATÁLOGO

Sistema de Inscripciones en Línea de la Olimpiada Mexicana de Matemáticas, Delegación Yucatán MANUAL DE USUARIO

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:

Árboles AVL. Laboratorio de Programación II

2.1 Funcionamiento del MPLS

Tema 2. Diseño del repertorio de instrucciones

Tablas en HTML. Tipos de celdas. Ing. Tomás Urbina Programación Web y Desarrollo de la Plataforma Web

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

GUÍA BÁSICA DE USO DEL SISTEMA RED

Curso Internet Básico - Aularagon

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

CONTENIDOS. 1. Completar el ejemplo de Herencia: Superclase Persona-Subclase Alumno

Informática I. While & do While

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

Manual Usuario Manual Usuario

Vectores y matrices. Arrays Declaración Creación Acceso a los elementos de un array Manipulación de vectores y matrices

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

ESTRUCTURA DE DATOS: ARREGLOS

Procedimiento y Pautas básicas a tener en cuenta para la puesta en producción de un sistema

Manual Operativo Aplicación Móvil

Fórmulas y funciones

Microsoft Office: EXCEL. Objetivos curso

MANUAL DE USUARIO. Sistema de Administración de Proyectos de Vinculación con la Colectividad (SAPVC) MANUAL DE USUARIO DOCENTE

Construcción de Escenarios

Ficheros Electrónicos

SISTEMA DE APARTADO DE SALAS PARA EVENTOS

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

11. Algunas clases estándar de Java (II)

Clase Nº 9 OPERADOR PC. P á g i n a 1 HOJA DE CALCULO MICROSOFT EXCEL

Índice de documentos. ANEXO II Manual de Electra Versión 1 Junio de 2015 NOTA: Gestión de Electricidad

MANUAL. Modulo: Fichero Vacunación Versión 2. Introducción:

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

1. La nueva interfaz del programa

Manual de Usuario Sistema SIGESP 1 de 15 Módulo: Sistema de Seguridad Rev. Nº 00. Revisado Por : Firma: Elaborado Por: ADS. Teresa Andrade Firma

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

Transcripción:

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO MARCEL SANTOS ARIEL MARTINEZ AGUILAR GILBERTO. MATERIA: ESTRUCTURA Y BASE DE DATOS. PROFESOR: ING. JESUS RODRIGUEZ BUENDIA. GRUPO: 3EM1.

OBJETIVO DEL PROYECTO Realizaremos un programa el cual utiliza la información básica sobre las pilas, este programa consistirá en una tipo agenda, la cual pide el nombre, teléfono y edad de una persona. Una vez almacenada esta información de una persona, se puede volver a introducir otra y el programa lo pondrá hasta arriba, si el usuario decide borrar lo que hay en esa pila (a esa persona) la que fue introducida primero aun estará ahí, si el usuario decide volver a tomar la opción de borrar, se eliminara a la persona que se ingreso primero y se mostrara un mensaje de pila vacia, INTRODUCCION Las estructuras dinámicas son colecciones de elementos con un tamaño que puede variar cuando se ejecuta el programa (en tiempo de ejecución del programa). Las colas y las pilas entran dentro de la clasificación de estructuras dinámicas. En la codificación de estas estructuras dinámicas hay que separar dos conceptos: 1. El mecanismo con el que se insertan /extraen los elementos de la estructura dinámica (que determinara el que sea pila o cola). 2. El soporte o mecanismo físico en el que esta implementada la estructura dinámica (este soporte puede ser una tabla unidimensional o multidimensional, una lista,). Por lo tanto, es importante destacar que cuando se define una estructura dinámica de este tipo (pila o cola) se esta especificando como se accede a los datos, pero no como se gestionan internamente. PILAS Las pilas son estructuras dinámicas que tienen una disciplina de extracción/inserción específica. Esta disciplina se conoce como LIFO (Last In, First Out). Con una disciplina de gestión de este tipo el elemento mas reciente almacenado es el primero en ser recuperado. Para poder trabajar con una pila será necesario realizar las dos operaciones citadas anteriormente (extracción e inserción) con la disciplina especificada (LIFO). Estas operaciones se van a realizar con funciones.

FUNCIONES ASOCIADAS A LAS PILAS. Las funciones necesarias para poder trabajar con una pila están vinculadas con las operaciones relacionadas con la disciplina de pila. Estas funciones son: push: Inserta o almacena un elemento en el soporte o mecanismo físico en el que esta implementada la pila. pop: Recupera o extrae un elemento del soporte o mecanismo físico en el que esta implementada la pila. El elemento mas recientemente almacenado se dice que esta en la cima de la pila. Si se extrae este elemento, desaparece de la pila, por lo que se dice que es una operación destructiva, disminuyendo el valor de la cima de la pila. Si se inserta un elemento el valor de la cima de la pila se deberá incrementar. En la siguiente figura aparecen las funciones push y pop, y la posición de la cima. Cuando se inserta un elemento con la función push se coloca en la encima de los elementos que existen en la pila (si los hubiere). Cuando se extrae un elemento con la función pop se saca de la cima de los elementos de la pila (si existe un elemento por extraer). Un ejemplo de funcionamiento de la pila aparece en la siguiente tabla:

OPERACIÓN CONTENIDO DE LA PILA ELEMENTO EXTRAIDO push(a) A push (B) AB Pop() A B push (C) AC push (D) ACD pop() AC D pop() A C pop() A SOPORTE PARA LA IMPLEMENTACION DE UNA PILA Como ya se ha comentado en este trabajo, las pilas se pueden gestionar internamente de distintas formas, siempre y cuando se mantengan las funciones que implementen las disciplinas de acceso. Los soportes mas usados son las listas enlazadas y la zona de memoria con posiciones contiguas. USO DE LISTAS Cuando se utilizan las listas enlazadas como soporte para la implementación de una pila, la función de inserción de un elemento (push) debe realizar las siguientes tareas: Crear un nodo. Insertarlo en la primera posición.

La función de extracción de un elemento (pop) deberá realizar las siguientes tareas: Extraer el primer elemento de la lista Borrarlo. USO DE TABLAS. Cuando se utiliza una tabla como soporte para la implementación de una pila, se intentara aprovechar las ventajas del uso de una tabla: la rapidez de acceso a los elementos mediante el uso de índices. Estos índices se utilizan para representar dos posiciones: La primera posición, base, indicara el comienzo de la zona reservada. Este índice representa una posición de valor fijo. Un índice variable que es la cima de la pila e indica la siguiente posición libre. Este índice se modifica al almacenar o recuperar un elemento. Habrá que fijarnos que la pila estará vacía si el valor de base es el mismo que el de la cima. La modificación de estos índices en una tabla cuando se utilizan las funciones pop y push se muestran en la siguiente figura: Aunque una pila debería tener un tamaño indefinido, en la mayor parte de las implementaciones es factible la utilización de tablas con un tamaño máximo, que se denomina dimensión.

Esto puede provocar que la pila se llene. Sabremos que la pila esta llena cuando se cumpla: (base + dimensión) == cima En esta situación, no se puede insertar ningún elemento nuevo si no se extrae uno antes. Las soluciones a este problema dependerán del uso que se le este dando a la pila. APLICACIONES DE PILAS. El uso de las pilas esta ampliamente extendido en aplicaciones relacionadas con compiladores y sistemas operativos. También se utiliza en cualquier entorno en el que se utilice la disciplina LIFO, es decir, en situaciones donde siempre hay que recuperar el último valor que se almaceno. EJERCICIO CON TABLAS Se pretende realizar un programa de una calculadora con la notación polaca inversa (RPN) en lugar de la infija. La calculadora debe aceptar los operadores de suma, resta multiplicación y división (+, -, * y /) y soló manejará operandos de tipo entero. En la notación RPN, cada operador sigue sus operandos; a una expresión infija como (7-3) * (2+1) Se introduce en la notación RPN como: 7 3 2 1 + * La ventaja de este tipo de notación es que hace innecesaria la utilización de parentesís. La notación no es ambigua mientras se sepa cuántos operandos espera cada operador.

El programa usará una pila para almacenar los operandos, y se realiza de la siguiente forma: La estructura del programa en un bucle que va leyendo hasta que se introduce el caractér f` para terminar el bucle, y realiza las operaciones adecuadas para cada operando u operador. Cuando se lee un operando se introduce en la pila. Cuando se lee un operador, se extraen dos operandos (puesto que todos los operadores son binarios), se aplica el operador y el resultado se vuelve a introducir en la pila. Los elementos se van almacenado en una tabla de enteros de tamaño MAXELE (es una constante que vale 10) de nombre pila. Se empieza a llenar por el primer elemento (posición 0 de la tabla). La variable cima es de tipo int y contiene el índice dentro de la tabla donde se puede almacenar el próximo elemento. El índice del último elemento almacenado será cima - 1, y el valor inicial de cima será 0. ORGANIZACIÓN EN FICHEROS El programa principal esta en el fichero calc.c. Las funciones de manejo de la pila están en el fichero pila.c. Las declaraciones de las funciones de manejo de la pila están en el fichero pila.h. En cogeop.c está la función coge_op, que lee y analiza un elemento de la entrada y usa las funciones de la biblioteca estándar isspace e isdigit que están en <ctype.h>. En pila.c está declarada la tabla pila (como variable static) y el índice cima (también como static), para que sólo puedan acceder a ellas las funciones de manejo de la pila (las funciones que están en este fichero). Nótese que estas variables no tienen un almacenamiento global o externo. La siguente figura recoge la organización de los ficheros que componen el programa:

ACLARACIONES SOBRE EL PROGRAMA PRINCIPAL Al analizar un valor de entrada mediante la función coge_op, éste puede corresponder a una de las siguientes categorias: Un número: es un operando. La función devuelve el caractér 0` y el valor estará en la variable numero (se le pasa la dirección). Este valor se almacena en la pila si no esta llena. Un operador: indica una operación. La función devuelve el caractér correspondiente a esa operación. En este caso se recuperan dos operandos de la pila. Si se han podido extraer los dos operandos, el resultado de la operación entre estos operandos se vuelve a almacenar en la pila. En el caso de la división, se comprueba previamente que no haya división por cero. Nueva línea: es el fin de la línea. La función devuelve el caractér \n`(nueva linea). Se recupera un elemento de la pila (si no esta vacía) y se imprime como resultado. Se vuelve a lamacenar en la pila para poder continuar realizando operaciones con datos en la siguiente línea. Fin de entrada. Significa que se ha acabado la entrada. La función devuelve el valor f`. En este caso el programa debe terminar. Otro: Significa que no es ninguno de los anteriores. La función devuelve el caractér leído. La recuperación de los elementos de la pila y la aplicación del operador se hace en la sentencia de control switch, que está dentro de un bucle. La condición de salida del bucle es que se acabe la entrada.

DESARROLLO DEL PROYECTO A continuación se mostrará el desarrollo y compilación del proyecto #include<iostream.h> #include<conio.h> #include<iomanip.h> class persona char nom[80]; int edad; long tel; public: persona(); void pedir(); void mostrar(); ; persona::persona() nom[0]='\0'; edad=0; tel=0; void persona::pedir()

clrscr(); cout<<"nombre: ";cin>>nom; cout<<"telefono: ";cin>>tel; cout<<"edad: ";cin>>edad; void persona::mostrar() cout<<"nombre: "<<nom; cout<<" cout<<" telefono: "<<tel; edad: "<<edad; class pila int i; persona a[5]; public: void insertar();

void sacar(); void mostrar(); pila():i(0) ; void pila::insertar() clrscr(); if(i==5) cout<<"pila llena.."; getch(); return; a[i].pedir(); i++; mostrar(); void pila::sacar() if(i==0)

clrscr(); cout<<"pila vacia" ; getch(); return; i--; mostrar(); void pila::mostrar() int y=30,x=1; clrscr(); if(i==0) cout<<"pila vacia.."; getch(); return; for(int j=i-1;j>=0;j--) gotoxy(x,y++);

a[j].mostrar(); getch(); void main() pila z; int s; do clrscr(); gotoxy(20,10); cout<<" MENU "; gotoxy(20,12); cout<<" 1. INSERTAR.."; gotoxy(20,13); cout<<" 2. ELIMINAR.."; gotoxy(20,14); cout<<" 3. MOSTRAR.."; gotoxy(20,15); cout<<" 4. SALIR.."; s=getch(); switch(s)

case '1': z.insertar(); break; case '2': z.sacar(); break; case '3': z.mostrar(); break; while(s!='4'); VISUALIZACION DEL PROGRAMA Menu

Opción 1

Opción 2 Opción 3