Introdução à impressão de inteiros em mesma linha

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 C e outra para Python.


Impressão de frases e inteiros em C

O comando para impressão em C é o printf e para ele funcionar você precisa carregar uma biblioteca de cabeçalhos, isso deve ser feitos nas primeiras linhas de seu código com a seguinte linha:

#include <stdlib.h>
  
Deve-se obrigatoriamente digitar como acima, o #include é uma diretiva para incluir as definições que são encontradas no arquivo de nome stdlib.h (ele encontra-se na diretório de seu compilador C).

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

Exemplo 1 [C]: ler 1 valor inteiro e imprimir esse valor.

#include <stdlib.h>
int main (void) { // declaracao da funcao principal - comeca a rodar aqui!
  int n;
  printf("Digite um valor inteiro: ");  // imprime mensagem (e NAO muda de linha)  
  scanf("%d", &n); // 'scanf' e' funcao para entrada de dados, cuja definicao tambem esta no 'stdio.h'
  printf("Atencao!\nValor digitado = %d\n", n);  // imprime "Atencao", quebra a linha, depois o valor digitado e "quebre" a linha
  }

No exemplo acima deve-se notar que o formatador %d serve para indicar ao compilador C 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 bytes 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 1032 320 (seguido de ENTER) então a variável n receberá o valor 1032, sendo o 320 ignorado (ou usado como entrada de um scanf seguinte, se existisse no código).

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 % e a letra d, ele é usado para indicar quantas colunas devem seu usadas para o inteiro, no exemplo usamos %5d e %6d, 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á sem efeito.

Exemplo 2 [C]: ler valores inteiros (não nulos) e imprimir esse valor e o seu quadrado.

#include <stdlib.h>
int main (void) {
  int n = 1;
  while (n!=0) { // enquanto nao digitar 0, continue...
    scanf("%d", &n);
    printf("%5d :: %6d\n", n, n*n);  // imprime primiro valor ajustado `a direita 5 casas, o segundo 6 casas
    }
  }

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



Impressão de frases e inteiros em Python

Na linguagem Python a cada impressão deve existir uma "quebra" de linha, exceto se o programador usar um parâmetro adicional end="" dentro do comando de impressão. Entretanto, se o seu interpretador Python for da versão 2, para esse parâmetro funcionar, será necessário uma linha inicial em seu código: from __future__ import print_function. Essa linha permite a carga de uma biblioteca especial para impressão. Se estiver usando o Python for da versão 3 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!

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 Atencao!, "quebra" a linha (ou seja, pula para uma próxima linha) e na seguinte imprime o valor digitado (com uma mensagem auxiliar).

Exemplo 1 [Python]: ler 1 valor inteiro e imprimir esse valor.

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

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 % e a letra d, ele é usado para indicar quantas colunas devem seu usadas para o inteiro, no exemplo usamos %5d e %6d, 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á sem efeito.

Exemplo 2 [Python]: ler valores inteiros (não nulos) e imprimir esse valor e o seu quadrado.

from __future__ import print_function # Obrigatorio para Python 2 para 'print' sem pular linha
def main () :
  n = 1;
  while (n!=0) : # enquanto nao digitar 0, continue...
    n = int(input());
    print("%5d :: %6d\n" % (n, n*n));  // imprime primiro valor ajustado `a direita 5 casas, o segundo 6 casas

main();

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

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

Leônidas de Oliveira Brandão
http://line.ime.usp.br

Alterações:
2020/08/21: novo formato
2019/03/25: versão inicial