Está en la página 1de 12

INTRODUCCIN

El lenguaje C++ se comenz a desarrollar en 1980. Su autor fue B. Stroustrup, tambin de la ATT. Al comienzo era una extensin del lenguaje C que fue denominada C withclasses. Este nuevo lenguaje comenz a ser utilizado fuera de la ATT en 1983. El nombre C++ es tambin de ese ao, y hace referencia al carcter del operador incremento de C (++). Ante la gran difusin y xito que iba obteniendo en el mundo de los programadores, la ATT comenz a estandarizarlo internamente en 1987. En 1989 se form un comit ANSI (seguido algn tiempo despus por un comit ISO) para estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es un lenguaje verstil, potente y general. Su xito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisin y eficiencia. Adems, ha eliminado algunas de las dificultades y limitaciones del C original. La evolucin de C++ ha continuado con la aparicin de Java, un lenguaje creado simplificando algunas cosas de C++ y aadiendo otras, que se utiliza para realizar aplicaciones en Internet. Hay que sealar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de ste fueron tomadas del C++. En estas Notas se van a presentar los fundamentos del lenguaje C++ tradicional a partir del lenguaje C. Su descripcin se va a realizar en dos partes: una inicial en la que se contemplan las modificaciones y una posterior con los aadidos. El C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con l, aunque ya se ha dicho que presenta ciertas ventajas (las modificaciones menores, que se vern a continuacin). Como lenguaje orientado a objetos se basa en una filosofa completamente diferente, que exige del programador un completo cambio de mentalidad. Las caractersticas propias de la Programacin Orientada a Objetos (ObjectOrientedProgramming, u OOP) de C++ son modificaciones mayores que s que cambian radicalmente su naturaleza.

CAPITULO 1 - Toma de contacto


Me parece que la forma ms rpida e interesante de empezar, y no perder potenciales seguidores de este curso, es con un ejemplo. Veamos nuestro primer programa C++. Esto nos ayudar a sentar unas bases que resultarn muy tiles para los siguientes ejemplos que irn apareciendo.

intmain() { int numero; numero=2+2; return 0; }


No te preocupes demasiado si an no captas todos los matices de este pequeo programa. Aprovecharemos la ocasin para explicar algunas de las peculiaridades de C++, aunque de hecho, este programa es casi un ejemplo de programa C. Pero eso es otro tema. En realidad C++ incluye a C. En general, un programa en C podr compilarse usando un compilador de C++. Pero ya veremos este tema en otro lugar, y descubriremos en qu consisten las diferencias. Iremos repasando, muy someramente, el programa, lnea a lnea:

Primera lnea: "intmain()"


Se trata de una lnea muy especial, y la encontrars en todos los programas C y C++. Es el principio de la definicin de una funcin. Todas las funciones C toman unos valores de entrada, llamados parmetros o argumentos, y devuelven un valor de retorno. La primera palabra: "int", nos dice el tipo del valor de retorno de la funcin, en este caso un nmero entero. La funcin "main" siempre devuelve un entero. La segunda palabra es el nombre de la funcin, en general ser el nombre que usaremos cuando queramos usar o llamar a la funcin. En este caso "main" es una funcin especial, ya que nosotros no la usaremos nunca explcitamente, es decir, nunca encontrars en ningn programa una lnea que invoque a la funcin "main". Esta funcin ser la que tome el control automticamente cuando se ejecute nuestro programa. Otra pista por la que sabemos que se trata de una funcin son

los parntesis, todas las definiciones de funciones incluyen una lista de argumentos de entrada entre parntesis, en nuestro ejemplo es una lista vaca, es decir, nuestra funcin no admite parmetros.

Segunda lnea: "{"


Aparentemente es una lnea muy simple, las llaves encierran el cuerpo o definicin de la funcin. Ms adelante veremos que tambin tienen otros usos.

Tercera lnea: "int numero;"


