Unidad 1 Programacion Logica y Funcional

Descargar como rtf, pdf o txt
Descargar como rtf, pdf o txt
Está en la página 1de 19

Estilos de programacin

Le llamamos estilo de programacin a la forma en la que estructuramos nuestro cdigo


desde el punto de vista funcional y de sintaxis.
A la hora de desarrollar software es de vital importancia contar con un buen estilo de
programacin. Cuando un desarrollador cuenta con un buen estilo es mas fcil para
otros colaboradores que manipular el cdigo escrito ya que el tiempo de comprencin
de cdigo es mas rpida.

1.2. Evaluacin de expresiones


Una expresin es una combinacin de operadores y operandos de cuya
evaluacin 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 ms simples. La
evaluacin de una expresin da lugar a un valor de algn tipo, una expresin
se dice que es del tipo de su resultado. Ejemplos de expresiones:
a + 5*b
(a >= 0) and ((b+5) > 10)
a
-a * 2 + b
-b + sqrt(b**2 - 4*a*c)
length(s) > 0

Las expresiones se evalan de acuerdo con la precedencia de los operadores.


Ante una secuencia de operadores de igual precedencia, la evaluacin se
realiza segn el orden de escritura, de izquierda a derecha. El orden de
evaluacin puede modificarse usando parntesis.
1.3
Las declaraciones de funciones generalmente son especificadas por:
Un nombre nico en el mbito: Nombre de la funcin con el que se identifica
y se distingue de otras. No podr haber otra funcin ni procedimiento con ese
nombre (salvo sobrecarga o polimorfismo en programacin orientada a
objetos).
Un tipo de dato de retorno: tipo de dato del valor que la funcin devolver al
terminar su ejecucin.
Una lista de parmetros: Especificacin del conjunto de argumentos (pueden
ser cero, uno o ms) que la funcin debe recibir para realizar su tarea.
El cdigo u rdenes de procesamiento: conjunto de rdenes y sentencias que

debe ejecutar la funcin.

1.4
En los lenguajes de programacin con disciplina de tipos, cada tipo representa una
coleccin de valores o datos similares. El conocer los tipos de las funciones ayuda a
documentar los programas y evitar errores en tiempo de ejecucin.
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 compilacin o
de ejecucin

Tipos de datos.

Tipo de dato
Especificacin de un dominio (rango de valores) y de un conjunto
vlido de operaciones a los que normalmente los traductores
asocian un esquema de representacin interna propio.
Clasificacin de los tipos de datos
En funcin de quin los define:
Tipos de datos estndar
Tipos de datos definidos por el usuario
En funcin de su representacin interna:
Tipos de datos escalares o simples
Tipos de datos estructurados

UNIDAD 1: CONCEPTOS FUNDAMENTALES


TEMARIO
1.1. Estilos de
programacin.
1.2. Evaluacin de
expresiones.
1.3. Definicin de
funciones.
1.4. Disciplina de tipos.
1.5. Tipos de datos

1.1 ESTILOS DE PROGRAMACIN


Estilo de programacin (tambin llamado estndares de
cdigo o convencin de cdigo) es un trmino que describe
convenciones para escribir cdigo fuente en ciertos lenguajes de
programacin.
El estilo de programacin es frecuentemente dependiente del
lenguaje de programacin que se haya elegido para escribir. Por
ejemplo el estilo del lenguaje de programacin C variar con
respecto al del lenguaje BASIC.

Estilo K&R es el ms 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 lnea para las llaves, e identificar el cdigo debajo de
ellas.

Estilo BSD KNF tambin conocido como estilo Kernel


Normal From, es la manera ms usada para el cdigo de la
distribucin del software del sistema operativo de Berkeley.

Estilo Whitesmiths tambin llamado estilo wishart, se coloca


las llaves asociadas con la instrucciones de control.

1.2 EVALUACIN DE EXPRESIONES

Una expresin es una combinacin de operandos y


operadores. La evaluacin de una expresin consiste en reducirla,
esto es, realizar todas las operaciones contenidas en ella para
obtener un valor final.
Para evaluar una expresin es necesario conocer la prioridad
de los operadores, con lo cual se puede determinar cul operacin
se va a realizar antes que las dems.

