
Ingeniería
en Sistemas Computacionales
Departamento de Sistemas y Computación
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
Publicar un comentario