introducao_inteiro_impressoes.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <!--
  2. Introdução à Programação - 2017 - Prof. Leoônidas de Oliveira Brandão
  3. Introdução à impressão de inteiros em mesma linha
  4. LInE (Laboratory of Informatics in Education) - http://www.usp.br/line
  5. IME - USP
  6. Material didático
  7. Pode usar livrevemente este material para fins não comerciais, devendo sempre fazer referência à autoria.
  8. Sugestões/apontamento são bem vindos: leo@ime.usp.br (favor indicar no assunto "material de introducao 'a programacao")
  9. Prof. Leônidas de Oliveira Brandão
  10. http://www.ime.usp.br/~leo
  11. http://line.ime.usp.br
  12. http://www.matemtica.br
  13. -->
  14. <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
  15. <meta name='keywords' content='mac0122, material, professores, leonidas de oliveira brandao'>
  16. <link rel='stylesheet' type='text/css' href='css_img_js_conf/all.css'>
  17. <link rel='stylesheet' type='text/css' href='css_img_js_conf/line_introducao_programacao.css'>
  18. <div class="pagina">
  19. <span style="color: #0055AA"><b>Introdução à impressão de inteiros em mesma linha</b></span>
  20. <!-- p>
  21. <b>Alterações</b>: - .
  22. </p -->
  23. <p>
  24. Nesta seção apresentaremos algumas dicas sobre como imprimir em mesma linha usando diferentes comandos de impressão.
  25. Também mostraremos como ajustar impressóes de inteiros "automaticamente" à direita (útil para imprimir tabelas).
  26. Faremos isso separando mas duas seções seguintes, um para
  27. <a href="#c" title="ir direto para codigos em C"><i>C</i></a> e outra para
  28. <a href="#python" title="ir direto para codigos em Python"><i>Python</i></a>.
  29. </p>
  30. <a name="c">
  31. <hr/>
  32. <span style="color: #0055AA">Impressão de frases e inteiros em <i>C</i></span>
  33. </a>
  34. <p>
  35. O comando para impressão em <i>C</i> é o <tt>printf</tt> e para ele funcionar você precisa carregar uma biblioteca
  36. de <i>cabeçalhos</i>, isso deve ser feitos nas primeiras linhas de seu código com a seguinte linha:
  37. <pre><tt class="cmd">#include</tt> <tt class="head">&lt;stdlib.h&gt;</tt>
  38. </pre>
  39. Deve-se obrigatoriamente digitar como acima, o <tt>#include</tt> é uma diretiva para incluir as definições que
  40. são encontradas no arquivo de nome <tt>stdlib.h</tt> (ele encontra-se na diretório de seu compilador <i>C</i>).
  41. </p>
  42. <p>
  43. 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>.
  44. 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
  45. vírgula, daí pode vir uma lista de variáveis, cada uma deverá ter um <b>formatador</b> correspondente no primeiro parâmetro.
  46. No exemplo abaixo, existe um código <i>C</i> completo para ilustrar a sintaxe.
  47. </p>
  48. <p>
  49. <b>Exemplo 1 [<i>C</i>]</b>: ler 1 valor inteiro e imprimir esse valor.
  50. <pre><tt class="cmd">#include</tt> <tt class="head">&lt;stdlib.h&gt;</tt>
  51. <tt class="">int main (void) {</tt> <tt class="com">// declaracao da funcao principal - comeca a rodar aqui!</tt>
  52. <tt class="tipo">int</tt> <tt class="var">n</tt>;
  53. <tt class="cmd">printf("Digite um valor inteiro: ");</tt> <tt class="com">// imprime mensagem (e NAO muda de linha)</tt>
  54. <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>
  55. <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>
  56. }</pre>
  57. </p>
  58. <p>
  59. No exemplo acima deve-se notar que o formatador <tt class="tipo">%d</tt> serve para indicar ao compilador <i>C</i> que deve
  60. produzir instruções para pegar o valor a ser digitado como um inteiro. Esse código executável fica incumbido de agrupar os
  61. <i>bytes</i> digitados para formar o inteiro correspondente. Geralmente se o usuário usar um espaço em branco, esse
  62. delimitará o final do inteiro, por exemplo, se ele digitar <tt class="tipo">1032 320</tt> (seguido de <tt class="var">ENTER</tt>)
  63. 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
  64. (ou usado como entrada de um <tt class="cmd">scanf</tt> seguinte, se existisse no código).
  65. </p>
  66. <p>
  67. No exemplo abaixo ilustramos como imprimir uma tabela com o valor digitado e o seu quadrado.
  68. Note o uso de um inteiro entre o símbolo <tt class="cmd">%</tt> e a letra <tt class="cmd">d</tt>,
  69. ele é usado para indicar quantas colunas devem seu usadas para o inteiro, no exemplo usamos
  70. <tt class="cmd">%5d</tt> e <tt class="cmd">%6d</tt>, logo o primeiro manda ajudar cinco (5) casas à direita
  71. 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>.
  72. </p>
  73. <p>
  74. <b>Exemplo 2 [<i>C</i>]</b>: ler valores inteiros (não nulos) e imprimir esse valor e o seu quadrado.
  75. <pre><tt class="cmd">#include</tt> <tt class="head">&lt;stdlib.h&gt;</tt>
  76. <tt class="">int main (void) {</tt>
  77. <tt class="tipo">int</tt> <tt class="var">n</tt> = 1;
  78. <tt class="cmd">while</tt> (n!=0) { <tt class="com">// enquanto nao digitar 0, continue...</tt>
  79. <tt class="cmd">scanf("%d", &n);</tt>
  80. <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>
  81. }
  82. }</pre>
  83. </p>
  84. <p>
  85. Em resumo, na linguagem <i>C</i> é muito simples fazer ou não quebras de linhas em comandos consecutivos:
  86. para quebrar uma linha deve usar o caractere especial <b><tt class="com">\n</tt></b>.
  87. Ou seja, se usar o comando <tt class="cmd">printf</tt> sem qualquer <tt class="com">\n</tt>, não haverá "quebra" de linha,
  88. todas impressões seguirão em uma mesma linha.
  89. </p>
  90. <br/>
  91. <a name="python">
  92. <hr/>
  93. <span style="color: #0055AA">Impressão de frases e inteiros em <i>Python</i></span>
  94. </a>
  95. <p>
  96. Na linguagem <i>Python</i> a cada impressão deve existir uma "quebra" de linha, exceto se o programador usar um
  97. parâmetro adicional <tt class="com">end=""</tt> dentro do comando de impressão.
  98. 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
  99. em seu código: <tt class="cmd">from __future__ import print_function</tt>.
  100. Essa linha permite a carga de uma biblioteca especial para impressão.
  101. Se estiver usando o <i>Python</i> for da versão <b>3</b> isso não é necessário, mas o interpretador não
  102. reclamará do uso da diretiva de inclusão, coloque sempre essa linha e não receberá advertência de erros!
  103. </p>
  104. <p>
  105. 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
  106. em duas linhas, na primeira um <tt class="var">Atencao!</tt>, "quebra" a linha (ou seja, pula para uma próxima linha) e
  107. na seguinte imprime o valor digitado (com uma mensagem auxiliar).
  108. </p>
  109. <p>
  110. <b>Exemplo 1 [<i>Python</i>]</b>: ler 1 valor inteiro e imprimir esse valor.
  111. <pre><tt class="cmd">from __future__ import print_function</tt> <tt class="com"># Obrigatorio para Python 2 para 'print' sem pular linha</tt>
  112. <tt class="cmd">def</tt> main () :</tt> <tt class="com"># define uma funcao de nome "main"</tt>
  113. <tt class="cmd">print("Digite um valor inteiro: ", end="");</tt> <tt class="com"># imprime mensagem (e NAO muda de linha)</tt>
  114. <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>
  115. <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>
  116. <tt class="com"># As linhas abaixo fazem a mesma coisa usando outra sintaxe, mas atencao pode imprimir com apostrofes! ('Atencao!')</tt>
  117. <tt class="cmd">print("Atencao!");</tt>
  118. <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>
  119. main(); <tt class="com"># comeca aqui (chama a funcao de nome 'main')</tt></pre>
  120. </p>
  121. <p>
  122. No exemplo abaixo ilustramos como imprimir uma tabela com o valor digitado e o seu quadrado.
  123. Note o uso de um inteiro entre o símbolo <tt class="cmd">%</tt> e a letra <tt class="cmd">d</tt>,
  124. ele é usado para indicar quantas colunas devem seu usadas para o inteiro, no exemplo usamos
  125. <tt class="cmd">%5d</tt> e <tt class="cmd">%6d</tt>, logo o primeiro manda ajudar cinco (5) casas à direita
  126. 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>.
  127. </p>
  128. <p>
  129. <b>Exemplo 2 [<i>Python</i>]</b>: ler valores inteiros (não nulos) e imprimir esse valor e o seu quadrado.
  130. <pre><tt class="cmd">from __future__ import print_function</tt> <tt class="com"># Obrigatorio para Python 2 para 'print' sem pular linha</tt>
  131. <tt class="">def main () :</tt>
  132. <tt class="var">n</tt> = 1;
  133. <tt class="cmd">while</tt> (n!=0) : <tt class="com"># enquanto nao digitar 0, continue...</tt>
  134. <tt class="var">n</tt> = <tt class="cmd">int(input());</tt>
  135. <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>
  136. main();</pre>
  137. </p>
  138. <p>
  139. 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
  140. apóstrofes) deve-se usar os formatadores (<tt class="cmd">%d</tt> para inteiros), como como temos mais que um,
  141. é necessário o separador <tt class="var">%</tt> e usar os valores como uma lista (<tt class="cmd">(n, n*n))</tt>.
  142. Sem isso, imprimiria "estranho" (experimente usar a forma <tt class="cmd">print("%5d :: %6d\n", n, n*n);</tt>).
  143. </p>
  144. <p>
  145. Em resumo, na linguagem <i>Python</i> sempre que usar o comando <tt class="com">print</tt> sem o parâmetro
  146. <tt class="com">, end=""</tt>, a próxima impressão sairá na linha seguinte (com "quebra").
  147. </p>
  148. <p class="autoria">
  149. <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/>
  150. <a href="http://www.ime.usp.br/~leo" target="_blank" title="seguir para a página do LInE">http://line.ime.usp.br</a>
  151. </p>
  152. <p class="rodape">
  153. <b>Alterações</b>:<br/>
  154. 2020/08/21: novo formato<br/>
  155. 2019/03/25: versão inicial
  156. </p>
  157. </div>