Download Nuestra herramienta mental más importante para competir
Document related concepts
Transcript
Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. Por tanto, un problema no deberá considerarse inmediatamente en términos de instrucciones de un lenguaje, sino de elementos naturales del problema mismo, abstraídos de alguna manera. [Niklaus Wirth, Creador del Lenguaje Pascal] ALGORITMO Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares: Conjunto ordenado y finito de pasos que permite hallar la solución de un problema. Una secuencia de pasos que conducen a la realización de una tarea. Descripción exacta de la secuencia en que se ha de realizar un conjunto de actividades tendientes a resolver un determinado tipo de problema o procedimiento. Conjunto de sentencias / instrucciones en lenguaje nativo, los cuales expresan la lógica de un programa. Es un sistema por el cual se llega a una solución, teniendo en cuenta que debe de ser definido, finito y preciso. Toda receta, proceso, rutina, método, procedimiento, técnica, formula que resuelven un determinado problema. Conjunto de instrucciones concretas y detalladas mediante el cual se consigue una acción determinada. Conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas. Descripción precisa de una sucesión de instrucciones que permite llevar a cabo un trabajo en un número finito de pasos. Un conjunto de símbolos y procedimientos usados en la realización de un cálculo. Las definiciones más completas o formales: Esp. Jorge Luis Escobar Secuencia finita de instrucciones, reglas o pasos que describen de forma precisa las operaciones de un ordenador debe realizar para llevar a cabo un tarea en un tiempo más finito. [Donald E. Knuth, 1968] Descripción de un esquema de comportamiento expresado mediante un reportorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y realizables a priori. Este repertorio se denomina léxico [Pierre Scholl, 1988] Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y formulados con base a un conjunto finito de reglas no ambiguas, que proveen un procedimiento para dar la solución o indicar la falta de esta a un problema en un tiempo determinado. [Rodolfo Quispe-Otazu, 2004] Características: Las características fundamentales que debe cumplir todo algoritmo son: Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de interpretación. Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá finalizar al completarlos. Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende. Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programación que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo. Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada más ni nada menos que aquello que se requiera para y en su ejecución. Esp. Jorge Luis Escobar PSEUDOCÓDIGO (Lenguaje intermedio entre nuestro lenguaje y el lenguaje de programación). El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizara para la codificación del mismo. Las principales características de este lenguaje son: Se puede ejecutar en un ordenador Es una forma de representación sencilla de utilizar y de manipular. Facilita el paso del programa al lenguaje de programación. Es independiente del lenguaje de programación que se vaya a utilizar. Es un método que facilita la programación y solución al algoritmo del programa. Todo documento en pseudocódigo debe permitir la descripción de: Instrucciones primitivas Instrucciones de proceso Instrucciones de control Instrucciones compuestas Instrucciones de descripción Estructura a seguir en su realización: Cabecera: Programa: Modulo: Tipos de datos: Esp. Jorge Luis Escobar Constantes: Variables: Cuerpo: Inicio Instrucciones Fin LENGUAJE DE PROGRAMACIÓN Los lenguajes de programación son herramientas que nos permiten crear programas y software. Entre ellos tenemos Delphi, Visual Basic, Pascal, Java, etc.. Una computadora funciona bajo control de un programa el cual debe estar almacenado en la unidad de memoria; tales como el disco duro. Los lenguajes de programación de una computadora en particular se conocen como código de máquinas o lenguaje de máquinas. Estos lenguajes codificados en una computadora específica no podrán ser ejecutados en otra computadora diferente. Para que estos programas funcionen para diferentes computadoras hay que realizar una versión para cada una de ellas, lo que implica el aumento del costo de desarrollo. Por otra parte, los lenguajes de programación en código de máquina son verdaderamente difíciles de entender para una persona, ya que están compuestos de códigos numéricos sin sentido nemotécnico. Los lenguajes de programación facilitan la tarea de programación, ya que disponen de Esp. Jorge Luis Escobar formas adecuadas que permiten ser leídas y escritas por personas, a su vez resultan independientes del modelo de computador a utilizar. Los lenguajes de programación representan en forma simbólica y en manera de un texto los códigos que podrán ser leídos por una persona. Los lenguajes de programación son independientes de las computadoras a utilizar. Existen estrategias que permiten ejecutar en una computadora un programa realizado en un lenguaje de programación simbólico. Los procesadores del lenguaje son los programas que permiten el tratamiento de la información en forma de texto, representada en los lenguajes de programación simbólicos. Hay lenguajes de programación que utilizan compilador. La ejecución de un programa con compilador requiere de dos etapas: 1) Traducir el programa simbólico a código máquina 2) Ejecución y procesamiento de los datos. Otros lenguajes de programación utilizan un programa intérprete o traductor, el cual analiza directamente la descripción simbólica del programa fuente y realiza las instrucciones dadas. El intérprete en los lenguajes de programación simula una máquina virtual, donde el lenguaje de máquina es similar al lenguaje fuente. La ventaja del proceso interprete es que no necesita de dos fases para ejecutar el programa, sin embargo su inconveniente es que la velocidad de ejecución es más lenta ya que debe analizar e interpretar las instrucciones contenidas en el programa fuente. Esp. Jorge Luis Escobar Esp. Jorge Luis Escobar