¿Qué es un punto de secuencia?

Un punto de secuencia en la programación de computadoras es un momento que ocurre durante la ejecución del programa cuando el valor de una variable se ha calculado por completo, sin cambios pendientes de operaciones anteriores y sin cálculos en una expresión futura que aún se están realizando. Hay varios lugares donde existen puntos de secuencia, definidos principalmente en el estándar del lenguaje C, como antes de la ejecución del código dentro de una función, al final de las expresiones de control en declaraciones como «para» y «si», y al final de cualquier expresión completa, como una línea simple de código C. Algunas de las razones para definir un punto de secuencia son evitar situaciones que sean ambiguas, que resulten en un comportamiento indefinido o que puedan confundir al compilador y generar un código impredecible. En muchos casos, los programadores no se preocupan explícitamente por un punto de secuencia, aunque, en la creación de un compilador, el concepto es muy importante para garantizar que el código se ejecute correctamente.

Un ejemplo de un punto de secuencia en el lenguaje de programación C está en la declaración A = A + B ;. En esta expresión, el punto y coma es el punto de secuencia; cuando se complete la expresión, se evaluará el valor de A y no se realizarán cálculos residuales hasta que comience la siguiente expresión. El signo igual no es un punto de secuencia, porque el compilador puede modificar el valor de A en cualquier orden a lo largo de la expresión.

La regla principal de un punto de secuencia es que no se accederá a ninguna variable más de una vez entre puntos para cualquier otro propósito que no sea el de calcular un cambio en su valor. Una violación de esta regla se expresa mejor al asignar un valor a una matriz. Si hay una variable A y una matriz llamada I, entonces gramaticalmente en C es posible escribir la expresión I [A] = A ++. Aquí, se accede a la variable más de una vez con un propósito distinto al de evaluar su valor actual; es decir, se usa como un índice en la matriz I. Esto significa que el compilador puede incrementar A antes de que se use como índice o después de que se use, creando un comportamiento impredecible en el que no se puede confiar en el programa.

Básicamente, un punto de secuencia se puede ver como una forma de garantizar que las declaraciones puedan y serán evaluadas y ejecutadas consistentemente por un compilador. Esto también permite que un compilador emplee estrategias de optimización, porque el comportamiento definido es predecible. Dentro del estándar del lenguaje C, hay tres instancias principales de puntos de secuencia, a saber, cuando una función comienza a ejecutarse, en el punto de operadores lógicos y comas, y al final de una expresión completa que termina con un punto y coma, como lo hacen la mayoría de las declaraciones de C .