Pular para o conteúdo principal

Não utilize system("pause");

Esse é um assunto sobre o qual eu tinha vontade de escrever e, agora que vi um post no GdH sobre ele, lembrei de fazer esse alerta aos novos programadores, que estão ou entrando na faculdade ou aprendendo C ou C++ a partir de uma apostila baixada na internet.


POR FAVOR, NÃO UTILIZEM system("pause"); EM SEU PROGRAMAS.



É incrível o grande número de textos, de exemplos e de tutoriais disponíveis na Internet - alguns, inclusive, escritos por professores de cursos de graduação, que ensinam nossos futuros profissionais a utilizar essa ferramenta de forma errada.


A utilização do system("pause"); nos programas em C se deve a uma característica indesejada dos sistemas Windows: se você copia um programa das páginas de uma apostila que exibe um resultado qualquer ao término de sua execução, em geral, ao clicar-se duas vezes no ícone do executável, a única coisa que se verá é uma janela de comandos preta, que sumirá antes de que seja possível ler qualquer coisa na tela. A utilização do system("pause"); é justificada, por seus defensores, pelo fato de a mesma imprimir a mensagem "Pressione qualquer tecla para continuar" e permitir, assim, que os resultados da execução do programa possam ser conferidos. Isso não era necessário nos anos 1980 e início dos anos 1990, quando os computadores rodavam sistemas de linha de comandos.


Só que a utilização dessa função para esse fim está completamente equivocada. A instrução system serve para executar um comando do sistema operacional. Desta forma, quando você chama system("pause");, você está pedindo para que o seu programa execute o comando pause do sistema operacional.


Se você sempre usou Windows, pode não ver um problema nisso. Mas o fato é que existem outros sistemas operacionais além do da Microsoft, como o GNU/Linux (muito utilizado em faculdades) e o Mac OS X, da Apple. Nenhum desses sistemas possui o comando pause. Assim, se seu programa, futuramente, for compilado em um desses sistemas, a instrução system("pause");, além de não funcionar, poderá exibir uma desagradável mensagem de erro!


Logo, como bom programador, você deve procurar maneiras portáveis de realizar essa tarefa. A forma recomendada de se interromper a execução do programa é através da instrução getchar();, que é padrão da linguagem C e funciona em qualquer sistema operacional.


Você até pode argumentar que sempre usou e que sempre vai usar Windows e que, portanto, não se importa com essa questão, mas o fato é que, por padrão, você não sabe quem vai rodar ou onde seu programa vai ser executado daqui há algum tempo.


Mas a melhor maneira de escrever o seu programa é não utilizar instruções de interrupção, pois esse não é um comportamento normal. Ao invés de colocar essas instruções em seu programa, abra um prompt de comando na pasta em que está o executável do seu programa, digite seu nome e pressione Enter. Dessa forma, você conseguirá ver seus resultados e a janela não vai fechar ao final.

Comentários

Postagens mais visitadas deste blog

Como acessar configurações avançadas no Sagemcom F@st 2704N

NOVO TUTORIAL: GUIA DEFINITIVO DAS CONFIGURAÇÕES AVANÇADAS DO SAGEMCOM F@ST 2704N!
Atualização 23/01/2015: Alguns problemas apontados e descobertos nesse modem:
1. Alguns usuários relatam dificuldade em salvar alterações na configuração ADSL;
2. Não sei como acessar os logs do modem; mesmo habilitando, eles não aparecem;
3. Se você trocar o DNS do modem, ele voltará ao da Oi ao ser reiniciado;
4. Estou enfrentando alguns problemas sérios de lentidão. Não sei se isso é relacionado ao modem ou a algum dispositivo na minha rede interna.
-----
Os modens da marca Sagemcom estão se tornando muito populares no Brasil, não, quiçá, por sua qualidade, mas porque eles são os atuais queridinhos das operadoras: quando você assina um plano ADSL, geralmente a operadora envia um modem wireless para sua casa a fim de que você possa navegar sem precisar ter gastos extras com esse equipamento. É claro que os equipamentos fornecidos pelas operadoras são básicos, mas saciam as necessidades dos usuários comuns - …

O Guia Definitivo das configurações avançadas no Sagemcom F@st 2704N

Há alguns meses, eu contei minha experiência com o Sagemcom F@st 2704N e tenho recebido diversos comentários sobre suas configurações avançadas. Agora que minhas aulas na faculdade estão acabando, resolvi reservar um tempinho para explorar melhor esse modem que, diga-se de passagem, é muito bom.