![]() |
Capítulo 4º![]() |
---|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
EXPRESIONES ![]() Bueno... antes de nada esta vez quiero decir que he estado a punto de cargarme el HD enterito y que hace poco me cargué más de la mitad de la base de mensajes. Con lo cual he perdido todos los mensajes sobre el cursillo y el índice que tenía hecho. Pero por suerte, todabía tengo un montón de hojas sueltas en las que tengo todos los esquemas que me planteé antes de empezar así que por ahora parece que pese a todo podré continuar. O:) Hoy nos toca hablar sobre las expresiones. Es un asunto sencillo pero que es importante que quede claro. Una expresión, para decirlo de manera sencilla, podríamos decir que es un cálculo. Por ejemplo, una expresión podría ser esto: (7+8*15-34)/10 Puesto que es un cálculo podemos indicar operaciones. Tenemos dos tipos de operaciones las numéricas y las lógicas. Las numéricas las realizamos con números y dan como resultado un número. Las lógicas las podemos realizar con números o con valores booleanos y dan como resultado un valor booleano. OPERACIONES NUMERICAS ![]() Empecemos por las numéricas. Como operaciones numéricas tenemos estas:
Los operandos que podemos utilizar son: valores inmediatos, constantes o variables. Por ejemplo, en este caso: Const Constante = 7; Var Tabla : Array [0..10] of Byte; A : Word; Begin A := 8 + Tabla[9] - Constante; End.Aquí "8" sería un valor inmediato, "Tabla[9]" una variable, y "Constante" una constante. Así de sencillo. Un punto importante a tener en cuenta es la preferencia de las operaciones. Es decir, que " 8 + 3 * 2 " NO es lo mismo que " (8 + 3) * 2 ". En el primer caso se calcula primero 3*2 y al resultado se le suman 8 mientras que en el segundo se calcula primero 8 + 3 y el resultado se multiplica por 2. La preferencia es la misma que utilizamos normalmente para hacer operaciones matemáticas: primero los paréntesis, luego las multiplicaciones/divisiones/módulos y por último las sumas. Una expresión numérica puede utilizarse en una asignación, como en el ejemplo anterior, para pasar un parámetro a una función, etc... Por ejemplo, en lugar de "A := 8 + Tabla[9] - Constante" podríamos cambiarlo y poner "A := 8 + Tabla[Tabla[3]+Constante*2] - Constante". Con esto se calcularía 7 * 2 (7 es el valor de "constante"), se le sumaría el valor almacenado en la posición 3 de la tabla y ese resultado se utilizaría como índice de la tabla. Se leería en valor que indique esa posición y se le sumaría 8 y se le restaría 7. (la constante) OPERACIONES NUMERICAS ![]() Las operaciones lógicas devuelven siempre verdadero (true) o falso (false). Se utilizan para hacer comprobaciones. Las operaciones lógicas de que disponemos son estas:
Y ahora expliquemos esto un poquito: Las primeras 6 operaciones son muy sencillas. Sirven para comparar dos expresiones numéricas y nos devuelven el valor booleano correspondiente. Así, por ejemplo, la expresión "3 = 2" siempre nos devolverá falso, pero la expresión "A = 2" tal vez devuelva falso o tal vez devuelva verdadero, ya que dependerá de si la variable A está almacenando o no el valor 2 en el momento en que se hace la comprobación. Como siempre, podemos complicar las cosas y escribir cosas como esto: (Tabla[3] - Constante + 8 * Tabla[ Tabla[ 9 - 3 ] + 9) >= Tabla[5](Si alguien no acaba de ver claro esto, que pruebe a desglosar en pasos esta expresión, tal y como he hecho yo con las anteriores, y me lo comente) Las 3 últimas operaciones de la lista ya no trabajan con expresiones numéricas sino con expresiones lógicas. Teniendo arriba la función de cada una creo que lo mejor es explicarlo mediante ejemplos. (3 = 2) or (1 = 4) daría siempre falso porque la expresión (3 = 2) da falso y la expresión (1 = 4) también. Y "or" sólo devuelve verdadero cuando al menos una de las expresiones es verdadera. (3 = 2) or (1 = 1) daría verdadero porque aunque (3 = 2) es falso, (1 = 1) es verdadero. ((3 = 2) or (1 = 1)) and (9 = 3) devolvería falso porque ((3=2) or (1=1)) da verdadero pero (9 = 3) da falso. Y para que "and" devuelva verdadero han de ser verdaderas las dos expresiones. not (1=3) daría verdadero. Porque (1=3) da falso y "not" devuelve lo contrario de lo que vale la expresión dada. Hasta aquí es sencillo, pero hay que tener en cuenta que no nos vamos a limitar a hacer que el Turbo Pascal nos diga que 1 no es igual a 3. La finalidad de esto es mucho más útil, por supuesto. Hay que recordar que para construir las expresiones lógicas podemos valernos de cualquier expresión numérica. Esto es, si tenemos dos expresiones numéricas como estas: (Tabla[4] - 8) * 34 (Contante + A) % Tabla[3]Podemos hacer una expresión lógica que compare esas dos expresiones, como por ejemplo: ( (Tabla[4] - 8) * 34 ) >= ( (Constante + A) % Tabla[3] )Y una vez tenemos esta expresión lógica podemos combinarla con otras expresiones lógicas para hacer expresiones lógicas más complejas, por ejemplo algo como esto: ((( Tabla[4] - 8) * 34 ) >= ((Constante + A) % Tabla[3])) or (2=(1+A))(si alguien quiere entretenerse, podría ser un buen ejercicio calcular para qué valores de Tabla[4], Tabla[3] y A la expresión ENTERA es verdadera. ![]() Uhm... creo que por hoy no tenía que decir nada más. :m ... Tampoco os puedo asegurar que aquí esté todo lo que tenía que decir, porque he perdido los esquemas, pero... bueno... creo que sí. O:) |
---|
![]() |
![]() por ComaC |
---|