Organización de Computadoras



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.

Práctica 2: Simón dice

Modulo 1 El lenguaje Java

7. Manejo de Archivos en C.

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Organizando mi clase en el GES Material de apoyo

Construcción de Escenarios

Introducción a la programación orientada a objetos

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Centro de Capacitación en Informática

Tema: Arreglos de Objetos en C++.

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Software para Seguimiento de Clientes. Descripción del Producto

MATERIAL 2 EXCEL 2007

UNIDAD EJECUTORA DE CONSERVACION VIAL MANUAL DEL USUARIO DEL SISTEMA INTEGRAL DE CONTROL DE PROYECTOS

SISTEMA DE BECAS AL EXTERIOR

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Planilla de cálculo. Módulo II - OpenOffice.org Calc

4. METODOLOGÍA. 4.1 Materiales Equipo

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL II

Tema: Sobrecarga de Operadores.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

PowerPoint 2010 Modificar el diseño de las diapositivas

Soporte lógico de computadoras

Tabla de contenido. Manual B1 Time Task

Control de Inventarios SisMod

ESPOCH ESCUELA DE MEDICINA HERNANDEZ MAYRA FORMULAS Y DUNCIONES BASICAS ESPOCH

Manual de ayuda para la utilización del Correo Interno en el Campus Virtual

Manual del Profesor Campus Virtual UNIVO

Estructuras de Datos Dinámicas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos dinámicas

Manual de iniciación Aula Virtual del IES El Greco

Proyectos de Innovación Docente

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

Guía para el Portal de Profesores del Sistema de Información CLASS Académico

Manual de usuario. Curso Móvil 1.0

Manual de referencias para la administración Delegada Webmail UNE / Por: Paula Andrea Torres Toro

MANUAL DE USUARIO SICVECA DESKTOP. Código: R-02-I-IF-312 Versión: de 19 SICVECA DESKTOP. Manual de Usuario Versión 1.0.

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Script de pruebas para generar timbre fiscal digital

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

Otros tipos de Consultas

Bienvenido al sistema de Curriculum Digital CVDigital

UNIVERSIDAD NACIONAL DE CÓRDOBA MANUAL DE GUARANI3W - PERFIL DOCENTE

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

Figura 1 Abrir nueva hoja de cálculo

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

Operación Microsoft Access 97

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACION DE COMPUTACIÓN PROYECTO DE CÁTEDRA. MATERIA: Introducción a la Programación

SISTEMA InfoSGA Manual de Actualización Mensajeros Radio Worldwide C.A Código Postal 1060

9. Objetos y clases Clases

Guía Corta: Alcance y Asociaciones. 1. Preliminares: Nombres y Asociaciones

Cómo gestionar menús en Drupal 7

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

TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR: Estructuras CONTENIDOS

S I S T E M A E N L Í N E A

Combinar comentarios y cambios de varios documentos en un documento

Instructivo de Microsoft Excel 2003

SISTEMAS OPERATIVOS AVANZADOS

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

DATOS IDENTIFICATIVOS:

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

SOLUCION EXAMEN junio 2006

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

ESCUELA DE ADMINISTRACIÓN

INTRODUCCIÓN PERFIL DE USUARIO ACCESO AL SISTEMA CLASIFICADORES PRESUPUESTARIOS DE INGRESOS... 6

UML, ejemplo sencillo sobre Modelado de un Proyecto

Modelos y Bases de Datos

Operación de Microsoft Word

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

Examen de Fundamentos de sistemas distribuidos

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Introducción a Visual Studio.Net

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

MANUAL DE USUARIO SISTEMA PARA SOLICITUD DE CURSOS AULA VIRTUAL. Versión 1.0b. Febrero de 2016

Práctica 3 de Redes de Área Local Cliente y Servidor de ficheros concurrente

Manual correo electrónico sobre webmail

Base de datos en Access

AUTOR CARLOS EDUARDO BUENO VERGARA JORGE ARMANDO BUENO VERGARA USO DE LOS OBJETOS DEL PROGRAMA. Dfd INFORMÁTICA II PROFESOR. JOSÉ FRANCISCO AMADOR

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Para obtener una cuenta de padre

FACULTAD DE INGENIERÍA, U.B.A. Seminario de Sistemas Embebidos TRABAJO PRÁCTICO 0

Práctica: Compartición y seguridad de los recursos de red

Se guardan en archivos con extencion c y los cabezales con extension h

El registro de una Organización de Productores Agrarios en el Sistema en Línea tiene los objetivos siguientes:

Práctica 5: Programación Estructurada

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

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

Base de Datos Práctica 1.

nom web Manual: Cierre de Ejercicio

MANEJANDO FICHEROS Y CARPETAS

Sistemas Operativos. Curso 2016 Procesos

REGISTRO CIVIL MANUAL DE USUARIO

Guía para la migración de asignaturas de grado y másteres al nuevo espacio docente para el curso 2015/2016

