La programación estructurada se puede considerar como subconjunto o subdisciplina programado procesal, uno de los paradigmas programados importante es la más famosa por quitar o reducir confianza en la declaración INDICADA .

Históricamente, varias diversas técnicas o metodologías de estructuración se han desarrollado para los programas estructurados escritura. El mas comunes son:

programación estructurada de s de Dijkstra ', donde está una estructura la lógica de un programa integrada por subestructuras similares en un número limitado de maneras. Esto reduce el entender de un programa a entender cada estructura en sus los propios, y en lo referente a eso que la contiene, una separación útil de las preocupaciones .

  • Una visión derivó de Dijkstra que también aboga programas que parten en las subdivisiones con un monopunto de la entrada, pero se opone fuerte al concepto de un monopunto de la salida.
  • La programación estructurada, que de datos se basa en las estructuras de datos que alinean con las estructuras del programa este acercamiento aplicó las estructuras fundamentales propuso por Dijkstra, pero como construcciones que utilizaron la estructura de alto nivel de un programa que se modelará en las estructuras de datos subyacentes que eran procesadas. Hay por lo menos 3 acercamientos importantes al diseño de programa estructurado los datos propuesto por el Jean-Dominique Warnier, el Michael A. Jackson, y el Ken Orr .

    Los dos 3ultimos significados para el " del término; programming" estructurado; ser más común, y eso es lo que discutirá este artículo. Los años después Dijkstra ( 1969 ), programación orientada al objeto (OOP) fueron desarrollados para manejar programas muy grandes o complejos (véase abajo: comparación orientada al objeto ).

    Estructura baja

    En programas bajos, estructurados se componen a menudo de las estructuras simples, jerárquicas del flujo de programa. Éstas son encadenamiento, selección, y repetición:
    " del

    ; Concatenation" refiere a una secuencia de declaraciones ejecutadas en orden.


  • en " selection" una de un número de declaraciones se ejecuta dependiendo del estado del programa. Esto se expresa generalmente con palabras claves tales como if.endif, switch, o case.

    en " repetition" se ejecuta una declaración hasta que el programa alcance cierto estado o las operaciones se aplican a cada elemento de una colección. Esto se expresa generalmente con palabras claves tales como while, repeat, for o do. Se recomienda a menudo que cada lazo debe solamente tener un punto de entrada (y en la programación estructural original, también solamente un punto de salida), y algunas idiomas hacen cumplir esto.

    Algunas idiomas, tales como lengua de mando guardada original de s de Dijkstra ', acentúan la unidad de estas estructuras con un sintaxis que incluya totalmente la estructura, como en el if. En otros, tales como C, éste no está el caso, que aumenta el riesgo de malentendido y de modificación incorrecta.

    Una lengua se describe como " bloquear-structured" cuando hace un sintaxis para incluir las estructuras entre las palabras claves acorchetadas, tales como una si-declaración acorchetada por el if.fi, o una sección del código acorchetar por el BEGIN.END, como en el PL/I . Sin embargo, una lengua se describe como " peine-structured" cuando tiene un sintaxis para incluir las estructuras dentro de una serie pedida de palabras claves. Un " peine-structured" la lengua tiene palabras claves múltiples de la estructura para definir secciones separadas dentro de un bloque, análogo a los dientes o a los dientes múltiples en un peine que separa las secciones del peine. Por ejemplo, en Ada, un bloque es un peine pinchado 4 con las palabras claves DECLARE, BEGIN, EXCEPTION, END, y la si-declaración en el Ada es un peine pinchado 4 con las palabras claves IF, THEN, ELSE, END IF.

    Diseño

    La programación estructurada se asocia a menudo (pero no siempre) a un " tapa-down" acercamiento para diseñar .

    Lenguajes de programación estructurados

    Es posible hacer la programación estructurada en cualquier lenguaje de programación, aunque es preferible utilizar algo como un lenguaje de programación procesal. Puesto que sobre el 1970 cuando la programación estructurada comenzó a ganar renombre como técnica, la mayoría de los nuevos lenguajes de programación procesales han incluido características para animar la programación estructurada (y haber dejado a veces hacia fuera las características que harían la programación no estructurada fácil). Algunos de los lenguajes de programación estructurados más conocidos son Pascal, el C, el PL/I, y Ada .

    Historia

    Fundación teórica

    El teorema estructurado del programa proporciona la base teórica de la programación estructurada. Indica que tres maneras de combinar el programs— secuencia, selección, e iteration— ser suficiente expresar cualquier función computable . Esta observación no originó con el movimiento de la programación estructurada; estas estructuras son suficientes describir el ciclo de instrucción de una unidad central de proceso, tan bien como la operación de una máquina de Turing. Por lo tanto un procesador está ejecutando siempre un " program" estructurado; en este sentido, incluso si las instrucciones que lee en memoria no es la parte de un programa estructurado. Sin embargo, los autores acreditan generalmente el resultado a un papel 1966 por Böhm y Jacopini, posiblemente porque el Dijkstra citó este papel mismo. El teorema estructurado del programa no trata cómo escribir y analizar un programa provechosamente estructurado. Estas ediciones fueron abordadas durante los últimos años 60 y los años 70 tempranos, con contribuciones importantes por el Dijkstra, el Roberto W. Floyd, el Tony Hoare, y el David Gries .

    Discusión

    El P. Plauger, adoptante temprano de la programación estructurada, describió su reacción al teorema estructurado del programa: el del nosotros los convertidos agitó este pedacito interesante de las noticias debajo de las narices de los programadores de lenguaje de ensamblaje unreconstructed que guardaron el trotar adelante los pedacitos twisty de la lógica y del refrán, “que yo el betcha no puede estructurar esto.” Ni la prueba por Böhm y Jacopini ni nuestros éxitos repetidos en la escritura estructuró código les trajo alrededor un día más pronto que estaban listos para convencerse.

    En el 1967 una letra de Dijkstra apareció en las comunicaciones del ACM con el " del título; Ir a la declaración dañoso considerado . " La letra, que citó la prueba de Böhm y de Jacopini, pidió la abolición INDICADO de los idiomas de alto nivel en el interés de mejorar calidad del código. Esta letra se cita generalmente como el principio del discusión de la programación estructurada.

    Aunque, pues Plauger mencionado, muchos programadores desconocedores con el teorema dudó sus demandas, el conflicto más significativo en los años de seguimiento era si la programación estructurada podría mejorar realmente la claridad del software, la calidad, y el tiempo de desarrollo bastante de justificar programadores del entrenamiento en ella. Dijkstra demandó eso que limitaba el número de estructuras ayudaría a enfocar a un programador que pensaba, y simplificaría la tarea de asegurar la corrección de programa dividiendo análisis en pasos manejables. En sus notas del 1969 sobre la programación estructurada, Dijkstra escribió: el

    l cuando ahora tomamos la posición que es no sólo la tarea del programador producir un programa correcto pero también demostrar su corrección de una manera convincentemente, después las observaciones antedichas tiene una influencia profunda en la actividad del programador: el objeto que él tiene que producir debe ser estructurado provechosamente. el

    l … en qué lo sigue se convertirá en adaptabilidad evidente que la corrección de programa no es mi solamente preocupación, del programa o manejabilidad será otro… 1 del de

    El Donald Knuth aceptó el principio que los programas se deben escribir con provability en mente, pero él discrepó (y todavía discrepa) con la supresión de la declaración INDICADA. En su 1974 empapelan, " Programación estructurada con Statements" indicado;, él dio los ejemplos donde él creyó que un salto directo lleva al clarificante y a un código más eficiente sin sacrificar provability. Knuth propuso un constreñimiento estructural más flojo: Debe ser posible dibujar el organigrama de un programa con todas las ramas delanteras a la izquierda, todas las ramas posteriores a la derecha, y ningunas ramas que se cruzan. Muchos de ésos bien informados en los recopiladores y la teoría de gráfico han abogado permitir solamente gráficos de flujo reducibles.

    Los teóricos de la programación estructurada ganaron a aliado importante en los años 70 después de los molinos de Harlan del investigador de IBM que aplicó su interpretación de la teoría de la programación estructurada al desarrollo de un sistema de la indexación de direcciones para el archivo de la investigación de New York Times . El proyecto era un gran éxito de la ingeniería, y los encargados en otras compañías lo citaron en apoyo de adoptar la programación estructurada, aunque Dijkstra criticara las maneras que la interpretación de los molinos diferenció del trabajo publicado.

    Tan tarde como el 1987 él era todavía posible plantear la cuestión de la programación estructurada en un diario de informática. Frank Rubin hizo tan en ese año con una letra, " “INDICADO considerado dañoso” consideraba harmful." Las objeciones numerosas siguieron, incluyendo una respuesta de Dijkstra que criticó agudamente Rubin y las concesiones otros escritores hechos al responder a él.

    Resultado

    Antes de fin de vigésimo siglo convencieron casi todos los informáticos de que es útil aprender y aplicar los conceptos de programación estructurada. Los lenguajes el de programación de alto nivel que carecieron original las estructuras programadas, tales como FORTRAN, COBOL, y el BASIC, ahora las tienen.

    Pues un programador gana experiencia, él o ella puede encontrarla más fácil entender ciertas violaciones de la idea terminante de la programación estructurada, y varios lenguajes de programación en uso extenso proporcionan las declaraciones y la dirección de excepción restrictas del salto para el uso en estas situaciones. Las idiomas de la industria importante (con la excepción principal de Java) también conservan la declaración INDICADA para los saltos dentro de un procedimiento, y sigue siendo ampliamente utilizado. Aunque Dijkstra tuviera éxito en la fabricación estructurado programando el estándar educativo, él no tuvo éxito en la fabricación le de un requisito terminante.

    Desviaciones comunes

    Dirección de la excepción

    ¡ Aunque casi nunca haya una razón para tener puntos de la entrada múltiples a un subprograma, las salidas múltiples son de uso frecuente reflejar que un subprograma no puede tener no más de trabajo a hacer, o pudieron haber encontrado las circunstancias que evitan que continúe.

    Un ejemplo típico de un procedimiento simple sería datos de la lectura de un archivo y de procesarlo: archivo abierto; mientras que (lectura no acabada) { leer un ciertos datos; si (error) { parar el subprograma e informar al resto el programa sobre el error; } } procesar los datos leídos; acabar el subprograma;

    El " parada e inform" se puede alcanzar lanzando una excepción, vuelta del segundo del procedimiento, etiquetado la rotura del lazo, o aún un indicado. Pues el procedimiento tiene 2 puntos de salida, rompe las reglas de la programación estructurada de Dijkstra. La codificación de él de acuerdo con monopunto de la regla de la salida sería muy incómoda. Si hubiera condiciones de error más posibles, con diversa limpieza gobierna, solo procedimiento del punto de salida sería extremadamente duro de leer y de entender, muy probablemente aun más que no estructurado con control dirigió por declaraciones indicadas. Por una parte, la programación estructural sin tal regla daría lugar a código muy limpio y legible.

    La mayoría de las idiomas han adoptado los puntos múltiples de la forma de la salida de programación estructural. El C permite las trayectorias múltiples a la salida de una estructura (tal como " continue", " break", y " return"), más nuevas idiomas tienen también " breaks" etiquetado; (similar al anterior, pero permitiendo el estallido más que apenas del lazo íntimo) y excepciones.

    Máquinas de estado

    Algunos programas, particularmente programas de análisis y protocolos de comunicaciones tienen un número de estados que se sigan de una manera que no se reduzca fácilmente a las estructuras básicas. Es posible estructurar estos sistemas haciendo cada estado-cambia un subprograma separado y usar una variable para indicar el estado activo. Sin embargo, algunos programadores (Knuth incluyendo) prefieren ejecutar estado-cambian con un salto al nuevo estado.

    Comparación orientada al objeto

    En los años 60, el diseño de la lengua fue basado a menudo en ejemplos de libro de textos de los programas, que eran generalmente pequeños (debido al tamaño de un libro de textos); sin embargo, cuando los programas llegaron a ser muy grandes, el foco cambió. En pequeños programas, la declaración más común es generalmente la declaración de asignación; sin embargo, en programas grandes (sobre 10.000 líneas), la declaración más común es procedimiento-llama típicamente a un subprograma. Asegurando parámetros se pasan correctamente al subprograma correcto hace un tema importante.

    Muchos pequeños programas pueden ser manejados cifrando una jerarquía de estructuras; sin embargo, en programas grandes, la organización es más una red de estructuras, y la insistencia respecto a la estructuración jerárquica para los datos y los procedimientos puede producir código incómodo con granes cantidades de " " de los datos del vagabundo; para manejar varias opciones a través del programa entero. Por ejemplo texto-exhibir el programa que no prohibe a de intercambio dinámico el fuente-tamaño de la pantalla entera sería muy incómodo si es cifrado pasando datos del fuente-tamaño con una jerarquía. En lugar, un subsistema se podría utilizar para controlar los datos de la fuente a través de un sistema de las funciones del accessor que fijan o recuperan datos de un área común controlada por ésa subsistema de los fuente-datos. Las bases de datos son una manera común alrededor de andar por.

    La lengua del FORTRAN ha utilizado etiquetado Común-bloquea para separar datos globales del programa en los subsistemas (no más globales) para permitir programa-ancho, acceso del red-estilo a los datos, tales como fuente-tamaño, pero solamente especificando el particular Común-bloquear el nombre. La confusión podía ocurrir en el FORTRAN cifrando nombres de alias y cambiando dato-tipos al referirse al mismo etiquetado Común-bloquea con todo trazando variables alternas para cubrir la misma área de la memoria. Cueste lo que cueste, el concepto etiquetar-COMÚN tenía mucho valor en la organización de sistemas informáticos masivos y lleva al uso de la programación orientada al objeto de definir subsistemas de los datos centralizados controlados por funciones del accessor. Los datos cambiantes en otros dato-tipos fueron realizados explícitamente convirtiendo, o echando, los datos de las variables originales.

    Los nombres globales del subprograma acaban de ser reconocidos tan como peligroso (o aún más peligroso) que variables globales o CAMPO COMÚN en blanco, y los subsistemas fueron limitados a los grupos aislados de nombres del subprograma, tales como nombramiento con prefijos únicos o usar nombres del paquete de Java .

    Aunque la estructuración de un programa en una jerarquía pudiera ayudar a aclarar algunos tipos de software, incluso para algunos tipos especiales de programas grandes, un pequeño cambio, tal como petición de una nueva opción usuario-elegida (fuente-color del texto) podría causar un ondulación-efecto masivo con el cambio de subprogramas múltiples para propagar los nuevos datos en la jerarquía del programa. El acercamiento orientado al objeto es alegado más flexible, separando un programa en una red de subsistemas, con cada controlar sus propios datos, los algoritmos, o los dispositivos a través del programa entero, pero solamente accesible primero especificando nombró el acceso a la objeto-clase del subsistema, no apenas accidentalmente cifrando un nombre variable global similar. Algo que confiando en una carta estructurar-programada de la jerarquía, la programación orientada al objeto necesita un índice de la llamar-referencia al rastro que los subsistemas o las clases están alcanzados de otras localizaciones.

    Los sistemas estructurados modernos han tendido lejos de las jerarquías profundas encontradas en los años 70 y tienden hacia " driven" del acontecimiento; arquitecturas, donde los varios acontecimientos procesales se diseñan como tareas relativamente independientes.

    La programación estructurada, como precursor a la programación orientada al objeto, observó algunas ediciones cruciales, tales como acentuar la necesidad de un solo salida-punto en algunos tipos de usos, como en un programa duradero con un procedimiento que asigna memoria y debe desasignar esa memoria antes de salir y de volver al procedimiento de llamada. Los escapes de memoria que hacen un programa consumir cantidades extensas de memoria se podrían remontar a una falta de observar un solo salida-punto en un subprograma que necesitaba la desasignación de la memoria.

    Semejantemente, la programación estructurada, en la advertencia del uso desenfrenado de indicado-declaraciones, llevó a un reconocimiento de la disciplina de arriba hacia abajo en la ramificación, caracterizado por el Ada 's GOTO que no puede ramificar a declaración-etiqueta dentro de otro bloque del código. Sin embargo, " WrapUp" INDICADO; se convirtió un acercamiento equilibrado a manejar una anomalía severa sin el control perdidoso del salida-punto principal para asegurar la conclusión (para desasignar memoria, suprimiendo ficheros temporales, y tales), cuando una edición severa interrumpe el complejo, proceso de niveles múltiples y el código de la conclusión debe ser realizado antes de salir.

    Los varios conceptos detrás de la programación estructurada pueden ayudar a entender las muchas facetas de la programación orientada al objeto .

    Ver también


    Paradigmas programados * flujo de control (más detalle de las estructuras de control de alto nivel)
    Dirección de excepción estructurada
    Evaluación mínima

    .

  • Zenithic
  • Mangur
    Random links:Partido conservador del Favorable-Euro | Conde Manvers | Lista de competiciones internacionales del hockey sobre hielo que ofrecen a jugadores del NHL | Jefe de estado irlandés a partir de 1936 a 1949

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">