Esta es nuestra primera sentencia, todas las sentencias terminan con un punto y coma. Esta concretamente es una declaracin de variable. Una declaracin nos dice, a nosotros y al compilador, que usaremos una variable "numero" de tipo entero. Esta declaracin obliga al compilador a reservar un espacio de memoria para almacenar la variable "numero", pero no le da ningn valor inicial. En general contendr "basura", es decir, lo que hubiera en esa zona de memoria cuando se le reserv espacio. En C y C++ es obligatorio declarar las variables que usar el programa. C y C++ distinguen entre maysculas y minsculas, as que "int numero;" es distinto de "int NUMERO;", y tambin de "INT numero;".

Cuarta lnea: ""


Una lnea vaca, no sirve para nada, al menos desde el punto de vista del compilador, pero sirve para separar visualmente la parte de declaracin de variables de la parte de cdigo que va a continuacin. Se trata de una divisin arbitraria. Desde el punto de vista del compilador, tanto las declaraciones de variables como el cdigo son sentencias vlidas. La separacin nos ayudar a distinguir visualmente dnde termina la declaracin de variables. Una labor anloga la desempea el tabulado de las lneas: ayuda a hacer los programas ms fciles de leer.

Quinta lnea: "numero=2+2;"


Se trata de otra sentencia, ya que acaba con punto y coma. Esta es una sentencia de asignacin. Le asigna a la variable "numero" el valor resultante de la operacin "2 + 2".

Sexta lnea: "return 0;"


De nuevo una sentencia, "return" es una palabra reservada, propia de C y C++. Indica al programa que debe abandonar la ejecucin de la funcin y continuar a partir del punto en

que se la llam. El 0 es el valor de retorno de nuestra funcin. Cuando "main" retorna con 0 indica que todo ha ido bien. Un valor distinto suele indicar un error. Imagina que nuestro programa es llamado desde un fichero de comandos, un fichero "bat" o un "script". El valor de retorno de nuestro programa se puede usar para tomar decisiones dentro de ese fichero. Pero somos nosotros, los programadores, los que decidiremos el significado de los valores de retorno.

Sptima lnea: "}"


Esta es la llave que cierra el cuerpo o definicin de la funcin. Lo malo de este programa, a pesar de sumar correctamente "2+2", es que aparentemente no hace nada. No acepta datos externos y no proporciona ninguna salida de ningn tipo. En realidad es absolutamente intil, salvo para fines didcticos, que es para lo que fue creado. Paciencia, iremos poco a poco. En los siguientes captulos veremos tres conceptos bsicos: variables, funciones y operadores. Despus estaremos en disposicin de empezar a trabajar con ejemplos ms interactivos.

ESTRUCTURA BSICA DE UN PROGRAMA


#include <iostream.h> int main(void){ cout<<hola mundo<<endl; return 0; } }declaracin de libreras }funcin main }secuencia de instrucciones }valor de retorno de la funcin }llaves de cierre de la funcin

Analicemos cada parte de nuestro primer programa. #include <iostream.h> La parte del #include se refiere a la biblioteca de funciones que vamos a utilizar. Es decir para llamar a una biblioteca en particular debemos hacer lo siguiente: #include <librera_solicitada> El estndar de C++ incluye varias bibliotecas de funciones, y dependiendo del compilador que se est usando, puede aumentar el nmero. int main(void){

Este tipo de funcin la explicamos lneas atrs, la cual utiliza el mismo tipo de trascendencia del ejercicio anterior. cout<<hola mundo<<endl; Esta es una instruccin. La instruccin cout est definida dentro de la biblioteca iostream.h, que previamente declaramos que bamos a utilizar. Una funcin, en este caso main() siempre comienza su ejecucin con una instruccin (la que se encuentra en la parte superior), y contina as hasta que se llegue a la ltima instruccin (de la parte inferior). Para terminar una instruccin siempre se coloca ;. Pero adems de instrucciones se pueden invocar funciones definidas por el usuario (por supuesto diferentes de main) como se ver ms adelante.