En esta unidad añadiremos información sobre EXT3 y trabajaremos con aspectos visibles que nos proporcionan estos sistemas de archivos.

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL I

Práctica 2: El problema de la sección crítica

Curso Internet Básico - Aularagon

Transcripción:

Organización de Computadoras Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre de 2015 Proyecto N 1 Programación en Lenguaje C El objetivo principal del proyecto es implementar funciones para la administración de un bloque de memoria. Para esto se debe implementar: un TDA Lista utilizando memoria dinámica mediante free y malloc. un TDA Memoria Heap que implementa la administración de un bloque propio de memoria y utiliza el TDA Lista anterior. un TDA Pila utilizando el espacio de memoria implementado. un programa de prueba que utiliza el TDA Pila anterior. 1. TDA Lista Implementar en C utilizando punteros un TDA Lista cuyos elementos sean pares de enteros. La lista debe ser simplemente enlazada sin centinelas, con posición directa. La implementación debe contener las operaciones: tlista crearlista() Crea una lista vacía y la devuelve. void insertaratras(tlista* L, tnodo* pos, telemento x) Inserta el elemento x en la posición inmediata siguiente a pos en la lista. void insertarppio(tlista* L, telemento x) Inserta el elemento x en la primera posición de la lista. tnodo* siguiente(tnodo* pos) Devuelve la posición siguiente a la posición pos. Devuelve NULL si p es NULL o si no existe posición siguiente. tnodo* primera(tlista L) Devuelve la primera posición de la lista L. tnodo* ultima(tlista L) Devuelve la última posición de la lista L. void eliminar(tlista* L, tnodo* pos) Elimina el elemento de la posición pos de la lista. telemento* elemento(tnodo* pos) Devuelve un puntero al elemento que ocupa la posición pos de la lista. int listavacia(tlista L) Devuelve verdadero ( 0) si la lista está vacía, y falso (0) si la lista contiene al menos un elemento. donde los tipos telemento, tnodo y tlista están definidos de la siguiente manera: typedef struct Elemento{ int a; int b; } telemento; 1

