<!--
 Introdução à Programação - 2017 - Prof. Leoônidas de Oliveira Brandão
 Introdução à impressão de inteiros em mesma linha
 LInE (Laboratory of Informatics in Education) - http://www.usp.br/line
 IME - USP
 Material didático
 Pode usar livrevemente este material para fins não comerciais, devendo sempre fazer referência à autoria.
 Sugestões/apontamento são bem vindos: leo@ime.usp.br (favor indicar no assunto "material de introducao 'a programacao")
 Prof. Leônidas de Oliveira Brandão
 http://www.ime.usp.br/~leo
 http://line.ime.usp.br
 http://www.matemtica.br
-->

  <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
  <meta name='keywords' content='mac0122, material, professores, leonidas de oliveira brandao'>
  <link rel='stylesheet' type='text/css' href='css_img_js_conf/all.css'>
  <link rel='stylesheet' type='text/css' href='css_img_js_conf/line_introducao_programacao.css'>

<div class="pagina">

<span style="color: #0055AA"><b>Introdução à impressão de inteiros em mesma linha</b></span>

<!-- p>
<b>Alterações</b>:  - .
</p -->

<p>
  Nesta seção apresentaremos algumas dicas sobre como imprimir em mesma linha usando diferentes comandos de impressão.
  Também mostraremos como ajustar impressóes de inteiros "automaticamente" à direita (útil para imprimir tabelas).
  Faremos isso separando mas duas seções seguintes, um para 
  <a href="#c" title="ir direto para codigos em C"><i>C</i></a> e outra para
  <a href="#python" title="ir direto para codigos em Python"><i>Python</i></a>.
</p>

<a name="c">
<hr/>
<span style="color: #0055AA">Impressão de frases e inteiros em <i>C</i></span>
</a>


<p>
  O comando para impressão em <i>C</i> é o <tt>printf</tt> e para ele funcionar você precisa carregar uma biblioteca
  de <i>cabeçalhos</i>, isso deve ser feitos nas primeiras linhas de seu código com a seguinte linha:
  <pre><tt class="cmd">#include</tt> <tt class="head">&lt;stdlib.h&gt;</tt>
  </pre>
  Deve-se obrigatoriamente digitar como acima, o <tt>#include</tt> é uma diretiva para incluir as definições que
  são encontradas no arquivo de nome <tt>stdlib.h</tt> (ele encontra-se na diretório de seu compilador <i>C</i>).
</p>

<p>
  A função pré-definida da linguagem <i>C</i> para <b>impressões</b> (saída de dados) é o  <tt class="cmd">printf</tt>.
  O que se deseja imprimir deve estar entre aspas e eventuais variáveis devem estar após esse primeiro <b>parâmetro</b>, após uma
  vírgula, daí pode vir uma lista de variáveis, cada uma deverá ter um <b>formatador</b> correspondente no primeiro parâmetro.
  No exemplo abaixo, existe um código <i>C</i> completo para ilustrar a sintaxe.
</p>

<p>
  <b>Exemplo 1 [<i>C</i>]</b>: ler 1 valor inteiro e imprimir esse valor.
  <pre><tt class="cmd">#include</tt> <tt class="head">&lt;stdlib.h&gt;</tt>
<tt class="">int main (void) {</tt> <tt class="com">// declaracao da funcao principal - comeca a rodar aqui!</tt>
  <tt class="tipo">int</tt> <tt class="var">n</tt>;
  <tt class="cmd">printf("Digite um valor inteiro: ");</tt>  <tt class="com">// imprime mensagem (e NAO muda de linha)</tt>  
  <tt class="cmd">scanf("%d", &n);</tt> <tt class="com">// 'scanf' e' funcao para entrada de dados, cuja definicao tambem esta no 'stdio.h'</tt>
  <tt class="cmd">printf("Atencao!\nValor digitado = %d\n", n);</tt>  <tt class="com">// imprime "Atencao", quebra a linha, depois o valor digitado e "quebre" a linha</tt>
  }</pre>
</p>

