# C++ Primer Ejemplo

A través de este libro usaremos ejemplos de código para explicar importantes problemas de programación y OOP. Nuestro objetivo es usar un ejemplo mínimo que ilustrará las ideas y técnicas amigable y eficientemente.

#### Ejemplo 1.3

* #include <iostream> -- librería c++ estándar - En las viejas versiones de C++, deberías poder encontrar en su lugar a <iostream.h>, pero esa versión es considerada como obsoleta.
* int main { -- Inicio de la función main que retorna int.
* using namespace std; -- Nos permite usar los símbolos cin, cout, y endl sin prefijar cada nombre con std::.
* int factArg = 0 ; -- Sintaxis de inicialización al estilo C.
* int fact(1) ; -- Sintaxis de inicialización al estilo C++.
* do { -- Inicio del bucle “do..while”.
* cout << "Factorial de: "; -- Escribe a la salida estándar
* cin >> factArg; -- lee desde la entrada estándar y la convierte en int
* } while (factArg < 0) ; -- Si es falso, sale del bucle do
* while ( i <= factArg ) { -- Inicio de bucle while.
* return 0; -- Cuando main devuelve 0, normalmente significa “sin errores”
En la mayoría de las plataformas, compilamos y corremos este programa usando el ubicuo compilador GNU C, gcc. El comando para compilar un programa en C++ es g++, pero esto es un simple alias para gcc con algunos parámetros C++ habilitados.
Cuando invocamos al compilador, recomendamos maximizar el monto de información que está disponible desde el proceso de compilación. Para esto, incluimos algunos parámetros a la línea de comandos:
* -Wall Que habilita todas las posibles alertas sobre construcciones que pueden ser consideradas cuestionables si es que van de acuerdo con el estándar.
En la segunda versión mostrada arriba, el parámetro opcional -o execFile es colocado para especificar el nombre del ejecutable generado. Si omitimos este parámetro, como en la primera versión, el compilador producirá un ejecutable de nombre a.out. En cualquier caso, si en realidad ya existe un archivo en el mismo directorio con el nombre de nuestro ejecutable resultante, entonces el compilador tranquilamente lo sobreescribirá de manera automática.
Hemos mencionado aquí solo unos cuantos de los parámetros de compilación más comunes. En un sistema *nix puedes ver las páginas del manual, un sumario de opciones de comando y como son usadas escribiendo el comando:
En la mayoría de los sistemas, esos comandos te permiten navegar por la documentación en línea parra g++ una pantalla a la vez. Para documentación más completa sobre gcc, visita el Centro de Documentación en línea GNU.
Despues de que ha sido compilado completamente, nuestro programa puede correr al escribir el nombre del archivo ejecutable. Aquí hay un ejemplo en una plataforma *nix:
Este corto programa utiliza diversos elementos del lenguaje que se encuentran en la mayoría de los programas C++.

## Comentarios

C++ tiene una línea simple de comentarios como en Java. Cualquier texto entre // y el fin de la línea es un comentario. Los delimitadores de comentario al estilo C también pueden ser usados. El texto entre /* y */ es un comentario.

## #include

Para reusar funciones, tipos o identificadores desde librerías, utilizamos la directiva de preprocesamiento #include. (Sección C.1) Como en C, todas las directivas de preprocesamiento comienzan con el carácter comodín (#), y son evaluados justamente antes de que el compilador compile tu código. En este ejemplo, la cabecera incluida <iostream> contiene las definiciones Standard Library para entrada/salida.

## Usando namespace

Los símbolos de Standard Library (Introducción a Patrones de Diseño en C++ con Qt4/B Cabeceras Estándar) están todos encerrados bajo el namespace std.
Un namespace (Sección 19.4) es una colección de clases, funciones y objetos que pueden ser accesados con un prefijo de nombre. El uso de la declaración le dice al compilador que agregue símbolos desde el namespace (std) especificado dentro del namespace global.

## Declarando e Inicializando Variables

Las declaraciones de variable se dan en tres estilos dentro de C++ :
* type-expr NombreVariable;
* type-expr NombreVariable = init-expr;
* type-expr NombreVariable (init-expr);
En la primera forma, la variable pudiera no ser inicializada. La tercera forma es una alternativa de sintaxis de la segunda.

## Selección

C++ proporciona la suerte usual de variaciones de sintaxis para seleccionar que discutiremos en la Sección 20.2.

## Interacción

Nosotros usamos dos de los árboles de las estructuras de interacción proveídas por C++ en nuestro ejemplo. Todo el árbol será discutido en la Sección 20.3