



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Laboratorio de Programación, Profesor: , Carrera: Ingeniería Informática, Universidad: UMA
Tipo: Apuntes
1 / 5
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




DPTO. DE LENGUAJES Y C. DE LA COMPUTACION
E.T.S. DE INGENIERIA INFORMATICA
INGENIERIA INFORMATICA
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Laboratorio de Programación
Tema III. Diseño Modular
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Laboratorio de Programación
Tema III. Diseño Modular
Las dos siguientes secciones abordan estas dos entidades. III.2.2. ESPECIFICACIÓN DEL INTERFAZ. El interfaz de un módulo de biblioteca contiene las definiciones de constantes y tipos y lasdeclaraciones de subprogramas (cabeceras seguidas de punto y coma, también denominadasprototipos) que el módulo exporta. En definitiva, se establece todo aquello que puede serposteriormente utilizado por parte de otro módulo, ya sea un módulo de programa o bien otrabiblioteca. Todas las declaraciones y definiciones aparecerán agrupadas bajo el espacio denombres elegido para el módulo.La especificación del interfaz se almacena en un fichero con extensión “
#ifndef
m_complejo #define
m_complejo // define el
tipo
de datos Complejo
y^
declara algunas
operaciones
namespace m_complejo {struct Complejo
float real;float imag;}; // lee un
numero
complejo de
teclado
void
leer(Complejo& c); //^
escribe
un numero
complejo
por
pantalla
void
escribir(const Complejo&
c);
asigna
a^
c el
número
complejo
formado
por
real
e^
imag
void
crear(Complejo&
c,
float
real,
float
imag);
suma
dos numeros
complejos
void
sumar(Complejo&
res, const Complejo&
x,
const
Complejo& y);
resta
dos numeros
complejos
void
restar(Complejo&
res,
const
Complejo& x,
const
Complejo& y);
namespace m_complejo #endif
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Laboratorio de Programación
Tema III. Diseño Modular
#ifndef m_complejo#define m_complejo....#endif
m_complejo
espacio de nombres, el carácter ‘_’.El fichero cabecera podrá incluir otros ficheros cabecera necesarios para la especificación delas declaraciones y definiciones que contiene. III.2.3. IMPLEMENTACIÓN DEL MÓDULO. La implementación de un módulo de biblioteca contiene las definiciones de los subprogramas(implementación) declarados en el interfaz, así como cualquier otra declaración y/o definiciónnecesaria para realizar la implementación. Todas las declaraciones y definiciones apareceránagrupadas bajo el espacio de nombres elegido para el módulo.La implementación se almacena en un fichero con extensión “
del
tipo complejo
y sus
operaciones
#include “m_complejo.h”#include
namespace std; // implementa
las
operaciones
sobre
complejos
namespace m_complejo {^ //
lee un
numero
complejo de
teclado
void
leer(Complejo& c) {
cin >>
c.real
c.imag;
escribe
un numero
complejo
por
pantalla
void
escribir(const Complejo&
c)
cout
<< c.real <<
c.imag <<
asigna
a c
el
número complejo
formado
por
real
e^
imag
void
crear(Complejo&
c,
float
real,
float
imag)
c.real
real;
c.imag
imag;
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Laboratorio de Programación
Tema III. Diseño Modular
#ifndef
m_lista_co #define
m_lista_co // inclusion
del
tipo complejo
y sus
operaciones
#include “m_complejo.h” // define el
tipo
de datos Lista de
complejos y
operaciones
namespace m_lista_co {typedef struct
Nodo*
Lista_Cmplx;
struct Nodo
m_complejo::Complejo
dat;
Lista_Cmplx
sig;
crea una
lista
vacia
void
crear(Lista_Cmplx&
lst);
mete un
elemento al
principio
de
la
lista
void
meter(Lista_Cmplx&
lst,
const
m_complejo::Complejo&
d);
saca el
primero de
la lista (no
vacia)
void
sacar(Lista_Cmplx&
lst,
m_complejo::Complejo&
d);
devuelve
true
si la
lista
esta
vacia
bool
vacia(const
Lista_Cmplx&
lst);
destruye
la
lista
liberando memoria
usada
void
destruir(Lista_Cmplx&
lst);
namespace m_lista_co
// inclusion
del
tipo
Lista
y^
sus
operaciones
#include "m_lista_co.h"#include
namespace std; using
namespace m_complejo; namespace m_lista_co {//
crea una
lista
vacia
void
crear(Lista_Cmplx&
lst)
{lst
mete un
elemento
al
principio
de la
lista
void
meter(Lista_Cmplx& lst,
const
Complejo&
d)
{Lista_Cmplx nuevo =
new Nodo;
nuevo->dat =
d;
nuevo->sig =
lst;
lst^
= nuevo; }
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Laboratorio de Programación
Tema III. Diseño Modular
saca el
primero de
la lista (no
vacia)
void
sacar(Lista_Cmplx&
lst,
Complejo&
d)
{Lista_Cmplx aux
= lst;
lst^
= lst->sig; d^ =^
aux->dat; delete
aux; }//^
devuelve
true
si la
lista
esta
vacia
bool
vacia(const
Lista_Cmplx&
lst)
{return
(lst ==
destruye
la
lista
liberando memoria
usada
void
destruir(Lista_Cmplx&
lst)
{Lista_Cmplx aux;while
(lst !=
aux =
lst; lst =
lst->sig; delete
aux; }} }^ //namespace
m_lista_co
// inclusion
del
tipo Lista y
sus operaciones
#include “m_lista_co.h”#include
namespace std; using
namespace m_complejo; using
namespace m_lista_co; int main(){Complejo
a; Lista
lst; m_lista_co::crear(lst);cout
<< “Introduzca complejos
hasta
endl;
leer(a);while (!((a.real
(a.imag
meter(lst,a);leer(a);}while^
(!vacia(lst)) { sacar(lst,a);escribir(a);cout <<
endl;
}return 0;}
E.T.S. de Ingeniería Informática (Ing. Informática)
Dpto de Lenguajes y C. de la Computación
Laboratorio de Programación
Tema III. Diseño Modular
III.3. PROYECTOS EN DEV-C++. Dev-C++ utiliza el concepto de