Basicamente, a sequência é uma codificação de duração da imagem: Caracteres alternativos na sequência dizem quantas vezes desenhar um espaço e quantas vezes desenhar um ponto de exclamação consecutivamente. Aqui está uma análise dos diferentes elementos deste programa:
A cadeia codificada
Os primeiros 31 caracteres dessa sequência são ignorados. O restante contém instruções para desenhar a imagem. Os caracteres individuais determinam quantos espaços ou pontos de exclamação serão desenhados consecutivamente.
Loop externo
Este loop passa por cima dos caracteres na string. Cada iteração aumenta o valor de b
um e atribui o próximo caractere na sequência a a
.
Interno para loop
Esse loop desenha caracteres individuais e uma nova linha sempre que chega ao final da linha. O número de caracteres desenhados é a - 64
. O valor de c
vai de 10 a 90 e redefine para 10 quando o final da linha é atingido.
o putchar
Isso pode ser reescrito como:
++c;
if (c==90) { //'Z' == 90
c = 10; //Note: 10 == '\n'
putchar('\n');
}
else {
if (b % 2 == 0)
putchar('!');
else
putchar(' ');
}
Desenha o caractere apropriado, dependendo se b
é par ou ímpar, ou uma nova linha quando necessário.