CAPITULO 2- Operadores I
Los operadores son elementos que disparan ciertos clculos cuando son aplicados a variables o a otros objetos en una expresin. Existe una divisin en los operadores atendiendo al nmero de operandos que afectan. Segn esta clasificacin pueden ser unitarios, binarios o ternarios, los primeros afectan a un solo operando, los segundos a dos y los ternarios a siete, perdn!, a tres. Hay varios tipos de operadores, clasificados segn el tipo de objetos sobre los que actan.

Operadores aritmticos
Son usados para crear expresiones matemticas. Existen dos operadores aritmticos unitarios, '+' y '-' que tienen la siguiente sintaxis: + <expresin> - <expresin> Asignan valores positivos o negativos a la expresin a la que se aplican. En cuanto a los operadores binarios existen siete. '+', '-', '*' y '/', tienen un comportamiento anlogo, en cuanto a los operandos, ya que admiten enteros y de coma flotante. Sintaxis: <expresin> + <expresin> <expresin> - <expresin>

<expresin> * <expresin> <expresin> / <expresin> Evidentemente se trata de las conocidsimas operaciones aritmticas de suma, resta, multiplicacin y divisin, que espero que ya domines a su nivel tradicional, es decir, sobre el papel. El operador de mdulo '%', devuelve el resto de la divisin entera del primer operando entre el segundo. Por esta razn no puede ser aplicado a operandos en coma flotante. <expresin> % <expresin> Por ltimo otros dos operadores unitarios. Se trata de operadores un tanto especiales, ya que slo pueden trabajar sobre variables, pues implican una asignacin. Se trata de los operadores '++' y '--'. El primero incrementa el valor del operando y el segundo lo decrementa, ambos en una unidad. Existen dos modalidades, dependiendo de que se use el operador en la forma de prefijo o de sufijo. Sintaxis: <variable> ++ (post-incremento) ++ <variable> (pre-incremento) <variable>-- (post-decremento) -- <variable> (pre-decremento) En su forma de prefijo, el operador es aplicado antes de que se evale el resto de la expresin; en la forma de sufijo, se aplica despus de que se evale el resto de la expresin. Veamos un ejemplo, en las siguientes expresiones "a" vale 100 y "b" vale 10:

c=a+ ++b;
En este primer ejemplo primero se aplica el pre-incremento, y b valdr 11 a continuacin se evala la expresin "a+b", que dar como resultado 111, y por ltimo se asignar este valor a c, que valdr 111.

c=a+ b--;
En este segundo ejemplo primero se avala la expresin "a+b", que dar como resultado 110, y se asignar este valor a c, que valdr 110. Finalmente se aplica en post-decremento, y b valdr 9. Esto tambin proporciona una explicacin de por qu la versin mejorada del lenguaje C se llama C++, es simplemente el C mejorado o incrementado. Y ya que estamos,

el lenguaje C se llama as porque las personas que lo desarrollaron crearon dos prototipos de lenguajes de programacin con anterioridad a los que llamaron A y B.

Operadores de igualdad
Los operadores de igualdad son "==", (dos signos = seguidos) y "!=", que comprueban la igualdad o desigualdad entre dos valores aritmticos. Sintaxis: <expresin1> == <expresin2> <expresin1> != <expresin2> Se trata de operadores de expresiones lgicas, es decir, el resultado es "true" o "false". En el primer caso, si las expresiones 1 y 2 son iguales el resultado es "true", en el segundo, si las expresiones son diferentes, el "true". Nota: Cuando se hacen comparaciones entre una constante y una variable, es recomendable poner en primer lugar la constante, por ejemplo: if(123 == a) ... if(a == 123) ... Si nos equivocamos al escribir estas expresiones, y ponemos slo un signo '=', en el primer caso obtendremos un error del compilador, ya que estaremos intentando cambiar el valor de una constante, lo cual no es posible. En el segundo caso, el valor de la variable cambia, y adems el resultado de evaluar la expresin no depender de una comparacin, sino de una asignacin, y siempre ser "true", salvo que el valor asignado sea 0. Por ejemplo: if(a = 0) ... // siempre ser "false" if(a = 123)... // siempre ser "true", ya que 123 es distinto de 0. El resultado de evaluar la expresin no depende de "a" en ninguno de los dos casos, como puedes ver. En estos casos, el compilador, en el mejor de los casos, nos dar un "warning", o sea un aviso, pero compilar el programa. Nota: los compiladores clasifican los errores en dos tipos, dependiendo de lo serios que sean:

