/* Programa    primeiro03.cc  
	Assunto:   Tutorial sobre coisa nenhuma.
	Condicionantes:
      g++ -Wall -oprog primeiro03.cc
	Programa sem erros

	Descrição:  Aborrece o leitor do livro com um longo texto 

	palavras chave: entrada de dados, cin.get(), redação 
	palavras chave: limpa a tela, parada para leitura
   por Tarcisio Praciano Pereira - 10 licoes para aprender C++
   Sobral, Abril de 2005	- UeVA    	      		
*/

#include <iostream>
using namespace std; // a evitar - polui o espaÃ§o de nomes 


int main()
{
	cout  << "\t Este programa ilustra o uso de \"cout\" e de \"cin\" " << endl
			<< "Observe que podemos enviar um monte de mensagens" << endl
			<< "para a saída de dados de uma única vez. 		" << endl
		   << "\t Veja que C++ aceita símbolos especiais, como" << endl
			<< "o de tabulação que usei na linha acima e na primeira" << endl
			<< "linha desta \"redação\"... " << endl
		  << "\t Agora mesmo eu vou mudar de página, mas você " << endl
			<< "vai ter tempo de ler o que eu acabei de escrever acima." << endl
			<< "\t Leia o programa, e veja aqui neste ponto como é " << endl
			<< "fiz. " << endl
			<< "\t Mas observe que somete usei um \"cout\" para todo " << endl
			<< "o texto que se encontra acima desta linha. " << endl
	      << "\t Aperte enter para continuar a leitura da  \"redação\"... " 
			<< endl;
	cin.get(); // (10) 
	cout	<< "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
	cout	<< "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
	cout  << "\t Acho que você viu como fiz a limpesa de página... "<< endl
			<< "e tem maneira mais bonita de fazer isto. " << endl
			<< "Uma delas é usando uma função da linguagem C." << endl
			<< " Eu vou fazer isto agora. "<< endl
    		<< "\t Leia o programa, e veja aqui neste ponto como é " << endl
         << "fiz. " << endl;
	//printf("%d",cin.get()); // (10) 
	cin.get();
	//(30) usando uma função da linguagem  C
	system("clear");
	cout 	<< "\t A função \"system()\" recebe o nome de um programa" << endl
			<< "externo e o executa. Observe a sintaxe: " << endl
			<< " \t \t   system(\"bell\")   " << endl
			<< "em que que \"bell\" é uma string contendo o nome de um programa "<< endl
			<< "que no meu sistema faz a campainha do micro soar. Se este"<< endl
			<< "programa não existir no sistema, você vai receber um erro"<< endl
			<< "dizendo que tal programa não existe: "<< endl;
	system("nothing");
   cout  << "\t Eu executei o comando : " << endl
     		<< " \"system(\"nothing\");\" recebendo a mensagem:  "<< endl
     		<< "\t \"sh: line 1: nothing: command not found  "<< endl
     		<< "porque o programa \"nothing\" não existe. "<< endl
    		<< "e \"sh\" é a linguagem de comunicação entre usuários e "<< endl
         << "sistema operacional no Linux. "<< endl
         << "\t Aperte enter para terminar a leitura da  \"redação\"... "
         << endl;
   cin.get(); // (10) 
	return(0);
}


/* Comentários:  A numeração dos comentários não
		  é continuada, pode dar saltos...para
		  facilitar a reutilização de programas.

(10)	Para entender melhor o que acontece aqui, você deve fazer um
leitura do capítulo seis. Mas não é necessário se você incialmente
aceitar a explicação seguinte, (primeiro use, depois entenda).
	(11) get()  é um método defindo no objeto "cin" 
	(12) O uso dos métodos associados a um objeto é feito com a 
			referência: o ponto.  Se eu for usar um método
			do objeto cin  tenho que fazê-lo assim : cin.get()
			quer dizer que   "get()" é um método de cin .
	(13)  método é o nome que as funções recebem na linguagem
			de orientação a objetos.
   (14) Há várias formas de usar o método get() de cin 
	No presente caso  cin.get() vai esperar uma leitura, mas 
como não tem parâmetros, nada vai fazer. É o que desejo, que
dê uma parada.


(30) A função system() de C, chama um programa externo. Aqui chamou
	um comando do sistema operacional, "clear" que limpa a tela. Funciona
	em Linux. Em DOS você pode substituir  "clear" por  "cls".
	Se você quiser rodar um programa externo é esta função que
você irá usar.
*/