<p>
  No exemplo acima deve-se notar que o formatador <tt class="tipo">%d</tt> serve para indicar ao compilador <i>C</i> que deve
  produzir instruções para pegar o valor a ser digitado como um inteiro. Esse código executável fica incumbido de agrupar os
  <i>bytes</i> digitados para formar o inteiro correspondente. Geralmente se o usuário usar um espaço em branco, esse
  delimitará o final do inteiro, por exemplo, se ele digitar <tt class="tipo">1032 320</tt> (seguido de <tt class="var">ENTER</tt>)
  então a variável <tt class="var">n</tt> receberá o valor <tt class="var">1032</tt>, sendo o <tt class="var">320</tt> ignorado
  (ou usado como entrada de um <tt class="cmd">scanf</tt> seguinte, se existisse no código).
</p>

<p>
  No exemplo abaixo ilustramos como imprimir uma tabela com o valor digitado e o seu quadrado.
  Note o uso de um inteiro entre o símbolo <tt class="cmd">%</tt> e a letra <tt class="cmd">d</tt>,
  ele é usado para indicar quantas colunas devem seu usadas para o inteiro, no exemplo usamos 
  <tt class="cmd">%5d</tt> e <tt class="cmd">%6d</tt>, logo o primeiro manda ajudar cinco (5) casas à direita
  e segundo seis casas. Atenção: se o inteiro tiver mais dígitos que o valor (5 ou 6), o ajuste à direita será <b>sem efeito</b>.
</p>

<p>
  <b>Exemplo 2 [<i>C</i>]</b>: ler valores inteiros (não nulos) e imprimir esse valor e o seu quadrado.
  <pre><tt class="cmd">#include</tt> <tt class="head">&lt;stdlib.h&gt;</tt>
<tt class="">int main (void) {</tt>
  <tt class="tipo">int</tt> <tt class="var">n</tt> = 1;
  <tt class="cmd">while</tt> (n!=0) { <tt class="com">// enquanto nao digitar 0, continue...</tt>
    <tt class="cmd">scanf("%d", &n);</tt>
    <tt class="cmd">printf("%5d :: %6d\n", n, n*n);</tt>  <tt class="com">// imprime primiro valor ajustado `a direita 5 casas, o segundo 6 casas</tt>
    }
  }</pre>
</p>

<p>
  Em resumo, na linguagem <i>C</i> é muito simples fazer ou não quebras de linhas em comandos consecutivos:
  para quebrar uma linha deve usar o caractere especial <b><tt class="com">\n</tt></b>.
  Ou seja, se usar o comando <tt class="cmd">printf</tt> sem qualquer <tt class="com">\n</tt>, não haverá "quebra" de linha,
  todas impressões seguirão em uma mesma linha.
</p>

<br/>

<a name="python">
<hr/>
<span style="color: #0055AA">Impressão de frases e inteiros em <i>Python</i></span>
</a>

<p>
  Na linguagem <i>Python</i> a cada impressão deve existir uma "quebra" de linha, exceto se o programador usar um
  parâmetro adicional <tt class="com">end=""</tt> dentro do comando de impressão.
  Entretanto, se o seu interpretador <i>Python</i> for da versão <b>2</b>, para esse parâmetro funcionar, será necessário uma linha inicial
  em seu código: <tt class="cmd">from __future__ import print_function</tt>.
  Essa linha permite a carga de uma biblioteca especial para impressão.
  Se estiver usando o <i>Python</i> for da versão <b>3</b> isso não é necessário, mas o interpretador não
  reclamará do uso da diretiva de inclusão, coloque sempre essa linha e não receberá advertência de erros!
</p>

<p>
  O exemplo abaixo apresentamos um código que solicita que o usuário digite um valor, a ser interpretado como inteiro e imprime uma mensagem
  em duas linhas, na primeira um <tt class="var">Atencao!</tt>, "quebra" a linha (ou seja, pula para uma próxima linha) e 
  na seguinte imprime o valor digitado (com uma mensagem auxiliar).
</p>

<p>
  <b>Exemplo 1 [<i>Python</i>]</b>: ler 1 valor inteiro e imprimir esse valor.
  <pre><tt class="cmd">from __future__ import print_function</tt> <tt class="com"># Obrigatorio para Python 2 para 'print' sem pular linha</tt>
