Want to create interactive content? It’s easy in Genially!

Get started free

U1. Conceptos Fundamentales

Dulce Valeria González Sánchez

Created on June 30, 2023

Unidad 1 de Programación Lógica y Funcional

Start designing with a free template

Discover more than 1500 professional designs like these:

Vaporwave presentation

Animated Sketch Presentation

Memories Presentation

Pechakucha Presentation

Decades Presentation

Color and Shapes Presentation

Historical Presentation

Transcript

Unidad 1

Conceptos Fundamentales

Materia: Programación Lógica Y Funcional Alumno(a): Dulce Valeria González Sánchez | 20650189 Prof.: Jhacer Kharen Ruíz Garduño ISC 7M

ÍNDICE

1.1

Diferentes estilos de programación.

1.2

Analizando diferentes estilos de programación.

1.2.1

Evaluación de expresiones.

1.2.2

Tipos de datos.

1.2.3

Disciplina tipos.

1.2.4

Funciones.

Introducción

La programación lógica y funcional son dos paradigmas de programación que se basan en enfoques diferentes para resolver problemas y diseñar software. En la programación lógica, se utiliza la lógica formal y reglas de inferencia para resolver problemas mediante la deducción lógica. Por otro lado, la programación funcional se centra en el uso de funciones y la evaluación de expresiones matemáticas para realizar cálculos y transformaciones de datos. Estos dos paradigmas comparten conceptos fundamentales que los hacen poderosos y efectivos en diferentes contextos. Algunos de estos conceptos incluyen la evaluación de expresiones, la disciplina de tipos y el uso de funciones. Estos conceptos permiten escribir código más legible, modular y fácilmente verificable, lo que facilita el desarrollo de software de calidad.

1.1

Diferentes estilos de programación.

1.1 Diferentes estilos de programación

Estilo de programación
Programación lógica
Programación funcional

1.2

Analizando diferentes estilos de programación

Paradigmas de programación

Los paradigmas de programación son enfoques generales y filosofías que influyen en el diseño y la estructura de los programas. Estos paradigmas proporcionan un marco conceptual y teórico para abordar la programación de software .

Estilos de programación

Los estilos de programación se refieren a las prácticas y convenciones específicas utilizadas al escribir código dentro de un paradigma de programación determinado. Estos estilos se centran en cómo se organiza y se escribe el código en términos concretos.

A continuación, se detallan algunos de los paradigmas y estilos de programación más comunes:

2. Programación orientada a objetos (POO)

1. Programación imperativa

3. Programación funcional

5. Programación declarativa

4. Programación lógica

1.2.1

Evaluación de expresiones.

Evaluación de expresiones

El orden de evaluación de las expresiones puede variar dependiendo del lenguaje de programación y el estilo de programación utilizado. Existen principalmente dos enfoques de orden de evaluación:

Evaluación perezosa

Evaluación ansiosa

La evaluación de expresiones es el proceso de calcular o determinar el valor de una expresión en un lenguaje de programación. Las expresiones son combinaciones de operadores, variables y constantes que representan un valor.

En la programación lógica y funcional, existen varios tipos de expresiones comunes, entre ellos:

Expresiones condicionales

Expresiones lógicas

Expresiones lambda

Expresiones aritméticas

Involucran operaciones matemáticas como suma, resta, multiplicación y división

Representan condiciones lógicas y se evalúan como verdadero (true) o falso (false).

Evalúan una condición y determinan qué acción tomar en función del resultado de la condición.

Definen funciones anónimas. Se utilizan para crear funciones de forma concisa y directa.

1.2.2

Tipos de datos

Tipos de datos

Char

Números enteros

Números de punto flotante

Booleano

Cadenas de caracteres

1.2.3

Disciplina de tipos

1.2.3 Disciplina tipos

Se centra en el manejo adecuado de los tipos de datos en un programa. Se trata de establecer reglas y restricciones para garantizar la coherencia y consistencia en el uso de los tipos de datos. Los tipos de datos definen qué tipo de información puede ser almacenada en una variable y cómo se puede operar con ella. Estas restricciones son importantes porque ayudan a prevenir errores y comportamientos inesperados en el programa. A continuación, se presentan algunos aspectos clave de la disciplina de tipos en la programación lógica y funcional:

