lunes, 27 de mayo de 2019

unidad 4

4.2.
Semántica de los programas lógicos Observen que resoluci´on (incluso la SLD) no prescribe una forma particular deresponder estas preguntas : • ¿Qué átomo en una cl´ausula objetivo debemos usar en la resolución? • ¿Cuál cláusula definida se debe usar para la resolución?

4.3.
 Representación clausada del conocimiento La representación del conocimiento y el razonamiento es un área de la inteligencia artificial cuyo objetivo fundamental es representar el conocimiento de una manera que facilite la inferencia (sacar conclusiones) a partir de dicho conocimiento. Analiza cómo pensar formalmente - cómo usar un sistema de símbolos para representar un dominio del discurso (aquello de lo que se puede hablar), junto con funciones que permitan inferir (realizar un razonamiento formal) sobre los objetos. Generalmente, se usa algún tipo de lógica para proveer una semántica formal de como las funciones de razonamiento se aplican a los símbolos del dominio del discurso, además de proveer operadores como cuantificadores, operadores modales, etc. Esto, junto a una teoría de interpretación, dan significado a las frases en la lógica. Cuando diseñamos una representación del conocimiento (y un sistema de representación del conocimiento para interpretar frases en la lógica para poder derivar inferencias de ellas) tenemos que hacer elecciones a lo largo de un número de ámbitos de diseño. La decisión más importante que hay que tomar es la expresividad de la representación del conocimiento. Cuanto más expresiva es, decir algo es más fácil y más compacto. Sin embargo, cuanto más expresivo es un lenguaje, más difícil es derivar inferencias automáticamente de él. Un ejemplo de una representación del conocimiento poco expresiva es la lógica proposicional. Un ejemplo de una representación del conocimiento muy expresiva es la lógica autoepistémica. Las representaciones del conocimiento poco expresivas pueden ser tanto completas como consistentes (formalmente menos expresivas que la teoría de conjuntos). Las representaciones del conocimiento más expresivas pueden ser ni completas ni consistentes. El principal problema es encontrar una representación del conocimiento y un sistema de razonamiento que la soporte que pueda hacer las inferencias que necesite tu aplicación dentro de los límites de recursos del problema a tratar. Los desarrollos recientes en la representación del conocimiento han sido liderados por la web semántica, y han incorporado el desarrollo de lenguajes y estándares de representación del conocimiento basados en XML, que incluyen Resource Description Framework (RDF), RDF Schema, DARPA Agent Markup Language (DAML), y Web Ontology Language (OWL).

4.4.

Consulta de una base de datos de clausulas.

SELECT select_list
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC] ]
FROM
Especifica de dónde queremos obtener los datos, es decir, de que tabla. Se utiliza no sólo en el comando de consulta, SELECT, sino también en los comandos UPDATE y DELETE .
WHERE
Está clausula es donde se indican las condiciones de filtrado de los datos. Estas condiciones se definen a través de los operadores lógicos y de comparación.
GROUP BY
La clausula GROUP BY sirve para agrupar la información. Esta clausula es aplicable exclusivamente al comando SELECT.
HAVING
La clausula HAVING tiene siempre que ir acompañada de un GROUP BY. En ella indicamos las condiciones que debe satisfacer cada grupo y donde utilizaremos funciones de agregación. Como en el caso del GROUP BY de utilizarla será en el SELECT.
ORDER BY
Sirve para ordenar la información obtenida a través de la consulta en un determinado orden.
AND
El operador AND se traduce en lógica y matemáticas como conjunción. Su resultado será verdadero si ambos operandos son verdaderos.
OR
El operador OR es lo que en lógica se conoce como disyunción. Su resultado será verdadero cuando uno o más de sus operandos es verdadero.
NOT
El operador NOT, o negación, opera sobre un sólo operando y nos devuelve su valor contrario.
Consulta.
Las consultas son una forma de buscar y recopilar información de una o más tablas para conseguir información detallada de una base de datos. Al crear una consulta, defines condiciones específicas de búsqueda para encontrar, exactamente, la información que deseas.
Clausulas.
4.5.
En optimización, espacio de búsqueda se refiere al dominio de la función a ser optimizada. En el caso de los algoritmos de búsqueda, que manejan espacios discretos, se refiere al conjunto de todas las posibles soluciones candidatas a un problema.
4.6.
Resultado de imagen para .  Programación lógica con números, listas y árboles.
4.7
La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de programación dentro de la programación declarativa son: programación funcionalprogramación con restricciones, programas DSL (de dominio específico) e híbridos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático. La programación lógica gira en torno al concepto de predicado, o relación entre elementos.

jueves, 21 de febrero de 2019

Estilos de programación


Imagen relacionada

