Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Alien-Z en 13 Agosto 2011, 01:43 am



Título: Pregunta de principiante.
Publicado por: Alien-Z en 13 Agosto 2011, 01:43 am
Buenas, escribo para plantear una pregunta de principiante:

Bien, hace unos años estuve programando en C++ siguiendo un libro llamado "Aprenda C++ como si estuviera en primero"; en dicho libro aprendí que para mostrar un mensaje en la pantalla se usa:

Código:
printf

Sin embargo ahora, buscando varias versiones de este manual para volver a la programación, acabé cansándome ya que todas las que encontré tenían un lenguaje un poco complejo, y no conseguí dar con la versión para "super principiantes nivel 0" que era con la que me entendía.

Al final opté por buscar otros manuales y acabé con un pequeño video-tutorial de 9 capítulos que te intruce en la programación (aqui os dejo el primer capitulo: http://www.youtube.com/watch?v=eVaFqHE1mIY ). Mi duda surje al fijarme en que en vez de usar "printf" para imprimir un mensaje en la pantalla, usa el código "cout".

De la misma forma después de un comando añade "<<" en el caso de cout y ">>" en el caso de cin. Quisiera saber a qué es debido que use comandos en C++ que no eran los que aprendí hace unos años ni son los mismos que usan los programadores que hay en esta página (he revisado varios scripts y parece otro lenguaje O.o).


Disculpad si es una pregunta demasiado tonta, pero me resulta demasiado extraño que estudiando el mismo lenguaje use códigos diferentes.

Saludos.


Título: Re: Pregunta de principiante.
Publicado por: jhonatanAsm en 13 Agosto 2011, 02:04 am
hay distintas formas de mostrar un resultado.

te recomiendo usar la mejor,jejjejeee.


Título: Re: Pregunta de principiante.
Publicado por: Alien-Z en 13 Agosto 2011, 02:06 am
mmm.... agradecería que me lo aclararais mejor... ¿da lo mismo la forma que use?, ¿afecta de alguna forma al programa?.

Citar
te recomiendo usar la mejor,jejjejeee.

¿Y cuál es la mejor? O.o... me parece un poco incoherente esta respuesta...


Título: Re: Pregunta de principiante.
Publicado por: beholdthe en 13 Agosto 2011, 04:16 am
mmm.... agradecería que me lo aclararais mejor... ¿da lo mismo la forma que use?, ¿afecta de alguna forma al programa?.

¿Y cuál es la mejor? O.o... me parece un poco incoherente esta respuesta...
+1


Título: Re: Pregunta de principiante.
Publicado por: Beakman en 13 Agosto 2011, 06:50 am
Lo que pasa es que "printf" es de C.
En C++ tenés el manejo de objetos, la programación orientada a objetos y se simplifican muchísimas cosas.
Por ejemplo con la sobrecarga de operadores. al hacer "cout << algo;" se está sobrecargando el operador "<<" y es lo mismo que hacer un printf, pero te simplifica muchísimo la tarea.
Yo creo que lo primero a aprender es C, luego tenés que aprender C++, y con esto la programación orientada a objetos.

Citar
Disculpad si es una pregunta demasiado tonta, pero me resulta demasiado extraño que estudiando el mismo lenguaje use códigos diferentes.
Ninguna pregunta es tonta, si tenemos una duda hay que resolverla.

El código no varía mucho, lo que si tenés que prestar atención es las diferencias entre C y C++, y así también las diferencias entre distintos compiladores, algunos ponen int main(), en otros aceptan void main( void ).
Cosas así, pero la sintaxis es la misma.

Como siempre hay un libro que yo recomiendo, es un manual de C++ escrito por Pozo Coronado, donde a mi parecer está todo muy bien explicado. saludos.


Título: Re: Pregunta de principiante.
Publicado por: Queta en 13 Agosto 2011, 13:09 pm
Lo que pasa es que "printf" es de C.

También es de C++.


Título: Re: Pregunta de principiante.
Publicado por: Alien-Z en 13 Agosto 2011, 13:44 pm
Citar
También es de C++.

¿Pero por usar es más correcto cout o printf? (esto solo es un ejemplo, he visto más funciones como es el caso de "cin" en vez de "scanf" o el almacenamiento de datos introducidos por el usuario que antes lo hacía con ("%d", &nombrevariable) y sin embargo ahora basta con usar "cin >> nombrevariable"). Aqui he encontrado un ejemplo: http://foro.elhacker.net/programacion_cc/triangulo_problema_al_compilar-t336278.0.html

Citar
En C++ tenés el manejo de objetos, la programación orientada a objetos y se simplifican muchísimas cosas.
Por ejemplo con la sobrecarga de operadores. al hacer "cout << algo;" se está sobrecargando el operador "<<" y es lo mismo que hacer un printf, pero te simplifica muchísimo la tarea.

Vale muchas gracias, ya me ha quedado un poco más claro, entonces debería seguir la metodología del tutorial que he linkeado en el primer mensaje (usando códigos orientados a objetos como me has explicado).

Citar
Como siempre hay un libro que yo recomiendo, es un manual de C++ escrito por Pozo Coronado, donde a mi parecer está todo muy bien explicado. saludos.

Lo he buscado y estoy echándole un vistazo, por lo que veo de primeras lo explica todo de forma detallada asi que lo seguiré como referencia.

Otra duda que me ha surgido, qué diferencia hay entre llamar a una libreria asi:

Código:
# include <iostream>

O asi:

Código:
# include <iostream.h>

¿Qué es el ".h" que añaden algunos programadores (y otros lo omiten)?, ¿cómo es más correcto?.

Gracias de nuevo, saludos.


Título: Re: Pregunta de principiante.
Publicado por: Beakman en 13 Agosto 2011, 21:06 pm
También es de C++.
Por supuesto, todo lo que esté en C es de C++, yo solo quise decir que en C++ tenés otras alternativas, que en realidad serían las mismas pero mejoradas.

Código:
¿Pero por usar es más correcto cout o printf? 
Eso es depende a qué te acostumbres. Si vos querés la POO, creo que tendrías que acostumbrarte a usar cout, a sobrecargar operadores, como así también a usar String en lugar de un vector de caracteres, etc...
De todas formas en el funcionamiento no cambia.

Citar
¿Qué es el ".h" que añaden algunos programadores (y otros lo omiten)?, ¿cómo es más correcto?.
El <iostream> NO lleva ".h", solo ví el ".h" en códigos para entornos de windows, la verdad no lo sé por qué lo lleva, porque yo no lo uso.


Título: Re: Pregunta de principiante.
Publicado por: rir3760 en 19 Agosto 2011, 05:22 am
La forma "políticamente correcta" es <N> ya que así las facilidades cortesía de ese encabezado se colocan en el nombre de espacios estándar "std", para acceder a ellos se utiliza el nombre compuesto "std::X", "std::Y", etc. o bien directivas "using" para incluir en el nombre de espacios global solo los nombres necesarios.

La forma <N.h> es equivalente a:
Código
  1. #include <N>
  2. using namespace::std;
Con la desventaja de que todos los nombres cortesía de la inclusión ahora están en el nombre de espacios global lo que abre la puerta al conflicto de nombres (y la razón de los nombres de espacios es justamente eso: evitarlos).

Un saludo


Título: Re: Pregunta de principiante.
Publicado por: Danyel_Casvill en 20 Agosto 2011, 19:23 pm
Hola!!

Mira que ya te dijeron, En C, se usa como entradas y salidas estandar printf y scanf, pero en C++ lo han mejorado y ahora es mas facil utilizar cout<<; y cin>>; aunque todo depende de lo que te parezca más cómodo.

cout<<; = mostrar:
cin>>;   = tomar:

Ejemplo:
Así lo haríamos en C:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int x=10,y;
  6. printf("El valor de x es:%i\n",x); //endl se una para saltar de línea
  7. printf("Ingrese un valor para y:");
  8. scanf("%i",&y);
  9. printf("El valor de x es:%i\n",x);
  10. printf("Y el valor de y es:%i",y);
  11.  
  12. return 0;
  13. }
  14.  
Y así lo haríamos normalmente en C++, aunque todo código hecho en C tambiem compila en C++ por lo cual el código de arriba tambien es válido en C++
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int x=10,y;
  8. cout<<"El valor de x es:"<<x<<endl; //endl se una para saltar de línea
  9. cout<<"Ingrese un valor para y:";
  10. cin>>y;
  11. cout<<"El valor de x es:"<<x<<endl<<" Y el valor de y es:"<<y;
  12.  
  13. cin.get();cin.get();
  14. return 0;
  15. }
  16.  

Si me equivoco por favor que me corrijan, saludos  ;D.

EDIT:

Gracias por la aclaración!!
Ya lo cambie ^^


Título: Re: Pregunta de principiante.
Publicado por: Queta en 20 Agosto 2011, 20:21 pm
El primer código es C++ y no C como dices.


Título: Re: Pregunta de principiante.
Publicado por: BlackZeroX en 20 Agosto 2011, 20:23 pm
#include <cstdio> = C++
#include <stdio.h> = C

Dulces Lunas!¡.