Variables globales y tipos de variables
Tipos de variables
Carga VARIABLES
MSWLogo tiene varios tipos de variables:
- Número
- Palabra
- Lista
- Matriz (matrices multidimensionales, no las vamos a usar)
Cada tipo de variable tiene sus propiedades. Los dos últimos no son variables, sino conjuntos.
- Los números son, obviamente, números: 23 -56 4.5 (Usa punto en vez de coma)
- Las palabras empiezan (no acaban) con comillas dobles ( " ): "Hola.
Si después de las comillas hay un espacio, pasará lo mismo que (CAR 32)
- Una lista empieza y acaba con corchetes [ ]
- Una matriz es más eficiente que una lista, pero es más compleja de introducir y tiene el tamaño limitado.
Los elementos vacíos de una matriz son, en realidad, listas vacías |
Para crear una palabra con varias palabras o números, usa PALABRA :dato :dato (PALABRA :dato :dato ...)
Para crear una lista con varias palabras o números, usa LISTA :dato :dato (LISTA :dato :dato)
El comando ELEMENTO funciona con cualquier tipo de variable.
Para crear una matriz, sigue los siguientes pasos:
- Piensa que tamaño quieres que tenga
- Escribe: MATRIZ :tamaño
- Para cada elemento, escribe: PONELEMENTO :índice :matriz :dato
En el programa hay una matriz, llamada matriz, que contiene {[] [] [] 3}
Usa PONELEMENTO para llenarla
Pulsa el botón para ver ejemplos |
Una matriz puede contener matrices y listas, y una lista también. ¡De hecho, al crear una matriz la matriz empieza con listas vacías!
Variables globales y locales
Nuestra matriz es una matriz global, al contrario que las que llevamos usando hasta ahora.
Voy a mostra una comparación entre los dos tipos de variables:
Locales | Globales |
Se definen en la primera línea del programa, o con el comando LOCAL :nombre | Si no existe una variable local con ese nombre, se usan este tipo de variables. |
Se define siempre en el programa y no se guarda. | Se define fuera del programa y se guardan junto con los procedimientos. Puede aumentar el peso de un archivo. |
Se pueden compartir pasándolas como argumentos. | Se comparten siempre, por lo que cualquier procedimiento que no la tenga puede modificarla. |
Las variables locales siempre tienen prioridad sobre las globales, si se define en el procedimiento una local con el mismo nombre que una global.
Compobemoslo con los procedimientos VARIABLEGLOBAL y VARIABLELOCAL: El primero usa un dato que viaja con el archivo y el segundo define su propio dato. Las variables locales son más resistentes a los posibles problemas que puedan aparecer si borras la variable global. ¡Compruébalo! Borra la línea que pone:
Haz "b 10
Y prueba de nuevo los procedimientos.