¿Estructuras de datos en C++?

Iniciado por SDCC, 27 Octubre 2018, 02:53 AM

0 Miembros y 3 Visitantes están viendo este tema.

SDCC

De antemano gracias por sus aportaciones , las tomare en cuenta sin embargo me surge una duda a partir de que c++ y c son dos lenguajes distintos..En la poca experiencia que he tenido leyendo sobre c++ he visto que la mayoria de los autores habla de c++ como un superconjunto de c,a partir de lo anterior me crea la incertidumbre si esto es totalmente cierto o es una simplete exageracion.En el caso de que sea asi se podria decir que desde el lenguaje c++ yo puedo hacer un programa exactamente igual que en c independientemente de la complejidad que tenga, con la misma sintaxis ,etc..Sin embargo c++ me presentaria una segunda forma de hacerlo con la abstraccion que presenta el lenguaje  y la POO.?

elgilun

CitarEn la poca experiencia que he tenido leyendo sobre c++ he visto que la mayoria de los autores habla de c++ como un superconjunto de c,a partir de lo anterior me crea la incertidumbre si esto es totalmente cierto o es una simplete exageracion

Según Stroustrup (http://www.stroustrup.com/bs_faq.html) el C++ es un descendiente directo del C y conserva casi todo el C como un subconjunto.

Eso implica que un programa C puede (con cambios, pocos o muchos) puede ser también un programa C++, pero no a la inversa.

El C++ nace (hace 30 años) a partir del C, y desde entonce siempre se ha tratado de conservar esa relativa "compatibilidad hacia atrás".

Cuando se habla de C/C++ no se está queriendo decir que se trata del mismo lenguaje ni de lenguajes similares, se está refiriendo a esa relación de descendencia de la que habla su autor.

CitarEn el caso de que sea asi se podria decir que desde el lenguaje c++ yo puedo hacer un programa exactamente igual que en c independientemente de la complejidad que tenga

En C++ puedes compilar un programa C, después de hacerle algunos cambios, esa es la idea de "Compatibilidad hacia atrás". Pero ni el más básico "hola mundo" en C++ se parece en nada a su versión en C.

"Hola mundo" en C que también compila en C++:
#include <stdio.h>
int main()
{
printf("Hola Mundo!");
return 0;
}


"Hola mundo" en C++
#include <iostream>
int main()
{
std::cout << "Hola Mundo! ";
}


En un programa de una línea ya se ve esa relación de una sola dirección. Si tienes un sistema de muchos miles de líneas en C, podrías mantenerlo mientras lo migras a C++. Si tienes miles de líneas en C++ y quieres pasarlo a C, tíralo y vuelve a escribirlo desde cero en C.


Otro mito: "el C++ es un lenguaje orientado a objetos".

No es así, nunca lo fue. Java es orientado a objetos, el C++ "soporta objetos", son conceptos muy diferentes.

Disculpa si sueno grosero, pero aprender un lenguaje de programación en un nivel básico como para decir que se manejan los rudimentos exige un esfuerzo considerable y necesita de una buena guía y referencias con la realidad. Poner esfuerzo sin guía y sin contacto con la realidad es peor que perder el tiempo.



EdePC

- Mmm, comparar printf con cout es trampa :xD, en ese caso yo planteo :laugh::

"Hola mundo" en C

#include <stdio.h>

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


"Hola mundo" en C++

Código (cpp) [Seleccionar]
#include <stdio.h>

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


- Referencias:
-- http://www.cplusplus.com/reference/cstdio/printf/
-- C++ OnLine Test Compiler: http://cpp.sh/7urdd

elgilun

#13
CitarMmm, comparar printf con cout es trampa
No, usando el objeto cout es la forma habitual "C++" de escribir una cadena de texto en la salida estándar.

Pero no quisiera centrar una discusión en un ejemplo elemental, la idea expresada en mi respuesta usa un "Hola Mundo" como ejemplo de las enormes diferencias entre un programa elemental escrito en C++ y otro escrito en C.

De todos modos, si quieres usar printf en C++ debes tener en cuenta que las cabeceras del C fueron declaradas obsoletas (deprecated) ya en el estándar C++98, lo que quiere decir que nadie debería escribir código nuevo como lo haces tú.

Sí es posible respetando el estándar C++ pero haciendo:
#include <cstdio>

int main()
{
std::printf("Hola Mundo!");
}



(Y ah, por cierto, el sitio que pones como referencia es sin duda uno de los más destacados y donde se ha puesto mucho y buen esfuerzo, pero es famoso también por la gran cantidad de errores que contiene. Fíjate, en este caso, dice que la cabecera de printf es <cstdio> pero en el ejemplo --que tú copias -- usa <stdio.h>. Lástima, ¿verdad?)