<tt class="cmd">def</tt> main () :</tt> <tt class="com"># define uma funcao de nome "main"</tt>
  <tt class="cmd">print("Digite um valor inteiro: ", end="");</tt>  <tt class="com"># imprime mensagem (e NAO muda de linha)</tt>
  <tt class="var">n</tt> = <tt class="cmd">int(input());</tt> <tt class="com"># 'input' permite pegar o que foi digitado e a funcao 'int' interpreta os bytes para inteiro</tt>
  <tt class="cmd">print("Atencao!\nValor digitado = %d\n" % n);</tt>  <tt class="com"># imprime "Atencao", quebra a linha e depois o valor digitado</tt>
  <tt class="com"># As linhas abaixo fazem a mesma coisa usando outra sintaxe, mas atencao pode imprimir com apostrofes! ('Atencao!')</tt>
  <tt class="cmd">print("Atencao!");</tt>
  <tt class="cmd">print("Valor digitado = ", n);</tt>  <tt class="com"># note que por nao usarmos o formatador %d NAO precisou do '%', mas de um separador ','!!!</tt>
main(); <tt class="com"># comeca aqui (chama a funcao de nome 'main')</tt></pre>
</p>

<p>
  No exemplo abaixo ilustramos como imprimir uma tabela com o valor digitado e o seu quadrado.
  Note o uso de um inteiro entre o símbolo <tt class="cmd">%</tt> e a letra <tt class="cmd">d</tt>,
  ele é usado para indicar quantas colunas devem seu usadas para o inteiro, no exemplo usamos 
  <tt class="cmd">%5d</tt> e <tt class="cmd">%6d</tt>, logo o primeiro manda ajudar cinco (5) casas à direita
  e segundo seis casas. Atenção: se o inteiro tiver mais dígitos que o valor (5 ou 6), o ajuste à direita será <b>sem efeito</b>.
</p>

<p>
  <b>Exemplo 2 [<i>Python</i>]</b>: ler valores inteiros (não nulos) e imprimir esse valor e o seu quadrado.
  <pre><tt class="cmd">from __future__ import print_function</tt> <tt class="com"># Obrigatorio para Python 2 para 'print' sem pular linha</tt>
<tt class="">def main () :</tt>
  <tt class="var">n</tt> = 1;
  <tt class="cmd">while</tt> (n!=0) : <tt class="com"># enquanto nao digitar 0, continue...</tt>
    <tt class="var">n</tt> = <tt class="cmd">int(input());</tt>
    <tt class="cmd">print("%5d :: %6d\n" % (n, n*n));</tt>  <tt class="com">// imprime primiro valor ajustado `a direita 5 casas, o segundo 6 casas</tt>

main();</pre>
</p>

<p>
  Atenção a um "detalhe" do comando de impressão no <i>Python</i>, para usar a impressão de vários valores (sem o "risco" de aparecer
  apóstrofes) deve-se usar os formatadores (<tt class="cmd">%d</tt> para inteiros), como como temos mais que um,
  é necessário o separador <tt class="var">%</tt> e usar os valores como uma lista (<tt class="cmd">(n, n*n))</tt>. 
  Sem isso, imprimiria "estranho" (experimente usar a forma <tt class="cmd">print("%5d :: %6d\n", n, n*n);</tt>).
</p>

<p>
  Em resumo, na linguagem <i>Python</i> sempre que usar o comando <tt class="com">print</tt> sem o parâmetro
  <tt class="com">, end=""</tt>, a próxima impressão sairá na linha seguinte (com "quebra").
</p>



<p class="autoria">
 <a href="https://www.ime.usp.br/~leo" target="_blank" title="seguir para a pagina do prof. Leônidas">Leônidas de Oliveira Brandão</a><br/>
 <a href="http://www.ime.usp.br/~leo" target="_blank" title="seguir para a página do LInE">http://line.ime.usp.br</a>
</p>

<p class="rodape">
  <b>Alterações</b>:<br/>
  2020/08/21: novo formato<br/>
  2019/03/25: versão inicial
</p>

</div>