Una expresin entre parntesis se evala primero que las


dems. Si hay parntesis se evala primero la expresin contenida
en los parntesis ms internos....

1.3 DEFINICIN DE FUNCIONES


Las funciones se crearon para evitar tener que repetir
constantemente fragmentos de cdigo. Una funcin podra
considerarse como una variable que encierra cdigo dentro de s.
Por lo tanto cuando accedemos a dicha variable (la funcin) en
realidad lo que estamos es diciendo al programa que ejecute un
determinado cdigo predefinido anteriormente.
Todos los lenguajes de programacin tienen algunos
elementos de formacin primitivos para la descripcin de los datos
y de los procesos o transformaciones aplicadas a estos datos (tal
como la suma de dos nmeros o la seleccin de un elemento que
forma parte de una coleccin). Estos elementos primitivos son

definidos por reglas sintcticas y semnticas que describen su


estructura y significado respectivamente.

1.4 DISCIPLINA DE DATOS

DISCIPLINA: Es la coordinacin de actitudes con las


cuales se instruye para desarrollar habilidades, o para seguir un
determinado cdigo de conducta u "orden". Un ejemplo es la
enseanza de una materia, ciencia o tcnica, especialmente la que
se ensea en un centro (Docente asignatura).
En los lenguajes de programacin con disciplina de tipos,
cada tipo representa una coleccin de valores (datos) similares.
Una funcin cuyo tipo sea A1 -> ... An -> espera n parmetros 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 ejecucin.

Disciplina esttica de tipos: Los programas bien tipados se


pueden reconocer en tiempo de compilacin, un programa bien
tipado se puede utilizar sin efectuar comprobaciones de tipo en
tiempo de ejecucin. Estando garantizado que no se producirn
errores de tipo durante el cmputo.

1.5 TIPOS DE DATOS

Tipos de Datos En lenguajes de programacin 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 programacin explcitamente
incluyen la notacin del tipo de datos, aunque lenguajes diferentes
pueden usar terminologa diferente. La mayor parte de los
lenguajes de programacin permiten al programador definir tipos
de datos adicionales, normalmente combinando mltiples
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.

DIFERENTES TIPOS DE PARADIGMAS DE


PROGRAMACIN
Un paradigma de programacin es una propuesta tecnolgica
que es adoptada por una comunidad de programadores cuyo ncleo

central es incuestionable en cuanto a que unvocamente trata de


resolver uno o varios problemas claramente delimitados. La
resolucin de estos problemas debe suponer consecuentemente un
avance significativo en al menos un parmetro que afecte a la
ingeniera de software. Tiene una estrecha relacin con la
formalizacin de determinados lenguajes en su momento de
definicin. Un paradigma de programacin est delimitado en el
tiempo en cuanto a aceptacin y uso ya que nuevos paradigmas
aportan nuevas o mejores soluciones que la sustituyen parcial o
totalmente.
Por ejemplo:
Probablemente el paradigma de programacin que
actualmente es el ms usado a todos los niveles es la orientacin a
objeto. El ncleo central de este paradigma es la unin de datos y
procesamiento en una entidad llamada "objeto", relacionable a su
vez con otras entidades "objeto".
Tradicionalmente datos y procesamiento se han separado en
reas diferente del diseo y la implementacin de software. Esto
provoc que grandes desarrollos tuvieran problemas de fiabilidad,
mantenimiento, adaptacin a los cambios y escalabilidad. Con la
orientacin a objetos y caractersticas como el encapsulado,
polimorfismo o la herencia se permiti un avance significativo en
el desarrollo de software a cualquier escala de produccin.
La orientacin a objeto parece estar ligado en sus orgenes
con lenguajes como Lisp y Simula aunque el primero que acuo el
ttulo de programacin orientada a objetos fue Smaltalk

Tipos de paradigmas de programacin