1. Verificación de tipos
4. Coerción de tipos
2. Tipado estático
5. Seguridad de tipos
3. Interferencia de tipos

1.2.4

Funciones

1.2.3 Funciones

Representan bloques de código autónomos que reciben uno o más valores de entrada, conocidos como argumentos, y producen un resultado o efecto como salida. Las funciones permiten encapsular la lógica y la reutilización de código, lo que facilita el desarrollo y mantenimiento de programas. A continuación, se describen las partes fundamentales de una función:

1. Nombre de la función
4. Tipo de retorno
2. Parámetros/Argumentos
5. Retorno de valor
3. Cuerpo de la función

Conclusión

Los conceptos fundamentales de la programación lógica y funcional proporcionan una base sólida para abordar problemas complejos y desarrollar software robusto. Al comprender y aplicar estos conceptos, los programadores pueden aprovechar al máximo las ventajas de la programación lógica y funcional, creando software más mantenible, flexible y escalable. Estos paradigmas fomentan una mentalidad basada en la resolución de problemas y la abstracción, lo que conduce a un código más limpio y fácil de entender. En última instancia, la comprensión de los conceptos fundamentales de la programación lógica y funcional capacita a los desarrolladores para escribir programas más elegantes y eficientes, satisfaciendo las necesidades de los usuarios y las demandas de los proyectos de software.

¡GRACIAS!

Fuentes bibliograficas

Velasco, R. (2018, May 22). 1.- Conceptos Fundamentales. Programación Lógica y Funcional. http://prologvelascorus.blogspot.com/2018/01/11-diferentes-estilos-de-programacion.html Antonio, M. (2016, March 9). 1.Estilos de Programación. Programación Lógica Y Funcional. https://plyf8sisitsh.wordpress.com/2016/03/08/5-tipos-de-datos/ S/n (n.d.). Conceptos fundamentales de programación lógica y funcional. http://fundamentosplf.blogspot.com/2017/02/instituto-tecnologico-superior-de.html Sebesta, R. W. (2008). Concepts of Programming Languages (10th ed.). Addison Wesley Longman. http://www.sci.brooklyn.cuny.edu/~chuang/books/sebesta.pdf

Programación Orientada a Objetos

(POO)

Descripción: Se basa en la creación y manipulación de objetos que contienen datos y funciones (métodos) que actúan sobre esos datos. Se busca modelar el mundo real a través de la interacción entre objetos. Ejemplos de estilos relacionados: programación basada en clases, programación basada en prototipos.

Evaluación perezosa

Un ejemplo común de la evaluación perezosa es en la definición de listas infinitas. En lugar de generar todos los elementos de la lista de una vez, se van generando bajo demanda a medida que se acceden a ellos. En resumen, la evaluación perezosa es una técnica poderosa en la programación funcional que ofrece beneficios en términos de eficiencia y manejo de estructuras de datos, pero también requiere una comprensión cuidadosa de sus implicaciones y desafíos.

También conocido como "evaluación bajo demanda" (lazy evaluation), este enfoque implica evaluar las partes de una expresión solo cuando son necesarias para obtener el resultado final. Las subexpresiones se evalúan solo cuando se necesita su valor para continuar con el cálculo. La evaluación perezosa se basa en la idea de que no siempre es necesario calcular todas las partes de una expresión para obtener el resultado final. Si una parte de la expresión no se necesita para obtener el resultado, no se evalúa y se ahorra tiempo y recursos.

Char

El tipo de dato "char" representa un carácter individual, como una letra, un número o un símbolo. Los caracteres se representan entre comillas simples ('') en la mayoría de los lenguajes de programación. Los datos de tipo "char" se utilizan para manipular y procesar información a nivel de carácter. Pueden representar letras individuales para la manipulación de texto, como en la creación de cadenas de caracteres. También se pueden utilizar para representar caracteres especiales, como símbolos de puntuación o caracteres de escape.

