Pilas colas y árboles en prolog
En la programación de estructuras de datos que utilizamos para almacenar los datos para que puedan ser utilizados de manera eficiente. Esto significa que para los diferentes usos de los datos, necesitamos estructuras diferentes. En el capítulo anterior hemos visto varias estructuras para almacenar (o representa) datos: hechos, funtores, bases de datos y listas. En este capítulo, quiero mostrar cómo representar otras tres estructuras que son ampliamente utilizados en la programación. Ellos son la pila, la cola y el árbol. Voy a presentar la forma de aplicar estas estructuras en la sala VIP y luego decirle que en parte se puede encontrar en las clases normales en la sala …ver más…
Un entero sin signo es una secuencia de dígitos. Una definición podría ser:
<unsigned integer> ::= <digit> | <digit> <digit> | <digit> <digit> <digit> | ...
La definición dice que el concepto <unsigned Integer> puede ser un <digit> o puede ser un <digit> seguido de un <digit> o puede ser de tres <digits> en una fila o ...
Además, podemos definir un <digit> por:
<digit> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
Este dice que un <digit> puede ser uno de los dígitos naturales, incluidos los de cero. Esta definición de <digit> funciona bien. Es evidente que en cualquier lugar donde aparece <digit> puede utilizar cualquiera de los diez mencionados dígitos. Tal vez le gustaría poner una restricción a ceros a la izquierda, pero que no es necesario.
Sin embargo, la primera definición, de <unsigned Integer>, plantea un problema. Inmediatamente verá que la primera definición de <unsigned Integer> no funciona muy bien. Un número entero sin signo puede tener cualquier número de dígitos - por lo que esta definición no se muestran todas las posibilidades. Que tendría un infinito número de expresiones. La solución para este problema es la recursividad. En BNF puede crear recursiva definiciones. Para un número entero de la definición se convierte en:
<unsigned integer> ::= <digit> | <digit> <unsigned integer>
La definición dice ahora que un