Programacin Imperativa
La programacin imperativa, en contraposicin a la
programacin declarativa es un paradigma de programacin que
describe la programacin en trminos del estado del programa y
sentencias que cambian dicho estado. Los programas imperativos
son un conjunto de instrucciones que le indican al computador
cmo realizar una tarea.
La implementacin de hardware de la mayora de
computadores es imperativa; prcticamente todo el hardware de los
computadores est diseado para ejecutar cdigo de mquina, 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 Mquinas 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
mquina nativo del computador (por ejemplo el lenguaje
ensamblador).
Los lenguajes imperativos de alto nivel usan variables y
sentencias ms complejas, pero an siguen el mismo paradigma.
Las recetas y las listas de revisin de procesos, a pesar de no ser
programas de computadora, son tambin conceptos familiares
similares en estilo a la programacin imperativa; cada paso es una
instruccin, y el mundo fsico guarda el estado (Zoom).
Los primeros lenguajes imperativos fueron los lenguajes
de mquina de los computadores originales. En estos lenguajes, las
instrucciones fueron muy simples, lo cual hizo la implementacin
de hardware fcil, pero obstruyendo la creacin de programas
complejos. Fortran, cuyo desarrollo fue iniciado en 1954 por John
Backus en IBM, fue el primer gran lenguaje de programacin en
superar los obstculos presentados por el cdigo de mquina en la

creacin de programas complejos.


Programacin lgica
La programacin lgica consiste en la aplicacin del corpus
de conocimiento sobre lgica para el diseo de lenguajes de
programacin; no debe confundirse con la disciplina de la lgica
computacional.
La programacin lgica es un tipo de paradigmas de
programacin dentro del paradigma de programacin declarativa.
El resto de los subparadigmas de programacin dentro de la
programacin declarativa son: programacin funcional,
programacin basada en restricciones, programas DSL (de dominio
especfico) e hbridos. La programacin lgica gira en torno al
concepto de predicado, o relacin entre elementos. La
programacin funcional se basa en el concepto de funcin (que no
es ms que una evolucin de los predicados), de corte ms
matemtico.
Programacin funcional
En ciencias de la computacin, la programacin
funcional es un paradigma de programacin declarativa basado en
la utilizacin de funciones aritmticas que no maneja datos
mutables o de estado. Enfatiza la aplicacin de funciones, en
contraste con el estilo de programacin imperativa, que enfatiza los
cambios de estado. La programacin funcional tiene sus races en
el clculo lambda, un sistema formal desarrollado en los 1930s
para investigar la definicin de funcin, la aplicacin de las
funciones y la recursin. Muchos lenguajes de programacin
funcionales pueden ser vistos como elaboraciones del clculo

lambda.
Los lenguajes de programacin funcional,
especialmente los que son puramente funcionales, han sido
enfatizados en el ambiente acadmico principalmente y no tanto en
el desarrollo de software comercial. Sin embargo, lenguajes de
programacin importantes tales como Scheme, Erlang, Objective
Caml y Haskel, han sido utilizados en aplicaciones comerciales e
industriales por muchas organizaciones. La programacin
funcional tambin es utilizada en la industria a travs de lenguajes
de dominio especfico como R (estadstica), Mathematica
(matemticas simblicas), J y K (anlisis financiero), F# en
Microsoft.NET y XSLT (XML). Lenguajes de uso especfico
usados comnmente como SQL y Lex/Yacc, utilizan algunos
elementos de programacin funcional, especialmente al procesar
valores mutables. Las hojas de clculo tambin pueden ser
consideradas lenguajes de programacin funcional.
La programacin funcional tambin puede ser
desarrollada en lenguajes que no estn diseados especficamente
para la programacin funcional. En el caso de Perl, por ejemplo,
que es un lenguaje de programacin imperativo, existe un libro que
describe cmo aplicar conceptos de programacin funcional.
JavaScript, uno de los lenguajes ms ampliamente utilizados en la
actualidad, tambin incorpora capacidades de programacin
funcional.
Programacin declarativa
La Programacin Declarativa, es un paradigma de
programacin 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 solucin.

La solucin es obtenida mediante mecanismos internos de control,


