Professional Documents
Culture Documents
Núcleo Barinas
LENGUAJE DE
PROGRAMACION
Autor (es):
Sánchez Elvis
C.I.N° 16.638.204
Sección: “A”
Ingeniería en Sistemas
expr-OR-logica || expresion-AND-logica
Este operador sigue un funcionamiento análogo al anterior. El primer operando
(izquierdo) es convertido a bool. Para ello, si es una expresión, se evalúa para obtener
el resultado (esta computación puede tener ciertos efectos laterales). A continuación el
valor obtenido es convertido a bool cierto/falso siguiendo las reglas de conversión
estándar. Si el resultado es true, el proceso se detiene y este es el resultado, sin que en
este caso sea necesario evaluar la expresión de la derecha (recuérdese que en el
diseño de C++ prima la velocidad).
Si el resultado del operando izquierdo es false, se continúa con la evaluación de la
expresión de la derecha, que también es convertida a bool. Si el nuevo resultado es
true, entonces el resultado del operador es true. En caso contrario el resultado es false.
Nota: el Estándar establece que antes de ser evaluada la expresión derecha, han
sucedido todos los posibles efectos laterales de la expresión izquierda, a excepción de la
destrucción de los posibles objetos temporales que se hubieran creado.
Ejemplo
#include <iostream.h>
bool alto = true, bajo = false, blanco = true, negro = false;
! expresion-cast
El operando expresion-cast (que puede ser una expresión que se evalúa a un resultado
es convertido a tipo bool, con lo que solo puede ser uno de los valores cierto/falso. A
continuación el operador cambia su valor: Si es cierto es convertido a falso y viceversa.
Resulta por tanto, que el resultado de este operador es siempre un tipo bool, aunque al
existir una conversión estándar por la que un cero es convertido a false, y cualquier
valor distinto de cero a true coloquialmente se dice que este operador convierte un
operando 0 en 1 y uno no-cero en 0. En otras palabras: este operador devuelve cierto
(true) si la expresión se evalúa a distinto de cero, en caso contrario devuelve falso
(false).
Ejemplo
#include <iostream.h>
bool alto = true, bajo = false;
int main (void) {
if (alto) { cout << "Uno cierto" << endl; }
else cout << "Uno falso" << endl;
if (!alto) { cout << "Dos cierto" << endl; }
else cout << "Dos falso" << endl;
if (!bajo) { cout << "Tres cierto" << endl; }
else cout << "Tres falso" << endl;
}
Salida:
Uno cierto
Dos falso
Tres cierto
Si E es una expresión, !E es equivalente a (0 == E). Como consecuencia, las
expresiones que siguen son equivalentes dos a dos:
if (! valid);
if (valid == 0);
...
if (valid);
if (valid != 0);
Operadores Aritméticos:
Los operadores aritméticos se usan para realizar cálculos de aritmética de números
reales y de aritmética de punteros. C++ dispone de los siguientes:
+ Dos posibilidades: Suma binaria ; más unitario .
++ Incremento unitario (dos clases )
- Dos posibilidades: Resta binaria ; menos unitario .
-- Decremento unitario (dos clases )
* Multiplicación (este símbolo tiene también otros usos )
/ División .
% Resto o módulo .
Nota: la aritmética de números reales es la clásica de la escuela primaria. La de
punteros es una aritmética un tanto especial y rudimentaria.
Observaciones
Los operadores aritméticos pertenecen a dos grupos: unos aceptan operandos de tipo
numérico; otros aceptan operandos de tipo puntero-a-tipoX. Además son de dos tipos;
unarios (que aceptan un solo operando) y binarios (que aceptan dos). La clasificación es
la siguiente:
Operadores aritméticos unarios:
+ más unitario.
++ Incremento unitario (dos clases)
- menos unitario.
-- Decremento unitario (dos clases)
Operadores artiméticos binaros:
+ Suma binaria.
- Resta binaria.
* Multiplicación
/ División.
% Resto o módulo.
Estos últimos pueden combinarse con el de asignación = para dar origen a operadores
compuestos son los siguientes:
+= Asigna suma
-= Asigna diferencia (resta)
*= Asigna producto
/= Asigna división
%= Asigna resto (módulo)
Tenga en cuenta que existen distintos operadores enmascarados bajo los mismos
símbolos + y -. Es un caso de sobrecarga incluida en el propio lenguaje. Como en el
resto de los casos de sobrecarga, el compilador deduce por el contexto de que versión
del operador se trata. Como veremos inmediatamente, en C++ es perfectamente válida
una expresión del tipo:
int x = *ptr+-*++ptr;
En el ejemplo siguiente se muestran los casos posibles:
int ai[] = {2, 3};
int* ptr = ai;
int r1 = +ai[0]; // L.3: más unitario sobre tipo numérico
int r2 = -ai[1] // L.3: menos unitario sobre tipo numérico
int r3 = ai[0] + ai[1]; // L.4: 2 + 3 suma binaria (de enteros)
int r4 = ai[1] - ai[0] // L.5: 3 - 2 resta binaria (de enteros)
int r5 = ai[0] + -ai[1]; // L.6: 2 +(-3) suma binaria seguida de menos unitario
int r6 = *ptr + -*++ptr; // L.7: Suma binaria (de enteros) a + (-b)
Nota: Profesor a la verdad voy a ser sincero con usted… en programación estoy mal, por
tal razón no pude responder la ultima pregunta… También el día sábado para mi es
difícil asistir a su clase y le plantee mi posición en la clase pasada. Le pido por favor
pueda darme una solución para esta situación… Dios le bendiga…