Tipado estático

En muchos lenguajes de programación lógica y funcional, se utiliza el tipado estático, lo que significa que los tipos de datos se verifican en tiempo de compilación. El compilador analiza el código y verifica que las operaciones y asignaciones de variables sean coherentes con los tipos de datos esperados. Esto ayuda a encontrar errores en etapas tempranas del desarrollo y mejora la robustez y confiabilidad del programa.

Texto o cadenas de caracteres (String)

Representan secuencias de caracteres alfanuméricos. Las cadenas de caracteres se utilizan para almacenar y manipular información de texto, como mensajes, nombres, direcciones, entre otros. En algunos lenguajes, las cadenas de caracteres se representan con comillas simples ('') o comillas dobles ("").

Tipos de datos

En programación lógica y funcional, los "tipos de datos" se refieren a las categorías o clasificaciones que se utilizan para definir y representar diferentes tipos de valores que pueden ser manipulados en un programa. Los tipos de datos permiten al programador especificar qué tipo de información se puede almacenar en una variable, cómo se puede operar con ella y qué restricciones se aplican a su uso. Los tipos de datos suelen ser más restrictivos y están diseñados para garantizar una mayor seguridad y coherencia en el programa

Coerción de tipos

En ocasiones, puede ser necesario convertir un tipo de dato a otro para realizar ciertas operaciones. La coerción de tipos es el proceso de realizar conversiones automáticas entre tipos compatibles. Por ejemplo, si se intenta sumar un entero y un número decimal, el compilador puede realizar una conversión implícita del entero a decimal para realizar la operación. Sin embargo, es importante tener en cuenta las reglas de coerción de tipos y sus implicaciones para evitar resultados inesperados.

Números de punto flotante (Float)

Representan valores numéricos que pueden contener decimales. Los números de punto flotante pueden tener diferentes precisiones, como "float" (precisión simple) o "double" (precisión doble). Se utilizan para cálculos más precisos que requieren valores fraccionarios.

Seguridad de tipos

La disciplina de tipos también se ocupa de garantizar la seguridad en el uso de los tipos de datos. Esto implica evitar operaciones y asignaciones que puedan conducir a errores de tipo, como tratar de acceder a un valor en un tipo incorrecto o realizar operaciones no válidas en ciertos tipos. Al aplicar una disciplina sólida de tipos, se reducen los riesgos de errores y comportamientos inesperados en el programa.

Interferencia de tipos

En algunos lenguajes de programación lógica y funcional, existe la capacidad de inferir automáticamente los tipos de datos según el contexto. En lugar de tener que especificar explícitamente el tipo de una variable, el compilador puede deducirlo según cómo se utiliza la variable en el programa. Esto permite una escritura más concisa y reduce la carga cognitiva del programador al no tener que especificar tipos innecesariamente

Programación declarativa

Descripción: Se centra en la especificación de qué se debe lograr, en lugar de como hacerlo. Se utilizan declaraciones o especificaciones que describen las propiedades o restricciones del problema, y un motor de ejecución se encarga de encontrar la solución. Ejemplos de estilos relacionados: programación de restricciones, programación lógica.

Programación lógica

Descripción: Se basa en el uso de reglas lógicas y hechos para inferir respuestas a consultas. Utiliza un conjunto de reglas y hechos para realizar deducciones y resolver problemas. Ejemplos de estilos relacionados: programación en lógica de predicados, programación declarativa.

Programación funcional

Se basa en el concepto de funciones matemáticas y en la evaluación de expresiones. Los lenguajes de programación funcional más conocidos son Haskell, Lisp y Erlang. En la programación funcional, los programas se construyen utilizando funciones como bloques fundamentales de construcción. Las funciones en la programación funcional son puras, lo que significa que no tienen efectos secundarios y producen el mismo resultado para los mismos valores de entrada. Se enfatiza la inmutabilidad de los datos y se utilizan técnicas como la recursión y la composición de funciones para resolver problemas.

  • La programación funcional se utiliza en aplicaciones que requieren un enfoque matemático y una alta concurrencia, como el procesamiento de datos y los sistemas distribuidos.

