Capítulo 6

Constantes, variables, expresiones y operadores

Después de que usted haya aprendido los fundamentales de la programación en GW-BASIC, usted encontrará que usted deseará escribir programas más complejos. La información en este capítulo le ayudará a aprender más sobre el uso de constantes, de variables, de expresiones, y de operadores en GW-BASIC, y cómo pueden ser utilizadas para desarrollar programas más sofisticados.

6.1 Constantes

Las constantes son valores de los parásitos atmosféricos que el intérprete de GW-BASIC utiliza durante la ejecución de su programa. Hay dos tipos de constantes: secuencia y numérico.

Una constante de la secuencia es una secuencia de 0 a 255 caracteres alfanuméricos incluidos en marcas dobles de la cita. Los siguientes son constantes de la secuencia de la muestra:

HOLA
$25.000.00
Número de empleados

Las constantes numéricas pueden ser positivas o negativas. Al incorporar una constante numérica a GW-BASIC, usted no debe mecanografiar las comas. Por ejemplo, si se entrara el número 10.000 como constante, sería mecanografiado como 10000. Hay cinco tipos de constantes numéricas: número entero, de punto fijo, floating-point, hexadecimal, y octal.

Constante Descripción
Número entero Números enteros entre -32768 y +32767.  No contienen comas.
Fijo-Punto Números verdaderos positivos o negativos que contienen comas.
Constantes De punto flotante

Floating-Point Constants

Números positivos o negativos representados en la forma exponencial (similar a la notación científica).  Una constante floating-point consiste en un número entero opcional-firmado o un número de punto fijo (la mantisa), seguido por la letra E y un número entero opcional-firmado (el exponente). El rango permitido para las constantes floating-point es 3.0×10-39 to 1.7×1038. Por ejemplo:
235.988E-7=.0000235988
2359E6=2359000000
Hexadecimal Números hexadecimales con el &H del prefijo. Por ejemplo:
&H76
&H32F
Octal Números octales con el &O del prefijo o y. Por ejemplo:
&O347
&1234

6.1.1 Forma escoja y de la Doble-Precisio'n para las constantes numéricas

Las constantes numéricas pueden ser números enteros, solo-precisio'n, o números de precisión doble. Las constantes enteras se almacenan como números enteros solamente. las constantes numéricas de la Solo-precisio'n se almacenan con 7 dígitos (aunque solamente 6 pueden ser exactos). Las constantes numéricas de precisión doble se almacenan con 17 dígitos de precisión, y se imprimen con tanto como 16 dígitos.

Una constante de la solo-precisio'n es cualquier constante numérica con cualquiera

  • Siete o pocos dígitos
  • Forma exponencial usando E
  • ¡Un punto del exclamation que se arrastra (!)

