Sunteți pe pagina 1din 14

INSTITUTO TECNOLÓGICO SUPERIOR DE PÁNUCO

División de Ingeniería en
Sistemas Computacionales

PROGRAMACIÓN LOGICA &


FUNCIONAL

Reporte de investigación.
“Analizar los lenguajes de programación y sus
paradigmas. Incluyendo sus estilos de programación.”

UNIDAD I. CONCEPTOS FUNDAMENTALES.

Melo Hernández Jaime Javier IS16CO324

Titular de la materia:
MCA. Jesús Muñiz Blanco.

Pánuco, Ver. 23 de April de 2020


INTRODUCCIÓN.
El presente documento muestra conceptos subyacentes a los paradigmas de
programación, así como características que los hacen un enfoque particular y
novedoso de la programación que lo convierten en una clara opción frente al enfoque
imperativo convencional en el área del desarrollo de software.

El estilo de programación imperativa (es decir, la programación a través de


acciones que modifican el estado del computador) ha dominado el panorama de la
programación desde sus inicios; los lenguajes de más amplio uso están basados en
estos paradigmas.

Una razón fundamental de este dominio reside en que los lenguajes


imperativos son más cercanos a la forma como realmente funciona la máquina.
Existen otros paradigmas de programación diferentes al imperativo como la
programación funcional y la programación lógica, cuyo estudio, desarrollo y uso han
estado principalmente restringidos al ámbito académico.

En el cual, en este documento se pretende mostrar las ideas subyacentes a la


programación basada en sus paradigmas, así como ilustrar las características que la
hacen un enfoque particular y novedoso de la programación.
DESARROLLO.
Para empezar, como punto central hacia el tema ¿Qué es un paradigma?

Sabemos qué el término paradigma se origina en la palabra griega


παράδειγμα [parádeigma] que en griego antiguo significa "modelo" o "ejemplo". “Es
aquello que debe ser observado; la clase de interrogantes que deben desarrollarse
para obtener respuestas en torno al propósito que se persigue; qué estructura deben
poseer dichos interrogantes y marca pautas que indican el camino de interpretación
para obtener los resultados.” (Universidad de colima. “¿Qué es un paradigma?”.
2008)

Entonces entendemos como tal que un paradigma es un modelo a seguir,


enfocándonos al tema de programación existen 2 principales tipos de paradigma;
Lógico y funcional.

Figura 1.1 “Paradigma Imperativo y Declarativo”.

Hay una gran cantidad de Lenguajes de Programación (LP), algunos han


evolucionado más que otros, algunos siguen vigentes, mientras otros han sido
operativos durante períodos más cortos y actualmente están en desuso.
Dada esta gran variedad, es difícil mostrar una visión de todos, sin embargo,
resulta más claro verlos bajo una clasificación o paradigma.

En general un lenguaje es un método conveniente que describe las


estructuras de información y las acciones para ejecución de una tarea.

Aspectos que provocan la evolución de los Lenguajes de


Programación.

 Recursos y tipos de ordenadores


 Aplicaciones y necesidades de los usuarios
 Nuevos métodos de programación
 Estudios teóricos
 Estandarización

Cabe mencionar que estos aspectos son importantes, pues como se mencionaba
en clase, puede que existieran Lenguajes de Programación que fueron establecidos
en un cierto paradigma y por su evolución pasaron a ser de uno nuevo, un tal
ejemplo sería: C# que paso a C++.

Clasificación por paradigma.

Paradigma Imperativo.

• Describe la programación como una secuencia instrucciones o comandos que


cambian el estado de un programa.

• Indica el ¿Cómo? No el ¿Por qué?

• El código máquina en general está basado en el paradigma imperativo.

• Su contrario es el paradigma declarativo.

De los cuales se derivan:

 Programación Orientada a Objetos.


 Programación Estructurada.
Paradigma Orientado a Objetos.

 Basado en la idea de encapsular estado y operaciones en objetos.


 Se puede incluir, el paradigma basado en objetos, que posee herencia y
subtipos entre objetos.
 Lenguajes: Simula, Smalltalk, C++, Java, Visual Basic .NET, etc.
 Su principal ventaja es la reutilización de códigos y su facilidad para pensar
soluciones a determinados problemas.

Es un paradigma de programación dentro del paradigma imperativo que introduce


conceptos como:

 Clase: Definiciones de las propiedades y comportamiento de un tipo de objeto


concreto. La instanciación es la lectura de estas definiciones y la creación de
un objeto a partir de ellas.
 Herencia: Es la facilidad mediante la cual la clase D hereda en ella cada uno
