home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / DATABASE / XCLAS20D.ZIP / DEMOS.TXT < prev    next >
Encoding:
Text File  |  1993-03-23  |  4.1 KB  |  111 lines

  1.  
  2. En este paquete se incluyen algunas demos para XCLASS 2.0
  3.  
  4. Todos los ejemplos que vienen con este paquete son eso, ejemplos.
  5. Si a alguien le interesara profundizar realmente en alguno de ellos
  6. sería aconsejable que terminase de pulir alguno de ellos antes de
  7. empezar a derivar clases.
  8.  
  9. CLASE MANTEN
  10. ============
  11.    Historia de esta clase:
  12.  
  13.    Siempre he buscado tener una "superfunción" que con una sola llamada se
  14.    encargase del mantenimiento típico de un fichero. La verdad es que cada
  15.    vez que comenzaba un programa terminaba haciéndome una "superfunción"
  16.    nueva. Esto era porque siempre se me ocurría alguna funcionalidad nueva
  17.    o dejeba de gustarme algo de la anterior.
  18.  
  19.    Esta función terminaba teniendo muchísimos parámetros de cara a hacerla
  20.    más flexible.
  21.  
  22.    Buscando un compromiso entre sencillez de utilización y flexibilidad en
  23.    su forma de trabajar, ví que lo ideal sería una clase donde poder sepa-
  24.    rar los dos momentos básicos de esta "función":
  25.    1-Definición y creación
  26.    2-Ejecución
  27.  
  28.    De esta forma podría tener una definición estándar y, antes de su eje-
  29.    cución, poder modificar aquellos comportamientos que me interesasen.
  30.    Ahora puedo crear una ventana para la edición del fichero actual:
  31.  
  32.    obj := Manten( 3, 4, 18, 70 )
  33.  
  34.    y antes de ejecutarla modificar lo que quiera, p.e.: eliminar el segundo
  35.    campo e insertar otro de otro fichero:
  36.  
  37.    obj:DelColumn( 2 )
  38.    obj:InsColumn( 2, tbcolumnnew( "PRECIO", {|| OTRO->dbseek( UNO->ARTIC ), ;
  39.                   OTRO->PRECIO } ) )
  40.  
  41.    y para poner todo esto en funcionamiento:
  42.  
  43.    obj:Exec()
  44.  
  45.  
  46.    Para ver la demo ejecuta HAZDEMO1.BAT
  47.  
  48.  
  49. ANIMAL.PRG
  50. ==========
  51.    Todos los que hemos tenido un AMSTRAD 6128 recordamos un programa que
  52.    venía con él. Era un ejemplo de programa "que va aprendiendo". Se trata
  53.    de que el programa acierte un animal que hemos pensado siempre que con-
  54.    testemos a las preguntas que nos hace. Si falla en su respuesta nos pide
  55.    la información para reconocer al nuevo animal y la siguiente vez que se
  56.    ejecute tendrá en cuenta su anterior fracaso.
  57.  
  58.    Con este ejemplo pretendo demostrar dos cosas:
  59.    -La potencia de las funciones grabadoras-lectoras de objetos
  60.    -La flexibilidad y alcance de ciertas clases, a veces utilizadas como
  61.     simples estructurras de datos.
  62.  
  63.    Como vereis, el código es realmente corto. Perdón por lo poco cuidado
  64.    de la presentación, pero lo que interesa es el algoritmo en sí.
  65.  
  66.  
  67. CLASE LISTA
  68. ===========
  69.    Se trata de la típica lista doblemente enlazada muy utilizaca en C. Por
  70.    falta de tiempo no se incluye una demo de esta clase.
  71.  
  72. CLASE PILA
  73. ==========
  74.    Si ya sabes lo que es una pila, no necesitarás ningún ejemplo de uso.
  75.    Sólo recordar que su potencia queda aumentada con las funciones de
  76.    grabación y lectura de objetos.
  77.  
  78.    Para los que no la conozcan, es una estructura de datos en que los
  79.    elementos se van "apilando". Cada vez que se introduce un elemento éste
  80.    queda en cabeza, y cuando se lee un elemento tiene que ser el que está
  81.    en cabeza, desapareciendo este después de la lectura. El uso más común
  82.    es guardar valores temporalmente, como:
  83.    Push( setcolor() )    //Guardamos el estado actual del entorno
  84.    Push( setcursor() )
  85.    Push( recno() )
  86.    .
  87.    .
  88.    .
  89.    dbgoto( Pop() )
  90.    setcursor( Pop() )
  91.    setcolor( Pop() )
  92.  
  93. CLASE ARBOL
  94. ===========
  95.    La que aquí se incluye no deja de ser un esbozo. Sería interesante
  96.    contemplar casos donde los elementos son más complejos, o añadirle
  97.    métodos para borrar un elemento...
  98.  
  99.    Recordar algunas características interesantes de la estructura-árbol:
  100.    -Siempre se puede leer de forma ordenada.
  101.    -Se puede buscar un elemento con un mínimo de lecturas.
  102.    -Se adapta a las funciones de grabación-lectura de objetos
  103.  
  104.    Suele haber tres formas de "recorrer" el árbol:
  105.    -InOrden: efectúa la lectura izquierda-nodo-derecha. Da una lista orde-
  106.     nada.
  107.    -PreOrden: lectura nodo-izquierda-derecha. Típico en búsqueda de elementos.
  108.    -PostOrden: lectura izquierda-derecha-nodo. Con él se puede obtener, p.e.,
  109.     la notación polaca de una expresión aritmética en InOrden.
  110.  
  111.