<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Mobile Application for an Online Logic Lab (Aplicacio´ n M o´vil para Laboratorio de Lo´ gica en L´ınea)</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Debora Sarahi Rodriguez Aguilar</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Rosa Maria Qui n˜ones Arellano</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Juan C. Acosta Guadarrama</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Universidad Auto ́ noma de Ciudad Jua ́ rez</institution>
          ,
          <country country="MX">Mexico</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2017</year>
      </pub-date>
      <fpage>25</fpage>
      <lpage>32</lpage>
      <abstract>
        <p>Resumen-This is a detailed work on how to run DLV System, for Answer Set Programming, on mobile Android OS devices, in such a way users can exploit the app potential. The scope includes novice users who wish to run DLV for the first time. Este trabajo describe de forma detallada y espec´ıfica, co´ mo utilizar el Sistema DLV, para Answer Set Programming, en dispositivos con sistema operativo Android, de tal manera que los usuarios exploten el potencial de la app; incluyendo a los usuarios novatos que quieran correr DLV por primera vez.</p>
      </abstract>
      <kwd-group>
        <kwd>Aplicacio´ n Mo´ vil</kwd>
        <kwd>Lo´ gica Matema´ tica</kwd>
        <kwd>Base de Datos Deductiva</kwd>
        <kwd>ASP</kwd>
        <kwd>DLV</kwd>
        <kwd>Android</kwd>
        <kwd>Laboratorio en L´ınea</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCCI O´N</title>
      <p>
        DLV [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] es un sistema de bases de datos deductivo que