Verificación de tipos

Los lenguajes de programación lógica y funcional suelen contar con sistemas de verificación de tipos que analizan el código y comprueban si se están utilizando los tipos de datos de manera correcta. Estos sistemas pueden detectar errores de tipo, como intentar sumar un número con una cadena de texto, y proporcionar advertencias o errores al programador.

Evaluación ansiosa

Este enfoque implica evaluar todas las partes de una expresión antes de calcular el resultado final. En este caso, las subexpresiones se evalúan de manera secuencial, de izquierda a derecha. El orden de evaluación en expresiones se rige por varios factores que determinan el flujo de ejecución dentro de una sentencia. Estos factores incluyen:

1. Paréntesis

2. Naturaleza de los operadores

3. Orden en que están colocados

4. Providencias del compilador

Cuerpo de la función

Es el bloque de código que contiene las instrucciones y la lógica que define la funcionalidad de la función. Aquí es donde se especifican las operaciones que se realizan con los parámetros y se define la lógica de cálculo o transformación para producir el resultado deseado.

Programación imperativa

Descripción: Se enfoca en cómo se deben realizar las operaciones paso a paso, utilizando un conjunto de instrucciones que modifican el estado del programa y sus variables. Ejemplos de estilos relacionados: programación procedural, programación estructurada.

Programación lógica

La programación lógica se basa en la lógica formal y en la resolución de problemas mediante el establecimiento de reglas y relaciones lógicas. El lenguaje de programación más conocido para la programación lógica es Prolog. En la programación lógica, los programas se construyen a partir de un conjunto de hechos y reglas lógicas que describen el dominio del problema. El programa se basa en un motor de inferencia que utiliza un proceso llamado unificación para encontrar soluciones a consultas lógicas.

  • La programación lógica se utiliza comúnmente en aplicaciones de inteligencia artificial, procesamiento de lenguaje natural y sistemas expertos.

Retorno de valor

Es la sentencia utilizada para devolver el resultado de la función al punto de llamada. Dependiendo del lenguaje de programación, puede haber una palabra clave específica (como "return") o simplemente la expresión que representa el valor de retorno.

Parámetros/Argumentos

Son los valores de entrada que se pasan a la función al llamarla. Los parámetros son variables locales que se utilizan dentro de la función para realizar cálculos o manipulaciones. Cada parámetro tiene un tipo de dato asociado que define el tipo de valor que se espera recibir.

Programación Funcional

Descripción: Se centra en la evaluación de funciones matemáticas y evita el cambio de estado y la mutabilidad de datos. Se basa en la composición de funciones y la inmutabilidad de los datos. Ejemplos de estilos relacionados: programación lambda, programación puramente funcional.

Booleano (Boolean)

Representa un tipo de dato lógico que puede tener dos valores posibles: verdadero (true) o falso (false). Los booleanos se utilizan para realizar evaluaciones y toma de decisiones en el programa, como en las estructuras de control condicionales.

Estilo de programación

Definición

Es un término que describe convenciones para escribir código fuente en ciertos lenguajes de programación. El estilo de programación es frecuentemente dependiente del lenguaje de programación que se haya elegido para escribir.

Tipo de retorno

Especifica el tipo de dato que la función devuelve como resultado. Puede ser un tipo primitivo, como entero, cadena de texto, booleano, etc., o incluso un tipo de dato más complejo, como una lista, un objeto o una estructura definida por el programador. Al finalizar la ejecución de la función, se debe devolver un valor del tipo especificado como resultado.

Nombre de la función

Es el identificador único que se utiliza para llamar a la función desde otras partes del programa. El nombre debe ser descriptivo y representar el propósito o la acción que realiza la función.

Números enteros (Integer)

Representan valores numéricos enteros sin decimales. En algunos lenguajes de programación, los enteros pueden tener un tamaño específico, como "int" (entero de 32 bits) o "long" (entero de 64 bits). Los enteros se utilizan para realizar operaciones aritméticas básicas como suma, resta, multiplicación y división.