Constantes

Hay un tipo de variable en C++ que podemos usar si queremos forzar que su valor no cambie a lo largo de la ejecución del programa, las constantes.

Hay dos formas de declarar constantes en C++:

  • Mediante la palabra clave const.
  • Utilizando el preprocesador mediante #define

Definición de constantes mediante const

El formato de esta declaración es el siguiente:

const type variable = value;

Por ejemplo:

const int pokemonCount = 898;	

Tratar de cambiar este tipo de variables nos mostrará un error. Compruébalo por tu cuenta:

#include <iostream>
using namespace std;

int main()
{
    const int pokemonCount = 898;
    cout<<"Número de pokemon = "<<pokemonCount<<"\n";
    pokemonCount = 1000;
    cout<<"Número de pokemon = "<<pokemonCount<<"\n";
    return 0;
}

Definición de constantes en la cabecera

El formato de la declaración es el siguiente:

#define identifier value

Por ejemplo:

#include <iostream>
using namespace std;

#define POKEMON_COUNT 898

int main()
{
    cout<<"Número de pokemon = "<<POKEMON_COUNT<<"\n";
    POKEMON_COUNT = 1000;
    cout<<"Número de pokemon = "<<POKEMON_COUNT<<"\n";
    return 0;
}

De nuevo nos encontraremos con un error al tratar de ejecutar este programa.

Constantes enumeradas

Hay un tipo de constante especialmente útil, las constantes enumeradas o enumerated constants. Se usan para declarar un tipo de variable y asignarle así un número finito de valores. Fíjate en este ejemplo:

enum pokemonTipo {
	PLANTA,
  	FUEGO,
    AGUA,
    LUCHA,
    BICHO,
    ELECTRICO
};

Los valores son automáticamente traducidos a enteros de tal forma que:

PLANTA = 0
FUEGO = 1
...

Fíjate en el programa de ejemplo:

#include <iostream>

using namespace std;

int main()
{
    enum POKEMON_TIPO {
    PLANTA,
  	FUEGO,
    AGUA,
    LUCHA,
    BICHO,
    ELECTRICO
      };
  
  	// definimos mejorTipo como una variable de tipo POKEMON_TIPOS
    POKEMON_TIPO mejorTipo;
    
    // hacemos una asignación
    mejorTipo = ELECTRICO;
    
    // y comprobamos como haríamos con cualquier otra variable
    if(mejorTipo == ELECTRICO)
    {
        cout<<"No me parece que ese sea el mejor tipo de pokemon\n";
    }
    return 0;
}

Usando el Namespace

Si recuerdas, hemos escrito esto en el programa de ejemplo de la primera lección:

std::cout << "Hola, mundo!";

Al utilizar librerías y funciones de la biblioteca estándar, tenemos que referenciar su uso añadiendo ‘std::’ antes de lo que vayamos a utilizar. Esto puede resultar muy tedioso, por lo que hay una forma de solucionar este problema indicando que estamos usando un programa en la biblioteca estándar, de la siguiente forma:

using namespace std;

int main()
{
  cout << "Hola, mundo!";
}

Así le estamos indicando al compilador que asuma que utilizamos la biblioteca estándar y no tendremos que prefijar las variables o funciones con ‘std::’.

Este sistema tiene un efecto secundario que debes tener en cuenta, si tu programa se añade a un proyecto más grande, corres el riesgo de que tu código comience a referenciar comandos de otra librería.

Un gran poder conlleva una gran responsabilidad.

Comentarios y estilo

Comentarios

Los comentarios son pequeños fragmentos de texto destinados a proporcionar información extra a la persona que está leyendo el código.

Es generalmente aceptado que los comentarios no deben ser sustituto de un código claro y que tenga un propósito claro. El código debe ser lo suficientemente entendible como para no tener que explicar su propósito. Habrá situaciones, sin embargo, en las que no habrá más remedio que explicar un proceso mediante un comentario bien realizado.

Hay dos formas de añadir comentarios en C++:

  1. Con un bloque de comentario
  2. Como una única línea

Bloque de comentario

Los bloques de comentario comienzan con ‘/*’ y acaban con ‘*/’. Todo lo que vaya entre ambos símbolos se considera comentario. Por ejemplo

/* Esto es un comentario
que ocupa varias lineas.
Los comentarios son útiles */

Comentario de una sola línea

Se puede crear un comentario de una sola línea poniendo dos ‘//’. Por ejemplo:

int main()
{
  int edad = 40;
  int anyo = 0;
  // mostrar mensaje al usuario
  std::cout << "Prueba";
  // acabar programa
  return 0;  
}

Guías de estilo

Como sucede con todos los lenguajes de programación, también en C++ hay muchas formas diferentes de escribir código. Voy a intentar permanecer constante a lo largo del curso, tratando de mostrame lo más legible posible.

Es importante señalar que a pesar de que existan muchas guías de estilo, al final lo más importante es permanecer alineado con el estilo de la gente que te está pagando.

A continuación te dejo dos guías de estilo para que tomes como ejemplo:

Estructura de un programa en C++

Estructura de un programa en C++

Los programas de C++ tienen una estructura básica muy definida que al novato le puede parecer demasiado complicada o incluso arcaica. Como ya vimos en la introducción, C++ es un lenguaje compilado. Vamos a ver que la estructura de un programa en C++, a nivel básico, consta de dos partes principales.

