Foros del Web » Programación para mayores de 30 ;) » C/C++ »

modulos

Estas en el tema de modulos en el foro de C/C++ en Foros del Web. Necesito ayuda para hacer un programa, que utilice unos modulos. A ver, en primer lugar hay que escribir un modulo de funciones para el manejo ...
  #1 (permalink)  
Antiguo 25/11/2006, 21:39
 
Fecha de Ingreso: julio-2006
Mensajes: 99
Antigüedad: 17 años, 9 meses
Puntos: 0
modulos

Necesito ayuda para hacer un programa, que utilice unos modulos.
A ver, en primer lugar hay que escribir un modulo de funciones para el manejo de tablas que contendra la funcion "lee_tabla" y "lee vector"
Luego se define un header para este modulo "modulo.h". ( int lee_tabla(int) ....)
Y luego te pone un programa que dice que utiliza una funcion del modulo definido anteriormente:
#include <stdio.h>
#inlcude "modulo.h"
....
n=lee_tabla(v)

Y segun dice este programa debe funcinar. En primer lugar, coge el prototipo de modulo.h, hasta ahi bien, pero, como manda el valor de "v" a la funcion lee_tabla, que esta definida en otro archivo, en el modulo??? otra pregunta, porque pone "modulo.h" entre parentesis y no entre "<>" ??

Saludos.
  #2 (permalink)  
Antiguo 26/11/2006, 11:27
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Pues tu primer pregunta no te entendi lo que querias decir.
Lo de "" en vez de <> pues facil:
Cuando tu incluyes algo con "" la cabecera se busca en el directorio donde estas trabajando, pero si le pones <> entonces se busca en las carpetas include que se especifican en el compilador.
Saludos
  #3 (permalink)  
Antiguo 26/11/2006, 18:01
 
Fecha de Ingreso: julio-2006
Mensajes: 99
Antigüedad: 17 años, 9 meses
Puntos: 0
ok, aclarado lo de "" y <>.

Mira copio el ejercicio entero, lo que quiero no esque me digan cual es el algoritmo para las fuciones ni nada de eso, sino, que me aclaren la forma en que los programas del ejercio 2. y 3. utilizan las funciones del modulo del programa 1., sin estar en el mismo archivo, no lo comprendo...

1. Escriba un módulo de funciones para el manejo de tablas de datos de tipo double. Dicho módulo contendrá las
siguientes funciones:
· lee_vector_double: lee una serie de valores de la entrada estándar y los almacena en una tabla.
· escribe_vector_double: escribe en la salida estándar los valores de una tabla.
· busqueda_secuencial_double: realiza una búsqueda secuencial de un elemento en una tabla.
· busqueda_binaria_double: realiza una búsqueda binaria de un elemento en una tabla ordenada.
· ordenacion_intercambio_double: ordena una tabla ascendentemente utilizando el esquema de intercambio.

El fichero de cabecera del módulo, v_doble.h, será el siguiente:
#define TAM 100
typedef enum {Falso, Cierto} Logico;
typedef double Vector[TAM];
int lee_vector_double (Vector);
void escribe_vector_double (const Vector, int);
int busqueda_secuencial_double (const Vector, int, double);
int busqueda_binaria_double (const Vector, int, double);
void ordenacion_intercambio_double (Vector, int);


2. El siguiente programa utiliza una función del módulo definido en el apartado anterior.

#include <stdio.h>
#include "v_doble.h"
void main (void)
{
Vector v;
int n, posicion;
double x;
n = lee_vector_double (v);
printf ("\nIntroduzca un número: ");
scanf ("%lf", &x);
posicion = busqueda_secuencial_double (v, n, x);
if (posicion != -1)
printf ("\nElemento encontrado en la posición %d", posicion);
else
printf ("\nElemento no encontrado");
}

2. El siguiente programa lee una tabla, la ordena y la presenta en la salida estándar, utilizando las funciones del módulo.

#include <stdio.h>
#include "v_doble.h"
void main (void)
{
Vector v;
int n;
n = lee_vector_double (v);
ordenacion_intercambio_double (v, n);
escribe_vector_double (v, n);
}
  #4 (permalink)  
Antiguo 29/11/2006, 08:21
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
No sé que no comprendes. Precisamente la ventaja de hacerlo en varios archivos es poder distribuir el código...

Si no pudieses hacer tal cosa, ¿qué sentido tendría el usar #include, headers, etc, etc?

Vamos, creo que está claro: El header te permite conocer las definiciones de cosas que de otra forma no ves porque están precisamente en otro lugar.
  #5 (permalink)  
Antiguo 29/11/2006, 17:25
 
Fecha de Ingreso: julio-2006
Mensajes: 99
Antigüedad: 17 años, 9 meses
Puntos: 0
Y, pero lo que digo, esque en el programa 2. solo esta incluido el archivo "v_doble.h", donde unicamente estan declarados los prototipos de las funciones y varios tipos... Pero las funciones lee_vector_double, busqueda_secuencial_double, estan definidas en otro archivo que no esta incluido en el programa 2, como digo, unicamente estan incluidos los prototipos...
  #6 (permalink)  
Antiguo 30/11/2006, 01:04
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por N0vat0 Ver Mensaje
Y, pero lo que digo, esque en el programa 2. solo esta incluido el archivo "v_doble.h", donde unicamente estan declarados los prototipos de las funciones y varios tipos... Pero las funciones lee_vector_double, busqueda_secuencial_double, estan definidas en otro archivo que no esta incluido en el programa 2, como digo, unicamente estan incluidos los prototipos...
Pues eso.... Repito: ¿De qué serviría dividir un programa en 2 o 2000 ficheros de código si tienes que repetir en todos el mismo código?

El compilador sólo necesita conocer los prototipos.
  #7 (permalink)  
Antiguo 30/11/2006, 03:58
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
Sí la implementacion de tus funciones en modulo.h estan en un fuchero, por ejemplo modulo.cpp, todo esta bien, ese es el proposito.

dividir tu apliacion en modulos es lo que se llama programacion modular donde las funciones juegan un papel muy importante, ya que puedes implementarlas, probarlas independientemente y si tu diseño es bueno las poldras usar en varios programas al igual como se hace con las librerias de C.

el como se pasa el valor de V a la funcion es cuestion de que estudies un poco el funcionamiento de una funcion, el uso de parametros etc.

y el por que se usa "" en lugar de <>, esto depende de como estes usando el archivo modulo.h

si este se encuentra en el mismo directorio que tu programa (fichero en que esta main o el fichero que lo incluye), se puede incluir con "" o con <> no hay problema si tu fichero se encuentra en la carpeta include al igual que stdio.h u otros encabezados estandar, solo se puede incluir con < >.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:05.