de los atributos y operaciones de C, como si esos atributos y operaciones
hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos
métodos y variables publicas declaradas en C. Los componentes registrados
como "privados" (private) también se heredan, pero como no pertenecen a la
clase, se mantienen escondidos al programador y sólo pueden ser accedidos
a través de otros métodos públicos. Esto es así para mantener hegemónico el
ideal de OOP.
 Objeto: Entidad provista de un conjunto de propiedades o atributos (datos) y
de comportamiento o funcionalidad (métodos) los mismos que
consecuentemente reaccionan a eventos. Se corresponde con los objetos
reales del mundo que nos rodea, o a objetos internos del sistema (del
programa). Es una instancia a una clase.
 Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya
ejecución se desencadena tras la recepción de un "mensaje". Desde el punto
de vista del comportamiento, es lo que el objeto puede hacer. Un método
puede producir un cambio en las propiedades del objeto, o la generación de
un "evento" con un nuevo mensaje para otro objeto del sistema.

Características de la Programación Orientada a Objetos.

Existe un acuerdo acerca de qué características contempla la "orientación a objetos",


las características que conllevan a este estilo de programación son las más
importantes:

Abstracción.

Denota las características esenciales de un objeto, donde se capturan sus


comportamientos. Cada objeto en el sistema sirve como modelo de un "agente"
abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse"
con otros objetos en el sistema sin revelar cómo se implementan estas
características. Los procesos, las funciones o los métodos pueden también ser
abstraídos y cuando lo están, una variedad de técnicas es requeridas para ampliar
una abstracción.

El proceso de abstracción permite seleccionar las características relevantes


dentro de un conjunto e identificar comportamientos comunes para definir nuevos
tipos de entidades en el mundo real. La abstracción es clave en el proceso de
análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar
un conjunto de clases que permitan modelar la realidad o el problema que se quiere
atacar.

Encapsulamiento.

Significa reunir a todos los elementos que pueden considerarse pertenecientes a una
misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de
los componentes del sistema. Algunos autores confunden este concepto con el
principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Polimorfismo.
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el
mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento
correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias
y las colecciones de objetos pueden contener objetos de diferentes tipos, y la
invocación de un comportamiento en una referencia producirá el comportamiento
correcto para el tipo real del objeto referenciado.

“Como vimos en clase y comentamos en el grupo, sabemos que un paradigma


es un ejemplo de modelo, el imperativo conlleva a la programación orientada a
objetos y esté es un paradigma de programación enfocado en usar nuevas técnicas
para mejorar la utilización de recursos al hacer un programa.”

Paradigma Estructurado.

 La programación se divide en bloques (procedimientos y funciones) que


pueden o no comunicarse entre sí.
 Se controla con secuencia, selección e iteración.
 Permite reutilizar código programado y otorga una mejor compresión de la
programación.
 Indica el ¿qué hacer?

El primer paradigma formal de programación de computadores se conoció como


la programación estructurada, dado que es un modelo de programación que se basa
en la máquina de estados de Von Newmann y se fundamenta en tres estructuras
básicas. Antes de la programación estructurada se acudía a una técnica conocida
como “programación libre”, en la cual cada programador hacía sus programas como
a bien tuviera.

Como consecuencia, el estudio exhaustivo de los programas realizados a


partir de la llamada programación libre permitió ir encontrando que todos los
programas se encontraban y hacían uso de tres estructuras específicas. A partir de
allí, tomando los conceptos matemáticos de la máquina de estados de von Newmann
y de la máquina de Turing, se configuro un paradigma que, luego de más de sesenta
años de haber sido formulado, sigue teniendo alguna vigencia; dado el tiempo de
refinamiento, no solo perdura en algunas expresiones tecnológicas, sino que ha
abierto la puerta para que otros paradigmas irrumpan en el mundo de la
programación de computadores solucionando apropiadamente lo que el paradigma
estructurado no había podido solucionar, o para lo cual sus soluciones eran
altamente ineficientes o sus conceptos profundamente escasos (Van Roy, 2003).

“El propósito de este lenguaje es mantener un código en orden y como su


nombre lo dice ‘Estructurado’, mantener una estructura a seguir para que el
programa y/o lenguaje de programación pueda ser compilado, y en esta se indica
como se debe programar algo para resolver un determinado problema indicando al
programa con un lenguaje de programación determinado las instrucciones para
resolverlo.”

Paradigma Declarativo.

