Usuario anónimo ¿Quieres tener tu propio blog?
Crear blog gratis en OboLog

tipos abstractos de datos en c

por jarjor
martes, 02 de octubre del 2007 a las 22:39
guardado en
un tipo abstrato de datos llamado (TAD) es un conjunto de valores y operaciones que se definen por especificación, siendo independientes de su implementación.

vamos a empezar con un tipo abstracto de datos muy sencillo, vamos a definir un numero fraccionario

 1º para ello debemos comenzar con un fichero de extencion .h en el cual pondremos la definicion
del tipo y la declaraciones de las variables y funciones a utilizar, llamemoslo fraccionario.h
y contendrá:

    #include <stdio.h>
#ifndef _fraccionario_ /*sentencia del preprocesador de c, sirve para comprobar que no
                hay otro tipo fraccionario en cuyo caso no podra ser definido                     nuestro TAD*/
    #define _fraccionario_
    typedef struct estructura{
        int numerador;
        int denominador; /*numero fraccionario tipo-> 1/2,2/4,5/6.....*/
    }tipofraccion;
    typedef tipofraccion *fraccionario;
    fraccionario crear_fraccion(int x,int y);/*crea la fraccion*/
    void destruir_fraccion(fraccionario f);/*libera la memoria*/
    int numerador(fraccionario f);/*devuelve denominador de f*/
    int denominador(fraccionario f); /*devuelve denominador de f*/
    void producto(fraccionario f,fraccionario g); /*suma f=f*g*/
#endif

antes de pasar a la siguiente parte deberemos de comprender una question fundamental a la hora
de diseñar un TAD; la ocultación de informacion. Algunos de ustedes que lean esto se
preguntarán por que no he utilizado tipofraccion directamente en vez de  utilizar un puntero a
estructura.
Bien esto es debido por que a la hora de implementar el tad si  hubiese sido un estructura, a
la hora de tener que modificarla habría  tenido que haberse pasado por referencia cargandose
la ocultacion de información. siendo por ejemplo la funcion producto asi: void producto(fraccionario *f,fraccionario g). si no fuese asi se pasaria por valor  y fraccion f no se modificaría.

2º Una vez tengamos definido nuestro TAD, deberemos de  implentar las funciones en un archivo de extencion .c, llamemoslo fichero.c:
#include "fraccionario.h"
#include <stdio.h>
#include <stdlib.h>
    fraccionario crear_fraccion(int x,int y){
        fraccionario f;
        f=(fraccionario)malloc(sizeof(tipofraccion));
        if(f==NULL){
            printf("error: no hay memoria\n");
            exit(1);
        }
        f->numerador=x;
        f->denominador=y;
    return f;
    }
    void destruir_fraccion(fraccionario f){
        free(f);
    }
    int numerador(fraccionario f){
        return f->numerador;
    }
    int denominador(fraccionario f){
        return f->denominador;
    }
    void producto(fraccionario f,fraccionario g){
        f->numerador*=g->numerador;
        f->denominador*=g->denominador;
    }

debemos de anotar que esto es una version del numero fraccionario simplificada y hecha de
manera introductoria para una persona que nunca ha visto nada de esto y no le resulte muy
pesado.
3ºutilizacion dentro de nuestros programas
#include <stdio.h>
#include <stdlib.h>
#include "fraccionario.h"
int main (void){
   fraccionario f,g;
   f=crear_fraccion(2,4);
   g=crear_fraccion(3,5);
   producto(f,g);
   printf("el resultado de multiplicar 2/4f con g es: %d,%d\n",numerador(f),denominador(f));
   destruir_fraccion(f);
   destruir_fraccion(g);
   return 0;
}
espero que sirva de ayuda para quien quiera introducirse en la programación con tipos
abstractos de datos.    
   

Comentarios

Irving Irving

Y donde se deben guardar los archivos "fraccionario.h" y "fichero.c"... Yo los he guardado en la unidad C:\ y no me funciona!

no! debes de crear un arhivo con extension .h y otro con extension .c

y luego incluir  el fraccionario.h en tu main, pro claro necesitaras un makefile ,,etc

Ante cualquier duda COMUNICAMELO POR AQUI  Y  cuelgo un programa de prueba con todo su codigo fuente

un daludo

Deja tu comentario

Deja tu comentario
Necesitas tener javascript activado para poder dejar comentarios

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

De esta forma, además, podrás mostrar tu imagen en los comentarios y no tendrás que rellenar tus datos cada vez.

Sobre esta anotación

jarjor

jarjor escribió esta anotación hace 11 meses. En ella habla sobre Estructura De Datos.

2 personas han dejado ya sus comentarios.

Tú también puedes dejar el tuyo.

Temas relacionados

Login

Comentarios

programar en java con ubuntu (Angel)
Olle gracias me va a servir de mucho por que como acabo de meterme en la onda de ubuntu y...(26 ago)
feria del libro de Cadiz MAYO 2008 (jarjor)
SEÑORAS Y SEÑORES TENGO EL HONOR QUE ESCRIBA EN MI BLOG EL TITO LOCO UN HOMBRE ...(25 may)
feria del libro de Cadiz MAYO 2008 (TITO LOKO)
MUI BONITO COJONE ES VERDA,COMO SIEMPRE SON LOS EMPRESARIOS ESTOS DE DONDINERO KIEN MARCAN LOS PR...(23 may)
tux gaditano (ana belen)
 muy bien hecho, menos mal q hay gente lúcida como tú.   VIVA ...(17 may)
tipos abstractos de datos en c (jarjor)
no! debes de crear un arhivo con extension .h y otro con extension .c y luego incluir&nbs...(16 may)

Más comentados

tux gaditano (2)
aqui tenemos el autentico tux gaditano con un buen butanito en  la mano desde cadiz para todo el ...
tipos abstractos de datos en c (2)
un tipo abstrato de datos llamado (TAD) es un conjunto de valores y operaciones que se definen por ...
feria del libro de Cadiz MAYO 2008 (2)
A mi siempre me ha gustado la feria del libro, Sobre todo por que es la única vez que compro libros ...
programar en java con ubuntu (1)
 programacion del famoso hola mundo 1º instalar la libreria con apt-get sudo apt-get install ...
paginas interesantes (1)
Aqui os dejo un link intersante sobre apliaciones portables de psp a gnu/linux para que veais todo ...

Suscripción

Suscríbete al Feed RSS XML

También puedes suscribirte directamente con alguno de los siguientes enlaces:

  • Suscríbete en Bloglines
  • Suscríbete en Google