Estructura básica

Cada programa de C++ consta de dos partes básicas: las directivas de preprocesador y la función principal, o main(). Mira este programa de ejemplo:

#include <iostream>

int main() 
{
  std::cout << "Hola, mundo!";
  return 0;
}

Directivas de preprocesador

La primera línea contiene el símbolo #, o hash, como primer caracter. Esto significa que es una directiva de preprocesador.

Tras el símbolo del hash viene la palabra include. Hay varias directivas de preprocesador disponibles en C++, pero include es la que veremos más a menudo.

Lo que hace include es indicar al compilador que queremos incluir o añadir declaraciones de la librería referenciada. Aquí estamos añadiendo las declaraciones de la librería iostream.

Los símbolos de mayor y menor (de aquí en adelante brackets) indican de qué forma se va a localizar esta librería. En este caso al ir entre brackets se va a tratar de buscar en el directorio de la librería estándar, donde se encuentran el resto de librerías.

También podemos usar comillas:

#include "main.hpp"

En este caso el compilador busca esta librería en el directorio actual y si no la encuentra busca en el directorio en el que están las librerías estándar.

Más adelante veremos por qué es muy importante esta diferenciación.

Función principal

El siguiente bloque es la sección principal del programa.

int main() 
{
	std::cout << "Hola, mundo!";
    return 0;
}

La función principal de los programas de C++, o main(), acostumbra a devolver un int. Por eso justo antes de la declaración del nombre de la función añadimos el tipo que vamos a retornar, en este caso int. Retornamos 0 al finalizar la ejecución cuando queremos indicar que no hay errores.

El propósito del programa no es más que el de imprimir la línea «Hola, mundo!» a través de la consola, que se encuentra conectada al búfer de salida. No te preocupes si no entiendes muy bien qué es un búfer de salida, de momento basta con saber que es posible mandar datos a diferentes fuentes tales como la terminal o archivos de diversa índole.

En el ejemplo, tenemos la cadena «Hola, mundo!», sabemos que es una cadena por estar entre comillas dobles. Utilizamos el símbolo ‘<<‘ para indicar que queremos redirigir dicha cadena a la salida std::cout. Como ya dijimos, esta salida suele estar conectada a la consola, por lo que veremos el texto escrito en nuestra pantalla.

Referencias

Microsoft preprocessor directives

Introducción al curso de C++

Curso de C++

Bienvenida o bienvenido a este curso de C++.

Este curso está dirigido a personas que ya tienen algo de experiencia con la programación y quieren conocer los fundamentos de C++. Es por ello que no nos detendremos demasiado en analizar los fundamentos que componen el lenguaje o cómo funciona internamente, si no que nos concentraremos sobre todo en su uso y posibilidades.

Trataré de emplear el español para todos los términos y conceptos del lenguaje pero nos encontraremos determinados tecnicismos que utilizaremos en inglés, no sin antes explicarlos adecuadamente.

Te recomiendo que le eches un vistazo a la página de la wikipedia sobre C++ si quieres profundizar en los siguientes conceptos.

Qué es el C++

Es un lenguaje de programación multiplataforma usado principalmente en aplicaciones que requieran ser especialmente exigentes en cuanto a su desempeño, consumo de energía o velocidad. Su acceso directo al hardware y su relativo bajo nivel hacen de C++ un lenguaje especiamente preparado para conseguir velocidad y optimización.

C++ es un lenguaje compilado, es decir, las instrucciones del programa deben ser enviadas previamente a su ejecución a un compilador que a su vez genera un archivo interpretable por la computadora.

Veremos otras características sobre C++ a medida que las vayamos usando durante el curso.

Por qué aprender C++

C++ es usado en una amplia variedad de campos y se encuentra presente en multitud de dispositivos. Casi todo lo que quieras hacer lo puedes hacer con C++.

Es un lenguaje con muchas características que lo hacen especialmente indicado para aprender los fundamentos de diversas variedades de programación. Hablaremos de estas variedades de programación en un futuro artículo.

Dónde se usa el C++

Es un lenguaje que se usa en multitud de campos, como en los Mars Rovers, en telescopios, para motores de videojuegos, en aplicaciones de escritorio, de servidor, coches autónomos, machine learning, y un largo etc…

Qué hace diferente a C++ de otros lenguajes de programación

Una de las cosas que hace diferente al C++ de otros lenguajes de programación es que trabaja directamente en el hardware de manera muy eficiente, proporcionando mecanismos de abstracción muy poderosos para ello.

Qué veremos en el curso de C++

Voy a tratar de hacer un curso práctico, orientado sobre todo a personas con algo de experiencia en la programación. Es por ello que nos centraremos sobre todo en los mecanismos que hacen de C++ un lenguaje diferente sin profundizar demasiado en los fundamentos teóricos que se encuentran más a menudo en otros cursos de teoría de la computación o CS (Computer Sciences).

Lecturas recomendadas para el curso de C++

Sin duda, para cualquier duda relacionada con C++, el libro más importante es “The C++ Programming Language: 4th Edition – ISBN: 9780133522853”, de Bjarne Stroustrup, creador del lenguaje.

Recomiendo también “A Tour of C++”, también de Bjarne Stroustrup, por ser mucho más conciso y abarcar una referencia completa del uso del lenguaje en menos de 200 páginas.