TIENEBARRA?

Sinopsis
TIENEBARRA? carácter
BACKSLASHEDP carácter
BACKSLASHED? carácter
Descripción

Devuelve CIERTO si carácter fue entrado entre barras verticales (|) y también es un espacio, un carácter tab, una nueva línea, o uno de los siguientes ()[]{}|+-*/=<>":;\~?. Devuelve FALSO si no lo fue.

En FMSLogo, TIENEBARRA? no tiene nada que ver con las barras inversas, pero se conserva el nombre para compatibilidad con programas antiguos. Se eliminan todas las barras inversas después del análisis lexicográfico, pero se retienen las barras verticales. Por lo tanto, un nombre más adecuado sería ENTREBARRAS? o ENTREBARRASVERTICALES?.

En versiones anteriores de Logo, TIENEBARRA? devolvió si se ha entrado un carácter inmediatamente después de una barra inversa para suprimir su significado usual. Por ejemplo, un espacio termina una palabra usualmente, pero un espacio entrado después de una barra inversa se lo incluye dentro de la palabra. Cuando Logo sólo soportaba el código de caracteres ASCII (que sólo utiliza 7 bits para representar cada carácter), se almacenaba cada carácter internamente en un byte de 8 bits y se almacenaba la barra inversa en el 8vo bit de ese byte. A estas alturas, cada carácter podía tener una barra inversa y el nombre TIENEBARRA? tenía sentido.

Para habilitar que FMSLogo soporta idiomas distintos al ingles, se lo modificaron para almacenar a los caracteres como valores de 16 bits que corresponden a los puntos de códigos del plano básico multilingüe de Unicode. Por lo tanto, el 8vo bit ya no se lo podía utilizar para almacenar la barra inversa. Afortunadamente, poner un carácter entre barras inversas no cambia el significado para la mayoría de los caracteres. Por ejemplo, |A| y A significan la misma cosa; se hacen caso omiso de las barras inversas. Sin embargo, para unos pocos caracteres, incluido el espacio, aún se necesitan almacenar la barra inversa con el carácter. Para conservar esta información, se mapean tales caracteres a un área de uso privado del plano básico multilingüe. Por ejemplo, el punto de código del espacio es 32, pero internamente se representan un espacio entre barras con el punto de código 57344.

Ejemplo
MUESTRA TIENEBARRA? "a
falso
MUESTRA TIENEBARRA? "|a|
falso
MUESTRA TIENEBARRA? "|(|
cierto
MUESTRA TIENEBARRA? "\(
falso

SourceForge.net Logo