Instituto Tecnológico
Superior de Nochistlán
Ingeniería en Sistemas Computacionales
Programación Lógica y Funcional
Unidad
1: Conceptos Fundamentales
Alumnos: José
Antonio Muñoz Aguayo, Raudel Ramírez Hernández
Nochistlán de
Mejía, Zacatecas. 11 de Febrero de 2017
1.1 Estilos de Programación
El estilo de programación se refiere a la forma en la que se da formato al código fuente. Los Lenguajes de programación tienen una particularidad de cumplir un doble rol. Por un lado sirven para comunicar humanos con computadoras. Son la forma de transformar una serie de abstracciones como algoritmos, módulos, tipos de datos y sistemas en algo que una computadora pueda ejecutar.
Programación
Se llama programación a la creación de un programa de computadora, un conjunto concreto de instrucciones que una computadora puede ejecutar. el programa se escribe en un Lenguaje de Programación, aunque también se puede escribir directamente en lenguaje maquina.
Programas y Algoritmos
Un algoritmo es una secuencia no ambigua , finita y ordenada de instrucciones que han de seguirse para resolver un problema. un programa normalmente implementa (traduce a un lenguaje de programación concreto) un algoritmo.
Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa.
Compilación
El programa escrito en un lenguaje de programación no es inmediatamente ejecutado en una computadora. la opción mas común es compilar el programa , aunque también pude ser ejecutado mediante un interprete informático. El código fuente del programa se debe de someter a un proceso de transformación para convertirse en lenguaje maquina, interpretable por el procesador. A este proceso se le llama compilación.
Paradigma de Programación
Un paradigma es una forma de representar y manipular el conocimiento. Representa un enfoque particular para la construcción del Software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un paradigma resulta mas apropiado que otro.
Programación Estructurada
Programación Estructurada
La Programación estructurada es una forma de escribir programas para computadoras de forma clara para ello utiliza únicamente tres estructuras: secuencial, selectiva e iterativa; siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional.
Programación Imperativa
La programación imperativa, en contraposición a la programación declarativa, es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado.
Los programas imperativos son un conjunto de instrucciones que le indican al computador como realizar una tarea. La implementación de hardware de la mayoría de los computadores es imperativa; prácticamente todo el hardware de los computadores esta diseñado para ejecutar código maquina, que es nativo al computador, escrito en una forma imperativa.
Programación Funcional
La programación funcional es un paradigma de programación declarativa basado en la utilización de funciones matemáticas. Sus orígenes provienen del Cálculo Lambda, una teoría matemática elaborada por Alonzo Church como apoyo a sus estudios sobre computabilidad. Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo estas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas.
La programación Lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación. La programación lógica comprende dos paradigmas de programación:
- La Programación Declarativa.
- La Programación Funcional.
La programación declarativa gira entorno al concepto de predicado, o relación entre elementos.
La Programación funcional se basa en el concepto de función (que no es mas que una evolución de los predicados), de corte más matemático.
Programación Orientada a Objetos
La Programación Orientada a Objetos es un paradigma de programación que define los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (estos es, procedimientos y métodos) e identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. esto permite hacer los programas y módulos mas fáciles de escribir, mantener y reutilizar.
1.2 Evaluación de Expresiones
¿Que Son Las Expresiones?
- Son el método fundamental que tiene el programador de expresar computaciones.
- Las expresiones están compuestas de operadores, operandos, paréntesis y llamadas a funciones. Los operadores pueden ser:
- Unarios: Cuando tan solo tienen un operando. Son operadores prefijos.
- Binarios: 2 Operandos. Son operadores infijos.
- Ternarios: 3 operandos.
Orden De La Evaluación De Los Operadores.
- El orden en que se evalúan los operandos viene dado por unas reglas:
- Reglas de procedencia
- Reglas de asociatividad
- Uso de paréntesis
Evaluación De Expresiones
Toda expresión regresa un valor. Si hay más de un operador, se evalúan primero operadores mayor precedencia, en caso de empate, se aplica regla asociatividad
Para evaluar una expresión no hay que hacer nada del otro mundo, pues es bien sencillo. Sólo hay que saber sumar, restar, si un número es mayor que otro
Hay tres reglas de prioridad a seguir para evaluar una expresión:
- Primero, los paréntesis (si tiene)
- Después, seguir el orden de prioridad de operadores
- Por último, si aparecen dos o más operadores iguales, se evalúan de izquierda a derecha.
Las expresiones son secuencias de constantes y/o variables separadas por operadores válidos.
Se puede construir una expresión válida por medio de :
1. Una sola constante o variable, la cual puede estar precedida por un signo + ó – .
2. Una secuencia de términos (constantes, variables, funciones) separados por operadores.
Además debe considerarse que:
Toda variable utilizada en una expresión debe tener un valor almacenado para que la expresión, al ser evaluada, dé como resultado un valor.
Cualquier constante o variable puede ser reemplazada por una llamada a una función.
Como en las expresiones matemáticas, una expresión en Pascal se evalúa de acuerdo a la precedencia de operadores.
Jerarquía De Operadores
El orden general de evaluación de los operadores de una expresión va de izquierda a derecha, con la excepción de las asignaciones que lo hacen de derecha a izquierda.
Podemos seguir las siguientes tres reglas de evaluación de expresiones:
(Regla 1) En todas las expresiones se evalúan primero las expresiones de los paréntesis más anidados (interiores unos a otros); y éstos modifican la prioridad según la cantidad de éstos, los cuales tienen que estar balanceados (el mismo número de paréntesis que abren debe ser igual al número de los paréntesis que cierran).
(Regla 2) Todas las expresiones se evalúan tomando en cuenta la jerarquía de los operadores.
Como contenido auxiliar les dejamos este vídeo sobre el mismo tema
1.3 Definición de Funciones
En programación, una función es una sección de un programa que calcula un valor de manera independiente al resto del programa.
Es una subrutina o subprograma (también llamada procedimiento, función o rutina), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea especifica.
Una función tiene tres componentes importantes:
- Los parámetros, que son los valores que recibe la función como entrada.
- El Código de la función, que son las operaciones que hace la función.
- El resultado (o valor de retorno), que es el valor final que entrega la función.
- En esencia, una función es un mini-programa. Sus tres componentes son análogos a la entrada, el proceso y la salida de un programa.
Las declaraciones de funciones generalmente son especificadas por:
- Un nombre único en el ámbito: Nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos).
- Un tipo de dato de retorno: tipo de dato del valor que la función devolverá al terminar su ejecución.
- Una lista de parámetros: Especificación del conjunto de argumentos (pueden ser cero, uno o mas) que la función debe de recibir para realizar su tarea.
- El Código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe de ejecutar la función.
1.4 Disciplina de Tipos
“Los tipos se
infieren, es decir se comprueban, de forma estática, en tiempo de compilación.”
En los lenguajes de programación
con disciplina de tipos, cada tipo representa una colección de valores o
datos similares. El conocer los tipos de las funciones ayuda a documentar los
programas y evitar errores en tiempo de ejecución.
Un lenguaje tiene
disciplina de tipos si los errores de tipos se detectan siempre es necesario
determinar los tipos de todos los operandos, ya sea en tiempo de compilación o de ejecución
Disciplina de Tipos En Lenguajes de Programación
Pascal
- Cercano a tener disciplina de tipos pero no realiza comprobación de tipos en los registros variantes (incluso puede omitirse la etiqueta discriminatoria en dichos registros)
Ada
- Resuelve el problema de los registros variantes realizando comprobación dinámica de tipos (sólo en este caso)
- Tiene una función de biblioteca que permite extraer un valor de una variable de cualquier tipo (como una cadena de bits) y usarlo como un tipo diferente (no es una conversión de tipos) se trata de una suspensión temporal de la comprobación de tipos
C
No tiene disciplina de tipos por:
- No se realiza comprobación de tipos sobre las uniones.
- Permite funciones con parámetros sobre los que no se realiza comprobación de tipos.
Java
- Tiene disciplina de tipos (no hay uniones).
ML y Haskell
- Poseen disciplina de tipos
- Los tipos de los parámetros de las funciones (y de estas mismas) se conocen en tiempo de compilación (ya sea por declaración del usuario o por inferencia de tipos)
Haskell y otros lenguajes funcionales utilizan el
sistema de tipos de Milner, que tiene dos características fundamentales:
- Disciplina estática de tipos: Los programas bien tipados se pueden conocer 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 computo.
- Polimorfismo: Permite que una misma función se pueda aplicar a parámetros de diferentes tipos, dependiendo del contexto en el que la función se utilice.
1.5 Tipos de Datos
Un tipo de dato es la propiedad de un valor que determina su dominio (qué valores puede tomar), qué operaciones se le pueden aplicar y cómo es representado internamente por el computador.
Todos los valores que aparecen en un programa tienen un tipo.
Conclusión
De acuerdo a los temas analizados, llamamos estilos de programación a la forma en la que encuentra estructurado el código desde el punto de vista funcional y de sintaxis. Es por ello que a la hora de desarrollar software es muy importante contar con un buen estilo de programación. Cunado un buen desarrollador emplea buenas practicas de programación es mas fácil para otros colaboradores la comprensión del código trayendo consigo ventajas como, menor tiempo en análisis de secciones de código, y por lo tanto se obtienen avances significativos en el desarrollo de proyectos de software.
Referencias
- https://prezi.com/9rk1gkcvmtxv/unidad-uno-conceptos-fundamentales/
- https://programacionlogicayfuncional.wordpress.com/2014/02/12/evaluacion-de-expresiones/
- http://definicion.de/funcion/
- https://programacionlogicayfuncional.wordpress.com/2014/02/13/disciplina-de-tipos/
- http://progra.usm.cl/apunte/materia/tipos.html
Muy Buna informacion ....... Los estilos de programacion nos ayudar a mejorar la estructura de nuestro programa a desarrollar, pero tambien nos ayudan ha saver que al compilar un programa se traduce a otro lenguaje al que comprende la maquina para poder poner en marcha un programa desarrollado y que ay distintos tipos de proramacion ejemplo que se enfoca a los calculos matematicos
ResponderEliminarLas expreciones para un programador son indispensables porque de esta manera se da a entender para cualquier otro programador
los temas que se abordaron en este blog son ecensiales para un programador a la hora de desarrollar en un lenguaje de programacion y para estructurar bien su codigo
Muy buena información, como estudiante de ISC considero que es muy importante conocer estos conceptos punto a punto pues hay temas los cuales podemos relacionarlos con otros y se puede crear una confusión;
ResponderEliminarPor ejemplo en el tema tipos de datos me gusta mucho la ilustración que representa los tipos de datos, pues relacionandola con otras temas se puede generar la confusión de si se refiere a tipo de dato como los es numérico y alfanumérico,double o float etc.
Otro punto importante es el uso que se le da a los videos de Youtube, pues existe infinidad de videos pero debemos de indagar bien para obtener la mejor infomación como lo es en este caso.
Muy buen blog, considero que esta información es muy interesante ya que es importante conocer cada uno de los puntos mencionados acerca de los estilos de programación de la cual se pueden transformar una serie de algoritmos, módulos, tipos de datos y sistemas en algo que la computadora pueda ejecutar.
ResponderEliminar