Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
corte de programa De forma recursiva, para cada enunciado y que puede afectar el valor de v en el enunciado x, calculamos los sectores para todas las variables z en y que afectan el valor de v. La unión de todos estos sectores es el sector estático para (x, v). En programación de computadoras, la división de programas es el cálculo del conjunto de instrucciones del programa, la porción del programa, que puede afectar los valores en algún punto de interés, conocido como criterio de división. Por lo tanto, el segmento (write (sum), sum) es la unión de tres segmentos y la instrucción "int sum = 0" que no tiene dependencias: El sector se define para un criterio de corte C = (x, v) donde x es una declaración en el programa P y v es variable en x. Un segmento estático incluye todas las instrucciones que pueden afectar el valor de la variable v en la instrucción x para cualquier entrada posible. Los sectores estáticos se calculan retrocediendo las dependencias entre instrucciones. Más específicamente, para calcular el segmento estático para (x, v), primero encontramos todas las instrucciones que pueden afectar directamente el valor de v antes de encontrar la instrucción x. Según la definición original de Weiser, de manera informal, un segmento de programa estático S consta de todas las instrucciones del programa P que pueden afectar el valor de la variable v en una instrucción x. Por ejemplo, considere el programa C a continuación. Calculemos la porción para (escribir (suma), suma). El valor de la suma se ve directamente afectado por las declaraciones "suma = suma + i + w" si N > 1 y "suma total = 0" si N <= 1. Las técnicas de corte han experimentado un rápido desarrollo desde la definición original de Mark Weiser. Al principio, el corte era simplemente estático, es decir, se aplicaba al código fuente sin ninguna información más que el código fuente. Bogdan Korel y Janusz Laski introdujeron el corte dinámico, que funciona en la ejecución de un programa específico (para un seguimiento de ejecución determinado). Ejemplo La división de programas se puede utilizar en la depuración para localizar más fácilmente el origen de los errores. Otras aplicaciones del slicing incluyen mantenimiento de software, optimización, análisis de programas y control del flujo de información. Machine Translated by Google rebanada (suma = suma + i + w, suma) {int suma = 0}. , , rebanada (suma = suma + i + w, i) Es , Es bastante fácil ver que el segmento (suma = suma + i + w, suma) consta de "suma = suma + i + w" e "int suma = 0" porque esas son las dos únicas declaraciones anteriores que pueden afectar el valor de suma en "suma = suma + i + w". De manera similar, el segmento (suma = suma + i + w, i) solo contiene "for (i = 1; i < N; ++ i) {" y el segmento (suma = suma + i + w, w) contiene solo la declaración "int w = 7". rebanada (suma = suma + i + w, w) Machine Translated by Google
Compartir