Download Paradigma de Programación - paradigmas

Document related concepts

Programación funcional wikipedia , lookup

Joy (lenguaje de programación) wikipedia , lookup

J (lenguaje de programación) wikipedia , lookup

Iteración wikipedia , lookup

Tipo de dato algebraico wikipedia , lookup

Transcript
Problemas, algoritmos y programas:
 Modelar: Simular o programar su solución en un
computador.
 Algoritmos: Es un conjunto finito, y no ambiguo de
etapas expresadas en un cierto orden que, para unas
condiciones iniciales, permite resolver un problema en
un tiempo finito.
 Refinamiento del algoritmo o refinamiento
progresivo: El objetivo final es describir' una solución
algorítmica al problema inicialmente planteado
mediante el uso de las construcciones formales de un
lenguaje de programación.
 Lenguajes de programación: Permiten expresar
nuestros algoritmos en una notación formal que pueda
ser reconocida y ejecutada por el computador. Dicha
especificación se llama programa.
 Sintaxis: Símbolos y palabras reservadas - Reglas
gramaticales.
 Semántica: Significado a cada tipo de construcción.
 Semántica Operacional:
Define el significado de un lenguaje de programación en
términos de los cambios de estados que producen las
instrucciones primitivas del lenguaje; es decir términos
del efecto producido por la ejecución paso a paso del
mismo. (Ej.: Simplesem)
No describe con igual claridad todo tipo de lenguajes de
programación.
 Semántica Declarativa:
Define unas aplicaciones (funciones) de valoración semántica
que asignan a cada construcción sintáctica un objeto
matemático que modela su significado - Indica qué función
matemática se obtiene a la salida ante unas entradas del
programa.
Ej.: sintaxis que describa números enteros no negativos
Número::={Dígito}
Dígito: := cero │uno│ ... │nueve
(única propiedad
relevante es el valor numérico asociado)
Semántica declarativa en dicho lenguaje
Valor número: número
N
Valor dígito: dígito
N
 Semántica Axiomática:
Asocia a cada construcción del lenguaje un axioma
lógico que relaciona el estado del cómputo (valores que
tienen las variables utilizadas) antes y después de
ejecutar esta construcción.
 1° Lenguaje máquina (muy dificultoso, lento, y muy
específico para cada problema)
 Relación: costo-beneficio o productividad --->
satisfactoria
Se centraban en la utilización económica de un recurso
caro = el tiempo de funcionamiento del computador.
 PROGRAMACIÓN: abandona ámbito estructura de las
máquinas para ser definidos en términos de
formalismos abstractos y más fácilmente tratables.
 PARADIGMAS: Conceptualizaciones genéricas que
reúnen a distintos lenguajes y técnicas empleadas para
escribir programas
 ANTECEDENTE: PARADIGMA IMPERATIVO:
Programa = Instrucción dada a cierto autómata con el
objeto de que éste aplique a la memoria la alteración
deseada.
TIEMPO DE MÁQUINA Vs. TIEMPO HUMANO (hoy
más costoso)
O
Técnicas
Estructuradas
PROBLEMAS
MODULARIZACIÓN
Programación
Estructurada
Sub
Problemas
•
•
•
•
Sub Problemas
Sub Problemas
Sub Problemas
(Hasta que sean
tratable)
Solución De
Problemas
Herramientas
para lograrlo
Evolución de los
mismos
Lenguajes
 Se inspira en el modelo de computador de von
Neumann .
 Concepto de asignación como programa elemental
 Estructuras de control para combinar programas
simples en compuestos .
 La semántica de la asignación es la transformación del
estado de una variable y crean alteración de estados de
memoria .
 DEFICIENCIAS:
 La presencia de la asignación hace que el valor denotado
por una variable es dependiente del lugar del programa
en que ocurre.
 Dificultad semántica alteración de estado de una
memoria que es asignada a los programas.
 Intentos de corrección: Eliminación de formas de
control ej.: "GO TO" construcciones sintácticas de
semántica poco claras.
 NECESIDADES:
Un programa complejo debe ser descompuesto para que:
 El significado de cada parte sea establecido
independientemente
 El significado del conjunto pueda deducirse de los
significados de
sus partes:
Cada sub-expresión es un valor y de
esta el total sin conocer la
sub-expresión como está compuesta
Ej. :
(2 + 𝑋) ∗ (𝑌 + 𝑍 + 𝑋) / (3 + (3 ∗ 𝑌))
 Propiedad de "Trasparencia Referencial" Toda
ocurrencia de una sub-expresión en otra más compleja y
denote siempre el mismo significado.
Ej. : Anterior X en sus dos ocurrencias tendría el
mismo valor
Trasparencia
referencial
esencial
Técnicas de
modularización
En parad.
Imperativos
Subprogramas
Tiende a
Modularizar
si
Colaboran
entre si
Tienen
Variables
globales
eliminan
COMERCIO
Se mantienen
por
transparencia
referencial
PROBLEMA
y
SOLUCIÓN
(Viejo para lógicos y
matemáticos)
funciones
Problema
Entre
conjunto
que deben
ser
definidas
Muy
adecuada
Modulariza
ción
Se basa en el concepto matemático de función.
Una función es una regla de correspondencia que asocia
a cada elemento de un conjunto origen un elemento del
conjunto destino.
define
Problema
Ciertas
Relaciones
sobre
Conjuntos
de Objetos
y
Otras deben
ser
calculadas
mediante
Reglas de
deducción
usa
Lógica
Formal
 Y ambos paradigmas admiten el cálculo de teorías
formales y el sustento de la programación es las
matemáticas y la lógica.
Dominio
F(x)
Aplicación de la
función
Rango
 Construye estructuras de software basada en objetos
(datos) que cada sistema o subsistema manipula, más
que en las funciones que debe cumplir .