Etiqueta (informática)

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
En los lenguajes de programación, una etiqueta es una secuencia de caracteres que identifica una ubicación dentro del código fuente. En la mayoría de los lenguajes, las etiquetas se presentan como un identificador, a menudo seguido de un signo de puntuación (p. ej., dos puntos). En muchos lenguajes de alto nivel, el propósito de una etiqueta es actuar como destino de una instrucción GOTO. En lenguaje ensamblador, las etiquetas pueden usarse en cualquier lugar donde se pueda incluir una dirección (por ejemplo, como operando de una instrucción JMP o MOV). También en Pascal y sus variantes derivadas. Algunos lenguajes, como Fortran y BASIC, admiten etiquetas numéricas. Las etiquetas también se utilizan para identificar un punto de entrada en una secuencia compilada de instrucciones (p. ej., durante la depuración).

C

En C, una etiqueta identifica una sentencia en el código. Una misma sentencia puede tener varias etiquetas. Las etiquetas simplemente indican ubicaciones en el código, y acceder a ellas no afecta la ejecución real.

Etiquetas de función

Las etiquetas de función constan de un identificador, seguido de dos puntos. Cada etiqueta apunta a una sentencia de una función y su identificador debe ser único dentro de esa función. Otras funciones pueden usar el mismo nombre para una etiqueta. Los identificadores de etiqueta ocupan su propio espacio de nombres: se pueden tener variables y funciones con el mismo nombre que una etiqueta.
vacío Foo()int Número){} si ()Número c) 0) Goto error; bar()Número); Regreso;error: fprintf()stderr, "¡Número inválido!\n");}

Aquí, error es la etiqueta. La instrucción goto puede usarse para acceder a una instrucción etiquetada en el código. Después de un goto, la ejecución del programa continúa con la instrucción después de la etiqueta.

Etiquetas de conmutación

Se pueden incluir dos tipos de etiquetas en una sentencia switch. Una etiqueta case consiste en la palabra clave case, seguida de una expresión que evalúa una constante entera. Una etiqueta default consiste en la palabra clave default. Las etiquetas case se utilizan para asociar un valor entero con una sentencia en el código. Cuando se alcanza una sentencia switch, la ejecución del programa continúa con la sentencia posterior a la etiqueta case cuyo valor coincida con el valor entre paréntesis de la sentencia switch. Si no existe dicha etiqueta case, pero sí una etiqueta default, la ejecución del programa continúa con la sentencia posterior a la etiqueta default. Si no existe una etiqueta default, la ejecución del programa continúa después de la sentencia switch.
interruptor ()morir){}por defecto: printf()"inválido"\n"); descanso;Caso 1:Caso 3:Caso 5: printf()"odd\n"); descanso;Caso 2:Caso 4:Caso 6: printf()"evento"\n"); descanso;}
Dentro de una sola sentencia switch, la constante entera asociada a cada etiqueta de caso debe ser única. Puede haber o no una sentencia predeterminada. No hay restricción en el orden de las etiquetas dentro de un switch. El requisito de que los valores de las etiquetas de caso se evalúen como constantes enteras le da al compilador más margen de optimización.

Ejemplos

Javascript

En la sintaxis del lenguaje JavaScript, las sentencias pueden ir precedidas de la etiqueta:

arriba: //Etiqueta el más exterior para el bucle.para ()Var i = 0; i c) 4; i++) {} para ()Var j = 0; j c) 4; j++) {} si ()j == 3 " i == 2) {} alerta()"i=" + i + ", j=" + j); //i=2, j=3 descanso arriba; } }}alerta()"i=" + i + ", j=" + j); //i=2, j=3

También es posible usar la instrucción break para salir de los bloques de código:

arriba: {} consola.log()"foo") consola.log()"bar") descanso arriba consola.log()"baz")}// Que produciría: ////

Lisp común

En Common Lisp existen dos maneras de definir etiquetas. La primera implica el operador especial tagbody. A diferencia de muchos otros lenguajes de programación que permiten la navegación global, como C, las etiquetas solo son accesibles en el contexto de este operador. Dentro de un tagbody, las etiquetas se definen como formas que comienzan con un símbolo; la forma especial go permite la transferencia de control entre estas etiquetas.
()Deja (()iteración NIL) ()tagbody Empieza ()impresión Empezar) ()setf iteración 0) aumento ()impresión iteración) ()incf iteración 1) ()Vamos. cheque) cheque ()si ()>= iteración 10) ()Vamos. final) ()Vamos. aumento) final ()impresión Hecho))
Un segundo método utiliza las macros de lectura #n= y #n#. La primera etiqueta el objeto inmediatamente después, mientras que la segunda se refiere a su valor evaluado. En este sentido, las etiquetas constituyen una alternativa a las variables, ya que #n= declara e inicializa una "variable" y #n# accede a ella. El marcador de posición n designa un entero decimal sin signo seleccionado que identifica la etiqueta.
()progn #1="hola" ()impresión #1#)
Además, algunos formularios permiten o exigen la declaración de una etiqueta para referencia posterior, incluyendo el formulario especial block, que prescribe un nombre, y la macro loop, que se puede identificar mediante una cláusula named. Es posible salir inmediatamente de un formulario con nombre mediante el operador especial return-from.
()bloque Myblock ()bucle para iteración desde 0 do ()si ()>= iteración 10) ()Regreso de Myblock Hecho) ()impresión iteración)))
()bucle llamado myloop para iteración desde 0 do ()si ()>= iteración 10) ()Regreso de myloop Hecho) ()impresión iteración))
De forma similar a C, las macros case, ccase, ecase, typecase, ctypecase y etypecase definen sentencias switch.

()Deja (()mi valor 5) ()Caso mi valor ()1 ()impresión "uno") ()2 ()impresión "dos") (()3 4 5) ()impresión "tres cuatro o cinco") ()de otra manera ()impresión "cualquier otro valor")))
()Deja (()mi valor 5) ()Tipo mi valor ()lista ()impresión "una lista") ()cuerda ()impresión "una cuerda") ()Número ()impresión "un número") ()de otra manera ()impresión "cualquier otro tipo")))

Véase también

  • Número de línea

Referencias

  1. ^ "C Sección estándar 6.8.6.1 La declaración de Goto". Archivado desde el original el 14 de diciembre de 2007. Retrieved 2008-07-03.
  2. ^ "GOTO Declaración QuickSCREEN". Microsoft. 1988. Archivado desde el original el 2009-07-25. Retrieved 2008-07-03.
  3. ^ O. Lawlor. "nam x86 Assembly". Retrieved 2008-07-03.
  4. ^ "Diferencias entre GW-BASIC y QBasic". Archivado desde el original en 2010-02-10.
  5. ^ Kent Pitman. "CLHS: Operador Especial TAGBODY". Retrieved 2020-08-18.
  6. ^ Kent Pitman. "CLHS: Sección 2.4.8". Retrieved 2020-08-18.
  7. ^ Kent Pitman. "CLHS: Macro CASE, CCASE, ECASE". Retrieved 2020-08-20.
  8. ^ Kent Pitman. "CLSH: Macro TYPECASE, CTYPECASE, ETYPECASE". Retrieved 2020-08-20.
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save