Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


tema1, Apuntes de Informática

Asignatura: Metodologia de la Programación, Profesor: , Carrera: I. T. Infor. Sistemas, Universidad: UCA

Tipo: Apuntes

Antes del 2010

Subido el 30/08/2008

josellle
josellle 🇪🇸

4.4

(60)

148 documentos

1 / 7

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Metodología de la Programación
Ingeniería Técnica en Informática de Gestión
Ingeniería Técnica en Informática de Sistemas
Guión de Prácticas Nº 1
DISEÑO MODULAR1
Objetivos
Aprender a resolver problemas descomponiéndolos en diferentes módulos (ficheros)
y realizar compilación separada.
Aprender a realizar una descomposición adecuada del problema en distintos
módulos y que cada uno de ellos sea lo más independiente posible.
Trabajar en equipo, realizando el desarrollo de un programa, simultáneamente con
otras personas, de manera organizada.
En las prácticas de este tema sería conveniente que el alumno:
- Realizara individualmente el problema 1.
- El problema 2 se hiciera en equipo, formado por un mínimo de dos personas y un
máximo de cuatro, dónde uno de los componentes actuará como representante y se
encargará de coordinar el grupo. Deben hacer una descomposición adecuada del
problema en distintos módulos y un reparto de dichos módulos entre los distintos
componentes del equipo, obteniendo así la solución al problema que se les plantea.
En ambos problemas los alumnos deben elaborar la documentación completa relativa a
la aplicación desarrollada: documentar y describir las estructuras de datos utilizadas,
redactar guías de uso de la aplicación,…
Implementación y uso de módulos en C
En el lenguaje C el código de un programa se puede escribir completo en un solo
fichero o bien repartirlo entre varios ficheros. Es decir, en C un fichero que contiene
una parte de un programa se corresponde con el concepto de módulo.
Los ficheros en que se divide un programa pueden ser de dos tipos:
Ficheros de código (con extensión .c): Pueden contener declaraciones y/o
definiciones de constantes, tipos, variables y funciones.
Ficheros de cabecera (con extensión .h, del inglés header = cabecera): Pueden
contener también cualquier parte de un programa, pero no conviene incluir en
ellos nada que genere código al ser compilados. Es decir, pueden contener
1 Última modificación: Viernes, 23 de Febrero de 2007
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga tema1 y más Apuntes en PDF de Informática solo en Docsity!

Metodología de la Programación

Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas

Guión de Prácticas Nº 1

DISEÑO MODULAR

1

Objetivos

  • Aprender a resolver problemas descomponiéndolos en diferentes módulos (ficheros) y realizar compilación separada.
  • Aprender a realizar una descomposición adecuada del problema en distintos módulos y que cada uno de ellos sea lo más independiente posible.
  • Trabajar en equipo, realizando el desarrollo de un programa, simultáneamente con otras personas, de manera organizada.

En las prácticas de este tema sería conveniente que el alumno:

  • Realizara individualmente el problema 1.
  • El problema 2 se hiciera en equipo, formado por un mínimo de dos personas y un máximo de cuatro, dónde uno de los componentes actuará como representante y se encargará de coordinar el grupo. Deben hacer una descomposición adecuada del problema en distintos módulos y un reparto de dichos módulos entre los distintos componentes del equipo, obteniendo así la solución al problema que se les plantea.

En ambos problemas los alumnos deben elaborar la documentación completa relativa a la aplicación desarrollada: documentar y describir las estructuras de datos utilizadas, redactar guías de uso de la aplicación,…

Implementación y uso de módulos en C

En el lenguaje C el código de un programa se puede escribir completo en un solo fichero o bien repartirlo entre varios ficheros. Es decir, en C un fichero que contiene una parte de un programa se corresponde con el concepto de módulo.

Los ficheros en que se divide un programa pueden ser de dos tipos:

  • Ficheros de código (con extensión .c ): Pueden contener declaraciones y/o definiciones de constantes, tipos, variables y funciones.
  • Ficheros de cabecera (con extensión .h , del inglés header = cabecera): Pueden contener también cualquier parte de un programa, pero no conviene incluir en ellos nada que genere código al ser compilados. Es decir, pueden contener

(^1) Última modificación: Viernes, 23 de Febrero de 2007

definiciones de tipos y constantes o declaraciones de variables y funciones (prototipos), pero no deben incluir definiciones de variables o funciones.

