logo_tec

Ingeniería en Sistemas Computacionales
Departamento de Sistemas y Computación
Nombre alumno:
Bautista Méndez Carlos Alberto
Estrada Espinosa Karen
Rodríguez Chicara Heriberto.
Vidal González Yenicsa Yessel
Numero control:
13510633
13510653
13510719
13510734
Nombre curso: Programación Lógica y Funcional.
Nombre profesor: Manuel de Jesús Matuz Cruz.
Periodo: 1
Actividad : Unidad 1 Conceptos Fundamentales
Fecha: 19 de junio del 2017.















Introducción
La Programación Lógica y Funcional, es una asignatura que requiere tener conocimientos esenciales acerca de los lenguajes lógicos y funcionales de la inteligencia artificial, incluyendo la metodología y los aspectos relativos a la codificación, con el fin de ampliar el conocimiento de tecnologías alternativas para el desarrollo de sistemas automatizados y la implementación de agentes inteligentes. 
[1] Estilos de programación
En lo referente a los estilos operativos de realizar una programación computacional con algún lenguaje de programación intervienen dos aspectos a considerar el primero, el estilo elegido para la realización de la programación y la subsecuente solución del problema que se está resolviendo con esta actividad; y, el segundo, con los pasos posibles que desemboca en una acción de programar una computadora programación estructurada y no estructurada.
La programación estructurada se dio principalmente a partir del artículo publicado por Edsger W. Hijkstra, creador del lenguaje de programación PASCAL en 1969, y que recibió el título de “Programación estructurada”, Dijkstra exponía las siguientes razones para impulsar ese cambio en el proceso de organizar la programación por medio de lenguajes computacionales, reducción en la fase correctiva de pruebas, al simplificar la lógica de control de los programas, reducción de complejidad innecesarias e los programas computacionales
Manipulación de la lógica de control de programas, por medio de la secuencia selección e iteración de las instrucciones, eliminación de las instrucciones bifurcadas. Como se puede apreciar, el cambio de paradigma hacia la programación estructurada responde a una búsqueda en el perfeccionamiento y disminución de costos asociados al proceso de desarrollo de algún programa complejos
Una de las más notables diferencias nace en el cuarto punto expuesto por Dikjstra en su artículo. La ejecución de secuencias de instrucciones, en lugar de programar por medio de uniones de código de programas, elimina la estructura de bifurcación incondicional del control de un programa. Con ello, se exigía un nuevo modelo de diseño de programas computacionales, ya que todos los procesos necesitaban una coherencia entre sí, lograda por la unión e iteración de las instrucciones
Un ejemplo es que la mayoría de los programas de modo estructurado, no se contaba con instrucciones de repetición y secuencialización a partir de una condición lógica. Si se requería volver a ejecutar un conjunto de instrucciones, se debía establecer con una marca o etiqueta a partir de donde empezaba de nuevo la secuencia de repetición, y se dirigía el control del programa hacia las instrucciones que siguieran a partir de la marca
Para lograr el cambio en la programación, hubo necesidad de desarrollar modelos lógicos de repetición y control de procesos repetitivos dentro de un programa. Hoy ya no es desconocido el uso de instrucciones como el “mientras se de una condición entonces hacer…” o el “repetir un conjunto de instrucciones hasta que se satisfaga una condición”
Otro de los factores importantes que trajo consigo la programación estructurada es el concepto de modularización; es decir, trabajar a partir de la creación y coordinación entre módulos programados para responder a la solución de un problema dado
El concepto de módulos se puede ver como otra simplificación de procesos que la sociedad contemporánea ha generado en sus múltiples formas la integración, no solo cubre el aspecto de unirlos y de ver si el programa total da errores o no. Cubre situaciones mucho más complejas, como el uso de datos que deben enviarse, modificarse y controlarse entre más de un módulo; las entradas y salidas de cada uno de ellos; los supuestos globales admitidos para la elaboración del programa, así como el adecuado orden en la unión de los módulos con el fin de tener los datos necesarios para la ejecución final.
Si se escoge el sentido organizativo que propone la programación estructurada principalmente el estímulo a subdividir lo complejo en situaciones más simples de resolver (la modularización) como principio de elaboración de programas computacionales, La programación estructurada, la concepción de trabajo por módulos y la formulación de diferentes tipos de programación (que se explicaran con mayor detalla en la tercera parte de este volumen) se dio énfasis al diseño y empleo de lo que se reconoce como procedimientos. Los procedimientos más empleadas y útiles en este lenguaje. La idea principal en cualquiera de ellos siguiendo la pauta de modularización

