online ejemplos descargar definicion caracteristicas c++

c++ - ejemplos - sistema("pausa");-¿Por qué está mal?



c++ online (12)

Aquí hay una pregunta que no entiendo del todo:

El comando, system("pause"); se enseña a los nuevos programadores como una forma de pausar un programa y esperar a que continúe una entrada de teclado. Sin embargo, parece ser desaprobado por muchos programadores veteranos como algo que no debería hacerse en diversos grados.

Algunas personas dicen que está bien usar. Algunos dicen que solo debe usarse cuando estás encerrado en tu habitación y nadie está mirando. Algunos dicen que irán personalmente a tu casa y te matarán si la usas.

Yo mismo soy un nuevo programador sin entrenamiento de programación formal. Lo uso porque me enseñaron a usarlo. Lo que no entiendo es que si no es algo para ser usado, ¿por qué me enseñaron a usarlo? O, por otro lado, ¿no es realmente tan malo después de todo?

¿Que piensas de este tema?


Como se enumera en las otras respuestas, hay muchas razones que puede encontrar para evitar esto. Todo se reduce a una razón que hace que el resto sea discutible. La función System() es intrínsecamente insegura / no confiable, y no debe introducirse en un programa a menos que sea necesario.

Para una asignación de estudiante, esta condición nunca se cumplió, y por esta razón fallaría una tarea sin siquiera ejecutar el programa si hubiera una llamada a este método. (Esto quedó claro desde el principio).


En resumen, tiene que pausar la ejecución de los programas y hacer una llamada al sistema y asignar recursos innecesarios cuando podría estar usando algo tan simple como cin.get (). La gente usa el sistema ("PAUSE") porque quieren que el programa espere hasta que presionen Enter para ver su salida. Si desea que un programa espere la entrada, hay funciones incorporadas para eso que también son multiplataforma y menos exigentes.

Explicación adicional en this artículo.


Es lento. Es dependiente de la plataforma. Es inseguro.

Primero: lo que hace. Llamar a "sistema" es, literalmente, como escribir un comando en el símbolo del sistema de Windows. Hay una tonelada de configuración y desmontaje para su aplicación para realizar dicha llamada, y la sobrecarga es simplemente ridícula.

¿Qué ocurre si un programa llamado "pausa" se coloca en la RUTA del usuario? Simplemente llamar al sistema ("pausa") solo garantiza que se ejecute un programa llamado "pausa" (¡espero que no tenga su ejecutable llamado "pausa"!)

Simplemente escriba su propia función "Pause ()" que usa _getch. OK, seguro, _getch también depende de la plataforma (nota: está definido en "conio.h") - pero es mucho mejor que system() si está desarrollando en Windows y tiene el mismo efecto (aunque es su responsabilidad proporcionar el texto con cout o menos).

Básicamente: ¿por qué introducir tantos problemas potenciales cuando simplemente puede agregar dos líneas de código y una incluir y obtener un mecanismo mucho más flexible?


Está mal visto porque es un truco específico de la plataforma que no tiene nada que ver con aprender programación, sino que se trata de una característica del IDE / OS: la ventana de la consola iniciada desde Visual Studio se cierra cuando el programa ha finalizado la ejecución, y así el nuevo usuario no puede ver el resultado de su nuevo programa.

Bodging in System ("pause") ejecuta el programa de "pausa" de la línea de comandos de Windows y espera a que finalice antes de que continúe la ejecución del programa: la ventana de la consola permanece abierta para que pueda leer la salida.

Una mejor idea sería poner un punto de interrupción al final y depurarlo, pero eso nuevamente tiene problemas.


Esta es una de las razones por las que no debes usarla: va a hacer enojar a la mayoría de los programas antivirus que se ejecutan en Windows si pasas el programa a otra máquina porque es una amenaza a la seguridad. Incluso si su programa solo consiste en un simple cout << "hello world/n"; system("pause"); cout << "hello world/n"; system("pause"); Es un recurso pesado y el programa tiene acceso al comando cmd, que los antivirus ven como una amenaza.


