LISP: Introdução à Função Format II

No artigo passado nós vimos o básico sobre a função format e as diretrizes de uso geral. Agora iremos nos aprofundar um pouco, vendo diretrizes mais específicas e seus parâmetros. Começaremos com a diretriz ~c.

A diretriz ~c, como você já deve ter imaginado, serve para caracteres. Ela por si só não servirá para muita coisa:

[1]> (format nil "~c" #\a)
"a"

Já se colocarmos dois pontos como parâmetro, ela continua não fazendo muita coisa, mas irá imprimir o nome de caracteres não visíveis:

[2]> (format nil "~c" #\space)
" "
[3]> (format nil "~:c" #\space)
"Space"

Um arroba por sua vez irá imprimir o código que gera aquele caractere. Esse exemplo na verdade não serve para nada, afinal ele só vai repetir o que você escreveu, mas é mais para ilustrar mesmo:

[4]> (format nil "~@c" #\space)
"#\\Space"

Agora a diretriz ~d, sim, para números inteiros em base decimal. Ela sozinha simplesmente copia o valor que foi dado, então podemos repetir aquele exemplo do primeiro artigo, mas agora usando a diretriz ~d:

[5]> (format nil "~d + ~d = ~d" 7 8 (+ 7 8))
"7 + 8 = 15"

O primeiro parâmetro dessa diretriz que veremos é novamente os dois pontos. Esse parâmetro coloca uma vírgula a cada três dígitos:

[6]> (format nil "~:d" 1000000)
"1,000,000"

Logo veremos como modificar o uso desse parâmetro, mas antes vejamos outro, o arroba. Quando utilizado, ele irá imprimir o sinal + na frente do número caso ele seja positivo:

[7]> (format nil "~@d" 10)
"+10"

Se quisermos, podemos misturar esses dois parâmetros:

[8]> (format nil "~:@d" 1000)
"+1,000"

O próximo parâmetro controla o número de “espaços” que o número deve ocupar. Se o número possuir apenas três dígitos, mas nós queremos espaço suficiente para nove dígitos, ele irá colocar espaços para completar esses nove espaços:

[9]> (format nil "~9d" 456)
" 456"

Outra alternativa seria colocar zeros na frente, no lugar de espaços. Para isso, usamos o segundo parâmetro:

[10]> (format nil "~9,'0d" 456)
"000000456"

Ele diz “ocupe 9 espaços, preenchendo o que ficar em branco com o caractere 0”. Uma nota sobre esses dois novos parâmetros (e os dois seguintes): ao contrário do : e do @, esses parâmetros têm posição fixa, para separá-los, deve-se colocar uma vírgula entre eles, como você viu no exemplo a cima.

Agora o terceiro parâmetro. Ele e o quarto parâmetro são usados junto o parâmetro :, aquele que coloca vírgulas a cada três dígitos. O terceiro determina qual o caractere que será usado para separar um número x de dígitos. Esse número x é determinado pelo quarto parâmetro:

[11]> (format nil "~,,'.,4:d" 100000000)
"1.0000.0000"

Como eu disse, esses parâmetros tem posições fixas. Já que no exemplo não quisemos determinar o número de espaços a serem preenchidos, nem com o que, nós só colocamos vírgulas para dizer à função que o que nós colocamos lá são o terceiro e quarto parâmetros.

As próximas três diretrizes funcionam exatamente do mesmo jeito que ~d, exceto pelo fato que em bases diferentes. ~x imprime inteiros em base hexadecimal, ~o em base oito e ~b em base binária. Os parâmetros são os mesmos.

Já a diretriz ~r possui duas funções, ambas relacionadas à inteiras. A primeira é a mesma das outras deitrizes, mas ela não possui uma base já especificada. Ela é determinada pelo primeiro parâmetro, que vai de 2 a 36.

[12]> (format nil "~36r" 130)
"3M"

Os outros parâmetros são os mesmos de ~d. Podemos também usar a diretriz ~r sem nenhum parâmetro, e ela trará escrito por extenso aquele número em inglês:

[13]> (format nil "~r" 123)
"one hundred and twenty-three"

O segundo artigo fica por aqui, até a próxima.

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: