Tutorial C++

por Juan Felipe Martinez Bedoya

C++ es un lenguaje compilado, lo que quiere decir que es traducido a lenguaje de máquina antes de correr, a diferencia de los lenguajes interpretados (como Python) que es traducido a medida que se ejecuta. Esto trae dos implicaciones que van a ser importantes: la primera siendo que, si se realiza cualquier cambio, se tendrá que compilar antes de ejecutar el código; y le segunda es que se tienen grandes diferencias en rendimiento con respecto a los lenguajes interpretados. Todos los archivos de C++ tienen la extensión .cpp. Lo más complicado de este lenguaje es la compilación, que para eso se debe utilizar un comando de g++ de la siguiente manera:

g++ -std=c++11 name.cpp -o name_compiled

En este los argumentos que se pasaron son: - Como primero se entrega la versión, en este caso la c++11. - Luego el nombre del archivo a compilar - Finalmente se pasa el comando -o y un nombre, que es como se va a llamar el archivo compilado

Para ejecutar el archivo compilado se hace:

./name_compiled


Los comentarios en C++ se hacen con // para una línea o / / en múltiples líneas.

// Comentario en una sola línea
/* Comentarios
En 
Muchas líneas
*/

Variables


Se debe saber que el valor puede cambiar, sin embargo, no se puede cambiar el tipo durante la ejecución del programa, es decir no le podemos dar el valor de true a a en el
Para crear un objeto previamente definido se hace:

miObjeto miVariable;


Y para usar los métodos de la clase se hace:

miVariable.metodo();

Números

  • int para números enteros.
  • float para números decimales.
  • double como los float pero con capacidad de almacenar más decimales. Para crear una variable de cualquier tipo se cumple con la estructura de “tipo nombre = valor;”. Ej:
int numero = 0;


También se puede crear una variable sin especificar su contenido, ya que esto se puede hacer en líneas después:

int a;
a = 0;

Cadenas de caracteres

string deja crear un texto de cualquier longitud. Siempre debe ir en comillas.

string ejemplo = Hola;


Si se desea trabajar con los string toca incluirlas antes:

#include <string>

char se pueden crear para hacer un arreglo de caracteres, trae como problemas que se el texto debe ser de una longitud en específica. Siempre debe ir entre comillas.

char ejemplo1[4] = Hola;


En cualquiera de los dos se puede acceder a los caracteres pasándole el index, que empieza desde 0 y va hasta la longitud de la cadena -1. Ej:

F = ejemplo[0];
G = ejemplo[1];


El primero devolvería el carácter ‘H’ y el segundo devolvería ‘o’.
Para concatenar (es decir unir dos strings) se utiliza el operador +. Ej:

L = F + G;


Este nos devolvería el valor de ‘Ho’.

Listas

Para utilizar las listas hay que incluirlas con el comando:

#include <list>

Luego, para iniciar listas se usa el tipo list y entre <> se pone el tipo de la variable. Ej:

List<int> lista = ({1,2,3});


El dato que se pasa entre llaves es un arreglo, los cuales son como las listas pero con una longitud predefinida.
El mayor problema con las listas es mostrarlas en pantalla, ya que para hacer eso hay que hacerlo con un ciclo.
Para añadir datos al principio de la lista se usa:

lista.push_front(0);


Para añadir datos al final de la lista se usa:

Lista.push_back(4);

Diccionarios

En C++ se llaman map, y son una estructura de dato en la cual se puede guardar una dato de referencia llamado key y un valor llamado value. Para su creación toca indicar el tipo de variable que se va a tratar, primero para los key y luego para los value. Para trabajar con ellos toca incluir una librería:

#include <map>


Ejemplo:

map<string, int> diccionario;


Para añadir valores toca poner entre corchetes el valor del identificador y luego asignarle el valor. Ej:

Diccionario[Valor 1] = 1;
Diccionario[Valor 2] = 2;

Ciclos

  • Ciclo for:
    Para recorrer una lista:
for (int val : lista){
    //código a ejecutar en ciclo
}   
  • Desde x hasta y:
for (int i = x; i <= y; i++){
    //código a ejecutar en ciclo
}   

Operadores

