Monthly Archives: September 2011

Diferencias entre C y C++

Me han estado llegando comentarios y correos con dudas, correcciones y todo tipo de insultos (no, eso último no) y decidí responder todos ellos con este post en el que aclararé lo que es C y lo que es C++ y sus diferencias.

C fue creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

C++, por su parte, fue creado 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.

Así que C es el lenguaje original, mientras que C++ es una ampliación de C, por eso el ++.

A mi cuando me enseñaron a programar me dijeron que iba a aprender a programar en C++, pero en verdad me enseñaron únicamente C, así que muchos profesores en realidad no saben lo que es programar en C++. Veamos un hola mundo en los dos programas:

En C

#include

int main()
{
        printf ("Hola Mundo");
        return 0;
}

En C++

#include

using namespace std;

int main()
{
    cout << "Hola mundo";
    return 0;
}

Para el tipo de programas que se estarán mostrando en este blog la diferencia más importante es la entrada y salida de datos. Así que veamos un ejemplo de entrada y salida de datos de cada programa:

En C

#include

int main()
{
    int radio;
    float area, perimetro;

    // SALIDA: mensaje un pantalla
    printf("Introduce el radio del circulo: ");

    //ENTRADA: recibir dato desde teclado
    scanf("%d", &radio);

    // calculos
    area = 3.1416 * radio * radio;
    perimetro = 3.1416 * radio * 2;

    //SALIDA: resultado en pantalla
    printf("El area es %.2f y el perimetro %.2f", area, perimetro);
    getch();

    return 0;
}

En C++

#include
using namespace std;

int main()
{
    int radio;
    float area, perimetro;

    // SALIDA: mensaje un pantalla
    cout <> radio;

    // calculos
    area = 3.1416 * radio * radio;
    perimetro = 3.1416 * radio * 2;

    //SALIDA: resultado en pantalla
    cout << "El area es " << area << " y el perimetro " << perimetro;
    cin.get();cin.get();

    return 0;
}

Lo que noté al hacer estos dos programitas es que pedir un dato en C++ es mucho mucho más simple que en C. Sin embargo, el asunto de los << y >> puede llegar a ‘asustar’ a los recién iniciados en la programación.

Pedir un dato en C

scanf("modificador", &nombre de la variable);

Pedir un dato en C++

cin >> nombre de la variable;

Mostrar un dato en C

printf("Dato: modificador", nombre de la variable);

Mostrar un dato en C++

cout << "Dato: " << nombre de la variable;

Los modificadores son los siguientes: %d para int, %f para float, %s para string, %c para char.

Librerías en C++

Por simple convención las librerías en C terminan en ‘.h’ (punto hache). Todas las librerías de C sirven para C++, sin embargo, también por convención, se elimina la terminación ‘.h’ y mejor se agrega ‘c’ al principio.

Libreria en C      Librería en C++

math.h                  cmath

string.h                 cstring

time.h                   ctime

etcetera.

El ‘namespace’

C como lenguaje tiene un conjunto de palabras reservadas, como por ejemplo: if, for, while, int, float, … C++ es una ampliación, por lo tanto tiene que agregar nuevas palabras reservadas. Éstas palabras reservadas están en un ‘namespace’ (espacio de nombres). En específico cout y cin están el namespace std (standard).

Si no declararamos que vamos a usar el namespace std (using namespace std;), cada vez que quisieramos usar cout, tendríamos que escribir std::cout.

Espero que a partir de ahora pueden identificar si un programa está en C o en C++. También espero estar publicando mis programas en ambos lenguajes a partir de ahora.

Advertisements