PLF - Unidad 1
PLF - Unidad 1
PLF - Unidad 1
Cada lenguaje de programacin es una creacin y como tal ha sido cuidadosamente diseado.
Algunos lenguajes han sido diseados por personas nicas, como por ejemplo Pascal. Otros, han sido
diseados por un grupo grande de personas, tales como PL/l y Ada. La experiencia sugiere que
aquellos lenguajes diseados por personas nicas o grupos pequeos, tienden a ser ms compactos y
coherentes que aquellos lenguajes diseados por grandes grupos.
Un lenguaje de programacin, digno de su nombre, debe reunir ciertos requisitos.
El lenguaje de programacin debe ser universal. Es decir, cualquier problema debe tener una solucin
que puede ser programada en el lenguaje y dicha solucin ser implementada en cualquier computador.
Este requisito es uno de los ms fuertes y pocos lenguajes lo poseen. Se dice que cualquier lenguaje
en el cual pueden definirse funciones recursivas se considera universal. De otro lado, un lenguaje sin
recursin ni iteracin no puede ser universal. Existen ciertos lenguajes de aplicacin que no son
universales, pero s podran ser razonablemente descritos as mismos, como lenguajes de
programacin.
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.
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).
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.
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.
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.
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.
Son el mtodo fundamental que tiene el programador de expresar computaciones. Las expresiones
estn compuestas de operadores, operandos, parntesis 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.
Orden de la evaluacin de los operadores.
El orden en que se evalan los operandos viene dado por unas reglas:
Reglas de procedencia
Reglas de asociatividad
Uso de parntesis
Evaluacin de expresiones
Toda expresin regresa un valor. Si hay ms de un operador, se evalan primero operadores mayor
precedencia, en caso de empate, se aplica regla de asociatividad. Para evaluar una expresin no hay
que hacer nada del otro mundo, pues es bien sencillo. Slo hay que saber sumar, restar, si un nmero
es mayor que otro. Hay tres reglas de prioridad a seguir para evaluar una expresin:
Primero, los parntesis (si tiene)
Despus, seguir el orden de prioridad de operadores
Por ltimo, si aparecen dos o ms operadores iguales, se evalan de izquierda a derecha.
Las expresiones son secuencias de constantes y/o variables separadas por operadores vlidos. Se
puede construir una expresin vlida por medio de:
1. Una sola constante o variable, la cual puede estar precedida por un signo + .
2. Una secuencia de trminos (constantes, variables, funciones) separados por operadores.
Adems debe considerarse que:
Toda variable utilizada en una expresin debe tener un valor almacenado para que la
expresin, al ser evaluada, d como resultado un valor.
Cualquier constante o variable puede ser reemplazada por una llamada a una funcin.
Como en las expresiones matemticas, una expresin en Pascal se evala de acuerdo a la
precedencia de operadores
JERARQUA DE OPERADORES
El orden general de evaluacin de los operadores de una expresin va de izquierda a derecha, con la
excepcin de las asignaciones que lo hacen de derecha a izquierda. Podemos seguir las siguientes tres
reglas de evaluacin de expresiones:
(Regla 1) En todas las expresiones se evalan primero las expresiones de los parntesis ms
anidados (interiores unos a otros); y stos modifican la prioridad segn la cantidad de stos,
los cuales tienen que estar balanceados (el mismo nmero de parntesis que abren debe ser
igual al nmero de los parntesis que cierran).
(Regla 2) Todas las expresiones se evalan tomando en cuenta la jerarqua de los operadores.
(Regla 3) Todas las expresiones se evalan de izquierda a derecha.
Fin