Diferencias de C y C++.pdf

Texto completo

(1)

Elaborado por Ing. Duber Jair Rocha Botero Pág. 1 Diferencias de C y C++

A ver, siempre hay gran confusión con esto... Deberías empezar por C según la mayoría de la gente, por C++ según los expertos de POO, y por C# según los engañados.

C es un lenguaje libre estandarizado por ISO MUY PEQUEÑO que admite programación estructurada (la de toda la vida), nada más. Útil en programación de microchips, sistemas operativos, drivers y programación web... Poco más.

C++ es un lenguaje libre estandarizado por ISO MUY GRANDE, que admite: Programación estructurada (la de toda la vida), la totalidad de la POO (objetos, herencia simple, herencia múltiple, polimorfismo, upcasting, downcasting, RTTI, interfaces, clases abstractas, clases amigas, operadores, sobrecarga... y mil cosas más avanzadas), programación genérica (plantillas, STL, conceptos de contenedores, estructuras de datos genéricas, <b>metaprogramación</b>... es una programación que no dispone ningún otro lenguaje mayoritario por el momento)... y otras características más avanzadas como los punteros inteligentes, programación lambda, programación "física"... También se usa como programación por eventos (MFC, Qt, Gtk y otras GUIs). Se usa para cualquier cosa, desde sistemas operativos hasta los juegos 3D de última generación pasando por servidores, pasando por las típicas aplicaciones de escritorio o un Office o OpenOffice, un reproductor WinAMP y Windows Media Player, un explorador web (Internet Explorer, Mozilla, Firefox...), un cliente eMule, un cliente Torrent.

C# es un invento de Microsoft (lenguaje propietario) que mezcla las características básicas de C++ (no las avanzadas) simplificándolas al estilo Java y ofreciendo un framework. El problema es que es .Net, y deja de ser código nativo/portable. Eso sí, el framework provee bastante facilidad de programación de tareas comunes, al igual que Java. Por ello se genera el debate ¿Java o C#? Su funcionalidad viene a ser parecida. .Net es más nativo y Java más virtual.

Aunque C++ es un superconjunto de C, existen algunas diferencias entre los dos. En primer lugar, en C cuando una función no toma parámetros, su prototipo tiene la palabra void. Sin embargo en C++ void no es necesario(opcional).

Prototipo en C: char f1(void); Prototipo en C++: char f1();

Otra diferencia entre C y C++ es que en un programa de C++ todas las funciones deben estar en forma de prototipo, en C los prototipos se recomiendan, pero son opcionales. También si una función de C++ es declarada para devolver un valor obligatoriamente la sentencia return debe devolver un valor, en C no es necesario que se devuelva.

(2)

Elaborado por Ing. Duber Jair Rocha Botero Pág. 2 declarar en cualquier punto. Aunque es conveniente realizarlo siempre al comienzo de la función.

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 ++.

Veamos un hola mundo en los dos programas:

En C

#include<stdio.h>

int main() {

printf ("Hola Mundo"); return 0;

}

En C++

#include<iostream>

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<stdio.h>

int main() {

int radio;

float area, perimetro;

(3)

Elaborado por Ing. Duber Jair Rocha Botero Pág. 3 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<iostream> using namespace std;

int main() {

int radio;

float area, perimetro;

// SALIDA: mensaje un pantalla

cout << "Introduce el radio del circulo: ";

//ENTRADA: recibir dato desde teclado cin >> 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; }

(4)

Elaborado por Ing. Duber Jair Rocha Botero Pág. 4 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.

Otra diferencia fundamental es la extensión con la que se guardan los archivos ya que los compiladores se ayudan de estas extensiones para identificar el lenguaje con el que se está trabajando.

(5)

Elaborado por Ing. Duber Jair Rocha Botero Pág. 5 Es muy común usar en expresiones lógicas los operadores and, or o not en lugar de &&, || y !. Los primeros corresponden a C++ y los segundos a C.

Por ejemplo, el código en C++:

if((cx==0) and (dx!=0)) opc=1;

debería escribirse en C como:

if((cx==0) && (dx!=0)) opc=1;

También es común utilizar las funciones de C++ para mostrar en pantalla y para leer datos por vía teclado.

Por ejemplo, en C++:

int a; cin >> a;

cout << “El valor de a es “ << a << endl;

en C debería escribirse como:

int a;

scanf(“%i”, &a);

printf(“El valor de a es %i\n”,a);

También suele ser erróneo el querer sustituir endl, que es de C++ por '\n', que es de C.

(6)

Elaborado por Ing. Duber Jair Rocha Botero Pág. 6 Por ejemplo, en C++ se tiene el código:

int x = -2345;

int y = abs(x); //Se invoca a la función desde la declaración de la //variable y su resultado se le asigna a la variable y

y en C debería ser:

int x = -2345, y; /*Primero se declaran las variables y luego se invocan las funciones que se vayan a utilizar*/

y = abs(x);

Un error que ocurre frecuentemente es confundir entre los comentarios de C++ y de C y hacer uso de ellos. Los comentarios de C++ son solamente por línea y se le debe anteponer // antes de escribir el comentario en esa línea y a cada una de las líneas que lleven comentario. En cambio los comentarios en C son por bloque y se agrupan entre los símbolos /* y */; pueden contener uno o varios renglones, como se observa en el código anterior.

EJERCICIOS A DESARROLLAR

Figure

Actualización...