Nuevo en C++ copilando los primeros proyectos y dudas.

Iniciado por Hakim, 7 Agosto 2017, 07:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Hakim

Saludos este es mi primer post, me registre porque hay una buena fuente de información y me gustaría colaborar de la misma manera. Estoy estudiando en linea y hay algunos códigos que no veo que hagan diferencia a la hora de verlos en Deb.

por ejemplo:

Código (cpp,9,10,11) [Seleccionar]
#include "stdafx.h"    
#include <iostream>  
using namespace std ;      
                                         
int main ( )        
{                      

cout << "C++ fue creado en los '80 " ;
cout << " y fue derivado del lenguaje C " << endl;
cout << "Ambos lenguajes usan funciones. " << endl << endl;
cout << "Tambien usan librerias y header files. \n\n " ;
system ("pause") ;
return 0;
}


Los términos que tengo un poco de dudas (n\n) la cual no veo diferencia en la consola, igual porque razón en Internet se critica mucho que se use "system("pause") y getchar() es la mas recomendable.

Gracias de ante mano, perdón por todas las preguntas simultaneas.




· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

ianmorar03

#1
El endl siempre funciona si quieres añadir al final de un ciclo for y saltar lineas de codigo simultaneas, el "\n" solo funciona dentro de la cadena de texto que quieras mostrar por pantalla. Te dejo un ejemplo
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main(){
    for(int i=0; i<4;i++){
        cout<<endl;
        for(int j=0;j<4;j++){
            cout<<"*";
        }
    }
}



El system("PAUSE"); a mi me soluciono la vida cuando empece a programar en Visual Studio, siempre se salia cuando empezaba el programa, y no me dejaba hacer nada, si lo ponia me servia.  ;D
getchar(); te puede funcionar para cuando estas trabajando con archivos fuera del programa, ejemplo: un .txt externo con libreria <fstream>

Aquellos que estan locos como para pensar que pueden cambiar el mundo , son los que lo hacen.

Hakim

Cita de: ianmorar03 en  7 Agosto 2017, 08:06 AM
El endl siempre funciona si quieres añadir al final de un ciclo for y saltar lineas de codigo simultaneas, el "\n" solo funciona dentro de la cadena de texto que quieras mostrar por pantalla. Te dejo un ejemplo
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main(){
    for(int i=0; i<4;i++){
        cout<<endl;
        for(int j=0;j<4;j++){
            cout<<"*";
        }
    }
}



El system("PAUSE"); a mi me soluciono la vida cuando empece a programar en Visual Studio, siempre se salia cuando empezaba el programa, y no me dejaba hacer nada, si lo ponia me servia.  ;D
getchar(); te puede funcionar para cuando estas trabajando con archivos fuera del programa, ejemplo: un .txt externo con libreria <fstream>



Muchas gracias, me aclaro mas dudas de lo que pensaba.

ivancea96

Una aclaración importante sobre endl:

En estos streams de salida, cuando escribes, no se envía instantaneamente (a la consola, en este caso). Se almacena en un buffer. Cuando el buffer se llena, o se da otra condición, el buffer se envía y se muestra en la consola lo que habíamos escrito. Esto generalmente ocurre en cuanto el programa tiene tiempo, se detiene, o cuando lo forzamos a hacerlo.

Existe otra función, que es flush:
Código (cpp) [Seleccionar]
cout << flush;

Esto fuerza al buffer a vaciarse. No es muy común verla, pero es importante.
endl hace 2 cosas: primero, escribe un '\n', luego, hace un flush.
endl sería similar a:
Código (cpp) [Seleccionar]
cout << '\n' << flush;
Lo que interesa es ver que no es igual a un salto de línea sin más: además, hace el flush.
En los programas que hagas, no deberías preocuparte: usar endl suele ser la mejor alternativa. Sin embargo, tenlo en cuenta en el futuro.

Hakim

Cita de: ivancea96 en  7 Agosto 2017, 12:47 PM
Una aclaración importante sobre endl:

En estos streams de salida, cuando escribes, no se envía instantaneamente (a la consola, en este caso). Se almacena en un buffer. Cuando el buffer se llena, o se da otra condición, el buffer se envía y se muestra en la consola lo que habíamos escrito. Esto generalmente ocurre en cuanto el programa tiene tiempo, se detiene, o cuando lo forzamos a hacerlo.

Existe otra función, que es flush:
Código (cpp) [Seleccionar]
cout << flush;

Esto fuerza al buffer a vaciarse. No es muy común verla, pero es importante.
endl hace 2 cosas: primero, escribe un '\n', luego, hace un flush.
endl sería similar a:
Código (cpp) [Seleccionar]
cout << '\n' << flush;
Lo que interesa es ver que no es igual a un salto de línea sin más: además, hace el flush.
En los programas que hagas, no deberías preocuparte: usar endl suele ser la mejor alternativa. Sin embargo, tenlo en cuenta en el futuro.

Gracias, son notas importantes muy agradecido.