[2] Evaluación de expresiones
Un programa en java se construye como un conjunto de objetos creados a partir de clases. El buen diseño de las clases ayuda a asegurar que el programa sea claro y comprensible. Sangrías, el uso de sangrías enfatiza la estructura del programa. Hay varios estilos de sangría. Renglones en blanco, Estos renglones se utilizan generalmente para separar visualmente los métodos. También se utilizan comúnmente dentro de una clase para separar las declaraciones de las varíales de los métodos, y para separar un método de otro
Si hay muchas declaraciones de variables, también puede separarse diferentes bloques de datos mediante renglones en blanco.
Nuevas páginas
Una clase es algo distinto cualquier otro componente
Comentarios
Existen diferentes formas de color comentarios en java
/* Con este comentario puede utilizar todos los renglones que dese*/
/** Es para utilizarse en conjunto con una herramienta de software para producir documentación en firma**/
Uso de constantes
Muchos programas tienen valores que no cambian cuando el programa se encuentra en ejecución; y de todas formas no va a cambiar con mucha frecuencia
Condiciones complejas
En una instrucción if, for o while puede surgir cuando la condición evaluada implica el uso de uno o más operadores “y” Y “o”. Una condición compleja puede dificultar considerablemente la comprensión, depuración y corrección de un programa
Documentación
Consiste en:
·         La especificación del programa
·         El código fuente, incluyendo los comentarios apropiados
·         Información de diseño, como diagramas UML
·         El programa de pruebas
·         Los resultados de las pruebas
·         El historial de modificaciones
·         El manual de usuario
Resumen
·         El estilo de programación es importante para facilitar la legibilidad a la hora de la depuración y el mantenimiento
·         Los lineamientos para la buena distribución del programa se basan en nombres adecuados, sangría, renglones en blanco nuevas páginas y comentarios
·         Java cuenta con una característica útil para hacer que ciertos elementos de datos sean constantes
·         Los métodos no deben ser demasiado extensos
·         Las instrucciones if anidadas, los ciclos y las condiciones complejas deben utilizarse con sensatez
·         Siempre es conveniente tener una buena documentación
[3]Definición de funciones
 Las funciones se crearon para evitar tener que repetir constantemente fragmentos de código. Una función podría considerarse como una variable que encierra código dentro de sí. Por lo tanto, cuando accedemos a dicha variable (la función) en realidad lo que estamos es diciendo al programa que ejecute un determinado código predefinido anteriormente.
Todos los lenguajes de programación tienen algunos elementos de formación primitivos para la descripción de los datos y de los procesos o transformaciones aplicadas a estos datos (tal como la suma de dos números o la selección de un elemento que forma parte de una colección). Estos elementos primitivos son definidos por reglas sintácticas y semánticas que describen su estructura y significado respectivamente.


[4]Disciplina de tipos
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.
Disciplina: es la coordinación de actitudes con las cuales se instruye para desarrollar habilidades, o para seguir un determinado código de conducta u “orden”. Un ejemplo es la enseñanza de una materia, ciencia o técnica, especialmente la que se enseña en un centro (Docente – asignatura).
En los lenguajes de programación con disciplina de tipos, cada tipo representa una colección de valores (datos) similares. Una función cuyo tipo sea A1 -> … An -> espera n parámetros con tipos A1, … An y devuelve un resultado de tipo R.  El conocer los tipos de las funciones ayuda a documentar los programas y a evitar errores en tiempo de ejecución.
Disciplina estática de tipos: Los programas bien tipados se pueden reconocer en tiempo de compilación, un programa bien tipado se puede utilizar sin efectuar comprobaciones de tipo en tiempo de ejecución. Estando garantizado que no se producirán errores de tipo durante el cómputo
[5]Tipos de datos
Tipos de Datos En lenguajes de programación un tipo de dato es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar.
Los Tipos de Datos En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones sobre estos valores. Casi todos los lenguajes de programación explícitamente incluyen la notación del tipo de datos, aunque lenguajes diferentes pueden usar terminología diferente. La mayor parte de los lenguajes de programación permiten al programador definir tipos de datos adicionales, normalmente combinando múltiples elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato. Por ejemplo, un programador puede crear un nuevo tipo de dato llamado “Persona” que especifica que el dato interpretado como Persona incluirá un nombre y una fecha de nacimiento.
Tipo abstracto de datos representa una abstracción de la realidad con independencia de la
Implementación concreta que realice del mismo. Se representa mediante el comportamiento semántico de las operaciones que se pueden realizar a los elementos de dicho tipo.
Por ejemplo, sumar valores booleanos
int x = 66;
Así además se indica que la variable x va a referenciar inicialmente un valor que representa el número 66.
char c = ‘ B ’ ;
Conclusión
Al utilizar programación lógica y funcional en las áreas en que más sentido tiene: inteligencia artificial, sistemas expertos, procesamiento de lenguajes, etc.
El poder utilizar este paradigma a través de librerías hace sea mucho más atractivo, porque hace que sea más sencillo usarlo sólo en aquellas partes del problema que tiene sentido.




Referencias
[1] Lenguaje Logo Iii. Explorando la Programación – Por Corrales Mora, Maricruz – Capitulo 3, Estilos de la programación computacional – Pagina 33 – Editorial Universidad Estatal a Distancia, San José. – Costa rica, – (1994)
[2] Java Para Estudiantes (3ª ED.) – By Douglas Bell; Mike Parr– Capitulo 22, Estilo de Programación – Pagina 404 – 416 – Prentice Hall México, México. – México, – (2003)
[3]Lenguajes de programación y procesadores/ Francisco Gortázar Bellas, Raquel Martínez Unanue, Víctor Diego Fresno Fernández, Editorial Universitaria Ramón Areces, 2012
[4]Enrique Martín Martín/ Sistemas de tipos en lenguajes lógico-funcionales/ Departamento de Sistemas Informáticos y Computación/ MADRID, el 23 de abril de 2012
[5]Teorias de los lenguajes de programación/ Fernando López Ostenero, Ana María García Serrano/Editorial universitaria Ramon Aceres/ Madrid febrero 2014


  

Comentarios