"Errores": son errores que impiden que el programa pueda ejecutarse, los programas con "errores" no pueden pasar de la fase de compilacin a la de enlazado, que es la fase en que se obtiene el programa ejecutable. "Warnings": son errores de poca entidad, (segn el compilador que, por supuesto, no tiene ni idea de lo que intentamos hacer). Estos errores no impiden pasar a la fase de enlazado, y por lo tanto es posible ejecutarlos. Debes tener ciudado si tu compilador de da una lista de "warnings", eso significa que has cometido algn error, en cualquier caso repasa esta lista e intenta corregir los "warnings". A su vez, los "enlazadores" o "linkers" tambin pueden dar errores, y normalmente estos son ms difciles de corregir.

Operadores lgicos
Los operadores "&&", "||" y "!" relacionan expresiones lgicas, formando a su vez nuevas expresiones lgicas. Sintaxis: <expresin1>&&<expresin2> <expresin1> || <expresin2> !<expresin> El operador "&&" equivale al "AND" o "Y"; devuelve "true" slo si las dos expresiones evaluadas son "true" o distintas de cero, en caso contrario devuelve "false" o cero. Si la primera expresin evaluada es "false", la segunda no se evala. Generalizando, con expresiones AND con ms de dos expresiones, la primera expresin falsa interrumpe el proceso e impide que se continuela evaluacin del resto de las expresiones. Esto es lo que se conoce como "cortocircuito", y es muy importante, como veremos posteriormente. El operador "||" equivale al "OR" u "O inclusivo"; devuelve "true" si cualquiera de las expresiones evaluadas es "true" o distinta de cero, en caso contrario devuelve "false" o cero. Si la primera expresin evaluada es "true", la segunda no se evala. El operador "!" es equivalente al "NOT", o "NO", y devuelve "true" slo si la expresin evaluada es "false" o cero, en caso contrario devuelve "true". La expresin "!E" es equivalente a (0 == E).

Operadores relacionales

Los operadores son "<", ">", "<=" y ">=", que comprueban relaciones de igualdad o desigualdad entre dos valores aritmticos. Sintaxis: <expresin1><<expresin2> <expresin1 ><<expresin2> <expresin1 <= <expresin2> <expresin1>>= <expresin2> Si el resultado de la comparacin resulta ser verdadero, se retorna "true", en caso contrario "false". El significado de cada operador es evidente: >mayor que <menor que >= mayor o igual que <= menor o igual que En la expresin "E1 <operador> E2", los operandos tienen algunas restricciones, pero de momento nos conformaremos con que E1 y E2 sean de tipo aritmtico. El resto de las restricciones las veremos cuando conozcamos los punteros y los objetos. Nota: Cuando decimos que operador es binario no quiere decir que slo se pueda usar con dos operandos, sino que afecta a dos operandos. Por ejemplo, la lnea: A = 1 + 2 + 3 - 4; Es perfectamente legal, pero la operacin se evaluar tomando los operandos dos a dos y empezando por la izquierda, y el resultado ser 2. Adems hay que mencionar el hecho de que los operadores tienen diferentes pesos, es decir, se aplican unos antes que otros, al igual que hacemos nosotros, por ejemplo: A = 4 + 4 / 4; Dar como resultado 5 y no 2, ya que la operacin de divisin tiene prioridad sobre la suma. Esta propiedad de los operadores es conocida como precedencia. En el captulo de operadores II se vern las precedencias de cada operador, y cmo se aplican y se eluden estas precedencias.

También podría gustarte