Heinsohn Privacidad y Ciberseguridad para el sector educativo
Guia 3 Shell ESTA
1. BASE DE CONOCIMIENTO
En el presente documento se describe los pasos que llevamos a cabo para elaborar una base
de conocimientos que nos permita solucionar problemas más comunes que se presentan en
una computadora, los problemas considerados son los siguientes:
Problemas de encendido.
Problemas de audio.
Problemas de video.
Problemas con el Mouse.
Problemas con el teclado.
Problemas con las unidades.
Problemas de red.
Este trabajo se ha realizado en el programa ESTA de visual – prolog. El primer que
llevamos a cabo es arrancar la aplicación, una vez hecho esto procedemos a cargar todas las
imágenes en la base de datos para ello damos clic en Imágenes de menú principal y
seleccionamos BD de imágenes, como se muestra en la siguiente figura:
Luego de haber hecho esto se nos muestra la ventana que nos permitirá cargar nuestras
imágenes en ella damos clic en importar, posteriormente debemos buscar la imagen a
cargar (debe ser mapa de bits), cuando la encontramos la abrimos, seguidamente debemos
asignar un nombre a nuestra imagen (mostrado en la figura), luego de hacer esto ya estará
en nuestra base de datos de imágenes, el resto de comandos se describen en la figura:
2. Este mismo procedimiento se ha seguido para cargar todas nuestras imágenes en la base de
datos.
El siguiente paso es definir nuestros parámetros a través de los cuales interactuará nuestra
base de conocimiento con el usuario, para definirlos damos clic en <Parámetro / Nuevo
parámetro> como se muestra en la siguiente figura:
3. Luego de esto se nos muestra la siguiente ventana.
En ella debemos especificar el nombre de nuestro parámetro (Name) y el tipo de parámetro
(Type), el primer parámetro que definiremos es llamado “problema” y es de tipo
“category”, el cual definirá el problema que tiene el usuario, por el cual está consultando la
base de conocimiento, luego de dar clic en “Aceptar” en la ventana anterior se nos muestra
la una ventana en la cual definiremos las propiedades del parámetro, la figura siguiente
muestra una descripción de tal ventana.
4. Luego de haber definido las propiedades del parámetro guardamos los cambios o bien
cerramos la ventana del parámetro y le damos clic en “Si” cuando el programa nos pregunta
si deseamos guardar los cambios.
Seguiremos el mismo procedimiento para definir parámetros de este mismo tipo, esto
quiere decir que se omitirán los pasos anteriores cuando definamos otro parámetro de
categorías, debido a que sería innecesario y este documento estaría lleno de procedimientos
repetitivos que tenderían a aburrir al lector.
Ahora que hemos definido nuestro primer parámetro procedemos a elaborar nuestra
primera sección para ello damos clic en <Sección / Nueva sección> como se muestra a
continuación:
Después de haber hecho esto se nos es mostrada la ventana siguiente, en la cual debemos
definir el nombre de la sección (debemos recordar que el nombre de la primera sección
debe ser “start” obligatoriamente).
Pulsando en el botón “Aceptar” se nos muestra una ventana en donde debemos programar
lo que nuestra base de conocimientos debe hacer cuando el usuario elija una opción del
parámetro “problema”, la descripción de la ventana y el código que manejará nuestra base
de conocimiento es mostrado en la figura siguiente:
5. Luego de haber terminado guardamos los cambios o bien cerramos la ventana de la sección
y damos clic en “Si” cuando la aplicación nos pregunte si deseamos guardar los cambios.
Cada una de las instrucciones que se encuentran después del “do” en el código de la figura
anterior son secciones que debemos definir, se accederá a cada una de ellas en dependencia
de la selección inicial que el usuario haga, a cada una de estas secciones las denominaremos
secciones de primer nivel. Es posible ver cada una de las secciones en forma de árbol, esto
nos ayudará a tener una idea o representación visual de las secciones definidas en nuestra
base de conocimiento, para mostrar este árbol damos clic en <Sección / Árbol de sección>
como se muestra a continuación.
Posteriormente a esto es mostrada la siguiente ventana, en la cual se muestran las secciones
definidas, debemos elegir la sección de la cual deseamos ver el árbol, es nuestro caso
elegimos la sección “start”.
6. Si usted recuerda, anteriormente en el código correspondiente a la sección “start” hemos
hecho llamadas a secciones que no hemos definido aún es por ello que luego de dar clic en
“OK” se nos muestra una ventana similar a la siguiente que nos indica que existen
secciones sin definir, en esta ventana damos clic en “Aceptar”.
Posterior a esto es mostrado el árbol de la sección “start”, para ello pude ver la siguiente
figura:
Como he mencionado, las secciones de primer nivel no han sido definidas todavía, para
definir una sección se puede dar doble clic sobre su nombre mostrado en el árbol de la
sección “start”, empezaremos por definir completamente la sección “seccion_encendido” y
7. posteriormente se definirán las demás, los pasos a seguir son los siguientes: en primer lugar
definiremos un parámetro de tipo Booleano con el cual controlaremos la efectividad las
recomendaciones que da la base de conocimiento al usuario, a este parámetro lo
llamaremos “fin”. Para definirlo damos clic en <Parámetros / Nuevo parámetro> y en la
ventana que se nos muestra especificamos el nombre y el tipo adecuado (tal y como se ha
descrito anteriormente), observe la figura.
Luego de esto es mostrada la ventana en donde se definirán las propiedades del parámetro,
tales propiedades son las siguientes:
El siguiente paso es definir la sección para ello podemos visualizar el árbol de la sección
“start” y dar doble clic sobre el nombre de la primera sección para que se nos muestre una
ventana preguntándonos si deseamos definir la sección, luego de dar clic en “Si” veremos
ventana donde programaremos el comportamiento que seguirá la aplicación, la
programación es la siguiente:
8. Como habrá observado hemos hecho referencia a la sección “encendido1” la cual no hemos
definido y lo haremos a continuación, para ello podemos seguir el procedimiento que
hicimos anteriormente, primero mostramos el árbol de secciones y luego damos doble clic
sobre la cual deseamos definir, en este caso el árbol de secciones hasta este punto tiene la
siguiente apariencia:
En la ventana de definición de la sección “encendido1” hemos especificado el código
mostrado en la siguiente figura:
En el código anterior hemos utilizado la función call clear_value (parámetro) para limpiar
los valores previos que tenía el parámetro “fin”, así mismo hemos hecho referencia a la
sección llamada “encendido2”, esta es una sección de tercer nivel, lo cual se puede ver en la
figura siguiente:
9. El código que define a esta sección es el siguiente:
En la sección “encendido2” hemos hecho referencia a la sección “encendido3”, la cual se
define de la siguiente manera:
10. Al igual que en las secciones anteriores en “encendido3” se hace referencia a “encendido4”
la cual se definió de la siguiente forma:
La sección “encendido4” es la última correspondiente a “seccion_encendido” que se
encuentra en el primer nivel, hasta este punto el árbol de secciones es como sigue.
El siguiente paso es definir la sección de primer nivel llamada “seccion_video”, para ello
utilizaremos los mismos pasos descritos anteriormente, pero debemos crear dos parámetros
que nos permitan discernir cuándo se ha solucionado el problema, estos parámetros se
llamarán “fin_video”, “fin_memoria” Y “fin_un”, serán de tipo Boolean, sus definiciones
son parecidas al elaborado en “seccion_encendido” y las mostramos a continuación.
11. Ahora que tenemos los parámetros que controlarán la continuación de la base de
conocimiento en la solución de problema de video, debemos definir la sección de primer
nivel, el código es mostrado en la siguiente figura:
El código anterior hace referencia a dos secciones que aún no hemos definido y que
haremos a continuación, empezaremos con la sección “mem1” y el código correspondiente
es el siguiente:
Como habrá notado debemos definir la sección “mem2”, esto se hace de la siguiente
manera:
12. Ahora debemos definir el código que manejará la sección “mem3”, éste es mostrado a
continuación:
Al igual que en los casos anteriores usted se debe fijar en el código, el cual hace referencia
a la sección llamada “mem4” la cual obligatoriamente debemos definir, tal definición es la
siguiente:
13. Hemos terminado de definir la rama de problemas de video provocados por problemas con
las memorias RAM, ahora definiremos la rama que no tiene que ver con problemas de
memoria, gráficamente lo podemos ver en la siguiente figura.
Esto quiere decir que ahora definiremos el comportamiento de la sección “video1”, tal
definición se muestra a continuación:
14. Al igual que en casos anteriores, en el código hemos hecho referencia a una sección a la
que no hemos definido todavía, es por ello que tal definición la mostramos a continuación:
Debido a que hacemos referencia a la sección “video3”, mostramos su definición como
sigue:
A continuación mostramos la definición de la sección “video4”.
15. Con la definición anterior hemos terminado de definir la sección de primer nivel
“seccion_video”, hasta este punto el árbol de secciones es como sigue:
El siguiente paso es definir la sección “seccion_audio”, para ello debemos crear un
parámetro que nos permita determinar en que momento el usuario ha encontrado la causa
del problema, es importante mencionar que podemos utilizar los parámetros antes creados,
pero hemos decidido crear uno nuevo para que se comprenda mejor el funcionamiento y
estructura de la base de conocimiento. El parámetro que crearemos se llamará “fin_audio” y
será de tipo booleano al igual que los definidos anteriormente, la definición es la siguiente:
A continuación presentamos la definición de “seccion_audio”.
16. Ahora mostraremos el código de la sección “audio1” a la que se hace referencia en la
definición anterior.
Como es evidente ahora debemos definir la sección “audio2”, lo cual se hace a
continuación:
Ahora que hemos terminado con la sección de audio debemos definir la sección de primer
nivel llamada “seccion_red”, pero antes de eso, al igual que en las secciones anteriores
crearemos un parámetro llamado “fin_red” que nos permita parar la aplicación cuando el
usuario haya resuelto el problema, el código del parámetro y la sección es el siguiente.
17. Como debió haber notado el siguiente paso es definir la sección “red1”, lo cual tenemos a
continuación:
La definición de la sección “red2” que se hace mención en el código anterior es la
siguiente:
18. El siguiente paso consiste en definir la sección “red3”, esto se muestra a continuación:
Hemos llegado al fin de la creación del asistente para problemas de red. Hasta este punto el
árbol de secciones tiene la siguiente apariencia.
En la figura anterior podemos ver que falta definir las secciones de primer nivel
“seccion_teclado” y “seccion_mouse”, empezaremos definiendo la primera, aplicaremos el
procedimiento antes descrito para definir las secciones anteriores, lo que quiere decir que
en primer lugar definiremos el parámetro que nos permita determinar cuando nos debemos
detener, el parámetro se llamará “fin_t” y será de tipo booleado, la definición del parámetro
y de la sección de primer nivel es la siguiente:
19. Ahora debemos definir la sección “t1”, lo cual es como sigue.
Hasta este punto solo hace falta definir la sección de primer nivel llamada
“seccion_mouse”, pero primero definiremos el parámetro que nos permitirá para cuando el
usuario especifique se que ha resuelto el problema, la definición del parámetro y de la
sección es como sigue:
20. Debido a que en el código anterior hemos hecho referencia a la sección “m1” que no hemos
definido, éste es el siguiente paso, por tanto, a continuación mostramos la definición:
Con la definición anterior hemos llegado al fin de la elaboración de nuestra base de
conocimiento que permita detectar las causas de los problemas más comunes en una
computadora. El árbol de secciones ha quedado de la siguiente manera.
21. UNIVERSIDAD NACIONAL DE INGENIERÍA
RECINTO UNIVERSITARIO PEDRO ARAÚZ PALACIOS
UNI – RUPAP
FACULTAD DE CIENCIAS Y SISTEMAS
FCYS
INTELIGENCIA ARTIFICIAL
BASE DE CONOCIMIENTO
DOCENTE: Ing. Ariel Chávez.