Saludos, LiGNUxeros!

Para esta ocasión os traigo una serie de tutoriales de programación en C++. He sacado esta guía de un curso que impartió el MIT (Massachusetts Institute of Technology) en el 2011. El curso sigue online y a disposición de todos, aunque, obviamente, en inglés. A medida que vaya siguiendo sus lecturas, haré una traducción de las mismas, espero que de esta forma, podamos llegar a más gente. Estas lecturas estarán un poco resumidas, centrándome en esas partes que me parecieron más importantes prácticamente hablando.

Lectura 1: Introducción.

Lenguajes de programación:

Si no habéis tocado nunca ningún lenguaje de programación, os debo una introducción. En sus base, un ordenador no es más que un procesador con algo de memória, capaz de realizar instrucciones sencillas como “almacena 5 en la posición de memória 23459”. ¿Para qué, entonces, se utilizan los lenguajes de programación?

Utilizando lenguajes de programación, hacemos la comunciación con la máquina más amigable para el programador. Además, la información anterior de guardar 5 en una posición, podría no ser aplicable a otro ordenador, y estar solo disponible en aquél en el que fue programado. También facilita el mantenimiento del programa, ya que es mucho más fácil cambiar unas líneas de un fichero que no todas las instrucciones al procesador. Además, C++ es un lenguaje orientado a objetos, así que aún mejora más el mantenimiento.

Algunas notas de C++

C++ es muy popular, especialmente para aquellas aplicaciones que necesitan una gran velocidad y/o acceso a aspectos de muy bajo nivel. Cuando hablamos de niveles bajos o altos nos referimos a la proximidad a la máquina. Si es de nivel bajo es algo muy cercano a la máquina, mientras que si es alto, es más cercano al usuario o al programador. Se creó en 1979 por Bjarne Stroustup, como una mejora del lenguaje C. En las primeras lecturas, básicamente tocaremos C.

Además, aunque con C++ puede programarse para entornos gráficos utilizando ciertas librerías, en este curso, nos centramos en los programas basados en texto (del Terminal).

Una última nota a tener en cuenta, pensad que C++ es KeySensitive, así que no es lo mismo unNombre que UnNombre.

Hola Mundo:

Es una tradición entre programadores iniciarse en todos los lenguajes de programación probando la salida por pantalla. De este programa se le suele llamar “Hello World” u “Hola Mundo” traducido al español:

//Un programa de Hello World

#include <iostream>

int main() {

std::cout << "Hola, Mundo\n";

return 0;

}

Podemos identificar distintos tipos de tokens en el fichero que os he copiado, respetando el color que nos especifica el programa Geany, para que sea más fácil entenderlo. Personalmente, recomiendo ese programa para vuestras pruebas, si estáis empezando a programar. Si no, utilizad el que queráis, es indiferente.

Tipos de Tokens

Descripción/Propósito

Exemplos

Palabras clave

Palabras con especial significado para el compilador

int, double, for, auto…

Identificadores

Nombre de las cosas que no están construidas en el lenguaje

cout, std, x, miFuncion…

Literales

Valores básicos constantes cuyo vaor se especifica directamente en el código fuente.

“Hola Mundo”, 24.3, 0, ‘c’.

Operadores

Operadores, bien matemáticos o lógicos.

+, -, *, /, &&, ||, %, <<

Puntuación, separadores

Puntuación que define la estructura del programa.

{ }( ) , ;

Espacios en blanco

Espacios de distintos tipos, que no se tienen en cuenta apara el compilador

Espacios, tabulaciones o sangrados, nuevas líneas, comentarios.

Para que tengáis una idea más clara del código, y como es el primero que vemos, explicaré línea a línea la ejecución de este programa:

El símbolo // indica que todo lo que sigue es un comentario y no debe será interpretado por el compilador hasta fin de línea. Si utilizamos el símbolo /*, todo el código o caracteres hasta el próximo símbolo, */, no se tendrán en cuenta al compilar. Esto es un comentario de más de una línea. Los comentarios son esenciales en proyectos en los que trabajan más de una persona, o que puedes no recordar en un futuro. ¡Son muy importantes, comentad vuestro código!

Las líneas que empiezan con # son comentarios para el procesador. Normalmente cámbian el código que está siendo compilado. En el caso de #inculde nos indica que añadamos a nuestro programa el contenido de otro fichero, en este caso, iostream, que es el que define los procesos de entrada/salida. Todo proceso de entrada es aquél que recibe información del usuario, mientras que el de salida es el que nos devuelve información, en este caso, en la línea de código.

int main() {…} indica el código que debe ser ejecutado al inicio del programa. Las llaves “{}” agrupan el código en bloque. En los próximos capítulos veremos más acerca de estas llaves y su utilización en la programación.

cout << se utiliza para mostrar por pantalla algun valor. También veremos más de esto en el futuro.

En c++, los identificadores se pueden definir en un contexto, una serie de nombre para directorios, llamados namespaces. Cuando queremos llamar a un identificador definido en otro namespace, utilizamos los dos puntos dobles que hemos visto antes “::”. Estamos diciendole al compilador que busque el identificador cout dentro del namespace std, donde la mayoría de estándares de C++ se definen.

Podemos hacer lo mismo si añadimos después del inculde la sentencia →”using namespace std”. En este caso, podemos omitir el prefijo std:: antes del cout.

