La utilidad de los programas «Hola Mundo» presentados en el capítulo anterior es bastante cuestionable. Tuvimos que escribir varias líneas de código, compilarlas, y luego ejecutar el programa resultante, sólo para obtener el resultado de una simple frase escrita en la pantalla. Habría sido mucho más rápido si hubiéramos escrito la frase de salida nosotros mismos.

    Sin embargo, la programación no se limita a la impresión de textos simples en la pantalla. Para ir un poco más allá y poder escribir programas que realicen tareas útiles que realmente nos ahorren trabajo, necesitamos introducir el concepto de variables.

    Digamos que les pido que recuerden el número 5, luego memoricen el número 2 al mismo tiempo. Acaba de almacenar dos valores diferentes en su memoria (5 y 2. Ahora, si les pido que sumen 1 al primer dígito, deben mantener los números 6 (es decir, 5 + 1) y 2 en su resumen. Entonces, por ejemplo, podríamos restar estos valores y obtener 4 como resultado.

    Todo el proceso descrito anteriormente es comparable a lo que un ordenador puede hacer con dos variables. El mismo proceso se puede expresar en C++ con el siguiente conjunto de instrucciones:

    a = 5;b = 2;a = a + 1;resultado = a - b;

    Obviamente, este es un ejemplo muy simple, porque sólo usamos dos valores enteros pequeños, pero considere que su computadora puede almacenar millones de números como estos al mismo tiempo y realizar operaciones matemáticas sofisticadas con ellos.

    Ahora podemos definir una variable como parte de la memoria para almacenar un valor.

    Cada variable necesita un nombre que la identifique y la distinga de las demás. Por ejemplo, en el código anterior, los nombres de las variables eran a, b y resultado, pero podríamos haber llamado a las variables cualquier nombre que pudiéramos haber encontrado, siempre y cuando fueran identificadores C++ válidos.

    Los identificadores

    Un identificador válido es una secuencia de una o más letras, números o guiones bajos (_. Los espacios, signos de puntuación y símbolos no pueden formar parte de un identificador. Además, los identificadores deben comenzar siempre con una letra. También pueden comenzar con un carácter de subrayado (_), pero estos identificadores se consideran, en la mayoría de los casos, reservados para palabras clave específicas del compilador o identificadores externos, así como identificadores que contienen dos caracteres de subrayado sucesivos. En ningún caso podrán comenzar con un número.

    Muy importante: el lenguaje C++ es un lenguaje «sensible a mayúsculas y minúsculas». Esto significa que un identificador escrito en mayúsculas no es equivalente a otro con el mismo nombre pero escrito en minúsculas. Así, por ejemplo, la variable RESULTADO no es idéntica a la variable resultado o a la variable resultado. Se trata de tres identificadores diferentes que identifican tres variables diferentes.

    Tipos de datos

    Los valores de las variables se almacenan en algún lugar en una ubicación no especificada de la memoria del ordenador como ceros y unos. Nuestro programa no necesita saber la ubicación exacta donde se almacena una variable; simplemente puede referirse a ella por su nombre. Lo que el programa necesita saber es el tipo de datos almacenados en la variable. Almacenar un entero simple no es lo mismo que almacenar una letra o un gran número de coma flotante; aunque todos estén representados por ceros y unos, no se interpretan de la misma manera y, en muchos casos, no ocupan la misma cantidad de memoria.

    Los tipos de datos fundamentales son tipos básicos implementados directamente por el lenguaje que representan los dispositivos de almacenamiento básicos que son soportados de forma nativa por la mayoría de los sistemas.

    Se pueden clasificar principalmente como:

    Tipos de caracteres: Pueden representar un solo carácter, como’A’ o’$’. El tipo más elemental es char, que es un carácter de un byte. También se ofrecen otros tipos para caracteres más grandes.

    Tipos de números enteros: Pueden almacenar un valor entero, como 7 o 1024. Existen en diferentes tamaños y pueden ser firmados o no, dependiendo de si soportan valores negativos o no.

    También readStructure de un programa en

    C++Tipos

    de

    coma flotante: Pueden representar valores reales, como 3.14 o 0.01, con diferentes niveles de precisión, dependiendo del tipo utilizado para los tres tipos de coma flotante

    .

    Tipo booleano: El tipo booleano, llamado booleano en C ++, sólo puede representar uno de los dos estados, verdadero o falso.

    Aquí está la lista completa de los tipos básicos en C++:

    GroupTypeNameSizeTypeNameTypeStringschar8 bits.char16_tau al menos 16 bits.char32_tau al menos 32 bits.wchar_t puede soportar tamaños mayoresType intau entero (firmado)firmado al menos 8 bits.signed short intau al menos 16 bits.signed intau al menos 16 bits.signed long intau al menos 32 bits.signed long intau al menos 64 bits.Tipo entero (sin signo) sin signo (del mismo tamaño que su equivalente firmado) sin signo, corto, intinterno corto, intinterno largo, intinterno largo, intinterno largo, intinterno largo, intinterno largo, de punto flotante, flotante, doble, de doble tipo, booleano, no evitable, tipo de puntero nulo (nullptr

    ) En cada uno de los grupos anteriores, la diferencia entre los tipos corresponde sólo a su tamaño (es decir, – -)(es decir, cuánto ocupan en la memoria): el primer tipo de cada grupo es el más pequeño y el último es el más grande, siendo cada tipo al menos igual al anterior en el mismo grupo. De lo contrario, los tipos de un grupo tienen las mismas propiedades.

    Tenga en cuenta que en el panel superior al elemento distinto de char (que tiene un tamaño exactamente igual a un byte), ninguno de los tipos fundamentales tiene un tamaño estándar especificado (pero un tamaño mínimo máximo. Por lo tanto, el tipo no es necesario (y en muchos casos no lo es) exactamente este tamaño mínimo. Esto no significa que estos tipos tengan un tamaño indeterminado, sino que no existe un tamaño estándar en todos los compiladores y máquinas; cada implementación de compilador puede especificar los tamaños de estos tipos que mejor se adapten a la arquitectura en la que se ejecutará el programa. Esta especificación de tamaño bastante genérica para los tipos da al lenguaje C++ una gran flexibilidad para ser adaptado para trabajar de forma óptima en todo tipo de plataformas, actuales y futuras.

    Los tamaños de tipo anteriores se expresan en bits; cuantos más bits tenga un tipo, más valores distintos puede representar, pero al mismo tiempo también consume más espacio de memoria:

    8-bit = 256 = 28
    16-bit = 65 536 = 216
    32-bit 4 = 294 967 296= 232
    64-bit = 18 446 744 073 709 551 616 = 264

    Para los tipos enteros, tener valores más representativos significa que el rango de valores que pueden representar es mayor; por ejemplo, un entero de 16 bits sin signo podría representar 65.536 valores distintos en el rango a 65.535, mientras que su equivalente con signo podría representar, en la mayoría de los casos, valores entre -32768 y 32767. Tenga en cuenta que el rango de valores positivos se reduce aproximadamente a la mitad en los tipos con signo en comparación con los tipos sin signo, debido al hecho de que uno de los 16 bits se utiliza para el signo; esta es una diferencia de rango relativamente modesta, que rara vez justifica el uso de tipos sin signo sólo en el rango de valores positivos que pueden representar.

    Para los tipos de coma flotante, el tamaño afecta su precisión, teniendo más o menos bits para su significado y exponente.

    Si el tamaño o la precisión del tipo no es un problema, char, int y double se seleccionan normalmente para representar caracteres, números enteros y valores de coma flotante, respectivamente. Los otros tipos de sus respectivos grupos sólo se utilizan en casos muy especiales.

    Los tipos descritos anteriormente (caracteres, números enteros, coma flotante y booleano) se denominan colectivamente tipos aritméticos. Pero hay dos tipos fundamentales adicionales: void, que identifica la falta de tipo; y nullptr, que es un tipo especial de puntero. Ambos tipos se discutirán más adelante en un capítulo futuro sobre indicadores.

    También lea Las cadenas en

    C++C+++ soportan una amplia variedad de tipos basados en los tipos fundamentales descritos anteriormente; estos otros tipos se denominan tipos de datos compuestos y son uno de los principales activos del lenguaje C++. También los veremos con más detalle en los próximos capítulos.

    Declaración de variables

    C++ es un lenguaje altamente mecanografiado, que requiere que cada variable sea declarada con su tipo antes de su primer uso. Esto le dice al compilador qué tamaño debe reservar en memoria para la variable y cómo interpretar su valor. La sintaxis para declarar una nueva variable en C++ es simple: simplemente escribimos el tipo seguido del nombre de la variable (es decir, su identificador. Por ejemplo:

    int a;float mynumber;

    Se trata de dos declaraciones de variables válidas. La primera declara una variable de tipo int con el identificador a. La segunda declara una variable flotante con el identificador mynumber. Una vez declaradas, las variables a y mynumber pueden ser utilizadas en el resto de su alcance en el programa.

    Si declara varias variables del mismo tipo, todas pueden declararse en la misma instrucción separando sus identificadores con comas. Por ejemplo:

    int a, b, c ;

    Esto declara tres variables (a, b y c), todas de tipo int, y tiene exactamente el mismo significado que:

    int a;int b;int int c;

    Inicialización de variables

    Cuando se declaran las variables del ejemplo anterior, tienen un valor indeterminado hasta que se les asigna un valor por primera vez. Pero es posible que una variable tenga un valor específico desde el momento en que se declara. Esto se llama inicialización de la variable.

    En C++, hay tres maneras de inicializar variables. Todos ellos son equivalentes y recuerdan la evolución de la lengua a lo largo de los años:

    La primera, conocida como inicialización tipo C (porque se hereda del lenguaje C), consiste en añadir un signo igual seguido del valor al que se inicializa la variable:

    identificador de tipo = valor_inicial;
    Por ejemplo, para declarar una variable int llamada x e inicializarla a un valor de cero desde el mismo momento en que se declara, podemos escribir:

    int x = 0;

    Un segundo método, llamado inicialización del constructor (introducido por el lenguaje C++), incluye el valor inicial entre paréntesis (()):

    identificador de tipo (initial_value);
    Por ejemplo:

    int x (0);

    Por último, un tercer método, llamado inicialización uniforme, similar al anterior, pero utilizando llaves ({}) en lugar de paréntesis (introducido por la revisión de la norma C++ en 2011):

    identificador de tipo {valor_inicial};
    Por ejemplo:

    int x {0};

    Los tres métodos de inicialización de variables son válidos y equivalentes en C ++.

    Otros consejos interesantes:

    1. Las variables en C # Una variable es sólo un nombre dado a un área de almacenamiento que nuestros programas pueden manipular. Cada variable en C # tiene un tipo específico, que determina el tamaño y la disposición de la memoria……
    2. Estructuras de datos en C++ Una estructura de datos es un grupo de elementos de datos agrupados bajo el mismo nombre. Estos elementos de datos, llamados miembros, pueden tener diferentes tipos y longitudes. Se pueden declarar las estructuras de datos……
    3. Clases en C++ (2) Las clases, esencialmente, definen los nuevos tipos que se utilizarán en el código C++. Y los tipos C++ no sólo interactúan con el código por medio de construcciones y asignaciones. También interactúan…..
    4. C++ Ejercicios con soluciones Ejercicios corregidos en el lenguaje C++, descargue también la lista completa de ejercicios (lenguaje C, C++, tablas, punteros,…. Vea a continuación una serie de ejercicios para descargar. Ejercicios 1: Escribir un programa en C….
    5. Operadores en C++ Una vez introducidas las variables y constantes, podemos empezar a utilizarlas utilizando operadores. La siguiente es una lista completa de operadores. En esta etapa, probablemente no es necesario……