Ir a la navegaciónIr a la búsqueda
Estilo de programación (también llamado estándares de códigoguías de estilo o convención de código) es un término que describe convenciones para escribir código fuente en ciertos lenguajes de programación.
El estilo de programación es frecuentemente dependiente del lenguaje de programación que se haya elegido para escribir. Por ejemplo el estilo del lenguaje de programación C variará con respecto al del lenguaje BASIC.

Características del estilo[editar]

Nombres de variable apropiadas[editar]

Una pieza clave para un buen estilo es la elección apropiada de nombres de variable. Variables pobremente nombradas dificultan la lectura del código fuente y su comprensión.
Como ejemplo, considérese el siguiente extracto de pseudocódigo:
get a b c 
if a < 24 and b < 60 and c < 60
  return true
else
  return false
Debido a la elección de nombres de variable, es difícil darse cuenta de la función del código. Compárese ahora con la siguiente versión:
get horas minutos segundos 
if horas < 24 and minutos < 60 and segundos < 60
  return true
else
  return false
La intención el código es ahora más sencilla de discernir, "dado una hora en 24 horas, se devolverá true si es válida y false si no".

Estilo de indentación[editar]

Estilo de indentación, en lenguajes de programación que usan llaves para indentar o delimitar bloques lógicos de código, como por ejemplo C, es también un punto clave el buen estilo. Usando un estilo lógico y consistente hace el código de uno más legible. Compárese:
if(horas < 24 && minutos < 60 && segundos < 60){
   return true;
}else{
   return false;
}
o bien:
if(horas < 24 && minutos < 60 && segundos < 60)
{
   return true;
}
else
{
   return false;
}
con algo como:
if(horas<24&&minutos<60&&segundos<60){return true;}
else{return false;}
Los primeros dos ejemplos son mucho más fáciles de leer porque están bien indentados, y los bloques lógicos de código se agrupan y se representan juntos de forma más clara.

Valores booleanos en estructuras de decisión[editar]

Algunos programadores piensan que las estructuras de decisión como las anteriores, donde el resultado de la decisión es meramente una computación de un valor booleano, son demasiado prolijos e incluso propensos al error. Prefieren hacer la decisión en la computación por sí mismo, como esto:
return horas < 12 && minutos < 60 && segundos < 60;
La diferencia es, con frecuencia, puramente estilística y sintáctica, ya que los compiladores modernos producirán código objeto idéntico en las dos formas.

Bucles y estructuras de control[editar]

El uso de estructuras de control lógicas para bucles también es parte de un buen estilo de programación. Ayuda a alguien que esté leyendo el código a entender la secuencia de ejecución (en programación imperativa). Por ejemplo, el siguiente pseudocódigo:
 cuenta = 0
 while cuenta < 5
   print cuenta * 2
   cuenta = cuenta + 1
 endwhile
El extracto anterior cumple con las dos recomendaciones de estilo anteriores, pero el siguiente uso de la construcción for hace el código mucho más fácil de leer:
 for cuenta = 0, cuenta < 5, cuenta=cuenta+1
   print cuenta * 2
En muchos lenguajes, el patrón frecuentemente usado "por cada elemento en un rango" puede ser acortado a:
 for cuenta = 0 to 5
   print cuenta * 2

Espaciado[editar]

Los lenguajes de formato libre ignoran frecuentemente los espacios en blanco. El buen uso del espaciado en la disposición del código de uno es, por tanto, considerado un buen estilo de programación.
Compárese el siguiente extracto de código C:
 int cuenta; for(cuenta=0;cuenta<10;cuenta++){printf("%d",cuenta*cuenta+cuenta);}
con:
 int cuenta;
 for (cuenta = 0; cuenta < 10; cuenta++)
 {
    printf("%d", cuenta * cuenta + cuenta);
 }
En los lenguajes de programación de la familia C se recomienda también evitar el uso de caracteres tabulador en medio de una línea, ya que diferentes editores de textos muestran su anchura de forma diferente.
El lenguaje de programación Python usa indentación para indicar estructuras de control, por tanto se requiere obligatoriamente una buena indentación. Haciendo esto, la necesidad de marcar con llaves ({ y }) es eliminada, y la legibilidad es mejorada sin interferir con los estilos de codificación comunes. Con todo, esto lleva frecuentemente a problemas donde el código es copiado y pegado dentro de un programa Python, requiriendo un tedioso reformateado. Adicionalmente, el código Python se vuelve inusable cuando es publicado en un foro o página web que elimine el espacio en blanco.


                                  mapa mental





examen



unidad 4

4.2. Semántica de los programas lógicos Observen que resoluci´on (incluso la SLD) no prescribe una forma particular deresponder estas pregu...