revista c++

11

Upload: nino-miquilena

Post on 04-Mar-2016

227 views

Category:

Documents


1 download

DESCRIPTION

Revista con información variada sobre el lenguaje de programación C++

TRANSCRIPT

Page 1: Revista C++
Page 2: Revista C++

C++ es un lenguaje de programación diseñado a mediados de los años 1980por Bjarne Stroustrup. La intención de su creación fue el extender al exitosolenguaje de programación C con mecanismos que permitan la manipulaciónde objetos. En ese sentido, desde el punto de vista de los lenguajesorientados 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 dosparadigmas que ya estaban admitidos (programación estructurada y la programación orientada aobjetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.

Actualmente existe un estándar, denominado ISO C++, al quese han adherido la mayoría de los fabricantes de compiladores másmodernos. Existen también algunos intérpretes, tales comoROOT. Una particularidad del C++ es la posibilidad de redefinir losoperadores, y de poder crear nuevos tipos que se comporten comotipos 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.

Por: Antonio Miquilena

Page 3: Revista C++

PU

BLIC

IDA

D

ADQUIERELO YA!

Page 4: Revista C++

“C” vs. “C++”Por: Antonio Miquilena

En C++, cualquier tipo de datos que sea declarado completo (fullyqualified, en inglés) se convierte en un tipo de datos único. Lascondiciones para que un tipo de datos T sea declarado completo sona grandes rasgos las siguientes:

•Es posible al momento de compilación conocer el espacio asociadoal tipo de datos (es decir, el compilador debe conocer el resultado desizeof(T)).•TTiene al menos un constructor, y un destructor, bien declarados.•Si T es un tipo compuesto, o es una clase derivada, o es laespecificación de una plantilla, o cualquier combinación de lasanteriores, entonces las dos condiciones establecidas previamentedeben aplicar para cada tipo de dato constituyente. En general, estosignifica que cualquier tipo de datos definido haciendo uso de lascabeceras completas, es un tipo de datos completo.

En particular, y, a diferencia de lo que ocurría en C, los tiposdefinidos por medio de struct o enum son tipos completos. Comotales, ahora son sujetos a sobrecarga, conversiones implícitas,etcétera.

Los tipos enumerados, entonces, ya no son simplemente alias paratipos enteros, sino que son tipos de datos únicos en C++. El tipo dedatos bool, igualmente, pasa a ser un tipo de datos único, mientrasque en C funcionaba en algunos casos como un alias para algunaclase de dato de tipo entero

La palabra reservada void define en C++ el concepto de no existencia o noatribución de un tipo en una variable o declaración. Como tal, puede serusada para destacar que una función no recibe parámetros, como en:

int funcion (void);Aunque la tendencia actual es la de no colocar la palabra "void". Ademásse utiliza para determinar que una función no retorna un valor, como en:

void funcion (int parametro);Cabe destacar que void no es un tipo. Una función como la declaradaanteriormente no puede retornar un valor por medio de return: la palabraclave va sola. No es posible una declaración del tipo:

void t; //Está malEn este sentido, void se comporta de forma ligeramente diferente a comolo hace en C, especialmente en cuanto a su significado en declaraciones yprototipos de funciones. Sin embargo, la forma especial void * indica queel tipo de datos es un puntero. Por ejemplo:

void *memoria;Indica que memoria es un puntero a alguna parte, donde se guardainformación de algún tipo. El programador es responsable de definir estos"algún", eliminando toda ambigüedad. Una ventaja de la declaración "void*" es que puede representar a la vez varios tipos de datos, dependiendo dela operación de cast escogida. La memoria que hemos apuntado en algunaparte, en el ejemplo anterior, bien podría almacenar un entero, unflotante, una cadena de texto o un programa, o combinaciones de éstos.Es responsabilidad del programador recordar qué tipo de datos hay ygarantizar el acceso adecuado.

VOIDPor: Jose Alchaer

Page 5: Revista C++

Por: Ma. Fernanda Manrique Juarez

Según la máquina y el compilador que se utilice los tipos primitivos pueden ocupar undeterminado tamaño en memoria. La siguiente lista ilustra el número de bits queocupan los distintos tipos primitivos en la arquitectura x86. Otras arquitecturaspueden requerir distintos tamaños de tipos de datos primitivos. C++ no dice nadaacerca de cuál es el número de bits en un byte, ni del tamaño de estos tipos; másbien, ofrece solamente las siguientes "garantías de tipos":

• De acuerdo al estándar C99, un tipo char debe ocupar exactamente un bytecompuesto de un mínimo de 8 bits independientemente de la arquitectura de lamáquina.• El tamaño reconocido de char es de 1. Es decir, sizeof(char) siempre devuelve 1.• Un tipo short tiene al menos el mismo tamaño que un tipo char.• Un tipo long tiene al menos el doble tamaño en bytes que un tipo short.• Un tipo int tiene un tamaño entre el de short y el de long, ambos inclusive,preferentemente el tamaño de un apuntador de memoria de la máquina.• Un tipo unsigned tiene el mismo tamaño que su versión signed.

Por: Jhonnathan Jaen

Para la versión del estándar que se publicó en 1998, se decidió añadir el tipo de dato wchar_t, que permite el uso de caracteres UNICODE, a diferencia del tradicional char, que contempla simplemente al código de caracteres ASCII extendido. A su vez, se ha definido para la mayoría de las funciones y clases, tanto de C como de C++, una versión para trabajar con wchar_t, donde usualmente se prefija el carácter w al nombre de la función (en ocasiones el carácter es un infijo). Por ejemplo:

•strcpy – wstrcpy

•std::string - std::wstring

•std::cout - std::wcout

Cabe resaltar que en C se define wchar_t como:

typedef unsigned short wchar_t;

Mientras que en C++ es en sí mismo un tipo de dato.

Page 6: Revista C++

PU

BLIC

IDA

D

Page 7: Revista C++

OPERADORESPor: Daniel Torrealba y Antonio Miquilena

La sobrecarga de operadores es una forma de hacer polimorfismo. Es posibledefinir el comportamiento de un operador del lenguaje para que trabaje contipos de datos definidos por el usuario. No todos los operadores de C++ sonfactibles de sobrecargar, y, entre aquellos que pueden ser sobrecargados, sedeben cumplir condiciones especiales.

En particular, los operadores sizeof y :: no son sobre cargables.

No es posible en C++ crear un operador nuevo.

Los comportamientos de los operadores sobrecargados se implementan de lamisma manera que una función, salvo que esta tendrá un nombre especial:Tipo de dato de devolución operator<token del operador>(parámetros)

Dado que estos operadores son definidos para un tipo de datos definido por el usuario, éste es libre de asignarles cualquiera semántica que desee. Sin embargo, se considera de primera importancia que las semánticas sean tan parecidas al comportamiento natural de los operadores como para que el uso de los operadores sobrecargados sea intuitivo. Por ejemplo, el uso del operador unario - debiera cambiar el "signo" de un "valor".

Los operadores sobrecargados no dejan de ser funciones, por lo que pueden devolver un valor, si este valor es del tipo de datos con el que trabaja el operador, permite el encadenamiento de sentencias. Por ejemplo, si tenemos 3 variables A,B y C de un tipo T y sobrecargamos el operador = para que trabaje con el tipo de datos T, hay dos opciones: si el operador no devuelve nada una sentencia como "A=B=C;" (sin las comillas) daría error, pero si se devuelve un tipo de datos T al implementar el operador, permitiría concatenar cuantos elementos se quisieran, permitiendo algo como "A=B=C=D=...;"

Los siguientes operadores pueden ser sobrecargados: •Operadores de Asignación•Operador =•Operador +=•Operador -=•Operador *=•Operador /=•Operador %=•Operador <<=•Operador >>=•Operador &=•Operador ^=•Operador |=

•Operadores Unarios•Operador * (de indirección)•Operador -> (de indirección)•Operador & (de dirección)•Operador +•Operador -•Operador ++•Operador --

•Operadores Binarios•Operador ==•Operador +•Operador -•Operador *•Operador /•Operador %•Operador <<•Operador >>•Operador &•Operador ^•Operador |•Operador []•Operador ()

Page 8: Revista C++

Por: Daniel Torrealba C++ tiene los siguientes tipos fundamentales:

• Caracteres: char (también es un entero), wchar_t• Enteros: short, int, long, long long• Números en coma flotante: float, double, long double• Booleanos: bool• Vacío: void

El modificador unsigned se puede aplicar a enteros para obtener números sin signo (poromisión los enteros contienen signo), con lo que se consigue un rango mayor de númerosnaturales.

Page 9: Revista C++

PU

BLIC

IDA

D

Page 10: Revista C++

BIBLIOTECA ESTANDARPor: Ma. Fernanda Manrique

STL ( Standard Template Library )

Los lenguajes de programación suelen tener

una serie de bibliotecas de funciones

integradas para la manipulación de datos a

nivel más básico. En C++, además de poder

usar las bibliotecas de C, se puede usar la

nativa STL (Standard Template Library),

propia del lenguaje. Proporciona una serie

plantillas (templates) que permiten efectuar

operaciones sobre el almacenado de datos,

procesado de entrada/salida.

Las clases basic_ostream y basic_stream, y los objetos cout y cin,proporcionan la entrada y salida estándar de datos (teclado/pantalla).También está disponible cerr, similar a cout, usado para la salida estándarde errores. Estas clases tienen sobrecargados los operadores << y >>,

respectivamente, con el objeto de ser útiles en la inserción/extracción dedatos a dichos flujos. Son operadores inteligentes, ya que son capaces deadaptarse al tipo de datos que reciben, aunque tendremos que definir elcomportamiento de dicha entrada/salida para clases/tipos de datosdefinidos por el usuario. Por ejemplo:

ostream& operator<<(ostream& fs,const Punto& punto){return fs << punto.x << "," << punto.y;}

De esta forma, para mostrar un punto, solo habría que realizar la siguienteexpresión:

//... Punto p(4,5);//... cout << "Las coordenadas son: " << p << endl;//...

Es posible formatear la entrada/salida, indicando el número de dígitosdecimales a mostrar, si los textos se pasarán a minúsculas o mayúsculas, silos números recibidos están en formato octal o hexadecimal, etc.

BIBLIOTECA ENTRADA/SALIDAPor: Jhonnathan Jaen

Page 11: Revista C++

Por: Jose Alchaer