MESA 1
"TEMA: OPERADORES"
ARGUETA GUTIERREZ RICARDO ANDRES
GONZALES CORTES VIRGINIA
NIGO RIVAS STEPHANIE
PERALTA ACOSTA MARIO IVAN
PONCE GARCIA ANGEL AARON
Operador de asignación
Lo primero que vamos a ver en este tema es un operador que nos permita guardar "algo" en una variable. En el programa Saludador para guardar nuestro nombre en la variablenombre$usábamos directamente la instrucción INPUT que se encargaba de leer los datos del teclado y guardarlos directamente en la variable. Aquí no empleábamos el operador de asignación, pero después hemos hecho cosas como:
mensaje$ = "Prueba superada"
o al declarar las constantes hacíamos:
CONST iva = 16
En estos ejemplos se puede ver que hemos usado el signo Igual para "Asignar" a la variable que hay a su izquierda el valor de la "Expresión" que hay a su derecha, por lo tanto ya podemos decir que el signo igual es el operador de asignación en el lenguaje Basic.
En el caso más sencillo:
total = 500
Hacemos que en la variable total se almacene el número 500, perdiéndose el valor que tuviera anteriormente.
También podemos hacer:
total = total + 100
En este caso estamos usando la variable total como un "acumulador" ya que vamos a almacenar en ella el valor que tenga antes de la asignación más cien. Dicho de otra forma, si la variable valía 500 ahora le vamos a almacenar su valor de 500 más 100, con lo que al final de la asignación pasará a valer 600. En el siguiente apartado se explican algunas cosas sobre estas asignaciones.
Es importante tener claro que a una variable solo le podemos asignar los datos adecuados a su tipo, por ejemplo si a una variable de cadena le asignamos una expresión numérica o a una variable numérica le asignamos una cadena se producirá un Error de Tiempo de Ejecución y el programa se parará.
También hay que tener en cuenta que si a una variable de tipo entero le asignamos una expresión cuyo valor es con decimales, el número almacenado se redondeará, por ejemplo...
num% = 10 / 3
Hará que num% valga 3 en vez de 3.3333, igual que
num% = 20 / 3
Hará que num% valga 7 en vez de 6.6666. Esta vez se ha redondeado hacia arriba.
Tiene que quedar claro que la variable "destino" siempre va a la izquierda del signo igual, y la expresión a la derecha.
Las expresiones nunca van a ir solas. Siempre van en una asignación o en una estructura condicional que ya veremos más adelante.
Contadores y acumuladores
Estas dos palabras se usan mucho en programación para referirse a variables que van incrementando su valor a lo largo de la ejecución del programa.
Normalmente serán de tipo numérico y no se tratan de ninguna forma en especial, solo que al asignarles un valor se hace de forma que el anterior no se pierda, por ejemplo:
nivel = nivel + 1
total = total + subtotalLinea
vidas = vidas - 1
tamaño = tamaño * 2
Es muy importante inicializarlas de forma correcta siguiendo estas normas:
• Si vamos a sumar o restar la inicializaremos a cero al principio del programa para que no empiecen con valores residuales.
• Si vamos a multiplicar las inicializamos a 1, porque si valen cero todo lo que multipliquemos por ella seguirá valiendo cero.
La diferencia entre acumuladores y contadores es que los acumuladores se incrementan con cualquier número, como por ejemplo el total de una factura, mientras que los contadores se incrementan siempre con el mismo número, normalmente 1.
Operadores aritméticos
Llamamos operadores aritméticos a los signos que usaremos para hacer operaciones aritméticas como sumas, restas, etc.
OPERADOR | NOMBRE |
+ | Suma |
- | Resta |
* | Multiplicación |
/ | División |
MOD | Resto de división (Módulo) |
^ | Potencias |
El operador suma lo que hace es sumar valores. Se pueden encadenar tantas sumas como queramos, por ejemplo
total = 2 + 74 + 7 + 25 + 82
El operador resta resta un valor a otro, por ejemplo:
neto = peso - tara
El operador asterisco hace multiplicaciones, por ejemplo:
elDoble = n * 2
El operador división divide un valor entre otro, por ejemplo:
kilos = gramos / 1000
El operador MOD nos devuelve el resto de una división. Es especialmente útil para deducir si un número es par, ya que al dividir un par entre 2 el resto siempre es 0. Se usa entre los dos operandos igual que los símbolos anteriores, veremos su funcionamiento y su utilización en los temas siguientes.
El operador "acento circunflejo" sirve para calcular potencias, por ejemplo 5^2 es cinco al cuadrado o también 5*5. También podríamos calcular potencias decimales como 4^2.5. Para escribir este símbolo pulsa mayúsculas y la tecla correspondiente dos veces, oirás un pitido y solo entonces aparecerá escrito en la pantalla. Si aparece dos veces borra uno.
Operadores relacionales o de comparación
Estos operadores hacen que una expresión devuelva un valor lógico, es decir, en vez de un número devolverá VERDADERO o FALSO. Esto nos será muy útil en las estructuras condicionales que veremos en los siguientes temas, dónde veremos muchos ejemplos de su utilización.
OPERADOR | NOMBRE |
= | Igual |
> | Mayor que |
< | Menor que |
>= | Mayor o igual que |
<= | Menor o igual que |
<> | Distinto de |
En QBasic el signo igual sirve tanto para asignaciones como para comparaciones, pero nunca se confunden ya que QBasic los evalúa de una u otra forma según dónde estén escritos.
Operadores lógicos
Estos operadores también devuelven un valor VERDADERO o FALSO a partir de los valores de las dos expresiones lógicas que unen. Igual que los anteriores se explicarán en los temas siguientes dedicados a estructuras condicionales.
OPERADOR | NOMBRE |
AND | Operador Y |
OR | Operador O |
NOT | Operador monario de negación |
XOR | Operador O exclusivo |
EQV | Operador de equivalencia |
IMP | Operador de implicación |
Los tres primeros son las puertas lógicas elementales del álgebra de Boole, los otros sepueden construir a partir de las anteriores y por eso no suelen estar en otros lenguajes de programación y no hablaremos de ellos aquí.
AND devuelve verdadero si las dos expresiones que une son verdaderas, en caso contrario devuelve falso. Por ejemplo:
esNavidad = ((mes = 12) AND (dia = 25))
Podemos asegurar que es Navidad si el mes es 12 y el día es 25. Si el mes no es diciembre no será navidad aunque estemos a 25, tampoco si es un día de diciembre distinto de 25 y mucho menos si ni es diciembre ni es 25. Usamos por primera vez los paréntesis para dar más claridad, más adelante se explica cómo hacerlo.
OR devuelve verdadero si alguna de las dos expresiones que une es verdadera, o las dos lo son. Si las dos son falsas devuelve falso, por ejemplo:
puedesComprar = ((tuDinero > 0) OR (precio = 0))
En este caso la variable puedesComprar sería verdadero si tu dinero es mayor que cero (aprovechamos para dar un ejemplo del operador >) o si el precio es gratis, o las dos cosas. Solo sería falso si no tienes dinero y el producto a comprar vale dinero, con lo que las dos partes de la expresión serían falsas y el resultado también.
NOT es un operador "monario". Esto significa que sólo tiene un operando, a diferencia de los otros que siempre están entre dos operandos. Lo que hace NOT es invertir el resultado de una expresión, es decir, si es verdadera devuelve falso y si es falsa devuelve verdadero.
Para detallar los posibles valores que devuelven los operadores lógicos se construyen las llamadas "Tablas de la verdad" que representan todas las combinaciones posibles y los valores devueltos por cada operador.
TABLA DE LA VERDAD PARA AND | ||||
VERDADERO | AND | VERDADERO | = | VERDADERO |
VERDADERO | AND | FALSO | = | FALSO |
FALSO | AND | VERDADERO | = | FALSO |
FALSO | AND | FALSO | = | FALSO |
TABLA DE LA VERDAD PARA OR | ||||
VERDADERO | OR | VERDADERO | = | VERDADERO |
VERDADERO | OR | FALSO | = | VERDADERO |
FALSO | OR | VERDADERO | = | VERDADERO |
FALSO | OR | FALSO | = | FALSO |
TABLA DE LA VERDAD PARA NOT | |||
NOT | VERDADERO | = | FALSO |
NOT | FALSO | = | VERDADERO |
Observa que la variable puedesComprar y la esNavidad del ejemplo anterior pueden ser de cualquier tipo numérico para poder ser verdaderas o falsas. QBasic entiende que una variable (o el resultado de una expresión) es falsa si vale 0 y verdadera en cualquier otro caso. Otros lenguajes tienen un tipo de datos específico para estas situaciones, pero aquí puede valer cualquier tipo de datos numérico.
Es normal declarar constantes al principio de los programas para poder usar las palabrasVERDADERO y FALSO en las expresiones y darle más claridad. Se haría:
CONST FALSO = 0
pero para verdadero podemos hacer...
CONST VERDADERO = NOT FALSO
con lo que hacemos que VERDADERO sea justo lo contrario de FALSO. Muy lógico.
No hay comentarios:
Publicar un comentario