Niklaus Wirth es el inventor de los lenguajes de programación Pascal, Modula-2 y Oberon. Por el desarrollo de estas lenguas, recibió el Premio Turing. Estudió en el Politécnico de Zurich, Quebec y Berkeley. De 1963 a 1967 fue Profesor Asociado en la Universidad de Stanford en California. De 1968 a 1999 fue profesor de informática en el Politécnico de Zúrich. Wirth también es conocido por la publicación del artículo Program Development by Stepwise Refinement, considerado un clásico de la ingeniería de software. Es autor del libro algoritmos + estructuras de datos = programas, publicado por Prentice Hall en febrero de 1976 con el ISBN 0 - 13 - 022418 - 9 y publicado en Italia Por New Techniques en 1987 con el título Algorithms + Data Structures = Programs, ISBN 88 - 7081 - 259 - 6. Es un texto en el que se han formado generaciones enteras de científicos de la computación y que todavía se utilizan hoy en día. El paradigma expuesto en él, la separación entre las estructuras de datos y la parte algorítmica, un clásico de la ingeniería de software, ha sido parcialmente abrumado por la Programación Orientada a objetos.
Algoritmos y Estructuras de Datos Niklaus Wirth 67
Cabe destacar que el almacenamiento y procesamiento de todos los datos es realizado en memoria RAM, en un segmento destinado a ello (DS), por ello, es importante conocer los métodos de asignación de memoria utilizados para su almacenamiento. Por un lado, se tiene la asignación estática de memoria en donde se reserva la cantidad necesaria para almacenar los datos de cada estructura en tiempo de compilación. Esto ocurre cuando el compilador convierte el código fuente (escrito en algún lenguaje de alto nivel) a código objeto y solicita al S.O. la cantidad de memoria necesaria para manejar las estructuras que el programador utilizó, quien según ciertos algoritmos de asignación de memoria, busca un bloque que satisfaga los requerimientos de su cliente. Por otro lado se tiene la asignación dinámica en donde la reserva de memoria se produce durante la ejecución del programa (tiempo de ejecución). Para ello, el lenguaje Pascal cuenta con dos procedimientos: NEW() y DISPOSE() quienes realizan llamadas al S.O. solicitándole un servicio en tiempos de ejecución. El procedimiento NEW ,por su parte, solicita reserva de un espacio de memoria y DISPOSE la liberación de la memoria reservada a través de una variable especial que direccionará el bloque asignado o liberado según sea el caso.
Estos nodos de memoria son la base para la construcción de estructuras de datos dinámicas que, como ya recordarán, son aquellas para las cuales no se asigna inmediatamente memoria, en lugar de ello, se utiliza el concepto de asignación dinámica a través de procedimientos incorporados al lenguaje. Así, el campo enlace mostrado en la gráfica direccionará a otro nodo que contiene a su vez información relacionada a un nuevo automóvil y así sucesivamente.
Ordenamiento Interno: Es aquel que ocurre sobre estructuras de datos residentes en memoria principal. Entre otros se tiene al de Inserción directa, Selección directa, Shell Sort, Bubble Sort, Quick Sort, Merge Sort, Heap Sort.
2ff7e9595c
Commentaires