Resumen
1.- ELEMENTOS
Tipos de datos básicos.
El siguiente gráfico refleja concisamente los tipos de datos básicos del lenguaje:
TIPOS DE DATOS
NUMERICOS CADENA
REALES ENTEROS LONGITUD FIJA LONGITUD VARIABLE
a su vez, los datos numéricos pueden ser de simple o de doble precisión.
Existen dos formas principales de declarar las variables:
a) por el carácter final del nombre
% indica entero simple
& indica entero doble
! indica real simple
# indica real doble
$ indica cadena de longitud variable
b) a través del modificador AS de las sentencias DIM, REDIM
COMMON, SHARED o STATIC. Los distintos tipos de AS son
AS INTEGER entero simple
AS LONG entero doble
AS SINGLE real simple
AS DOUBLE real doble
AS STRING cadena de longitud variable
AS STRING * numero cadena de longitud fija
AS var_def_us variable definida por usuario
Operadores
BASIC incorpora los operadores habituales de todos los lenguajes:
a) Numéricos
+ suma
- resta
* multiplicación
/ división
^ exponenciación
\ división entera
MOD resto
b) Alfanuméricos. Solo se incluye el operador + de concatenación de cadenas
c) Relacionales
= igual
<> distinto
> mayor
>= mayor o igual
< menor
<= menor o igual
d) Lógicos
AND
OR
NOT
XOR
IMP
EQV
Las tablas de verdad de los operadores menos conocidos son las siguientes:
A B A EQV B A IMP B
V V V V
V F F F
F V F V
F F V V
Variables multidimensionales
Las variables multidimensionales se declaran mediante la sentencia DIM, cuya sintaxis es
DIM <nombre_variable> (rango)
donde <nombre_variable> es un nombre de variable que normalmente incluye como último carácter aquél que determina su tipo y (rango) indica el n
a) Un número simple n, lo que indica los n+1 elementos 0..n
b) p to q, donde p es el primer índice y q el último
c) (rango1,rango2,...rangon) para declarar matrices cuadradas, cúbicas, etc.
Ejemplos:
DIM matriz! (1 to 20, 1 to 20)
DIM pesos! (40)
DIM tensor! (2,2,2)
El tipo de elementos de la variable se puede definir mediante el modificador AS . Por ejemplo:
DIM Lista$ (100) AS STRING*20
Variables tipo registro.
El usuario puede definir variables tipo registro, donde bajo el mismo nombre se engloba información relacionada pero de naturaleza diferente. La sintaxis de este tipo de declaraciones es la siguiente:
TYPE nombre_del_tipo
nombre_variable1 AS tipo1
nombre_variable2 AS tipo2
.
.
.
END TYPE
Por ejemplo:
TYPE Tordenador
procesador AS string*5
RAM AS integer
HD AS integer
precio AS real
END TYPE
Una vez definido el tipo, pueden declararse variables de dicho tipo mediante DIM, como se muestra a continuación:
DIM miordenador AS Tordenador
DIM INTERNET(1,2000) AS Tordenador
Funciones numéricas y de cadena de caracteres.
BASIC incorpora las funciones numéricas habituales:
SEN seno
EXP exponencial
COS coseno
LOG logaritmo
TAN tangente
RND número aleatorio
ATN arco tangente
ABS valor absoluto
SQR raiz cuadrada
y algunas otras como FIX, INT y CINT cuyas sintaxis y acciones pueden consultarse en la ayuda en línea de Qbasic.
En cuanto a las funciones de manejo de cadenas, las mas habituales son:
VAL devuelve el valor numérico de una cadena
STR$ convierte un número en una cadena de caracteres
HEX$ convierte decimal a hexadecimal
LEN devuelve la longitud de una cadena
STRING$ genera una cadena repitiendo un carácter
SPACE$ genera una cadena de espacios en blanco
------
ESTRUCTURAS DE CONTROL
(Son solo para las verisones modernas)
El BASIC clásico controlaba el flujo del programa mediante sentencias como GOTO, GOSUB o ON...GOTO, poco apropiadas para programar estructuradamente.
Actualmente se cuenta con instrucciones de control de flujo similares a las de otros lenguajes.
Ejecución condicional.
Se consigue mediante la sentencia IF.
Su sintaxis es:
IF condicion THEN
Se puede usar en combinación con ELSEIF:
IF condicion1 THEN
bloque de sentencias 1
ELSEIF
bloque de sentencias 2
ENDIF
Pueden escribirse tantos ELSEIF como se desee, pero cuando hay varias posibilidades, es mejor usar la sentencia SELECT CASE, según el modelo siguiente:
SELECT CASE expresion
CASE valor1
bloque 1
CASE valor2
bloque 2
CASE valor 3
bloque 3
CASE ELSE
bloque alternativo
END SELECT
Bloque repetitivos.
La instrucción FOR..NEXT ejecuta un bloque de sentencias un número determinado de veces. Su sintaxis es
FOR contador=inicio TO final (STEP incremento)
bloque
NEXT contador
donde inicio es el valor inicial del contador, fin su valor final y opcionalmente podemos especificar el incremento del contador en cada iteración.
Un grupo de sentencias puede ejecutarse mientras se cumple una determinada condición, o hasta que se cumpla una determinada condición. En el primer caso, se escribe
DO WHILE condicion
bloque
LOOP
y en el segundo
DO UNTIL condicion
bloque
LOOP
En estos dos casos, la condición se evalúa antes de ejecutar el bloque de sentencias. Cuando WHILE o UNTIL se sitúan al final del bloque, tras LOOP, la condición se evalúa después de ejecutar el de ejecutarse el bloque de sentencias:
DO
bloque
LOOP WHILEUNTIL condicion
Es posible forzar la salida del bloque mediante la instrucción DO EXIT. La sintaxis habitual es:
DO
bloque
IF condicion2 THEN DO EXIT
LOOP WHILEUNTIL condicion1
La sentencia WHILE..WEND no es necesaria, dada la flexibilidad de la construcción DO..LOOP.
Fuente: apuntes de la asignatura "Periféricos" de Ingeniería Técnica en Informática de Sistemas, Universidad de Alicante, por Javier Gil Chica, 1995.