sin especificar exactamente cmo encontrarla (tan slo 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
Programacin estructurada
La programacin estructurada es una forma de escribir
programas de ordenador (programacin de computadora) de
manera clara. Para ello utiliza nicamente tres estructuras:
secuencia, seleccin e iteracin; siendo innecesario el uso de la
instruccin o instrucciones de transferencia incondicional (GOTO,
EXIT FUNCTION, EXIT SUB o mltiples RETURN).
Programacin dirigida por eventos
La programacin dirigida por eventos es un paradigma de
programacin en el que tanto la estructura como la ejecucin 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 programacin dirigida por eventos, podemos
oponerla a lo que no es: mientras en la programacin secuencial (o
estructurada) es el programador el que define cul va a ser el flujo
del programa, en la programacin 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 programacin
secuencial puede haber intervencin de un agente externo al
programa, estas intervenciones ocurrirn cuando el programador lo
haya determinado, y no en cualquier momento como puede ser en
el caso de la programacin dirigida por eventos.

El creador de un programa dirigido por eventos debe definir


los eventos que manejarn su programa y las acciones que se
realizarn al producirse cada uno de ellos, lo que se conoce como
el administrador de evento. Los eventos soportados estarn
determinados por el lenguaje de programacin utilizado, por el
sistema operativo e incluso por eventos creados por el mismo
programador.
En la programacin dirigida por eventos, al comenzar la
ejecucin del programa se llevarn a cabo las inicializaciones y
dems cdigo inicial y a continuacin el programa quedar
bloqueado hasta que se produzca algn evento. Cuando alguno de
los eventos esperados por el programa tenga lugar, el programa
pasar a ejecutar el cdigo del correspondiente administrador de
evento. Por ejemplo, si el evento consiste en que el usuario ha
hecho click en el botn de play de un reproductor de pelculas, se
ejecutar el cdigo del administrador de evento, que ser el que
haga que la pelcula se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de
programacin Lxico y Visual Basic, en los que a cada elemento
del programa (objetos, controles, etctera) se le asignan una serie
de eventos que generar dicho elemento, como la pulsacin de un
botn del ratn sobre l o el redibujado del control.
La programacin dirigida por eventos es la base de lo que
llamamos interfaz de usuario, aunque puede emplearse para
desarrollar interfaces entre componentes de Software como
mdulos del ncleo tambin.
En los primeros tiempos de la computacin, los programas
eran secuenciales, tambin llamados Batch. Un programa
secuencial arranca, lee parmetros de entrada, procesa estos
parmetros, y produce un resultado, todo de manera lineal y sin
intervencin del usuario mientras se ejecuta.
Con la aparicin y popularizacin de los pc, el software

empez a ser demandado para usos alejados de los clsicos


acadmicos y empresariales para los cuales era necesitado hasta
entonces, y qued patente que el paradigma clsico de
programacin no poda responder a las nuevas necesidades de
interaccin con el usuario que surgieron a raz de este hecho...
Programacin modular
La programacin modular es un paradigma de programacin
que consiste en dividir un programa en mdulos o subprogramas
con el fin de hacerlo ms legible y manejable.
Se presenta histricamente como una evolucin de la
programacin estructurada para solucionar problemas de
programacin ms grandes y complejos de lo que sta puede
resolver.
Al aplicar la programacin modular, un problema complejo
debe ser dividido en varios subproblemas ms simples, y estos a su
vez en otros subproblemas ms simples. Esto debe hacerse hasta
obtener subproblemas lo suficientemente simples como para poder
ser resueltos fcilmente con algn lenguaje de programacin. sta
tcnica se llama refinamiento sucesivo, divide y vencers anlisis
descendente (Top-Down).

Un mdulo 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 mdulos tiene una tarea bien
definida y algunos necesitan de otros para poder operar. En caso de
que un mdulo necesite de otro, puede comunicarse con ste
mediante una interfaz de comunicacin que tambin debe estar
bien definida.
Si bien un mdulo puede entenderse como una parte
de un programa en cualquiera de sus formas y variados contextos,

en la prctica es comn representarlos con procedimientos y


funciones. Adicionalmente, tambin pueden considerarse mdulos
las libreras que pueden incluirse en un programa o, en
programacin orientada a objetos, la implementacin de un tipo de
dato abstracto.
Programacin orientada a objetos
La programacin orientada a objetos o POO (OOP segn sus
siglas en ingls) es un paradigma de programacin que usa objetos
y sus interacciones, para disear aplicaciones y programas
informticos. Est basado en varias tcnicas, incluyendo herencia,
abstraccin, polimorfismo y encapsulamiento. Su uso se
populariz a principios de la dcada de los aos 1990. En la
actualidad, existe variedad de lenguajes de programacin que
soportan la orientacin a objetos.
Programacin con restricciones
La Programacin con restricciones es un paradigma de la
programacin en informtica, donde las relaciones entre las
variables son expresadas en trminos de restricciones (ecuaciones).
Actualmente es usada como una tecnologa de software para la
descripcin y resolucin de problemas combinatorios
particularmente difciles, especialmente en las reas de
planificacin y programacin de tareas (calendarizacin).
Este paradigma representa uno de los desarrollos ms
fascinantes en los lenguajes de programacin desde 1990 y no es
sorprendente que recientemente haya sido identificada por la ACM
(Asociacin de Maquinaria Computacional) como una direccin
estratgica en la investigacin en computacin.

Se trata de un paradigma de programacin basado en la


especificacin de un conjunto de restricciones, las cuales deben ser
satisfechas por cualquier solucin del problema planteado, en lugar
de especificar los pasos para obtener dicha solucin.
La programacin con restricciones se relaciona mucho con la
programacin lgica y con la investigacin operativa. De hecho
cualquier programa lgico puede ser traducido en un programa con
restricciones y viceversa. Muchas veces los programas lgicos son
traducidos a programas con restricciones debido a que la solucin
es ms eficiente que su contraparte.
La diferencia entre ambos radica principalmente en sus
estilos y enfoques en el modelado del mundo. Para ciertos
problemas es ms natural (y por ende ms simple) escribirlos como
programas lgicos, mientras que en otros es ms natural escribirlos
como programas con restricciones.
El enfoque de la programacin con restricciones se basa
principalmente en buscar un estado en el cual una gran cantidad de
restricciones sean satisfechas simultneamente. Un problema se
define tpicamente como un estado de la realidad en el cual existe
un nmero de variables con valor desconocido. Un programa
basado en restricciones busca dichos valores para todas las
variables.
Algunos dominios de aplicacin de este paradigma son:

Dominios booleanos, donde solo existen restricciones


del tipo verdadero/falso.

Dominios en variables enteras y racionales.

Dominios lineales, donde slo se describen y analizan


funciones lineales.

Dominios finitos, donde las restricciones son definidas


en conjuntos finitos.

Dominios mixtos, los cuales involucran dos o ms de

los anteriores.
Programacin orientada a componentes
La programacin orientada a componentes (que tambin es
llamada basada en componentes) es una rama de la ingeniera del
software, con nfasis en la descomposicin de sistemas ya
conformados en componentes funcionales o lgicos con interfaces
bien definidas usadas para la comunicacin entre componentes.
Se considera que el nivel de abstraccin de los componentes
es ms alto que el de los objetos y por lo tanto no comparten un
estado y se comunican intercambiando mensajes que contienen
datos.
Programacin Orientada a Aspectos
La Programacin Orientada a Aspectos (POA) es un
paradigma de programacin relativamente reciente cuya intencin
es permitir una adecuada modularizacin de las aplicaciones y
posibilitar una mejor separacin de incumbencias. Gracias a la
POA se pueden encapsular los diferentes conceptos que componen
una aplicacin en entidades bien definidas, eliminando las
dependencias entre cada uno de los mdulos. De esta forma se
consigue razonar mejor sobre los conceptos, se elimina la
dispersin del cdigo y las implementaciones resultan ms
comprensibles, adaptables y reusables. Varias tecnologas con
nombres diferentes se encaminan a la consecucin de los mismos
objetivos y as, el trmino POA es usado para referirse a varias
tecnologas relacionadas como los mtodos adaptativos, los filtros
de composicin, la programacin orientada a sujetos o la
separacin multidimensional de competencias.

TAREA: MAPA CONCEPTUAL

Publicadas por Karla Ortega a la/s 8:07 p. m.


Enviar esto por correo electrnico
BlogThis!
Compartir en Twitter
Compartir en Facebook
Compartir en Pinterest
No hay comentarios.:

https://www.academia.edu/6553813/Unidad_1_Prog_Log_y_
Funcional

http://karlaprogramacionfuncional.blogspot.mx/2014/02/unid
ad-1-conceptos-fundamentales.html
https://es.scribd.com/doc/273112849/Resumen-Unidad-1Programacion-logica-y-funcional

También podría gustarte