Post on 06-Mar-2023
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
Ingeniería en sistemas
computacionales
Materia: Programación Lógica y
Funcional.
Alumno: Carlos Fabián Gómez Pérez
Fecha: 5 de febrero del 2015
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
INDICE
1.1 ESTILOS DE PROGRAMACIÓN 3
1.2 EVALUACIÓN DE EXPRESIONES 5
1.3 DEFINICIÓN DE FUNCIONES
5
1.4 DISCIPLINA DE DATOS
7
1.5 TIPOS DE DATOS
8
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
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 pueda escribir
directamente en lenguaje de máquina.
1.1 ESTILOS DE PROGRAMACIÓN
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
La opción más común es compilar el programa, aunque también
puede ser ejecutado mediante un intérprete informático El
código fuente del programa se debe someter a un proceso de
transformación para convertirse en lenguaje máquina,
interpretable por el procesador.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
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 o filosofía
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 más apropiado que
otro.
Estilo de programación (también llamado estándares de código o convenciónde código) es un término que describe convenciones para escribir códigofuente en ciertos lenguajes de programación.
El estilo de programación es frecuentemente dependiente del lenguaje deprogramación que se haya elegido para escribir. Por ejemplo el estilo dellenguaje de programación C variará con respecto al del lenguaje BASIC.
Estilo K&R es el más utilizado en el lenguaje C y PHP, el estilo fuellamado de esta forma porque fue usado por Kernighan y Ritchies en sulibro The C Programming Lenguage.
Estilo Allman fue definido por Eric Allman, se trata de crear una nuevalínea para las llaves, e identificar el código debajo de ellas.
Estilo BSD KNF también conocido como estilo Kernel Normal From, es lamanera más usada para el código de la distribución del software delsistema operativo de Berkeley.
Estilo Whitesmiths también llamado estilo wishart, se coloca las llavesasociadas con la instrucciones de control.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
1.2 EVALUACIÓN DE EXPRESIONES
Es una subrutina o subprograma (también llamada
procedimiento, función o rutina), como idea general, se
presenta como un sub-algoritmo que forma parte del algoritmo
principal, el cual permite resolver una tarea específica.
Una expresión es una combinación de operandos y operadores.
La evaluación de una expresión consiste en reducirla, esto
es, realizar todas las operaciones contenidas en ella para
obtener un valor final.
Para evaluar una expresión es necesario conocer la prioridad
de los operadores, con lo cual se puede determinar cuál
operación se va a realizar antes que las demás.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
Una expresión entre paréntesis se evalúa primero que las
demás. Si hay paréntesis se evalúa primero la expresión
contenida en los paréntesis más internos.
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.
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; y
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).
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
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 más) que la función debe
recibir para realizar su tarea.
El código u órdenes de procesamiento: conjunto de órdenes y
sentencias que debe ejecutar la función.
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.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
1.4 DISCIPLINA DE DATOS
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.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
1.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.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
DIFERENTES TIPOS DE PARADIGMAS DE PROGRAMACIÓN
Un paradigma de programación es una propuesta tecnológica que
es adoptada por una comunidad de programadores cuyo núcleo
central es incuestionable en cuanto a que unívocamente trata
de resolver uno o varios problemas claramente delimitados. La
resolución de estos problemas debe suponer consecuentemente
un avance significativo en al menos un parámetro que afecte a
la ingeniería de software. Tiene una estrecha relación con la
formalización de determinados lenguajes en su momento de
definición. Un paradigma de programación está delimitado en
el tiempo en cuanto a aceptación y uso ya que nuevos
paradigmas aportan nuevas o mejores soluciones que la
sustituyen parcial o totalmente.
Por ejemplo:
Probablemente el paradigma de programación que actualmente es
el más usado a todos los niveles es la orientación a objeto.
El núcleo central de este paradigma es la unión de datos y
procesamiento en una entidad llamada "objeto", relacionable a
su vez con otras entidades "objeto".
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
Tradicionalmente datos y procesamiento se han separado en
áreas diferente del diseño y la implementación de software.
Esto provocó que grandes desarrollos tuvieran problemas de
fiabilidad, mantenimiento, adaptación a los cambios y
escalabilidad. Con la orientación a objetos y características
como el encapsulado, polimorfismo o la herencia se permitió
un avance significativo en el desarrollo de software a
cualquier escala de producción.
La orientación a objeto parece estar ligado en sus orígenes
con lenguajes como Lisp y Simula aunque el primero que acuño
el título de programación orientada a objetos fue Smaltalk
Tipos de paradigmas de programación
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 cómo realizar una tarea.
La implementación de hardware de la mayoría de
computadores es imperativa; prácticamente todo el hardware de
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
los computadores está diseñado para ejecutar código de
máquina, que es nativo al computador, escrito en una forma
imperativa. Esto se debe a que el hardware de los
computadores implementa el paradigma de las Máquinas de
Turing. Desde esta perspectiva de bajo nivel, el estilo del
programa está definido por los contenidos de la memoria, y
las sentencias son instrucciones en el lenguaje de máquina
nativo del computador (por ejemplo el lenguaje ensamblador).
Los lenguajes imperativos de alto nivel usan variables
y sentencias más complejas, pero aún siguen el mismo
paradigma. Las recetas y las listas de revisión de procesos,
a pesar de no ser programas de computadora, son también
conceptos familiares similares en estilo a la programación
imperativa; cada paso es una instrucción, y el mundo físico
guarda el estado (Zoom).
Los primeros lenguajes imperativos fueron los
lenguajes de máquina de los computadores originales. En estos
lenguajes, las instrucciones fueron muy simples, lo cual hizo
la implementación de hardware fácil, pero obstruyendo la
creación de programas complejos. Fortran, cuyo desarrollo fue
iniciado en 1954 por John Backus en IBM, fue el primer gran
lenguaje de programación en superar los obstáculos
presentados por el código de máquina en la creación de
programas complejos.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
Programación lógica
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; no debe confundirse con la disciplina de la
lógica computacional.
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
funcional, programación basada en restricciones, programas
DSL (de dominio específico) e híbridos. La programación
lógica gira en torno al concepto de predicado, o relación
entre elementos. 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.
Programación funcional
En ciencias de la computación, la programación
funcional es un paradigma de programación declarativa basado
en la utilización de funciones aritméticas que no maneja
datos mutables o de estado. Enfatiza la aplicación de
funciones, en contraste con el estilo de programación
imperativa, que enfatiza los cambios de estado. La
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
programación funcional tiene sus raíces en el cálculo lambda,
un sistema formal desarrollado en los 1930s para investigar
la definición de función, la aplicación de las funciones y la
recursión. Muchos lenguajes de programación funcionales
pueden ser vistos como elaboraciones del cálculo lambda.
Los lenguajes de programación funcional,
especialmente los que son puramente funcionales, han sido
enfatizados en el ambiente académico principalmente y no
tanto en el desarrollo de software comercial. Sin embargo,
lenguajes de programación importantes tales como Scheme,
Erlang, Objective Caml y Haskel, han sido utilizados en
aplicaciones comerciales e industriales por muchas
organizaciones. La programación funcional también es
utilizada en la industria a través de lenguajes de dominio
específico como R (estadística), Mathematica (matemáticas
simbólicas), J y K (análisis financiero), F# en Microsoft.NET
y XSLT (XML). Lenguajes de uso específico usados comúnmente
como SQL y Lex/Yacc, utilizan algunos elementos de
programación funcional, especialmente al procesar valores
mutables. Las hojas de cálculo también pueden ser
consideradas lenguajes de programación funcional.
La programación funcional también puede ser
desarrollada en lenguajes que no están diseñados
específicamente para la programación funcional. En el caso de
Perl, por ejemplo, que es un lenguaje de programación
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
imperativo, existe un libro que describe cómo aplicar
conceptos de programación funcional. JavaScript, uno de los
lenguajes más ampliamente utilizados en la actualidad,
también incorpora capacidades de programación funcional.
Programación declarativa
La Programación Declarativa, es un paradigma de programación
que está basado en el desarrollo de programas especificando o
"declarando" un conjunto de condiciones, proposiciones,
afirmaciones, restricciones, ecuaciones o transformaciones
que describen el problema y detallan su solución. La solución
es obtenida mediante mecanismos internos de control, sin
especificar exactamente cómo encontrarla (tan sólo se le
indica a la computadora que es lo que se desea obtener o que
es lo que se está buscando). No existen asignaciones
destructivas, y las variables son utilizadas con
Transparencia referencial
Programación estructurada
La programación estructurada es una forma de escribir
programas de ordenador (programación de computadora) de
manera clara. Para ello utiliza únicamente tres estructuras:
secuencia, selección e iteración; siendo innecesario el uso
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
de la instrucción o instrucciones de transferencia
incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples
RETURN).
Programación dirigida por eventos
La programación dirigida por eventos es un paradigma de
programación en el que tanto la estructura como la ejecución
de los programas van determinados por los sucesos que ocurran
en el sistema, definidos por el usuario o que ellos mismos
provoquen.
Para entender la programación dirigida por eventos, podemos
oponerla a lo que no es: mientras en la programación
secuencial (o estructurada) es el programador el que define
cuál va a ser el flujo del programa, en la programación
dirigida por eventos será el propio usuario —o lo que sea que
esté accionando el programa— el que dirija el flujo del
programa. Aunque en la programación secuencial puede haber
intervención de un agente externo al programa, estas
intervenciones ocurrirán cuando el programador lo haya
determinado, y no en cualquier momento como puede ser en el
caso de la programación dirigida por eventos.
El creador de un programa dirigido por eventos debe definir
los eventos que manejarán su programa y las acciones que se
realizarán al producirse cada uno de ellos, lo que se conoce
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
como el administrador de evento. Los eventos soportados
estarán determinados por el lenguaje de programación
utilizado, por el sistema operativo e incluso por eventos
creados por el mismo programador.
En la programación dirigida por eventos, al comenzar la
ejecución del programa se llevarán a cabo las
inicializaciones y demás código inicial y a continuación el
programa quedará bloqueado hasta que se produzca algún
evento. Cuando alguno de los eventos esperados por el
programa tenga lugar, el programa pasará a ejecutar el código
del correspondiente administrador de evento. Por ejemplo, si
el evento consiste en que el usuario ha hecho click en el
botón de play de un reproductor de películas, se ejecutará el
código del administrador de evento, que será el que haga que
la película se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación
Léxico y Visual Basic, en los que a cada elemento del
programa (objetos, controles, etcétera) se le asignan una
serie de eventos que generará dicho elemento, como la
pulsación de un botón del ratón sobre él o el redibujado del
control.
La programación dirigida por eventos es la base de lo que
llamamos interfaz de usuario, aunque puede emplearse para
desarrollar interfaces entre componentes de Software como
módulos del núcleo también.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
En los primeros tiempos de la computación, los programas eran
secuenciales, también llamados Batch. Un programa secuencial
arranca, lee parámetros de entrada, procesa estos parámetros,
y produce un resultado, todo de manera lineal y sin
intervención del usuario mientras se ejecuta.
Con la aparición y popularización de los pc, el software
empezó a ser demandado para usos alejados de los clásicos
académicos y empresariales para los cuales era necesitado
hasta entonces, y quedó patente que el paradigma clásico de
programación no podía responder a las nuevas necesidades de
interacción con el usuario que surgieron a raíz de este
hecho...
Programación modular
La programación modular es un paradigma de programación que
consiste en dividir un programa en módulos o subprogramas con
el fin de hacerlo más legible y manejable.
Se presenta históricamente como una evolución de la
programación estructurada para solucionar problemas de
programación más grandes y complejos de lo que ésta puede
resolver.
Al aplicar la programación modular, un problema complejo debe
ser dividido en varios subproblemas más simples, y estos a su
vez en otros subproblemas más simples. Esto debe hacerse
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
hasta obtener subproblemas lo suficientemente simples como
para poder ser resueltos fácilmente con algún lenguaje de
programación. Ésta técnica se llama refinamiento sucesivo,
divide y vencerás ó análisis descendente (Top-Down).
Un módulo es cada una de las partes de un programa
que resuelve uno de los subproblemas en que se divide el
problema complejo original. Cada uno de estos módulos tiene
una tarea bien definida y algunos necesitan de otros para
poder operar. En caso de que un módulo necesite de otro,
puede comunicarse con éste mediante una interfaz de
comunicación que también debe estar bien definida.
Si bien un módulo puede entenderse como una parte
de un programa en cualquiera de sus formas y variados
contextos, en la práctica es común representarlos con
procedimientos y funciones. Adicionalmente, también pueden
considerarse módulos las librerías que pueden incluirse en un
programa o, en programación orientada a objetos, la
implementación de un tipo de dato abstracto.
Programación orientada a objetos
La programación orientada a objetos o POO (OOP según sus
siglas en inglés) es un paradigma de programación que usa
objetos y sus interacciones, para diseñar aplicaciones y
programas informáticos. Está basado en varias técnicas,
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
incluyendo herencia, abstracción, polimorfismo y
encapsulamiento. Su uso se popularizó a principios de la
década de los años 1990. En la actualidad, existe variedad de
lenguajes de programación que soportan la orientación a
objetos.
Programación con restricciones
La Programación con restricciones es un paradigma de la
programación en informática, donde las relaciones entre las
variables son expresadas en términos de restricciones
(ecuaciones). Actualmente es usada como una tecnología de
software para la descripción y resolución de problemas
combinatorios particularmente difíciles, especialmente en las
áreas de planificación y programación de tareas
(calendarización).
Este paradigma representa uno de los desarrollos más
fascinantes en los lenguajes de programación desde 1990 y no
es sorprendente que recientemente haya sido identificada por
la ACM (Asociación de Maquinaria Computacional) como una
dirección estratégica en la investigación en computación.
Se trata de un paradigma de programación basado en la
especificación de un conjunto de restricciones, las cuales
deben ser satisfechas por cualquier solución del problema
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
planteado, en lugar de especificar los pasos para obtener
dicha solución.
La programación con restricciones se relaciona mucho con la
programación lógica y con la investigación operativa. De
hecho cualquier programa lógico puede ser traducido en un
programa con restricciones y viceversa. Muchas veces los
programas lógicos son traducidos a programas con
restricciones debido a que la solución es más eficiente que
su contraparte.
La diferencia entre ambos radica principalmente en sus
estilos y enfoques en el modelado del mundo. Para ciertos
problemas es más natural (y por ende más simple) escribirlos
como programas lógicos, mientras que en otros es más natural
escribirlos como programas con restricciones.
El enfoque de la programación con restricciones se basa
principalmente en buscar un estado en el cual una gran
cantidad de restricciones sean satisfechas simultáneamente.
Un problema se define típicamente como un estado de la
realidad en el cual existe un número de variables con valor
desconocido. Un programa basado en restricciones busca dichos
valores para todas las variables.
Algunos dominios de aplicación de este paradigma son:
Dominios booleanos, donde solo existen
restricciones del tipo verdadero/falso.
Dominios en variables enteras y racionales.
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
Dominios lineales, donde sólo se describen y
analizan funciones lineales.
Dominios finitos, donde las restricciones son
definidas en conjuntos finitos.
Dominios mixtos, los cuales involucran dos o más de
los anteriores.
Programación orientada a componentes
La programación orientada a componentes (que también es
llamada basada en componentes) es una rama de la ingeniería
del software, con énfasis en la descomposición de sistemas ya
conformados en componentes funcionales o lógicos con
interfaces bien definidas usadas para la comunicación entre
componentes.
Se considera que el nivel de abstracción de los componentes
es más alto que el de los objetos y por lo tanto no comparten
un estado y se comunican intercambiando mensajes que
contienen datos.
Programación Orientada a Aspectos
La Programación Orientada a Aspectos (POA) es un paradigma de
programación relativamente reciente cuya intención es
permitir una adecuada modularización de las aplicaciones y
INSTITUTO TECNOLÓGICO SUPERIOR DE CIUDAD ACUÑA
4
posibilitar una mejor separación de incumbencias. Gracias a
la POA se pueden encapsular los diferentes conceptos que
componen una aplicación en entidades bien definidas,
eliminando las dependencias entre cada uno de los módulos. De
esta forma se consigue razonar mejor sobre los conceptos, se
elimina la dispersión del código y las implementaciones
resultan más comprensibles, adaptables y reusables. Varias
tecnologías con nombres diferentes se encaminan a la
consecución de los mismos objetivos y así, el término POA es
usado para referirse a varias tecnologías relacionadas como
los métodos adaptativos, los filtros de composición, la
programación orientada a sujetos o la separación
multidimensional de competencias.
Bibliografia
https://prezi.com/9rk1gkcvmtxv/unidad-uno-conceptos-
fundamentales/
http://karlaprogramacionfuncional.blogspot.mx/2014/02/unidad-
1-conceptos-fundamentales.html