Los Strings o cadenas son una secuencia de caracteres, como “Hola Mundo”. Cuando los String se especifican explícitamente en un programa, se les llaman Strings literales. Quisiera remarcar la diferencia entre las dobles comillas que vemos en los editores de texto plano, como gedit o Geany, y los que nos dan los editores de documentos más avanzados como LibreOffice Writer. Los segundos son más trabajados y los compiladores no los entenderán, pero en ocasiones os los podréis encontrar en según qué guías cuando lo suben a wordpress u otros frameworks y les cambian las comas simples por las suyas más atractivas. Un buen dolor de cabeza, hasta que no caes.

Las secuencias de escape, como \n, se utilizan para representar caracteres especiales. “\n” indica una nueva línea, las demás, ya las iremos viendo mientras vayan saliendo.

La sentencia return 0 indica al sistema operativo que el programa ha terminado satisfactoriamente. Esta sintaxis se explicará más exhaustivamente cuando lleguemos a las funciones.

Fijaos que cada declaración del programa termina en un punto y coma, excepto aquellos que se dirigen a un punto anterior al procesador, como el añadido de iostream, y los signos de puntuación en si mismos, que tienen su propio significado. También, los comentarios, no necesitan de estas cosas, ya que son ignorados por el compilador. Dejarse este punto y coma final es un error típico al iniciarse en lenguajes como C++, C o Java entre otros, que siguen esta norma.

Aspectos básicos del lenguaje

Por ahora, el programa no hace mucho, pero podemos ver ciertos aspectos para que sea un poco más interesante.

Valores y declaraciones

Primero, unas definiciones esenciales:

  • Una declaración es una unidad de código que hace algo. El elemento básico de un programa.
  • Una expresión es una declaración que tiene un valor. Por ejemplo, cuando subamos dos números.

No todas las declaraciones son expresiones. No tiene sentido hablar del valor de la declaración #inculde, por ejemplo.

Operadores

Podemos ejercer cálculos aritméticos con operadores. Los operadores en expresiones forman nuevas expresiones.

Tipos de operadores:

  • Matemáticos: Los clásicos símbolos de operaciones matemáticas, como +, – o *. Algo que me sorprendió a mi en mis inicios en la programación fue el operador %. Éste operador saca el módulo de dos números, así pues, nos da el residuo de la división de esos dos números. Esencial para según qué situaciones.
  • Lógicos: Son para ejercer sentencias “and”, “or” y esas cosas. No hay una forma fácil de explicarlo, lo veremos en acción en el próximo capítulo.
  • Bitwise: Se usan para manipular la representación binaria de números. El curso no se centra en estos operadores, en principio no los veremos.

Tipos de datos

Cada expresión tiene un tipo, una descripción formal de la clase de valor que tienen unos datos. Por ejemplo, 0, es un entero. Veamos estos tipos:

Nombre de los tipos

Descripción

Tamaño

Rango

char Carácter de texto o un pequeño entero. Se indica con las comas simples (‘a’, ‘2’). 1 byte Con negativos: -128 a 127Sin negativos: 0 a 255
int Un entero más largo. 4 bytes Con negativos: -2147483648 a 2147483647Sin negativos: 0 a 4294967295
bool Boleano, verdadero o falso, llamado con las palabras clave true o false. 1 byte Solo true (1) o false (0).
double Número decimales. 8 bytes 15 dígitos.

 

Si os habéis percatado de ello, los String o cadenas de texto, no aparecen en la tabla. Éstos se representan como char *, lo veremos más adelante.

Variables

Podemos guardar un valor dentro de una estructura de espacio llamado variable. Estas variables se suelen utilizar cuando un valor puede cambiar. Podría explicarlo con palabras, pero la mejor manera es que veáis un ejemplo:

#include <iostream>

using namespace std;

int main() {

int lignux;

lignux = 4+2;

cout<< lignux / 3 << ' ' << lignux + 2;

return 0;

}

Las variables pueden tomar el nombre que queramos, para que lo veáis, le he puesto a la variable “lignux”, aunque suele ser preferible asignarle un nombre con el que podamos identificar rápidamente el valor que contendrá.

Notas finales

Bueno, éste ha sido el primer capítulo, y me ha llevado más tiempo escribirlo del que esperaba. Espero traer el siguiente la semana que viene, en el nos adentraremos más en los operadores, veremos estructuras de control y bucles, entre otras cosas.

¡Espero que os haya gustado!

12
Deja una respuesta

avatar
6 Hilos de comentario
6 Respuestas de hilo
0 Seguidores
 
Comentario más reaccionado
El hilo de comentarios más caliente
5 Autores de comentarios
nonameddragonrojoBGBgusJonatan Daniel Ayllonisorfe Autores de comentarios recientes
  Suscribirse  
Los más recientes Los más antiguos Más votados
Notificarme las
nonamed
Invitado
nonamed

muchas gracias, se agradece este curso

sugerencias:

– que el código puesto esté perfectamente alineado para una mejor visualización y comprensión del mismo

– que el código esté perfectamente con sus comillas y simples comillas bien puestas, para en caso de querer testearlo, solo haya que copiar y pegar en nuestro ide, sin darnos fallos de compilación.

saludos

🙂

dragonrojo
Invitado
dragonrojo

¡Hey! Es genial, está bien explicado.

Espero con ansias los demás capítulos 😀

Jonatan Daniel Ayllon
Invitado

Genial, esta información es muy valiosa, muchas gracias!!!

isorfe
Miembro

Genial! a ver si conseguimos sumar desarrolladores a GNU/Linux, de aplicaciones incluso de partes del sistema 🙂