[Tutorial C++] II.2 - Variables y operadores
Página 1 de 1.
[Tutorial C++] II.2 - Variables y operadores
Antes de empezar recomiendo leer los tutoriales de C al respecto de este tema, sobre variables y operadores. Considéralos una introducción, ahora al tema:
Variables
Las variables, que constan de dirección (nombre), valor contenido y tipo de valor, se declaran así:
El nombre es libre, simplemente no debe coincidir con el nombre de otra variables que no este en su ámbito, y no debe empezar por un número. El valor corresponde al que le asignemos con el operador = o a través de una función. En una mezcla de código y explicación, aquí tienes los tipos de variable heredados de C:
Una vez declaradas, las variables pueden cambiar su valor si están en un ámbito al que puedas acceder. Excepto si quieres crear un constante, es decir, un valor para usar, pero no para modificar. Esto se consigue con el prefijo const. Y volviendo al ejemplo de antes, esto es un valor que no podrá cambiar:
Las variables tienen más características, en relación con los punteros, que se tratará más adelante.
Operadores aritméticos
Toca hablar de los operadores, pero a fondo. Hay que distinguir tres tipos de operaciones y operadores: los que modifican una variable, los que modifican dos y los que modifican tres. Por mas o menos ese orden, explicaré todos los operadores:
El operador clave para asignar valor a una variable es =. La única novedad que puedo dar respecto a este operador es la asignación múltiple:
Hablemos ahora de los operadores aritméticos, es decir, las operaciones clásicas: suma (+), resta (-), multiplicación (*), división (/) y resto de la división de enteros (%). Pero hay que indicar que tienen niveles de prioridad, es decir:
Pero siempre puedes forzar la prioridad de las operaciones a tu gusto, yo por mi parte recomiendo usar paréntesis ante la duda de cuál es la prioridad, ya que poseen la máxima prioridad de entre todos los operadores, veamos:
Por otro lado tenemos otro "atajo" relacionado con los operadores aritméticos. En el caso de los bucles sobre todo usaremos mucho este atajo. Consiste en hacer que una variable aumente a disminuya su valor en un número entero. Es decir:
Operadores lógicos
Con los operadores anteriores y las funciones de math.h, ya podemos hacer cualquier cálculo matemático convencional. Pero C++ no está limitado a eso, y al igual que en C, tenemos condiciones para que se ejecuten ciertas cosas. Y si tenemos una condición, o varias, debemos estudiar la lógica, si los valores son ciertos o falsos. Para acumular datos de tipo cierto/falso, ya he explicado las variables bool, y que VERDADERO (TRUE) es cualquier valor distinto de 0, y FALSO (FALSE) es 0.
Partiendo de aquí podemos operar valores lógicos (TRUE y FALSE) con estos operadores:
Pero aparte, podemos manejar valores lógicos ya obtenidos, y operarlos entre si:
Operadores de bits
Esta orientado a la programación a bajo nivel, y no me voy a entretener mucho. Sólo diré que los números, y cualquier dato informático está escrito en bits o código binario (ceros y unos). Y que los operadores primarios son los que operan bits. Son: &, |, ^, ~, <<, >>. Aquí una sencilla tabla para entenderlo:
Los operadores >> y <<, desplazan los bits de un número tanto lugares como indiques:
Operador condicionales
Es más bien una forma de condición, pero a su vez es un operador ternario. Ahora no me entretengo mucho, lo explicaré en Condiciones en C++. Simplemente:
Operador coma
Más que un operador, es un agrupador. Permite ejecutar varias sentencias en la misma línea. Por ejemplo para definir variables del mismo tipo:
Operadores especiales
Ya hemos hablado de ellos, el primero es el paréntesis () que permiten alterar la prioridad de otros operadores, de lo que ya he dado muchos ejemplos.
Por otro lado están los corchetes [] que sirven para definir arrays o tablas, un tema que trataré mas adelante.
También he hablado ya del el operador de enlace, o de ámbito, ::, que permite usar o aclarar el ámbito de una función o variable que este asignada a un namespace o a una clase. Es un operador propio de C++ e inexistente en C que ya trataremos.
También tenemos el operador sizeof, que devuelve el tamaño en bytes de una tabla, una variable, etc... Un ejemplo sencillo:
Por último, y por meterlo en algún sitio, como operadores unitarios, podemos hablar de la conversión de tipos de variables. Es decir, pasar de entero a decimal por ejemplo:
Variables
Las variables, que constan de dirección (nombre), valor contenido y tipo de valor, se declaran así:
- Código:
tipo nombre;
- Código:
tipo nombre = valor;
El nombre es libre, simplemente no debe coincidir con el nombre de otra variables que no este en su ámbito, y no debe empezar por un número. El valor corresponde al que le asignemos con el operador = o a través de una función. En una mezcla de código y explicación, aquí tienes los tipos de variable heredados de C:
- Código:
char c = 'p';
short s = 324;
int i = -1098;
long l = 341343;
float f = -9.87f;
double d = 342.34521234
- Código:
bool interruptor = TRUE;
interruptor = FALSE;
interruptor = 1;
- Código:
unsigned char c = 198;
long double d = -37.234;
static unsigned int = 49999;
- Código:
static unsigned long int decimal = 92342;
Una vez declaradas, las variables pueden cambiar su valor si están en un ámbito al que puedas acceder. Excepto si quieres crear un constante, es decir, un valor para usar, pero no para modificar. Esto se consigue con el prefijo const. Y volviendo al ejemplo de antes, esto es un valor que no podrá cambiar:
- Código:
const static unsigned long int decimal = 92342;
Las variables tienen más características, en relación con los punteros, que se tratará más adelante.
Operadores aritméticos
Toca hablar de los operadores, pero a fondo. Hay que distinguir tres tipos de operaciones y operadores: los que modifican una variable, los que modifican dos y los que modifican tres. Por mas o menos ese orden, explicaré todos los operadores:
El operador clave para asignar valor a una variable es =. La única novedad que puedo dar respecto a este operador es la asignación múltiple:
- Código:
int a, b, c;
a = b = c = 4;
- Código:
int a, b, c;
a = (b = (c = 4));
- Código:
i = i + 4;
- Código:
i += 4;
- Código:
+= -= *= /= %= //como operadores aritméticos
<<= >>= &= ^= |= //como operadores de bits
Hablemos ahora de los operadores aritméticos, es decir, las operaciones clásicas: suma (+), resta (-), multiplicación (*), división (/) y resto de la división de enteros (%). Pero hay que indicar que tienen niveles de prioridad, es decir:
- Código:
9 * 4 + 12 / -4 = 33
- Código:
9 * 4 + 12 / -4 = 33
9 * 4 - 12 / 4 = 33 //Aplicado el 1er nivel de prioridad
36 - 3 = 33 //Aplicado el 2º nivel de prioridad
33 = 33 // Aplicado el 3er nivel de prioridad
Pero siempre puedes forzar la prioridad de las operaciones a tu gusto, yo por mi parte recomiendo usar paréntesis ante la duda de cuál es la prioridad, ya que poseen la máxima prioridad de entre todos los operadores, veamos:
- Código:
(9 * (4 + 12)) / -4 = -(9 * 16)/4 = -36
Por otro lado tenemos otro "atajo" relacionado con los operadores aritméticos. En el caso de los bucles sobre todo usaremos mucho este atajo. Consiste en hacer que una variable aumente a disminuya su valor en un número entero. Es decir:
- Código:
int a = 2, b = 3;
a++; //a pasa a valer 3
b--; //b pasa a valer 2
- Código:
int a = 1, b;
b = a++; //b valdrá 1 (valor inicial de a) y a valdrá desde ahora 2
- Código:
int a = 1, b;
b = ++a; //b valdrá 2 (valor nuevo de a) y a valdrá 2
Operadores lógicos
Con los operadores anteriores y las funciones de math.h, ya podemos hacer cualquier cálculo matemático convencional. Pero C++ no está limitado a eso, y al igual que en C, tenemos condiciones para que se ejecuten ciertas cosas. Y si tenemos una condición, o varias, debemos estudiar la lógica, si los valores son ciertos o falsos. Para acumular datos de tipo cierto/falso, ya he explicado las variables bool, y que VERDADERO (TRUE) es cualquier valor distinto de 0, y FALSO (FALSE) es 0.
Partiendo de aquí podemos operar valores lógicos (TRUE y FALSE) con estos operadores:
- Código:
a == b //Es TRUE si a y b son iguales
a != b //Es TRUE si a y b son distintos
a > b //Es TRUE si a es mayor que b
a < b //Es TRUE si a es menor que b
a >= b //Es TRUE si a es mayor o igual que b
a <= b //Es TRUE si a es menor o igual que b
Pero aparte, podemos manejar valores lógicos ya obtenidos, y operarlos entre si:
- Código:
!condicion //Si es TRUE, lo convierte en FALSE y viceversa
condicion1 && condicion2 //Devuelve TRUE si las dos condiciones son TRUE, sino devuelve FALSE
condicion1 || condicion2 //Devuelve TRUE si alguna, o ambas, de las dos condiciones son TRUE, sino devuelve FALSE
Operadores de bits
Esta orientado a la programación a bajo nivel, y no me voy a entretener mucho. Sólo diré que los números, y cualquier dato informático está escrito en bits o código binario (ceros y unos). Y que los operadores primarios son los que operan bits. Son: &, |, ^, ~, <<, >>. Aquí una sencilla tabla para entenderlo:
A&B == C | A|B == C | A^B == C | A != ~A == B |
0&0 == 0 | 0|0 == 0 | 0^0 == 0 | 0 != ~0 == 1 |
0&1 == 0 | 0|1 == 1 | 0^1 == 1 | 1 != ~1 == 0 |
1&0 == 0 | 1|0 == 1 | 1^0 == 1 | |
1&1 == 1 | 1|1 == 1 | 1^1 == 0 |
Los operadores >> y <<, desplazan los bits de un número tanto lugares como indiques:
- Código:
int a = 25; //00011001
int num = a << 3; //11001000
Operador condicionales
Es más bien una forma de condición, pero a su vez es un operador ternario. Ahora no me entretengo mucho, lo explicaré en Condiciones en C++. Simplemente:
- Código:
valor_logico ? sentencia_si_es_TRUE : sentencia_si_es_FALSE;
Operador coma
Más que un operador, es un agrupador. Permite ejecutar varias sentencias en la misma línea. Por ejemplo para definir variables del mismo tipo:
- Código:
int a = 1, b = 2, c = 3;
- Código:
int a = 5;
int b = (a = 6, a + 2); //b finalmente vale 8
Operadores especiales
Ya hemos hablado de ellos, el primero es el paréntesis () que permiten alterar la prioridad de otros operadores, de lo que ya he dado muchos ejemplos.
Por otro lado están los corchetes [] que sirven para definir arrays o tablas, un tema que trataré mas adelante.
También he hablado ya del el operador de enlace, o de ámbito, ::, que permite usar o aclarar el ámbito de una función o variable que este asignada a un namespace o a una clase. Es un operador propio de C++ e inexistente en C que ya trataremos.
También tenemos el operador sizeof, que devuelve el tamaño en bytes de una tabla, una variable, etc... Un ejemplo sencillo:
- Código:
int k = 500;
int tamanno = sizeof k; //tamanno será igual a 2, que es el tamaño en bytes de int
Por último, y por meterlo en algún sitio, como operadores unitarios, podemos hablar de la conversión de tipos de variables. Es decir, pasar de entero a decimal por ejemplo:
- Código:
variable = (tipo_nuevo) variable_de_otro_tipo;
int a = 5;
float b = (float) a; //b será 5.0f
Temas similares
» [Tutorial C] II.3 - Operadores
» [Tutorial C] II.2 - Variables y constantes
» [Tutorial] II.4 - glutKeyboardFunc()
» [Tutorial C] IV.3 - Estructuras
» [Tutorial C] IV.1 - Punteros
» [Tutorial C] II.2 - Variables y constantes
» [Tutorial] II.4 - glutKeyboardFunc()
» [Tutorial C] IV.3 - Estructuras
» [Tutorial C] IV.1 - Punteros
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|