Download Conceptos Fundamentales

Document related concepts

Programación funcional wikipedia , lookup

F Sharp wikipedia , lookup

Evaluación de cortocircuito wikipedia , lookup

Expresión S wikipedia , lookup

Lisp wikipedia , lookup

Transcript
Conceptos Fundamentales
Programación Lógica y Funcional
MTI. Eduardo Cruz Romero
www.tics-tlapa.com
Estilos de Programación (1/3)

Estilo de programación (también llamado estándares de
código o convención de código) 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. Por ejemplo el estilo del lenguaje de
programación C variará con respecto al del lenguaje
BASIC.
Estilos de Programación (2/3)

El buen estilo, al tratarse de algo subjetivo, es difícil de
categorizar concretamente; con todo, existen un número de
características generales. Con el advenimiento de software
que da formato al código fuente de forma automática, el
foco en cómo éste debe de ser escrito debe evolucionar de
forma más amplia a la elección de nombres, lógica y otras
técnicas. Desde un punto de vista práctico, el uso de un
computador para dar formato al código fuente ahorra
tiempo, y es posible forzar el uso de estándares a nivel de
una compañía completa sin debates religiosos.
Estilos de Programación (3/3)

Estilo K&R es el más utilizado en el lenguaje C y PHP, el estilo
fue llamado de esta forma porque fue usado por Kernighan y
Ritchies en su libro The C Programming Lenguage.

Estilo Allman fue definido por Eric Allman, se trata de crear una
nueva línea para las llaves, e identificar el código debajo de
ellas.

Estilo BSD KNF también conocido como estilo Kernel Normal
From, es la manera más usada para el código de la distribución
del software del sistema operativo de Berkeley.

Estilo Whitesmiths también llamado estilo wishart, se coloca las
llaves asociadas con la instrucciones de control.
Evaluación de Expresiones (1/6)

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. 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.
Evaluación de Expresiones (2/6)

Programación Funcional: es un estilo de programación
que enfatiza la evaluación de expresiones, en lugar de la
ejecución de comandos. Las expresiones en estos
lenguajes se forman utilizando funciones para combinar
valores básicos.

Lenguaje Funcional: es un lenguaje que soporta e
incentiva la programación en un estilo funcional.
Evaluación de Expresiones (3/6)
¿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.
Evaluación de Expresiones (4/6)
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 (5/6)
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.
Evaluación de Expresiones (6/6)

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.
Definición de Funciones (1/5)

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.
Definición de Funciones (2/5)

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.
Definición de Funciones (3/5)

Cuando escribas un nuevo programa o biblioteca, sigue un
estilo consistente de ubicación de llaves y de indentación.
Si no tienes ninguna preferencia personal de estilo,
recomendamos el estilo de programación del núcleo de
Linux o el estilo de programación de GNU. Lee el nodo de
info (Standards)Writing C en la documentación de GNU.
Luego, obtén el código fuente de Linux y lee el archivo
linux/Documentation/CodingStyle, e ignora los chistes de
Linus. Estos dos documentos te darán una buena idea de
nuestras recomendaciones para el código de GNOME.
Definición de Funciones (4/5)

Para el código del núcleo de GNOME preferimos el estilo
de indentación del núcleo de Linux. Usa tabuladores de 8
espacios para la indentación. Usar tabuladores de 8
espacios para indentación proporciona un número de
beneficios. Permite que el código sea más fácil de leer, ya
que la indentación se marca claramente. También ayuda a
mantener el código ordenado forzando a dividir funciones
en trozos más modulares y bien definidos — si la
indentación va más allá del margen derecho, significa que
la función está mal diseñada y que debiera dividirse para
hacerla más modular o bien, repensarla.
Definición de Funciones (5/5)

Los tabuladores de 8 espacios para indentación también
ayudan al diseño de funciones que encajen bien en la
pantalla, lo cual significa que las personas puedan
entender el código sin tener que desplazarse atrás y
adelante para entenderlo.
Disciplina de Tipos (1/5)

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).
Disciplina de Tipos (2/5)

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 de Tipos (3/5)

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.
Disciplina de Tipos (4/5)

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.
Disciplina de Tipos (5/5)

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.
Tipos de Datos (1/2)

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.
Tipos de Datos (2/2)

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.
Referencias Bibliográficas

http://www.itpn.mx/recursosisc/8semestre/programacionlogicayfuncional/Unidad%20I.pdf

http://karlaprogramacionfuncional.blogspot.mx/2014/02/unidad-1-conceptos-fundamentales.html

https://programacionlogicayfuncional.wordpress.com/2014/02/12/evaluacion-de-expresiones/

http://tics-tlapa.com/wp/2016/01/paradigmas-de-programacion/