Para implementar en C un módulo de un algoritmo escrito en pseudocódigo haremos lo siguiente:

  1. Creamos un fichero NombreModulo.h con las declaraciones de todos los elementos públicos o exportables, es decir, todos los elementos de la sección de exportación del módulo. Hay que aclarar que en C no es posible exportar constantes y tipos de datos ocultando su implementación. Por tanto, debemos incluir también en este fichero las definiciones de constantes y tipos que se quieran hacer públicos.
  2. Creamos otro fichero NombreModulo.c con la definición o implementación de todas las funciones , tanto públicas como privadas. Si no se indica al compilador lo contrario, todas las funciones de un fichero son públicas, es decir, se pueden utilizar en cualquiera de los ficheros que componen un programa. Para hacer que una función sea privada , o sea, de uso exclusivo dentro del módulo en que está definida, su definición debe ir precedida de la palabra clave static. Puesto que las constantes y tipos públicos están definidos en el fichero de cabecera (.h) y tienen que ser utilizados en el fichero de código (.c), debemos incluir estas definiciones en este segundo fichero. Para ello debemos añadir la directiva #include “NombreModulo.h” al principio del fichero de código (NombreModulo.c).

Para hacer uso de un módulo en un fichero del programa (es decir, cuando un fichero importe algunos de los elementos exportados por otro módulo) debemos indicar al compilador dónde se encuentran las declaraciones de los elementos públicos del módulo que deseamos utilizar. Esto se hace también utilizando la directiva #include “NombreModulo.h” en dicho fichero.

Para compilar un programa compuesto de varios módulos y obtener el programa ejecutable debemos indicar al enlazador ( linker ) cuáles son estos módulos. Para ello, creamos un proyecto en el que debemos incluir los ficheros de código (.c) correspondientes a los módulo utilizados. En caso de que utilicemos módulos precompilados debemos incluir en el proyecto los ficheros de código objeto (.o) correspondientes.

Ficheros de texto

En ésta y en sucesivas prácticas se deben emplear ficheros de texto para leer y escribir datos. Daremos una breve explicación de cómo hacer uso de esta clase de ficheros en C.

Lectura: **int fgetc (FILE *f); int getc (FILE *f);** Son dos funciones idénticas que devuelven el carácter del fichero f situado en la posición actual y avanzan el indicador de posición del fichero al siguiente carácter. Devuelven EOF si se ha llegado al final del fichero.

**char *fgets (char *s, int tam, FILE *f);** Esta función lee caracteres y los copia en la cadena apuntada por s hasta llegar a un carácter de fin de línea (‘\n’), un EOF o hasta leer tam-1 caracteres. Después pone un carácter nulo (‘\0’) al final de la cadena. También devuelve un puntero a la cadena leída.

**int fscanf (FILE *f, const char *formato, ...);** Funciona exactamente igual que scanf() excepto que lee los datos del fichero f en lugar de hacerlo de stdin (entrada estándar, normalmente el teclado).

Escritura: **int fputc (int c, FILE *f); int putc (int c, FILE *f);** Ambas funciones escriben el carácter c en el fichero f y avanzan el indicador de posición. Devuelven EOF si se produce un error y si no, el carácter escrito.

**int fputs (const char *s, FILE *f);** Escribe la cadena de caracteres apuntada por s en el fichero f. El carácter nulo de terminación (‘\0’) no se escribe. Devuelve EOF si se produce un error y un valor negativo en caso contrario.

**int fprintf (FILE *f, const char *formato, ...);** Funciona igual que printf() , pero escribiendo los datos en el fichero f en vez de escribirlos en stdout (salida estándar, normalmente la pantalla).

Problema

Escribir un programa que lea un fichero de texto, lo almacene en memoria en una estructura de datos adecuada y cuente el número de palabras del texto que son anagramas de la primera palabra. Se considerará que las palabras están delimitadas por espacios. Se dice que una palabra w es un anagrama de la palabra v , si podemos obtener w cambiando el orden de las letras de v , es decir, w es una permutación de v. Por ejemplo, vaca es un anagrama de cava.

Estructura del programa :

  • Anagrama : Incluye la función main().
  • Permutaciones : Contiene una función que calcula el número de anagramas de la primera palabra.
  • Texto : Contiene la definición del tipo texto e incluye funciones para leer el texto de un fichero y almacenarlo en memoria, para extraer palabras del texto y para determinar si se ha procesado el texto completo.
  • Palabras : Contiene la definición del tipo palabra y funciones para procesar palabras.

Problema 2

Crear un pequeño programa de gestión de almacén para realizar las siguientes tareas:

  • Altas de artículos (código, 5 dígitos; descripción, máximo 20 caracteres) ordenados por código.
  • Bajas de artículos por código.
  • Altas de almacenes (código, 2 dígitos; descripción, máximo 10 caracteres) ordenados por código.
  • Bajas de almacenes por código.
  • Actualización de existencias mediante un fichero de texto stock.txt en el cada línea tendrá tres valores separados por un guión (‘-’): código de artículo ( dígitos), código de almacén (2 dígitos) y unidades en stock (6 dígitos). Ejemplo: 87412-01- 87672-03-

Permutaciones

Palabras

Texto

Anagrama

  • Almacenes : Funciones para la gestión de almacenes y definición de los tipos almacen y tabla_almacenes.
  • Stock : Funciones para la gestión de existencias y definición del tipo stock para representar la cantidad almacenada en cada almacén de cada artículo.