ha sido creado por un equipo de investigacio´ n de Italia
y Austria (The University of Calabria1 and The Vienna
University of Technology2). Como herramienta para los
usuarios, DLV es capaz de llevar a cabo deducciones en
distintas l o´gicas a trave´s del lenguaje formal Answer Set
Programming [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>Es importante mencionar, que una base de datos
deductiva, es un programa que se encarga del proceso de
razonamiento. Este programa, utiliza una base de conocimiento,
selecciona los datos y los pasos adecuados para exhibir los
resultados.</p>
    </sec>
    <sec id="sec-2">
      <title>DEFINICI O´N DEL PROBLEMA</title>
      <p>
        DLV es un sistema inteligente que provee un ambiente
de programaci o´n con la l o´gica. Originalmente funciona
mediante el ana´lisis de la naturaleza de una entrada espec´ıfica.
“El sistema es capaz de aplicar las te´cnicas que reflejan
mejor la complejidad del problema en cuesti o´n, por lo que
los problemas fa´ciles se resuelven ra´pido, mientras que los
problemas ma´s dif´ıciles solo implican me´todos de alto costo
computacional”[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Es a partir de un proyecto de laboratorio
de lo´ gica en l´ınea [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] que surge la iniciativa de implementar
DLV a plataformas mo´ viles, utilizando dicho sistema como
una especie de caja negra bajo la cual se llevan acabo las
operaciones y me´todos.
      </p>
      <sec id="sec-2-1">
        <title>2.1. Objeto de Estudio</title>
        <p>El objetivo general de dicha implementacio´ n es el
estudio, la interacci o´n y la ubiquidad entre los usuarios y el
1. The University of Calabria es una institucio´ n pu´ blica situada al
Sur de Italia. Es posible consultar ma´s informacio´ n acerca de esta
instituci o´n por medio de su pa´gina oficial http://www.unical.it/portale/
international/.</p>
        <p>2. The Vienna University of Technology es una de las mayores
universidades de Viena, en Austria. Para ma´s informacio´ n se debe ingresar
a su pa´gina oficial https://www.tuwien.ac.at/en/.
sistema DLV, por medio de un dispositivo conocido y de
uso diario, como el mo´ vil. Si bien consultamos pa´ginas web
y hacemos uso de programas en nuestras computadoras, el
dispositivo mo´ vil se encuentra constantemente en nuestras
manos y resulta pra´tico ingresar a la aplicaci o´n en lugar de
entrar a un buscador, ingresar una URL y esperar a que
cargue la informacio´ n.</p>
        <p>
          Es bien sabido, que los dispositivos mo´ viles son hoy
d´ıa los ma´s utilizados por su portabilidad y simplicidad.
Es debido a estas dos caracter´ısticas que se considera
viable convertir toda una base de datos deductiva en l´ınea,
a una aplicacio´ n mo´ vil a la cual se pueda tener acceso
sin complicaciones. La movilidad pasa a ser un objetivo
primordial de este proyecto, es un te´rmino redundante de
cierta forma, pero en palabras simples la aplicacio´ n mo´ vil
para un laboratorio de lo´ gica es eso, un acceso mo´ vil a las
funcionalidades de todo un sistema deductivo. En cuanto a
la plataforma seleccionada podemos decir que Android esta´
considerado como el sistema operativo ma´s usado del
mundo, con una cifra de un 37,93 % de usuarios, Android deja
atra´s a Microsoft con un 37,91 %, seg u´n datos de StatCounter
[
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
3.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>DISE N˜O INICIAL DEL PROTOTIPO</title>
      <p>Para el prototipo de la aplicaci o´n mo´ vil se cre o´ un disen˜ o
inicial. En e´l se puede apreciar la estructura de la app, la cual
se encuentra compuesta por:</p>
      <p>Pantalla de bienvenida, para la cual se planea
marcar una duracio´ n de 4 segundos aproximadamente.
La duracio´ n de la pantalla de bienvenida, permite
cargar los componentes de la aplicacio´ n.</p>
      <p>Contenido principal, con cuadros de texto editables
para las sentencias.</p>
      <p>Men u´ lateral, con el cual se navegara´ en las
diferentes secciones requeridas para el laboratorio de lo´ gica.
Figura 1. Disen˜ o preliminar del prototipo de la app.</p>
      <p>Es importante destacar que el disen˜ o planteado inicial
es ba´sico. Esto se debe a que en primer plano se trabajara´
con la funcionalidad de la app, es decir, con la conexio´ n
entre la app y el servidor a fin de que este u´ltimo efectu´ e
el procesamiento de las sentencias insertadas y las ejecute
DLV. Una vez completadas estas acciones, se procedera´
a continuar con el disen˜ o de la interfaz gra´fica. Nuestro
estudio se enfoca a definir e implementar potencialidades de
este dispositivo en la investigacio´ n y aplicaciones de lo´ gica
matema´tica e inteligencia artificial.</p>
      <sec id="sec-3-1">
        <title>3.1. Funcionalidades</title>
        <p>
          Las funcionalidades de la aplicacio´ n inicialmente son
simples: El usuario ingresa y se encuentra con una pantalla
de bienvenida que le ofrece la opcio´ n de iniciar e
inmediatamente se le permite al usuario ingresar sentencias lo´ gicas
en el lenguaje de Answer Set Programming (ASP) [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ],
para ser procesadas mediante un boto´ n. Al ser procesadas
las sentencias, se le arroja al usuario el resultado l o´gico
propuesto por el sistema de bases de datos deductivo. Adema´s
de ofrecer estas caracter´ısticas, la aplicacio´ n Android
permite ingresar al manual de usuario con la finalidad de
dar a conocer los comandos y palabras reservadas propias
del sistema. Por lo tanto, si un usuario nuevo ingresa a la
aplicacio´ n y desconoce en su totalidad lo que se puede hacer
con DLV, el manual de usuario le facilitara´ dicha tarea, por
ende la aplicacio´ n contara´ con un menu´ lateral desplegable
que le permitira´ al cliente cambiar entre la seccio´ n de
procesamiento y la de manual de usuario fa´cilmente.
        </p>
        <p>Existen otras funcionalidades ma´s del lado del
dispositivo mo´ vil, que tienen que ver con sus potencialidades y
co´ mo explotarlas combinando con DLV. Sin embargo, estas
caen fuera del alcance actual de este art´ıculo. A continuacio´ n
mostraremos el desarrollo inicial de la misma.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>ESPECIFICACI O´N DE LA TECNOLOG´IA DE DESA</title>
      <sec id="sec-4-1">
        <title>RROLLO</title>
        <p>Para el desarrollo del prototipo de la aplicacio´ n mo´ vil, se
utilizo´ el IDE Android Studio3, Java y PHP, a fin de efectuar
una conexio´ n entre la app y el servidor.</p>
        <p>3. Android Studio es el IDE oficial para Android, proporciona las
herramientas ma´s ra´pidas para crear apps en todas las clases de
dispositivos Android.</p>
        <p>Figura 2. Ejecucio´ n del archivo de instalacio´ n de Android Studio.</p>
        <p>A continuacio´ n describimos a detalle los pasos
realizados para la instalacio´ n de las herramientas en una
computadora con Windows 10, que no debe ser muy diferente de
realizarse en otras plataformas como MacOS o Linux.
4.1. Instalacio´ n y configuracio´ n de Android Studio
1.
2.
3.
4.
5.
6.</p>
        <p>Para la instalacio´ n del IDE4 de desarrollo es
necesario ingresar a la pa´gina oficial5 de Android Studio y
proceder a descargar el instalador.</p>
        <p>Una vez finalizada la descarga, se guardara´ en la
computadora un archivo con extensio´ n .exe. Tal
archivo, se debe ejecutar e inmediatamente
aparecera´ una ventana como la de la Figura 2. Se debe
seleccionar “Next” para continuar.</p>
        <p>A continuacio´ n, se seleccionan los componentes a
instalar—ve´ase Figura 3. El SDK6 de Android, es un
componente vital debido a que nos permite
desarrollar aplicaciones y ejecutar un emulador del sistema
Android de la versio´ n que sea. Por otro lado, el
Android Virtual Device es un componente necesario
en caso de que el programador desee hacer pruebas
en dispositivos f´ısicos.</p>
        <p>En la ventana siguiente aparecen los te´rminos y
condiciones—ve´ase Figura 4. Es importante hacer
lectura de ellos y la aceptacio´ n de los mismos,
depende de cada usuario.</p>
        <p>Despue´s, se elige la ruta donde se instalara Android
Studio y el componente de SDK—ve´ase Figura 5.
Si la instalacio´ n se desea realizar en alguna carpeta
diferente por fines de organizacio´ n, es momento de
definirlo.</p>
        <p>La ubicacio´ n de los accesos directos es algo
opcional. Lo importante de la nueva ventana es proceder
con la instalacio´ n—ve´ase Figura 6.</p>
        <p>4. IDE (del ingle´s Integrated Development Environment, significa
Entorno de Desarrollo Integrado) es un editor de c o´digo, un compilador,
un depurador y un constructor de interfaz gra´fica.</p>
        <p>5. Pa´gina oficial de Android Studio https://developer.android.com/
studio/index.html</p>
        <p>6. SDK (del ingle´s Software Development Kit, significa Kit de
Desarrollo de Software) es un conjunto de herramientas de desarrollo que le
permite al programador crear aplicaciones informa´ticas para un sistema
concreto.
Figura 3. Componentes de instalacio´ n SDK y Android Virtual Device.
Figura 6. Ubicacio´ n de accesos directos de instalacio´ n.</p>
        <p>Figura 4. Te´ rminos y condiciones de la licencia de software de Android
SDK.</p>
        <p>Figura 5. Ruta de instalacio´ n de Android Studio y sus componentes.</p>
        <p>Durante el proceso de instalaci o´n de Android
Studio, se instalan componentes como SDK, JDK7 e
in7. JDK (del ingle´s Java Development Kit, significa Kit de Desarrollo
de Java) es un conjunto de herramientas de desarrollo, depuracio´n y
monitoreo de aplicaciones Java.</p>
        <p>Figura 7. Ventana final de instalacio´ n de componentes.</p>
        <p>8.</p>
        <p>clusive NDK8 con la intencio´ n de que la instalacio´ n
se realice de una forma automa´tica y los usuarios
no necesiten buscar cada componente por su
propia cuenta—ve´ase Figura 7. Una vez terminado el
proceso de instalacio´ n, se selecciona “Next”.</p>
        <p>Finalmente, se procede a iniciar Android
Studio—ve´ase Figura 8.
4.2. Creaci o´n del proyecto en Android Studio
1. Cuando iniciamos el IDE de Android tenemos la
posibilidad de abrir un proyecto existente, crear uno
nuevo e inclusive podemos importar uno creado en
otro IDE como por ejemplo Eclipse9—ve´ase
Figura 9.
2. Una vez realizado el paso anterior, Android Studio
procede a solicitar la configuracio´ n general del
proyecto, requiriendo un nombre y una especificacio´ n
de la ruta en la cual se guardara´ el mismo—ve´ase
Figura 10.
3. La Figura 11 muestra una pantalla en donde se
selecciona la plataforma y dispositivos en los que
8. Android NDK (del ingle´s Native Development Kit, significa Kit
de Desarrollo Nativo) es un conjunto de herramientas que permite
implementar partes de tu app usando lenguajes de co´digo nativo como
C y C++.</p>
        <p>9. Eclipse es un famoso entorno de desarrollo de Java, C/C++ y PHP.
Figura 8. U´ ltimo paso en la instalacio´ n del software Android Studio.
Figura 9. Primeros pasos en la creacio´ n de un proyecto en Android
Studio.</p>
        <p>Figura 10. Configuracio´ n general del proyecto en Android Studio.
funcionara´ la aplicacio´ n. En este caso optamos por
seleccionar tele´fonos mo´ viles y tablet, debido a que
estos mismos se adecuan a las necesidades del
proyecto, principalmente por su uso universal. Por otro
lado, hemos considerado conveniente trabajar en la
plataforma de Android en sus versiones
IceCreamFigura 11. Seleccio´ n de plataforma y dispositivos compatibles para la
aplicacio´ n.</p>
        <p>Figura 12. Seleccio´ n de la estructura inicial del proyecto.</p>
        <p>Sandwich 4.0.310 a Nougat 7.111, ya que de acuerdo a
Android Studio de esta manera se abarca un mayor
margen de dispositivos y por ende de usuarios.
4.
5.</p>
        <p>A continuacio´ n, se define la estructura inicial del
proyecto, seleccionando un Navigation Drawer12,
que implementa un men u´ lateral en la
aplicaci o´n—ve´ase Figura 12.</p>
        <p>Finalmente, es posible realizar modificaciones en
10. Android IceCreamSandwich es la novena versio´n del sistema
operativo para smartphones Android desarrollado por Google. Lanzado el
19 de octubre de 2011 ; Android 4.0 es disen˜ ado con la intencio´ n de
crear un sistema operativo para smartphones y tablets.</p>
        <p>11. Android Nougat es una versi o´n del sistema operativo para
dispositivos m o´viles Android. Fue dado a conocer el 18 de mayo de 2016
en el evento Google I/O.</p>
        <p>12. Navigation Drawer, es un panel de navegaci o´n lateral que
muestra las principales opciones de navegacio´n de la app.</p>
        <p>el nombre de la clase Activity13, o bien utilizar
el nombre predeterminado MainActivity14. Para
finalizar las modificaciones se debe pulsar el boto´ n
“Finish”—ve´ase Figura 13.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.3. Interfaz de Android Studio</title>
        <p>Cuando se crea un proyecto en Android Studio es
importante empezar por conocer el entorno gra´fico del software
con el que se estara´ trabajando. En este caso Android Studio
cuenta con una interfaz como la que se muestra en la
Figura 14.
5.</p>
        <p>DIO</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>DESARROLLO DE PRUEBAS EN ANDROID STU</title>
      <p>
        Android es un sistema operativo basado en Linux, con
un n u´cleo de sistema operativo libre, gratuito y
multiplataforma. Caracterizado por algunos por su interfaz fluida y
sencillez, se posiciona como uno de los sistemas operativos
con mayor demanda en el mercado [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Por tanto, hoy d´ıa
Android es compatible con dispositivos tales como
celulares, tabletas, Smart TV, Smart Watch, etce´tera.
      </p>
      <p>13. Una Activity es un componente de la aplicacio´ n que contiene una
pantalla con la que los usuarios pueden interactuar para realizar una
acci o´n, como marcar un nu´ mero telefo´ nico, tomar una foto, enviar un
correo electr o´nico o ver un mapa.</p>
      <p>14. MainActivity, es un me´todo que utiliza Android para iniciar una
instancia invocando los me´todos especificos que corresponden a las
etapas del ciclo de vida.</p>
      <sec id="sec-5-1">
        <title>5.1. Requisitos</title>
        <p>Android Studio es un IDE caracterizado por la ejecucio´ n
y renderizado de aplicaciones en tiempo real, adema´s de
ofrecer una compilacio´ n ra´pida de los proyectos creados en
dicho entorno. Un punto importante acerca de la ejecucio´ n
de sus aplicaciones es que esta misma se puede realizar de
dos formas:
1.
2.</p>
        <p>Utilizando un emulador de dispositivos Android
como por ejemplo, Genymotion15.</p>
        <p>Utilizando un dispositivo f´ısico que se encuentre
previamente conectado a nuestra computadora.</p>
        <p>Nota. En caso de elegir la u´ ltima opci o´n, Android Studio
solicitara´ que el dispositivo cumpla con requisitos como:
versi o´n IceCreamSandwich 4.0.3 o superior, modo de
desarrollador16 y de depuracio´ n USB activados.</p>
        <p>En la realizacio´ n de este proyecto se opt o´ por seleccionar
la segunda opcio´ n, debido a que de esta manera podr´ıamos
interactuar con un dispositivo real. A continuacio´ n, se
explican a detalle los pasos a seguir para su instalacio´ n:
1.
2.</p>
        <p>En caso de no tener abierto el proyecto de la
aplicaci o´n m o´vil, procedemos a buscar su ubicaci o´n y lo
abrimos en Android Studio.</p>
        <p>El siguiente paso es el ma´s importante porque se
trata de la conexio´ n del dispositivo, previamente
configurado.</p>
        <p>En la barra de herramientas de Android Studio, se
selecciona la opci o´n de run. De esta manera
comprobaremos si existen errores en el proyecto o en este
caso ejecutaremos el proyecto—ve´ase Figura 15.
15. Genymotion es un emulador de Android que aprovecha la
arquitectura x86 para ejecutar de forma fluida y ra´pida distintos dispositivos
Android.</p>
        <p>16. El modo de desarrollador es un men u´ de opciones avanzadas que
ofrece Android a los desarrolladores.
Figura 15. Ejecucio´n de un proyecto en Android Studio.</p>
        <p>Figura 16. Android Studio, detecta automa´ticamente dispositivos
conectados.</p>
        <p>Figura 17. Ventana de seleccio´n del emulador.</p>
        <p>4. A continuacio´n, se abre una nueva ventana que
identifica cualquier dispositivo mo´vil conectado a
la computadora—ve´ase Figura 16.
5. En este paso, se solicitara´ en el mo´vil que el usuario
permita la depuracio´n de USB17. Es importante que
se acepte dicha solicitud, de lo contrario se estar´ıa
negando la ejecucio´n de la aplicacio´n y Android
Studio finalizara el proceso.
6. Finalmente, se selecciona el dispositivo mo´vil a
utilizar—ve´ase Figura 17. Una vez hecho esto, de forma
inmediata, la app se instala y ejecuta en el mo´vil.</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.3. Prueba de funcionamiento del prototipo</title>
        <p>Tal como se muestra en la Figura 18, la interfaz de la
aplicacio´n mo´vil ejecuta las funcionalidades antes
descri17. La depuracio´n USB consiste en permitir que un ordenador se
conecte directamente a un smartphone para poder transmitir informacio´n.
Figura 18. Ilustracio´n de interfaz final.</p>
        <p>Figura 19. Ilustracio´n de funcionamiento.
tas—ve´ase Seccio´n 3.1. El procesamiento o funcionalidad de
la aplicacio´n se lleva a cabo de la siguiente forma:
El usuario ingresa una sentencia en el cuadro de
texto correspondiente o bien hace uso del texto
predefinido por la app. Una vez insertada la sentencia
a procesar, como se puede ver en la Figura 19, el
usuario debe pulsar el boto´n.</p>
        <p>La sentencia ingresada es enviada al servidor y
almacenada en una nueva variable, eliminando los
posibles saltos de l´ınea.</p>
        <p>El lenguaje de programacio´n Java, permite realizar la
conexio´n del cliente mo´vil con el servidor en PHP. El env´ıo
de sentencias lo´gicas se ilustra en el siguiente fragmento de
co´digo:
...</p>
        <p>String SentenciaIngresada,sentencia,servidor;
servidor="http://192.168.1.78/android_dlv/
registro.php?texto=";
SentenciaIngresada=etTexto.getText().toString
();
sentencia=quitarSaltos(SentenciaIngresada);
httpHandler handler=new httpHandler();
String txt= handler.Get(servidor+sentencia);
...</p>
        <p>La recepcio´n de datos y almacenamiento en PHP se realiza
en las siguientes l´ıneas:
if(isset($_POST[’texto’])) {
$texto=$_POST[’texto’];
...</p>
        <p>La nueva variable es procesada en DLV y
almacenada en un archivo de texto, haciendo uso de un
interprete de comandos.</p>
      </sec>
      <sec id="sec-5-3">
        <title>6.1. Procesamiento del Servidor</title>
        <p>El funcionamiento o procesamiento del servidor se lleva
a cabo de la siguiente manera:</p>
        <p>El servidor se encarga de tres acciones principales:
recibir datos, procesar datos y enviar respuestas.
En el primer caso, el servidor verifica si existe alguna
solicitud de recepcio´ n de datos. En caso de que exista
alguna solicitud de este tipo, el servidor acepta los
datos por medio de un me´todo POST e
inmediatamente los almacena en una variable del mismo tipo.
Una vez almacenados los datos, el servidor comienza
a cumplir su segunda funcio´ n, por lo cual se procede
a pasar los datos a DLV para que los procese,
haciendo uso de un shell exec,18 que interpreta comandos
de tipo UNIX.</p>
        <p>Finalmente, el servidor env´ıa su respuesta al cliente.
En este caso, el cliente esta´ pidiendo que se haga
lectura de un archivo de texto que contiene el
resultado del procesamiento de DLV. Para lo cual, el
servidor verifica la existencia del archivo; si existe
lo abre y vac´ıa su contenido en un arreglo l´ınea por
l´ınea. Despue´s el servidor solicita la lectura de los
datos almacenados en el arreglo y los imprime como
respuesta a la peticio´ n del cliente. Por otro lado si el
servidor no encuentra el archivo de texto solicitado
env´ıa un mensaje de error a la solicitud del cliente.</p>
      </sec>
      <sec id="sec-5-4">
        <title>6.2. Peticiones del Cliente</title>
        <p>Las peticiones que realiza el cliente, que en este caso es la
aplicacio´ n, se realizan por medio de la clase HttpHandler19.
Esta clase se encarga de crear una comunicacio´ n entre un
lenguaje Java y un servidor web en PHP. HttpHandler
habilita una comunicaci o´n cliente y aporta la funcionalidad
de efectuar peticiones de tipo get o post a cualquier servidor.</p>
        <p>Para fines de este proyecto, se realizaron pruebas en un
servidor web local. Por lo tanto, las peticiones eran
dirigidas a una direccio´ n IP local, que almacenaba el servidor
PHP—ve´ase 6.1.</p>
        <p>Hasta este punto se tiene conocimiento de como
funciona el servidor y como se comunica la aplicaci o´n con
un servidor web, sin embargo todav´ıa se necesita conocer
la forma adecuada de enviar datos al servidor y recibir la
respuesta del mismo.</p>
        <p>Figura 20. Muestra los modelos.
if(isset($_POST[’texto’])) {
$texto=$_POST[’texto’];
shell_exec("echo ’{$texto}’ | /home/
debora_aguilar/Dropbox/htdocs/dlv/dlv2012.
bin ’’ -- 2| awk ’{print $0}’ &gt; dlv.txt");
}
...</p>
        <p>Por lo tanto, en el momento en que la aplicacio´ n
carga un nuevo MainActivity, el servidor busca el
archivo de texto almacenado, extrae su contenido y
se procede a enviarlo a la aplicacio´ n.
...
$prueba=fopen("dlv.txt", "r") or die("Error");
while (!feof($prueba)) {
$linea=fgets($prueba);
$aDatos[$contador]=$linea;
$contador=$contador+1;
}
$tamano = sizeof($aDatos);
$comando="";
for ($i=0; $i&lt;$tamano ; $i++) {
$comando.=$aDatos[$i];
}
echo $comando;</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>DESCRIPCI O´N DEL FUNCIONAMIENTO</title>
      <p>El procesamiento de la aplicacio´ n funciona como una
conexi o´n normal entre un cliente y un servidor, en donde
la aplicacio´ n cumple el papel de cliente y un script de PHP
es el servidor. En caso de ser un programador recurrente
de HTML y PHP, es posible que se note la similitud entre
el env´ıo de datos de un formulario a un archivo PHP por
medio del me´todo POST.
...</p>
      <p>String SentenciaIngresada,sentencia,servidor;
18. shell exec: Ejecuta un comando mediante el inte´rprete de
comandos y devuelve la salida completa como una cadena.</p>
      <p>19. HttpHandler es un manejador que se invoca para procesar
peticiones HTTP.
httpHandler handler=new httpHandler();
String txt= handler.Post(servidor+sentencia);
...</p>
      <p>La respuesta del servidor se efectu´ a de la misma manera
a excepcio´ n de que u´ nicamente se solicita la direccio´ n del
servidor, es decir, no se requiere de ninguna cadena de texto
que este a la espera de ser procesada. Las acciones que se
pueden realizar con la respuesta del servidor son finitas,
pero en este caso u´ nicamente se visualiza la respuesta
solicitada.
...
httpHandler handler=new httpHandler();
String txt= handler.post("http://192.168.1.78/
android_dlv/registro.php");
TextView t=(TextView)findViewById(R.id.</p>
      <p>etContenedor);
t.setText(txt);
...</p>
      <p>Nota: El proceso de peticiones y respuestas que efect u´a
la clase HttpHandler no funcionara´ a menos que se
hallan incluido los permisos de Internet en el
archivo correspondiente al manifiesto de Android. Para
ma´s informacio´ n acerca de los permisos requeridos en
Android, consultar https://developer.android.com/guide/
topics/security/permissions.html?hl=es-419.</p>
    </sec>
    <sec id="sec-7">
      <title>CONCLUSI O´N</title>
      <p>DLV es un sistema de bases de datos deductivo que se
ejecuta por medio de una interfaz de l´ınea de comandos,
su funcionamiento consiste en la lectura y procesamiento de
sentencias lo´ gicas.</p>
      <p>Los usos del sistema DLV son diversos en el a´mbito de la
investigaci o´n. Es por ello que se considera viable concretar
la creacio´ n de una aplicaci o´n m o´vil, que por un lado atienda
a la problema´tica existente, con respecto al estatus actual de
DLV (y otros solvers) como un archivo binario ejecutable en
l´ınea de comandos, y que por otro lado combine un sistema
lo´ gico con tecnolog´ıas mo´ viles que ayuden a explotar las
potencialidades de esta u´ ltima y explorar nuevos temas de
investigaci o´n.</p>
      <p>
        Este proyecto es solo una iniciativa, el potencial de los
sistemas Answer Set Programming (ASP) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] puede llevar a
la creacio´ n de todo un laboratorio de lo´ gica. Un laboratorio
que en teor´ıa pueda implementar un manejo de sesiones
para usuarios, la inclusio´ n de nuevos sistemas como CLINGO
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], SMODELS [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] y CMODELS [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>El desarrollo de aplicaciones mo´ viles, es un medio que
se puede explotar en torno al aprendizaje de disciplinas
como la lo´ gica o las matema´ticas. Una interfaz mo´ vil agrega
nuevos atractivos a un proyecto, por el hecho de ofrecer
portabilidad, adema´s de otras caracter´ısticas poco
consideradas en investigacio´ n de Inteligencia Artificial, como GPS,
datos biome´tricos, acelero´ metro, pantalla ta´ctil, reconocedor
de voz, grabadora, etc. Todo esto se puede aprovechar en los
usuarios, es decir, aquellos que de forma recurrente optan
por hacer uso de un dispositivo mo´ vil para conectarse a
Internet, interactuar con servicios o sitios web y aplicaciones
nativas.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>[1] StatCounter, Operating system market share Worldwide</article-title>
          ,
          <source>StatCounter Global Stats</source>
          ,
          <year>2017</year>
          . [En l´ınea]. Disponible en: http://gs.statcounter.com/os-market-share.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Android</given-names>
            <surname>Studio</surname>
          </string-name>
          , Co´mo descargar Android Studio y SDK Tools - Android
          <string-name>
            <surname>Studio</surname>
          </string-name>
          , Developer.android.com,
          <year>2017</year>
          . [En l´ınea]. Disponible en: https://developer.android.com/studio/index.html?hl=
          <fpage>es</fpage>
          -
          <lpage>419</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>P.</given-names>
            <surname>Latam</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <article-title>M o´viles and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Moscaritolo</surname>
          </string-name>
          , El
          <volume>99</volume>
          .
          <article-title>6 % del mercado mo´vil le pertenece a Android y iOS</article-title>
          ,
          <source>PCMag Latam</source>
          ,
          <year>2017</year>
          . [En l´ınea]. Disponible en: http://latam.pcmag.com/sistemas-operativosmoviles/18490/news/el-996
          <string-name>
            <surname>-</surname>
          </string-name>
          del
          <article-title>-mercado-movil-le-pertenece-aandroid-y-ios.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>DLVSYSTEM</surname>
          </string-name>
          , DLVSYSTEM S.r.l. - DLV, Dlvsystem.com,
          <year>2017</year>
          . [En l´ınea]. Disponible en: http://www.dlvsystem.com/dlv/.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <article-title>[5] UTexas, CMODELS - Answer Set programming System, Cs</article-title>
          .utexas.edu,
          <year>2017</year>
          . [En l´ınea]. Disponible en: http://www.cs.utexas.edu/users/tag/cmodels/.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>[6] Potassco, clingo and gringo</article-title>
          , Potassco.org,
          <year>2017</year>
          . [En l´ınea]. Disponible en: https://potassco.org/clingo/.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>P.</given-names>
            <surname>Simons</surname>
          </string-name>
          , Computing the Stable Model Semantics, Tcs.hut.fi,
          <year>2017</year>
          . [En l´ınea]. Disponible en: http://www.tcs.hut.fi/Software/smodels/.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>DLVSYSTEM</surname>
          </string-name>
          , DLVSYSTEM S.r.l. - DLVSystem site, DLVsystem.com,
          <year>2017</year>
          . [En l´ınea]. Disponible en: http://www.dlvsystem.com.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Android</surname>
          </string-name>
          , Android - Historia, Android,
          <year>2017</year>
          . [En l´ınea]. Disponible en: https://www.android.com/intl/es es/history/.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          , What Is Answer Set Programming?, Department of Computer Sciences,
          <year>2008</year>
          . [En l´ınea]. Disponible en: https://www.cs.utexas.edu/users/vl/papers/wiasp.pdf
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gelfond</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Lifschitz</surname>
          </string-name>
          .
          <article-title>The Stable Model Semantics for Logic Programming</article-title>
          . In R. A.
          <article-title>Kowalski and K. A</article-title>
          . Bowen, editors,
          <source>Logic Programming</source>
          ,
          <source>Proceedings of the Fifth International Conference and Symposium ICLP/SLP</source>
          , pages
          <fpage>1070</fpage>
          -
          <lpage>1080</lpage>
          , Seattle, Washington,
          <year>1988</year>
          . MIT Press.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J. C. Acosta</given-names>
            <surname>Guadarrama</surname>
          </string-name>
          . Logic lab,
          <year>July 2016</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>