Documente Academic
Documente Profesional
Documente Cultură
Cdigo: 18010142
Grupo: 2150510_5
Presentado a
2017
Estudiante 5.
Todos los operadores relacionales admiten como operandos los que pertenezcan a tipos
atmicos, incluyendo las enumeraciones. El resultado de los operadores relacionales es
siempre lgico, esto es, un valor verdadero (no nulo) o falso (nulo). La comparacin de
caracteres sigue la secuencia definida por el cdigo ASCII. Tngase en cuenta que el
cdigo ASCII no ordena correctamente las palabras en Espaol, Francs, Alemn o
cualquier otro idioma que posea signos diacrticos. La comparacin de cadenas no puede
realizarse en empleando los operadores relacionales habituales. Las cadenas son un caso
particular de listas, y al comparar el nombre de dos cadenas mediante los operadores == o
!= se comparan las direcciones en que comienzan ambas. Como quiera que dos cadenas
iguales van a tener generalmente distinta direccin, el resultado no va a ser correcto. Para
comparar dos cadenas debe emplearse una funcin como strcmp() o strncmp(), definidas
ambas en string.h.
Ejemplo
#include <stdio.h>
#include <string.h>
int main(void)
{
char nombre_uno[] = "Alicante";
char nombre_dos[] = "colombia";
char nombre_tres[] = "sanandres";
[cauldron:03xx_PROGS]> ./a.out
nombre_uno = Alicante
nombre_dos = colombia
nombre_tres = sanandres
nombre_uno == nombre_dos = 0
Esto tiene sentido porque 0xbffffc00 != 0xbffffc10
nombre_uno == nombre_tres = 0
Esto tiene sentido porque 0xbffffc00 != 0xbffffc20
nombre_dos == nombre_tres = 0
Esto tiene sentido porque 0xbffffc10 != 0xbffffc20
strcmp(nombre_uno, nombre_dos) = -1
strcmp(nombre_uno, nombre_tres) = -1
strcmp(nombre_dos, nombre_tres) = 0
[cauldron:03xx_PROGS]>
Los resultados de aplicar el operador de comparacin "==" a una pareja de cadenas son los
que se obtienen al comparar numricamente las direcciones de comienzo de los operandos
(las dos cadenas). Como nombre_uno, nombre_dos y nombre_tres son variables distintas,
tienen direcciones de comienzo distintas; aunque su contenido sea el mismo, como es el
caso de nombre_dos y nombre_tres, su direccin es diferente, y la comparacin mediante
"==" produce un resultado falso, porque las direcciones no son iguales.
Cuando se hace uso de la funcin strcmp(), se obtiene un resultado ms acorde con lo
esperable. En efecto, esta funcin (vanse los resultados de escribir "man strcmp" en una
shell) produce un resultado negativo, nulo o positivo segn la primera cadena sea menor,
igual o mayor que la segunda, desde un punto de vista lexicogrfico. En nuestro caso,
"Alicante" es menor que "Barcelona", luego el resultado de esa comparacin es -1. Cuando
se comparan nombre_dos y nombre_tres, el resultado es 0, porque son iguales.
AND y OR trabajan con dos operandos y retornan un valor lgico basadas en las
denominadas tablas de verdad. El operador NOT acta sobre un operando. Estas tablas de
verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo: "si hace sol Y
tengo tiempo, ir a la playa", "si NO hace sol, me quedar en casa", "si llueve O hace
viento, ir al cine". Las tablas de verdad de los operadores AND, OR y NOT se muestran
en las tablas siguientes
x y resultado
true true true
true false false
false true false
false false false
El operador lgico OR
x y resultado
true true true
true false true
false true true
false false false
x resultado
true false
false true
Los operadores AND y OR combinan expresiones relacionales cuyo resultado viene dado
por la ltima columna de sus tablas de verdad. Por ejemplo:
es verdadero (true), si ambas son verdaderas. Si alguna o ambas son falsas el resultado es
falso (false). En cambio, la expresin
(a<b) ||(b<c)
es verdadera si una de las dos comparaciones lo es. Si ambas, son falsas, el resultado es
falso.
!(a<b)
es falsa si (a<b) es verdadero, y es verdadera si la comparacin es falsa. Por tanto, el
operador NOT actuando sobre (a<b) es equivalente a
(a>=b)
!(a==b)
(a!=b)
Supongamos que tenemos una funcin lgica f, que consiste en la suma lgica (XOR) de 2
variables A y B tal que: f(A, B) = A B + A B = A B Suponiendo que los valores 1 =
TRUE y 0 = FALSE, entonces podemos armar lo que se denomina, tabla de verdad para
una funcin lgica XOR. Dicha tabla se expresa de la siguiente manera:
Suponiendo que los valores 1 = TRUE y 0 = FALSE, entonces podemos armar lo que se
denomina, tabla de verdad para una funcion logica XOR. Dicha tabla se expresa de la
siguiente manera:
7 Representacin explcita
Los operadores lgicos entre valores lgicos &&, ||, !; la relacin de desigualdad !=;
algunos de los operadores lgicos entre bits (&, |, ^, ~) y sus expresiones compuestas
(&=, |=, ^=), tienen una representacin realmente difcil de leer, con la desventaja adicional
que sus smbolos no siempre estn fcilmente accesibles en ordenadores con teclados
distintos del estndar USA. Para resolver este problema, el Estndar C++ ha introducido
nuevas formas para su representacin; las denominamos formas explcitas o naturales, en
razn de que se parecen ms a las palabras correspondientes del lenguaje natural. Las
nuevas formas constituyen palabras-clave, y la tabla de equivalencias es la siguiente:
Biografa
Valores lgicos
Copyright 2006-2017 aprenderaprogramar.com
Programacin java
Curso de Lenguaje Java: Enero de 2000
Procedimientos Numricos en Lenguaje Java: Diciembre de 2001
http://www.sc.ehu.es/sbweb/fisica/curso.htm
programacin c++
Copyright 1990-2016 Zator Systems.
http://www.zator.com/index.htm