Los operadores son utilizados para realizar operación entre valores o variables. Existen cuatro tipos: aritméticos, de asignación, de comparación o lógicos.

Aritméticos

Sirven para realizar operaciones entre números. Las operaciones entre dos números siempre deben del mismo tipo y el resultado va a ser del mismo tipo. (ej. la suma de dos int va a ser un int). Tipos de operadores aritméticos:

  • + : sumar.
  • - : restar.
    • : multiplicar.
  • / : dividir:
  • % : modulo.

Asignación

Sirven para asignar un valor a una variable. Tipos de operadores de asignación:

  • X = 2 : almacena dos en X.
  • X += 2: similar a X = X +2.
  • X -= 2 : similar a X = X – 2.
  • X *= 2 : similar a X = X * 2.
  • X /= 2 : similar a X = X / 2.
  • X %= 2 : similar a X = X % 2.

Comparación

Sirven para hacer operaciones lógicas, compara valores del mismo tipo y devuelven valores booleanos true o false. Tipos de operadores de comparación:

  • == : igual a.
  • != : diferente a.
  • < : menor a.
  • <= : menor o igual a.
  • > : mayor a.
  • >= mayor o igual a.

Lógicos

Sirven para hacer operaciones lógicas, solo se pueden hacer entre operaciones booleanas true o false. Tipos de operadores lógicos: - && : operador lógico and (y). - || : operador lógico or (o). - ! : operador lógico not (no).

Definir una función:

Para definir una función primero se empieza con el tipo de dato que va a devolver, ya sea int si devuelve un número entero, float si devuelve un número con decimales, bool se devuelve un booleano, void si no va a devolver nada, etc. Normalmente se utiliza int y se devuelve un 0 al final. Luego se pone el nombre de la función y entre paréntesis los parámetros de la función. A estos hay que especificar que tipo de dato es y darles un nombre. Ej:

int main(int argc, char **argv) {

Algunas funciones básicas

Incluir código externo

Lo que se debe saber para hacer programas sencillos es: Para incluir librerías se utiliza el #include y luego se pasa el nombre en comillas si el directorio se encuentra en la misma ubicación del archivo que se está compilado o entre <> si se está utilizando librerías externas.
Ejemplo con librerías creadas por el programados:

#include “miClase.cpp”


Ejemplo con librerías externas:

#include <ros/ros.h>

La extensión .h también esutilizada en los lenguajes de programación de C, y es utilizada para los archivos que contienen una clase y se quiere ocultar sus métodos y atributos.

Entradas y salidas para el usuario

Para imprimir texto en la pantalla se utiliza el comando de printf() de la siguiente manera:

printf(Hola mundo!);

Si se utiliza este método se puede decorar mejor el texto para imprimir diferentes tipos de datos, ya sea %i para enteros, %.2f para flotantes y mostrar solo 2 decimales, o %s para strings (si se está imprimiendo un string en vez de una cadena de caracteres se debe convertir utilizando la función c_str()). Ejemplos:

int a = 42;
printf("Value a is %i \n",a);            
float b = 3.1415;
printf("Value a is %f \n",b);            
string word = "Hey you!";
printf("- %s \n",word.c_str());

Otro método para imprimir es utilizando cout, que se utiliza diferente:

cout << Hola mundo!!;


Se pueden concatenar varios mientras se agreguen más <<. O poner endl para que salte de línea la próxima vez que se utilice la función.
Si se desea trabajar con este método toca incluir una librería y luego poner otro comando, que sirve como identificador para utilizar cout, cin o endl:

#include <iostream>
using namespace std;

Para recibir datos se utiliza la función cin. Para utilizar la función el orden de eventos es: primero inicializar la variable que se va a recibir, luego imprimir un mensaje de pregunta con cout y finalmente almacenar el valor:

int x;
cout << Ingresa un número: ;
cin >> x;

El problema con este método es que por ejemplo si se quiere pasar una cadena que incluya espacios como “Hola Mundo” solo va a captar el Hola. Para incluir ambos hay que incluir otra función llamada getline(). Por ejemplo:

getline(cin, name);


En esta función se pasa de donde se va a sacar la línea y el segundo parámetro es donde se va a almacenar.