Download Paradigma de Programación - paradigmas
Document related concepts
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 .