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 sobre tipos abstractos de datos en c

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

Cesar Uribe Cesar Uribe

Cesar uribe "follon" soy una loca para explicar estructas.

hernan hernan

Cuando se coloca en el include comillas (" "), se debe colocar tanto el .h y el .c en el mismo directorio donde esta el fuente en ejecución...

david david

y como lo ejecuto?

Deja tu comentario sobre tipos abstractos de datos en c

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 2 años. En ella habla sobre Estructura De Datos.

5 personas han dejado ya sus comentarios.

Tú también puedes dejar el tuyo.

Temas relacionados

Login

Comentarios

tipos abstractos de datos en c (david)
y como lo ejecuto?...(24 ago)
tipos abstractos de datos en c (hernan)
Cuando se coloca en el include comillas (" "), se debe colocar tanto el .h y el .c en el mismo ......(07 jul)
un carajo para la sage (jarjor)
gustavo cogeme el navo, comunista los negros que se follan a tu madre y seguramente fascista sea el ......(11 ene)
un carajo para la sage (Alfis)
Mensaje dirigido a Gustavo: Vete a la mierda, hazme el favor :) PD: Muy buen blog Jaime!...(11 ene)
Feliz falsedad en gaza (MOUSSA)
TE INFORMO QUE YA TENGO UN DISEÑO NUEVO DE COHETE, LO VAMOS A ESTAR LLEVANDO EN LOS PROXIMOS DIAS A ......(06 ene)

Más comentados

tipos abstractos de datos en c (5)
un tipo abstrato de datos llamado (TAD) es un conjunto de valores y operaciones que se definen por ...
un carajo para la sage (3)
   la SAGE  espera que con su canon ,que las putas discograficas y demas sindicatos del crimen han ...
tux gaditano (2)
aqui tenemos el autentico tux gaditano con un buen butanito en  la mano desde cadiz para todo el ...
programar en java con ubuntu (2)
 programacion del famoso hola mundo 1º instalar la libreria con apt-get sudo apt-get install ...
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 ...

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