Una constante de precisión doble es cualquier constante numérica con cualquiera

  • Ocho o más dígitos
  • Forma exponencial usando D
  • Una muestra del número que se arrastra (#)

Los siguientes son ejemplos de constantes numéricas solas y de precisión doble:

Constantes De la Solo-Precisio'n Constantes De la Doble-Precisio'n
46.8 345692811
-1.09E-06 -1.09432D-06
3489.0 3490.0 #
¡22.5! 7654321.1234

6.2 Variables

Las variables son los nombres que usted ha elegido representar los valores usados en un programa de GW-BASIC. El valor de una variable se puede asignar específicamente, o puede ser el resultado de cálculos en su programa. Si una variable no se asigna ningún valor, GW-BASIC asume el valor de la variable para ser cero.

6.2.1 Nombres y declaraciones variables

Los nombres variables de GW-BASIC pueden ser cualquier longitud; hasta 40 caracteres son significativos. Los caracteres permitidos en un nombre variable son letras, números, y la coma. El primer carácter en el nombre variable debe ser una letra. El tipo especial caracteres de declaración también se permite.

Las palabras reservadas (todas las palabras usadas como comandos, declaraciones, funciones, y operadores de GW-BASIC) no se pueden utilizar como nombres variables. Sin embargo, si la palabra reservada se encaja dentro del nombre variable, será permitido.  

Las variables pueden representar valores numéricos o secuencias.

6.2.2 Tipo Caracteres De Declaración

El tipo caracteres de declaración indica lo que representa una variable. Se reconoce el tipo siguiente caracteres de declaración:

Carácter Tipo de variable
$ Variable de la secuencia
% Variable de número entero
! Variable de la simple precision
# Variable de doble precisión

Los siguientes son nombres variables de la muestra para cada tipo:

Tipo Variable Nombre ejemplo
Variable de la secuencia N$
Variable de número entero LIMIT%
Variable de simple precision MINIMUM!
Variable de doble precisión Pl #

El tipo del defecto para un nombre variable numérico es solo-precisio'n. De precisión doble, mientras que muy es exacto, aplicaciones más memoria y más tiempo del cálculo. la Solo-precisio'n es suficientemente exacta para la mayoría de los usos. Sin embargo, el séptimo dígito significativo (si está impreso) no será siempre exacto. Usted debe tener muy cuidado al hacer conversiones entre el número entero, la solo-precisio'n, y las variables de precisión doble.

La variable siguiente es un valor de la solo-precisio'n por defecto:

ABC

Las variables que comienzan con FN se asumen para ser llamadas a una función definida por el usario.

Las declaraciones DEFINT ,DEFSTR ,DEFSNG ,y DEFDBL de GW-BASIC se pueden incluir en un programa para declarar los tipos de valores para ciertos nombres variables.

6.2.3 Variables De Arsenal

Un array es un grupo o una tabla de los valores referidos por el mismo nombre variable. Cada elemento en un arsenal es referido por una variable de array que sea a subscripted número entero o una expresión del número entero. El subíndice es incluido dentro de paréntesis.  Un nombre de la variable de arsenal tiene tantos subíndices pues hay dimensiones en el array.

Por ejemplo,

V(10)

se refiere a un valor a un arsenal unidimensional, mientras que

T(1,4)

se refiere a un valor a un arsenal de dos dimensiones.

El número máximo de las dimensiones para un arsenal en GW-BASIC es 255. El número máximo de elementos por la dimensión es 32767.


Nota

Si usted está utilizando un arsenal con un valor suscrito mayor de 10, usted debe utilizar la instruccion DIM. Refiera a la referencia del usuario de GW-BASIC para más información. Si un mayor suscrito que el máximo especificado se utiliza, usted recibirá el mensaje de error "Subscript out of range."


Los órdenes multidimensionales (más de un subíndice separado por comas) son útiles para almacenar datos tabulares. Por ejemplo, A(1,4) se podía utilizar para representar una dos-fila, arsenal de la cinco-columna tal como el siguiente:

Column     0    1    2    3    4
Row 0     10   20   30   40   50
Row 1     60   70   80   90  100

En este ejemplo, elemento A(1,2)=80 y A(0,3)=40.

Las filas y las columnas comienzan con 0, no 1, a menos que estén declaradas de otra manera. Para más información, vea la declaración BAJA de la OPCIÓN en la referencia del usuario de GW-BASIC.

6.2.4 Requisitos de la memoria para el almacenaje variable

Los diversos tipos de variables requieren diversas cantidades de almacenaje. Dependiendo de la capacidad del almacenaje y de memoria de su computadora y del tamaño del programa que usted está desarrollando, éstas pueden ser consideraciones importantes.

Variable Octetos requeridos de almacenaje
Numero entero 2
Simple precision 4
Doble precision 8
Ordenes Octetos requeridos de almacenaje
Numero entero 2 por el elemento
Simple precision 4 por el elemento
Doble precisión 8 por el elemento

Cadenas:

Tres octetos de de arriba, más el actual contenido de la secuencia como un octeto para cada carácter en la secuencia. Las marcas de la cita que marcan el principio y el extremo de cada secuencia no se cuentan.

6.3 Conversion de Mecanografia

Cuando es necesario, GW-BASIC convierte una constante numérica a partir de un tipo de variable a otro, según las reglas siguientes:

  • Si una constante numérica de un tipo se fija igual a una variable numérica de un diverso tipo, se almacena el número como el tipo declaró en el nombre variable.

    Por ejemplo:

    10 A% = 23.42
    20 PRINT A%
    RUN
     23

    Si una variable de la secuencia se fija igual a un valor numérico o viceversa, un errordel "Type Mismatch" ocurre.

  • Durante una evaluación de la expresión, todos los operandos en una aritmética o la operación emparentada se convierten al mismo grado de precisión; es decir, el del operando más exacto. También, el resultado de una operación aritmética se vuelve a este grado de precisión. Por ejemplo:
10 D# = 6#/7
20 PRINT D#
RUN
 .8571428571428571

La aritmética se realiza en de precisión doble, y el resultado se vuelve en D # como valor de precisión doble.

10 D = 6#/7 20 PRINT D RUN .8571429

La aritmética se realiza en de precisión doble, y el resultado se vuelve a D (variable de la solo-precisio'n) redondeada e impresa como valor de la solo-precisio'n.

  • Los operadores lógicos convierten sus operandos a los números enteros y vuelven un resultado del número entero. Los operandos deben estar dentro de la gama de -32768 a 32767 o un  mensaje de  error "Overflow" ocurre.
  • Cuando un valor floating-point se convierte a un número entero, se redondea la porción fraccionaria. Por ejemplo:
10 C# = 55.88
20 PRINT C#
RUN
 56
  • Si una variable de precisión doble se asigna un valor de la solo-precisio'n, sólo los primeros siete dígitos (redondeados), del número convertido son válidos. Esto es porque solamente siete dígitos de exactitud fueron provistos del valor de la solo-precisio'n. El valor absoluto de la diferencia entre el número de precisión doble impreso, y el valor original de la solo-precisio'n, es menos que las épocas 6.3E-8 el valor original de la solo-precisio'n. Por ejemplo:
    10 A = 2.04
    20 B# = A
    30 PRINT A;B#
    RUN
     2.04

 

6.4 Expresiones y operadores

Una expresión puede ser simplemente una secuencia o la constante numérica, una variable, o ella pueden combinar constantes y variables con los operadores para producir un solo valor.

Los operadores realizan operaciones matemáticas o lógicas en valores. Los operadores proporcionaron por GW-BASIC se dividen en cuatro categorías:

  • Aritmética
  • Emparentado
  • Lógico
  • Funcional

6.4.1 Operadores Aritméticos

Los siguientes son los operadores aritméticos reconocidos por GW-BASIC. Aparecen en la orden de la precedencia.

Operador Operación
^ Exponentiation
- Negación
* Multiplicación
/ División Floating-point
+ Adición
- Substracción

Las operaciones dentro de paréntesis se realizan primero. Dentro de paréntesis, la orden generalmente de la precedencia se mantiene.

Los siguientes son expresiones algebraicas de la muestra y sus contrapartes de GW-BASIC:

Expresión Algebraica Expresión del BASIC
X-Z/Y (X-Y)/Z
XY/Z X*Y/Z
X+Y/Z (X+Y)/Z
(X2)Y (X^2)^Y
XYZ X^(Y^Z)
X(-Y) X*(-Y)

Dos operadores consecutivos deben ser separados por paréntesis.

6.4.1.1 División del número entero y aritmética del módulo

Dos operadores aritméticos adicionales están disponibles: división del número entero y aritmética del módulo.

La división del número entero es denotada por el backslash (\). Los operandos se redondean a los números enteros (debe estar dentro de la gama de -32768 a 32767) antes de que se realice la división, y el cociente se trunca a un número entero.

Los siguientes son ejemplos de la división del número entero:

10\4 = 2
25.68\6.99 = 3

En la orden de la ocurrencia dentro de GW-BASIC, la división del número entero será realizada enseguida después de la división floating-point.

La aritmética del módulo es denotada por la MOD del operador. Da el valor del número entero que es el resto de una división del número entero.

Los siguientes son ejemplos de la aritmética del módulo:

10.4 MOD 4 = 2
(10/4=2 with a remainder 2)
25.68 MOD 6.99 = 5
(26/7=3 with a remainder 5)

En la orden de la ocurrencia dentro de GW-BASIC, la aritmética del módulo sigue la división del número entero. El INTERNOS y FIJAN las funciones, descritas en la referencia del usuario de GW-BASIC, son también útiles en aritmética del módulo.

6.4.1.2 Desbordamiento y división por cero

Si, durante la evaluación de una expresión, una división por cero se encuentra, la "división por "el mensaje de error cero aparece, el infinito de la máquina con la muestra del numerador se provee como resultado la división, y la ejecución continúa.

Si la evaluación de un exponentiation da lugar a cero que es levantada a una energía negativa, la "división por "el mensaje de error cero aparece, el infinito positivo de la máquina se provee como resultado el exponentiation, y la ejecución continúa.

Si ocurre el desbordamiento, el mensaje de error "overflow" aparece, el infinito de la máquina con la muestra algebraico correcta se provee como el resultado, y la ejecución continúa. Los errores que ocurren en desbordamiento y la división por cero no serán atrapados por la función de la interceptación del error.

6.4.2 Operadores Emparentados

Los operadores emparentados le dejaron comparar dos valores. El resultado de la comparación es o verdad (-1) o falso (0). Este resultado se puede entonces utilizar para tomar una decisión con respecto a flujo de programa.

La tabla 6.1 exhibe a operadores emparentados.

Tabla 6.1

Operadores Emparentados

Operador Relación Probada Expresión
= Igualdad X=Y
< > Desigualdad XY
< Menos que X<Y
> Mayor que X>Y
< = Menos que o igual a X<=Y
> = Mayor que o igual a X>=Y

El igual también se utiliza de asignar un valor a una variable. Vea DEJE la declaración en la referencia del usuario de GW-BASIC.

Cuando combinan a los operadores aritméticos y emparentados en una expresión, la aritmética se realiza siempre primero:

X+Y < (T-1)/Z

Esta expresión es verdad si el valor de X más Y es lessthan el valor del T-1 dividido por Z.

6.4.3 Operadores Lógicos

Los operadores lógicos realizan pruebas en relaciones múltiples, la manipulación de pedacito, u operaciones boleanas. El operador lógico vuelve bit-wise un resultado que sea o verdad (no cero) o falso (cero). En una expresión, las operaciones lógicas se realizan después de operaciones aritméticas y emparentadas. El resultado de una operación lógica se determina según lo demostrado en la tabla siguiente. Enumeran a los operadores en la orden de la precedencia.

Tabla 6.2

Los resultados volvieron por operaciones lógicas

Operación Valor Valor Resultado
NO X NO X
T F
F T
Y X Y X  Y  Y
T T T
T F F
F T F
F F F
O X Y X  O  Y
T T T
T F T
F T T
F F F
XOR X Y X  XOR  Y
T T F
T F T
F T T
F F F
EQV X Y X  EQV  Y
T T T
T F F
F T F
F F T
Imp X Y X  Imp  Y
T T T
T F F
F T T
F F T

Apenas mientras que los operadores emparentados pueden ser utilizados para tomar decisiones con respecto a flujo de programa, los operadores lógicos pueden conectar dos o más relaciones y volver un valor verdadero o falso que se utilizará en una decisión. Por ejemplo:

IF D<200 AND F<4 THEN 80
IF I>10 OR K<0 THEN 50
IF NOT P THEN 100

Los operadores lógicos convierten sus operandos a 16-bit, firmado, dos números enteros del complemento dentro de la gama de -32768 a +32767 (si los operandos no están dentro de esta gama, de los resultados de un error). Si ambos operandos se proveen como 0 o -1, los operadores lógicos vuelven 0 o -1. La operación dada se realiza en estos números enteros en pedacitos; es decir, cada pedacito del resultado es determinado por los pedacitos correspondientes en los dos operandos.

Así, es posible utilizar a operadores lógicos para probar los octetos para una configuración de bits particular. Por ejemplo, Y el operador puede ser utilizado para enmascarar todos sino uno de los pedacitos de un octeto de estado en un puerto de la máquina I/O. U operador puede ser utilizado combinar dos octetos para crear un valor binario particular. Los ejemplos siguientes demuestran cómo los operadores lógicos trabajan:

Ejemplo Explicación
63 Y 16=16 63 = 111111 y 16 binarios = 10000 binarios, tan 63 Y 16 = 16
15 Y 14=14 15 = 1111 y 14 binarios = 1110 binario, tan 15 Y 14 = 14 (1110 binario)
-1 Y 8=8 -1 = 1111111111111111 y 8 binarios = 1000 binario, tan -1 Y 8 = 8
4 O 2=6 4 = 100 y 2 binarios = 10 binarios, tan 4 O 2 = 6 (110 binarios)
10 O 10=10 10 = 1010 binario, tan 1010 O 1010 = 1010 (10)
-1 O -2=-1 -1 = 1111111111111111 y -2 binarios = 1111111111111110 binarios, así que -1 O -2 = -1. el complemento del pedacito de 16 ceros es 16 unos, que es la representación de complemento de los dos de -1.
NO X=-(X+1) El complemento de los dos de cualquier número entero es el complemento del pedacito más uno.

6.4.4 Operadores Funcionales

Una función se utiliza en una expresión para llamar una operación predeterminada que deba ser realizada en un operando. GW-BASIC tiene funciones intrínsecas que residan en el sistema, tal como SQR (raíz cuadrada) o PECADO (seno).

GW-BASIC también permite las funciones definidas por el usario escritas por el programador. Vea la declaración de DEF FN en la referencia del usuario de GW-BASIC.

6.4.5 Encadene A Operadores

Para comparar secuencias, utilice a mismos operadores emparentados usados con números:

Operador Significado
= Igual a
< > Desigual
< Menos que
> Mayor que
< = Menos que o igual a
> = Mayor que o igual a

El intérprete de GW-BASIC compara secuencias tomando un carácter a la vez de cada secuencia y comparando sus códigos del ASCII. Si los códigos del ASCII en cada secuencia son iguales, las secuencias son iguales. Si diferencian los códigos del ASCII, el número de código más bajo precederá el código más alto. Si el intérprete alcanza el extremo de una secuencia durante la comparación de la secuencia, la secuencia más corta se dice para ser más pequeña, proporcionando que ambas secuencias son iguales hasta ese punto. Los espacios a la derecha que conducen y son significativos.

Por ejemplo:

"AA" < "AB"
"FILENAME" = "FILENAME"
"X&" > "X#"
"CL " > "CL"
"kg" > "KG"
"SMYTH" < "SMYTHE"
B$ < "9/12/78" where B$ = "8/12/78"

Las comparaciones de la secuencia se pueden también utilizar para probar valores de la secuencia o para alfabetizar secuencias. Todas las constantes de la secuencia usadas en expresiones de la comparación se deben incluir en marcas de la cita.

Las secuencias pueden ser concatenadas usando (+)la muestra más. Por ejemplo:

10 A$="FILE":B$="NAME"
20 PRINT A$+B$
30 PRINT "NEW " + A$+B$
RUN
 FILENAME
 NEW FILENAME
1