typedef struct Nodo { telemento elem; struct Nodo* next; } tnodo; typedef struct Lista { tnodo* header; //puntero al primer nodo de la lista tnodo* tail; //puntero al último nodo de la lista int size; } tlista; 2. TDA Memoria Heap Implementar un TDA Memoria Heap que simule la asignación y liberación de memoria en un proceso, mediante la asignación y liberación de bytes en un bloque de memoria declarado de la siguiente forma: char* mem La memoria heap debe ser única para toda aplicación que utilice este espacio de memoria. El TDA debe mantener información sobre bytes libres a través de una lista enlazada con información sobre los bloques libres. Puede agregar estructuras auxiliares que considere necesarias para la administración de los bloques libre y ocupados. Para la implementación de esta lista se debe utilizar el TDA Lista implementado anteriormente. Se deben proveer las siguientes operaciones: int inicializarmemoria(int max) Crea e inicializa un espacio de memoria de m bytes, siendo m el menor múltiplo de 8 mayor o igual que max. Esta función debe inicializar las listas de bloques libres de forma tal que toda la memoria esté disponible. Retorna 0 si la creación fue exitosa, 0 en caso de error, según el siguiente código de error: 1 no hay suficiente memoria, 2 la memoria ya fue inicializada, 3 cualquier otro error. void* asignar(int cant) Reserva cant bytes de memoria contigua y devuelve el puntero al primer byte. Retorna NULL en caso de no poder encontrar cant bytes contiguos. void liberar(void* bloque) Libera el bloque de memoria apuntado por bloque y actualiza las estructuras auxiliares. Al liberar memoria se deben fusionar los bloques contiguos de memoria libre para asegurar mayor éxito en futuras invocaciones a asignar. 3. TDA Pila Implementar en C el TDA para representar una pila de enteros. La pila debe implementarse como una lista enlazada dentro del espacio de memoria definido en el ejercicio anterior, es decir, no se deben utilizar las operaciones malloc y free, sino que deben utilizarse las operaciones asignar y liberar que provee el TDA Memoria Heap. Debe proveer las siguientes operaciones: 1. tpila* crearpila() Retorna una pila vacía nueva. Retorna NULL en caso de no poder crear la pila. 2. int tope(tpila* P) Retorna el entero que se encuentra en el tope de la pila. Su comportamiento no está definido en caso de que la pila se encuentre vacía. 3. int desapilar(tpila** P) Elimina el entero que se encuentra en el tope de la pila y lo retorna. 2

4. int apilar(int a, tpila** P) Inserta el entero a en el tope de la pila. Retorna 0 si la inserción fue exitosa, 0 en caso contrario. 5. int pilavacia(tpila* P) Devuelve verdadero ( 0) si la pila esta vacía, falso (0) en caso contrario. 6. tpila* subpila(int (*f)(int, int), int a, tpila* P) Crea una nueva pila con todos los elementos e de la pila P tales que f(e, a) es verdadero( 0). donde el tipo tpila está definido de la siguiente manera: typedef struct Pila { int elem; struct Pila* next; } tpila; 4. Programa de prueba Se debe realizar un programa que reciba como argumento un archivo de enteros y un criterio de selección, y escriba en un nuevo archivo, o muestre por pantalla, los enteros del archivo que cumplen con dicho criterio. Este programa debe leer el archivo completo ya almacenarlo en una estructura tipo tpila. Utilizando la función subpila se deben obtener los números que cumplen la condición especificada. Además, en el programa principal se deben implementar las funciones de comparación (mayor, menor o múltiplo de un número dado). Por último, se debe crear un archivo nuevo o mostrar por pantalla el resultado obtenido. Este programa debe hacer uso únicamente del TDA Pila implementado No debe utilizar el TDA Lista. El programa implementado (al que llamaremos seleccionar) debe conformar la siguiente especificación al ser invocado desde la línea de comandos: $ seleccionar [-h] [<criterio><archivo entrada>] [<archivo salida>] Los parámetros entre corchetes denotan parámetros opciones. El significado de las diversas opciones es el siguiente: En caso de no especificar parámetros, especificar parámetros inválidos o especificar el parámetro -h como primer argumento en la línea de comandos, el programa debe mostrar una pequeña ayuda por pantalla. Esta ayuda consiste en un breve resumen del propósito del programa junto con una reseña de las diversas opciones disponibles. En el caso de parámetros inválidos, además de la ayuda, y de ser posible, debe indicarse cuál fue el error en los parámetros. Si se especifica un archivo de salida, deben escribirse los números seleccionados en dicho archivo. En caso contrario, deben mostrarse por pantalla. El criterio especificado debe ser uno de los siguientes: >N Selecciona los números mayores a N. <N Selecciona los números menores a N. %N Selecciona los números que son múltiplo de N. El archivo de entrada debe ser una secuencia de enteros, uno por cada línea del archivo. 3

Por ejemplo, a partir del archivo números.txt que tiene los números: 1 5 6 3 25 63 12 11 21 en la siguiente tabla se muestra qué debería mostrar por pantalla cada una de la siguientes invocaciones: Sobre la implementación Invocación Resultado por pantalla $ seleccionar %3 numeros.txt 6 3 63 12 21 $ seleccionar >20 numeros.txt 25 63 21 $ seleccionar <20 numeros.txt 1 5 6 3 12 11 Los archivos fuente principales se deben denominar pila.c, lista.c, memoria.c y seleccionar.c respectivamente. Recordemos que en el caso de librerías, también se deben adjuntar los respectivos archivos de encabezados pila.h, lista.h y memoria.h, los cuales han de ser incluidos en los archivos fuente de los programas que hagan uso de estas librerías. Es importante que durante la implementación del proyecto se haga un uso cuidadoso del espacio de memoria, tanto para la reservar (malloc) la memoria necesaria, como para liberar (free) la memoria de variables que ya no son necesarias. Se debe respetar los nombres de tipos y los encabezados de funciones especificados en el enunciado. Los proyectos que no cumplan esta condición quedarán automáticamente desaprobados Sobre el estilo de programación El código implementado debe reflejar la aplicación de las técnicas de programación modular estudiadas a lo largo de la carrera. En el código, entre eficiencia y claridad, se debe optar por la claridad. Toda decisión en este sentido debe constar en la documentación que acompaña al programa implementado. El código debe estar indentado y adecuadamente comentado. Sobre la documentación Los proyectos que no incluyan documentación estarán automáticamente desaprobados. La documentación debe: estar dirigida principalmente a usuarios con conocimientos de programación. explicar brevemente los programas realizados, así como las decisiones de diseño tomadas, y toda otra observación que se considere pertinente. incluir explicación de todas las funciones implementadas, indicando su prototipo y el uso de los parámetros de entrada y de salida. 4

Sobre la entrega Las comisiones deben estar conformadas por exactamente 3 alumnos registrados con la cátedra. La fecha límite para informar a la cátedra quiénes son los integrantes de cada comisión es el Miércoles 30 de septiembre de 2015. No se aceptarán cambios a último momento en los integrantes. El código fuente y el informe del proyecto deberán ser enviados en un archivo zip por mail a la asistente de la cátedra hasta las 8:00hs del día Miércoles 14 de octubre de 2015. Tanto el asunto del mail como el nombre del archivo comprimido debe ser el siguiente: [OC2015] Proyecto 1 - apellido de los integrantes de la comisión Toda comisión que no cumpla este punto estará automáticamente desaprobada. El día Miércoles 14 de octubre de 2014, de 10 a 12hs, en el aula de clase se deberá entregar un folio plástico (no se aceptarán carpetas), cerrado con cinta adhesiva, conteniendo los siguientes elementos: Una carátula que identifique claramente a los integrantes de la comisión. Una impresión en doble faz de los archivos.c y.h enviados por mail. La documentación del proyecto impresa en doble faz. No se aceptarán discrepancias entre el código fuente impreso y el enviado por mail. 5