C++ es un lenguaje
de programación diseñado a mediados de los años 1980 por Bjarne
Stroustrup. La intención de su creación fue el extender al exitoso lenguaje
de programación C con mecanismos que permitan la
manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes
orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente
se añadieron facilidades de programación genérica, que se sumó a los otros
dos paradigmas que ya estaban admitidos (programación estructurada y la programación
orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de
programación multiparadigma.
Actualmente
existe un estándar, denominado ISO C++, al que se han adherido la mayoría de
los fabricantes de compiladores más modernos. Existen también algunos
intérpretes, tales como ROOT.
Una
particularidad del C++ es la posibilidad de redefinir los operadores, y de
poder crear nuevos tipos que se comporten como tipos fundamentales.
El nombre C++ fue
propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue
utilizado por primera vez fuera de un laboratorio científico. Antes se había
usado el nombre "C con clases". En C++, la expresión "C++"
significa "incremento de C" y se refiere a que C++ es una extensión
de C.
Comenzar en C++
Por convención, antes de cualquier
línea de código en C++, se suelen escribir las directivas del preprocesador
para incluir archivos de encabezado (headers), mediante #include. Por ejemplo:
#include <iostream>
Para especificar el espacio de
nombres a utilizar (namespace), se utiliza una sentencia como ésta:
using namespace nombre_de_espacio;
El valor de retorno de main (), por
convención, debe ser 0 cuando el programa termina correctamente. También puede
utilizarse para devolver un valor al sistema operativo. En DOS, este valor se
captura con la variable ERRORLEVEL en los archivos batch.
Como ejemplo, el programa que imprime
"Hola mundo" en C++ es:
#include
<iostream>
using
namespace std;
int main ()
{
cout <<
"Hola, mundo" << endl;
return 0;
}
Sintaxis para declarar Librerías en C++
La declaración de librerías, tanto en C como en C++,
se debe hacer al principio de todo nuestro código, antes de la declaración de
cualquier función o línea de código, debemos indicarle al compilador que librerías
usar, para el saber que términos estaran correctos en la escritura de nuestro
código y cuáles no. La sintaxis es la siguiente: #include <nombre de la
librería> o alternativamente #include "nombre de la librería".
Cualquiera de las 2 formas es válida en C++ (no estoy seguro si en C sea
válido), ten en cuenta que siempre el nombre de la librería debe ir entre
" y " o entre < y >. En tu código puedes declarar todas las
librerías que quieras, pero en realidad no tienen sentido, declarar una
librería que no vas a usar en tu programa, sin embargo no existe límite para
esto.
Algunas Librerías Estandar de C++ son:
Librería fstream:
Flujos hacia/desde ficheros. Permite la manipulación
de archivos desde el programar, tanto leer como escribir en ellos.
Librería iosfwd:
Contiene declaraciones adelantadas de todas las
plantillas de flujos y sus typedefs estándar. Por ejemplo ostream.
Librería iostream:
Parte del a STL que contiene los algoritmos estándar,
es quizá la más usada e importante (aunque no indispensable).
Librería list:
Parte de la STL relativa a contenedores tipo list;
listas doblemente enlazadas
Librería math:
Contiene los prototipos de las funciones y otras
definiciones para el uso y manipulación de funciones matemáticas.
Librería memory:
Utilidades relativas a la gestión de memoria,
incluyendo asignadores y punteros inteligentes(auto_ptr).
Librería new:
Manejo de memoria dinámica
Librería numeric:
Parte de la librería numérica de la STL relativa a
operaciones numéricas.
Librería ostream:
Algoritmos estándar para los flujos de salida.
Librería queue:
Parte de la STL relativa a contenedores tipo queue
(colas de objetos).
Librería stdio:
Contiene los prototipos de las funciones, macros, y
tipos para manipular datos de entrada y salida.
Librería stdlib:
Contiene los prototipos de las funciones, macros, y
tipos para utilidades de uso general.
Librería string:
Parte de la STL relativa a contenedores tipo string;
una generalización de las cadenas alfanuméricas para albergar cadenas de
objetos. Muy útil para el fácil uso de las cadenas de caracteres, pues elimina
muchas d elas dificultades que generan los char
Librería typeinfo:
Mecanismo de identificación de tipos en tiempo de
ejecución
Librería vector:
Parte de la STL relativa a los contenedores tipo
vector; una generalización de las matrices unidimensionales C/C++
Constantes y variables en C++
Para definir una constante en
el programa se usa:
#define (el nombre) y el
valor.
Una característica de C++, es la necesidad de declarar las variables que se
usarán en un programa. Esto resulta chocante para los que se aproximan al C++
desde otros lenguajes de programación en los que las variables de crean
automáticamente la primera vez que se usan. Se trata, es cierto, de una
característica de bajo nivel, más cercana al ensamblador que a lenguajes de
alto nivel, pero en realidad una característica muy importante y útil de C++,
ya que ayuda a conseguir códigos más compactos y eficaces, y contribuye a
facilitar la depuración y la detección y corrección de errores y a mantener un
estilo de programación elegante.
Uno de los errores más comunes
en lenguajes en los que las variables se crean de forma automática se produce
al cometer errores ortográficos. Por ejemplo, en un programa usamos una
variable llamada prueba, y
en un punto determinado le asignamos un nuevo valor, pero nos equivocamos y
escribimos prubea. El
compilador o intérprete no detecta el error, simplemente crea una nueva
variable, y continúa como si todo estuviese bien.
En C++ esto no puede pasar, ya que antes de usar cualquier variable es
necesario declararla, y si por error usamos una variable que no ha sido
declarada, se producirá un error de compilación.
El sistema es siempre será, primero se especifica el
tipo y a continuación una lista de variables y finalmente un punto y coma.
La declaración de variables es uno de los tipos de sentencia de C++. La
prueba más clara de esto es que la declaración terminará con un ";".
Sintaxis:
<tipo>
<lista de variables>;
También es posible inicializar las variables dentro de la misma
declaración. Por ejemplo:
int a = 1234;
bool seguir = true, encontrado;
Declararía las variables a, seguir y encontrado;
y además iniciaría los valores de a y seguir con los valores 1234
y true, respectivamente.
En C++, contrariamente a lo que sucede con otros lenguajes de programación,
las variables no inicializadas tienen un valor indeterminado (con algunas
excepciones que veremos más tarde), y contienen lo que normalmente se denomina
"basura". Cuando se declara una variable se reserva un espacio de
memoria para almacenarla, pero no se hace nada con el contenido de esa memoria,
se deja el valor que tuviera previamente, y ese valor puede interpretarse de
distinto modo, dependiendo del tipo.
Dependiendo de dónde se declaren las variables, podrán o no ser accesibles
desde distintas partes del programa. Es decir, su ámbito de acceso y temporal
dependerá del lugar en que se declaren.
Las variables declaradas dentro de un bucle, serán accesibles sólo desde el
propio bucle, esto es, tendrán un ámbito local para el bucle. Esto es porque
las variables se crean al iniciar el bucle y se destruyen cuando
termina. Evidentemente, una variable que ha sido destruida no puede ser
accedida, por lo tanto, el ámbito de acceso está limitado por el ámbito
temporal.
Las variables declaradas
dentro de una función, y recuerda que main también es una función, sólo serán accesibles para esa
función, desde el punto en que se declaran hasta el final. Esas variables son
variables locales o de ámbito local de esa función.
Al igual que ocurre con las variables locales de bucle, en las de función,
las variables se crean al inciar la función y se destruyen al terminar.
Las variables declaradas fuera de las funciones, serán accesibles desde
todas las funciones definidas después de la declaración. Diremos que esas
variables son globales o de ámbito global.
El ámbito temporal de estas variables es también global: se crean junto con
el programa, y se destruyen cuando el programa concluye.
Las variables globales son las únicas que son inicializadas automáticamente
con valor cero cuando se declaran. Esto no sucede con ninguna variable local.
En todos los casos descritos, el ámbito temporal coincide con el de acceso:
las variables que no pueden ser accedidas es porque no existen todavía o porque
han sido destruídas. Más adelante veremos casos en que estos ámbitos no
coinciden.
Una variable global declarada después de la definición de una función no
será accesible desde esa función, por eso, normalmente se declaran las
variables globales antes de definir las funciones.
Pero esto es hablando de forma
general, en realidad, en C++ está mal
visto usar variables globales, ya que se consideran poco seguras.
Errores posibles en c++
Errores de sintaxis: son errores en el programa fuente. Pueden
deberse a palabras reservadas mal escritas, expresiones erróneas o incompletas,
variables que no existen, etc. Los errores de sintaxis se detectan en la fase
de compilación. El compilador, además de generar el código objeto, nos dará una
lista de errores de sintaxis. De hecho nos dará sólo una cosa o la otra, ya que
si hay errores no es posible generar un código objeto.
Avisos: además de errores, el compilador puede dar
también avisos (warnings). Los avisos son errores, pero no lo suficientemente
graves como para impedir la generación del código objeto. No obstante, es
importante corregir estos avisos, ya que el compilador tiene que decidir entre
varias opciones, y sus decisiones no tienen por qué coincidir con lo que
nosotros pretendemos, se basan en las directivas que los creadores del
compilador decidieron durante su creación.
Errores de enlazado: el programa enlazador también puede encontrar
errores. Normalmente se refieren a funciones que no están definidas en ninguno
de los ficheros objetos ni en las librerías. Puede que hayamos olvidado
incluir alguna librería, o algún fichero objeto, o puede que hayamos olvidado
definir alguna función o variable, o lo hayamos hecho mal.
Errores de
ejecución: incluso
después de obtener un fichero ejecutable, es posible que se produzcan errores.
En el caso de los errores de ejecución normalmente no obtendremos mensajes de
error, sino que simplemente el programa terminará bruscamente. Estos errores
son más difíciles de detectar y corregir. Existen programas auxiliares para
buscar estos errores, son los llamados depuradores (debuggers). Estos programas
permiten detener la ejecución de nuestros programas, inspeccionar variables y
ejecutar nuestro programa paso a paso. Esto resulta útil para detectar
excepciones, errores sutiles, y fallos que se presentan dependiendo de
circunstancias distintas
Atte. Salomé Infante. Carrera: Ing de Sistemas 601D12
Gracias por su visita.