• Incluye el paradigma procedimental (procedural)

• Describe (declara) cómo es algo (las propiedades dela solución buscada),


dejando indeterminado el algoritmo (conjunto de instrucciones) usado para
encontrar esa solución.

• Tiene desventajas en la eficiencia, pero ventajas en la solución de


determinados problemas.

Paradigma Funcional.

• Concibe a la computación como la evaluación de funciones matemáticas y


evita declarar y cambiar datos, hace hincapié en la aplicación de las funciones
y composición entre ellas, más que en los cambios de estados y la ejecución
secuencial de comandos (como lo hace el paradigma procedimental).

• Permite resolver problemas de forma elegante y evitan los efectos


secundarios comunes en otro tipo de programaciones.
La programación funcional se deriva del paradigma funcional, un modelo
matemático basado en el cálculo Lambda que posibilita la construcción de soluciones
simples basadas en funciones como núcleo básico de la programación.

La función constituye el elemento principal a partir del cual se construye una


solución que luego se revierte en un programa y que cuenta con características como
paso de argumentos, nominación única, recursión, omisión de declaraciones y
retornos automáticos (Schildt, 2000).

En la actualidad, la tendencia a construir soluciones basadas en funciones


eficientes ha posibilitado no solo que se fortalezca la programación funcional, sino
también la programación estructurada y la programación orientada a objetos, que son
las tendencias modernas que marcan el avance tecnológico en la actualidad (Van
Santen, 2010).

Programación Lógica.

• Se basa en la definición de reglas lógicas para luego, a través de un motor de


inferencias lógicas, responder preguntas planteadas al sistema y así resolver
los problemas.

• Ej.: Prolog, Mercury, Oz.

“Es un paradigma de programación que se basa en la lógica de primer orden.


Esta lógica nos la han enseñado en la escuela en nuestras clases de español, que,
mediante reglas, puedes derivar conclusiones, por ejemplo:
Figura 1.2 “Ejemplo del entorno Prolog”.

Estilos de programación.

El estilo de programación se refiere a la forma en que se da formato al código fuente.


Los lenguajes de programación tienen la 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.
Fig
ura 1.3 “Estilos de programación”

“Esto más que nada, va en conjunto con los paradigmas de programación, pues
como se dice un estilo, es un modelo a seguir, cada uno, cada programador adopta
el estilo a seguir en base a su problemática pensando en como resolverlo.”

Evaluación de expresiones.

Una expresión es una combinación de operadores y operandos de cuya evaluación


se obtiene un valor. Los operandos pueden ser nombres que denoten objetos
variables o constantes, funciones, literales de cualquier tipo adecuado de acuerdo
con los operadores u otras expresiones más simples.

La evaluación de una expresión da lugar a un valor de algún tipo, una


expresión se dice que es del tipo de su resultado. 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.
Figura 1.4 “Jerarquía de Operadores en base a operaciones aritméticas”.

Tipos de datos.

Se comprende que 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.

Figura 1.5 “Clasificación de los tipos de datos”.


CONCLUSIÓN.

Para retomar como punto final en esta investigación, comprendí una nueva forma de
ver la programación, establecida por paradigmas y clasificación de ellos, de cómo
utilizábamos uno de los dos sin saberlo, claramente el paradigma imperativo además
constatar que el paradigma declarativo es muy poderoso si sabemos utilizarlo en
nuestro conocimiento como sismólogos ya que en la carrera nuestro enfoque fue
hacia el paradigma estructurado y orientado a objetos,

Además de que la optimización de código al utilizar la programación lógica y


funcional nos permite aprovechar mejor los recursos de nuestras computadoras al
utilizar menos memoria y gestionar mejor el poder de procesamiento y podemos
lograr increíbles resultados que con el paradigma imperativo nos llevaría mucho
tiempo y recursos lograr.
REFERENCIAS BIBLIOGRAFICAS.

Van Roy P. “Concepts, Techniques and Models of Computer Programming”. (2003).


Estocolmo: Swedish Institute of Computer Science.

Trejos O. “Fundamentos de Programación”. (2005). Pereira, Editorial Papiro:

Trejos O. “La esencia de la lógica de programación”. (2002). Manizales: Centro


Editorial Universidad de Caldas.

Universidad Autónoma del Estado de México (UAEM). Programa de Estudios por


Competencias “Lenguaje de Programación Estructurado. (2016).

Gonzales Osorio Fabio A. “Programación funcional: conceptos y perspectivas”.


(2007). Universidad Nacional de Colombia.

S-ar putea să vă placă și