123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <!--
- 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"><stdlib.h></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"><stdlib.h></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"><stdlib.h></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>
|