Para mí no tiene sentido en general esperar antes de salir sin razón. Un programa que ha hecho su trabajo debería terminar y devolver sus recursos a su creador.

Uno tampoco espera en silencio en un rincón oscuro después de un día de trabajo, esperando que alguien se incline sobre sus hombros.


Porque no es portátil.

pause

es un programa solo para Windows / dos, por lo que este código no se ejecutará en Linux. Además, el system generalmente no se considera una muy buena forma de llamar a otro programa; por lo general, es mejor usar CreateProcess o fork u otro similar.


Puede usar std::cin.get() desde iostream :

#include <iostream> // std::cout, std::cin using namespace std; int main() { do { cout << ''/n'' << "Press the Enter key to continue."; } while (cin.get() != ''/n''); return 0; }

Además, el system(''pause'') es lento e incluye un archivo que probablemente no necesite: stdlib.h . Depende de la plataforma, y ​​en realidad llama a un sistema operativo "virtual".


Todo es una cuestión de estilo. Es útil para la depuración, pero de lo contrario no debería usarse en la versión final del programa. Realmente no importa en el tema de la memoria porque estoy seguro de que los tipos que inventaron el sistema ("pausa") anticiparon que se usaría con frecuencia. En otra perspectiva, las computadoras se aceleran en su memoria para todo lo demás que usamos en la computadora de todos modos y no representa una amenaza directa como la asignación de memoria dinámica, así que lo recomendaría para depurar código, pero nada más.


Usando el system("pause"); es Ungood Practice ™ porque

  • Es completamente innecesario .
    Para mantener la ventana de la consola del programa abierta al final cuando la ejecuta desde Visual Studio, use Ctrl + F5 para ejecutarla sin depuración, o bien ubique un punto de interrupción en el último corchete derecho } de main . Entonces, no hay problema en Visual Studio. Y, por supuesto, no hay ningún problema cuando lo ejecutas desde la línea de comando.

  • Es problemático y molesto
    cuando ejecuta el programa desde la línea de comando. Para la ejecución interactiva, debe presionar una tecla al final sin ningún propósito. ¡Y para usar en la automatización de algunas tareas, la pause es muy poco deseada!

  • No es portátil.
    Unix-land no tiene un comando de pause estándar.

El comando de pause es un comando interno cmd.exe y no se puede anular, como se afirma erróneamente en al menos otra respuesta. Es decir, no es un riesgo de seguridad, y la afirmación de que los programas AV lo diagnostican como tal es tan dudosa como la pretensión de anular el comando (después de todo, un system invocación de programas C ++ está en condiciones de hacer todo lo que el intérprete de comandos puede hacer, y más). Además, aunque esta forma de pausar es extremadamente ineficiente según los estándares habituales de la programación en C ++, eso no tiene importancia alguna al final del programa de un novato.

Entonces, los reclamos en la horda de respuestas antes de esto no son correctos, y la razón principal por la que no debes usar system("pause") o cualquier otro comando de espera al final de tu main , es el primer punto anterior: es completamente innecesario, no sirve para nada, es muy tonto.


el profesional a usar el sistema ("PAUSA"); mientras que la creación de pequeñas porciones de su programa es para depurarlo usted mismo. si lo usa para obtener resultados de variables antes durante y después de cada proceso que está utilizando para garantizar que funcionen correctamente.

Después de probarlo y moverlo a toda velocidad con el resto de la solución, debe eliminar estas líneas. es realmente bueno cuando se prueba un algoritmo definido por el usuario y se asegura de que se están haciendo las cosas en el orden correcto para los resultados que se desean.

De ninguna manera desea utilizar esto en una aplicación después de haberlo probado y asegurarse de que esté funcionando correctamente. Sin embargo, le permite hacer un seguimiento de todo lo que sucede a medida que sucede. No lo use para aplicaciones de usuario final.


  • lento: tiene que pasar por un montón de código innecesario de Windows y un programa separado para una operación simple
  • no portátil: depende del programa de pausa
  • no es un buen estilo: hacer una llamada al Sistema solo debe hacerse cuando sea realmente necesario
  • más tipeo: System ("pause") es más largo que getchar ()

un simple getchar () debería funcionar bien.