quarta-feira, 5 de março de 2008

Capítulo 2 - Iniciando com printf()

As sequências de escape e os especificadores de formato são úteis para a formatação das informações de saída na tela do MS-DOS. São utilizados no comando de impressão formatada, ou seja, a função printf().

1. Sequências de Escape:

\b - Backspace
\t - Tabulação
\r - Return (retorna o cursor no início da pan style="font-weight: bold;">%c - Caractere
%s - String de caracteres com terminador nulo (\0)
%p - Valor de ponteiro
%% - Porcentual

Obs: mostrando apenas comandos úteis.
Obs: para expressar ponto flutuante, recomendo %g ou %G que exibe qualquer formato.

Exemplos de programas:

main()
{
printf("O numero %d e um numero par.", 2);
printf("O numero %g e um ponto flutuante.", 3.14);
printf("O numero %o representa o numero 10 em octal");
printf("O letra %c e a primeira do alfabeto.", A);
printf("Meu nome e: %s", Andre\0);
printf("Meu conhecimento aumentou em 120%%");
}


Obs: o prompt do DOS tem problemas com acentuação. Para mostrar alguns caracteres acentuados temos que usar a tabela ASCII. Deixei de acentuar para facilitar o entendimento.
Obs: no número de ponto flutuante, utilizamos ponto para separar as casas decimais pois é o padrão americano. Se usarmos vírgula, teremos um erro de compilação.
Obs: ao receber uma string com o especificador de formato %s, temos que colocar o chamado terminador nulo (\0) "barra zero" depois do último caractere, sinalizando que é o último.
Obs: o especificador de formato %p terei que explicar depois.

3. Especificadores de precisão:

Obs: Entenda underline como espaço em branco na execução dos programas.

main()
{
printf("%d%2d%3d", 7, 8, 9);
}


Executa: 7_8__9 (Entenda underline como espaço em branco).
O 7 será exibido com 1 espaço, pois é padrão que quando digitamos um número o espaço reservado para ele seja o número de dígitos que colocamos. Como colocamos só um dígito (7), foi reservado apenas um espaço para ele. O 8 é exibido com 1 espaço adicional à esquerda, pois reservamos 2 espaços, um para o número e outro que ficou desocupado. O 9 é exibido com 2 espaços adicionais à esquerda.

main()
{
printf("%f", 535.45);
}


Executa: 535.450000
Por que esses 4 zeros à direita? Por que o limite imposto ao número ponto flutuante em casas decimais à direita é 6. Só 6 casas depois da vírgula (ponto em notação americana). Então o compilador automaticamente preenche com zeros.

main()
{
printf("%16f", 535.45);
}


Executa: ______535.450000
Os quatro zeros a direita se mantém. No total são 10 digitos contando com o ponto, mais 6 espaços à esquerda. Ou seja, são reservadas 16 posições para exibir o número ponto flutuante, que especificamos entre o "%" e o "f" no programa.

main()
{
printf("%6.2f", 12.3456);
}


Executa: _12.35
O número 6 (entre % e f) na função printf() indica que serão reservadas 6 posições. São 5 dígitos contando com o ponto e mais 1 espaço à esquerda. O numero 2 após o ponto, dentro da função printf() indica que serão reservadas apenas 2 posições após a vírgula (ponto em americano). Perceba que o compilador executa .35, então ele faz um arredondamento quando o dígito à direita é maior que 5.

Obs: Em todos esses programas, perceba que os valores estão sempre se alinhando pela direita, deixando espaços vazios à esquerda. Podemos alinhar à esquerda colocando um sinal de menos
(-) antes do número que define a quantidade de posições:

main()
{
printf("%-16f", 535.45);
}


Executa: 535.450000______

Nenhum comentário: