
Bem vindo ao mundo fantstico dos cdigos ASCII.

ASCII,  uma sigla que significa American Standard Code for Information Interchange.
Traduzindo: Cdigo Padro Americano para Intercmbio de Informaes.

A sigla  pronunciada, squi.
Algumas pessoas erroneamente atribuem as duas letras, I, maisculas do final da sigla, ao nmero 2, como se fossem algarismos Romanos, resultando em ASC2.
Isso apenas revela o desconhecimento do significado da sigla.

Neste padro, a cada caracter  associado um nmero de 0 a 255.
Isso ocorre porque internamente, o computador s sabe lidar com nmeros.
 necessrio converter nossas letras para que o computador possa lidar com elas, processando, imprimindo e transmitindo a outros computadores.

Todos os caracteres que podem ser impressos na tela, como letras, nmeros e smbolos, tem seu cdigo ASCII correspondente.

O cdigo ASCII da letra, A, maiscula por exemplo,  65.
O da letra, B, maiscula,  66, e assim por diante, at, Z, que  90, em se tratando de letras maisculas.
O cdigo da letra, a, minscula  97, e o espao  32.

De 0 a 127 os caracteres so fixos, e contm todos os caracteres necessrios para a escrita da lngua inglesa.
Lembre-se que  um Cdigo Padro Americano.

De 128 a 255, esto os cdigos para idiomas estrangeiros, no nosso caso os acentos, cedilha e outros smbolos.

H tambm os cdigos do incio da tabela, que no representam caracteres que possam ser impressos na tela ou na impressora, mas que esto associados a certas funes.
Exemplos so a tecla Enter, cujo cdigo  13, Tab=9, Escape=27 e BackSpace=8.
O cdigo 12  conhecido como "Form Feed", alimentao de formulrio, que faz com que a impressora avance para a prxima pgina.

Mas por qu voc deveria se preocupar como so armazenados internamente os caracteres no computador?
Porqu voc  um programador!

Existem processamentos que necessitam dessa informao.

Um exemplo seria o caso de converso em maisculas.
Para converter uma letra minscula em maiscula, basta subtrair 32 do seu cdigo ASCII.

Voc diria: Basta usar a funo MAISC do ScriptVox.
Sim" Isso  correto!
Mas, e se fosse o contrrio?
Se voc quisesse converter maisculas em minsculas?
No existe uma funo MINUSC.

Ao receber um caracter, como o seu programa poderia saber se  maisculo ou minsculo?
Comparando com dois alfabetos inteiros, um maisculo e outro minsculo?

Como voc faria para converter apenas a primeira letra de uma palavra em maiscula, e o restante em minscula?

Como voc faria para alterar os caracteres de modo a criar um tipo de cdigo?
O comando substitui poderia ser utilizado, mas tem limitaes.

A resposta  atravs dos cdigos ASCII.

Curiosamente, funes de converso de caracteres em cdigos ASCII e vice versa, no esto presentes no ScriptVox, por alguma razo desconhecida.

Todas as linguagens de programao possuem funes para esse tipo de converso.

Exemplos so o Basic, com ASC() e CHR$(), o Pascal com CHR() e ORD(), o dBase com ASC() e CHR() e o Python com CHR() e ORD().
Na linguagem C, voc no precisa de funes de converso, porqu voc pode atribuir indiferentemente um valor ou um caracter a uma varivel do tipo char.
Exemplo:
char c;
c='a';
c=97;
, resultam no mesmo
, e na hora de imprimir, voc poder usar:
printf("%d",c);
, para imprimir como valor numrico, ou:
printf("%c",c);
, para imprimir como caracter.
.

Para que os usurios do ScriptVox verso 5 tambm possam fazer uso destas funes, foi lanada a nova verso do sv+, a sv51c.exe.

Nela esto presentes as funes ASC e CHR para o comando seja.

A funo ASC retorna o cdigo ASCII de um caracter.
O seu nome vem justamente das trs primeiras letras da sigla do cdigo.

Sua sintaxe :
seja varivel ASC caracter
, onde:
varivel, poder ser rpida ou lenta, e receber o resultado da converso,
caracter, pode ser uma constante ou outra varivel, que contenha um nico caracter.
O cdigo retornado por ASC  uma string contendo o caracter #(#number), seguido dos dgitos que representam um valor numrico de 0 a 255.
Exemplo:
seja x asc "a"
, resultando #97 em x.
, ou:
seja x "B"
seja y asc x
, resultando #66 em y.
.

Caso a funo no possa realizar a converso, ela retornar uma string vazia.
Exemplo:
seja k asc "12"
, resultando uma string nula em k.
.
O valor a ser convertido deve ser um nico caracter.
Isso torna o resultado do comando l, terminado por & ( comercial), e o retorno da tecla acionada do comando menu, fortes candidatos para a utilizao desta funo.
Outra utilizao seria verificar uma string, caracter por caracter, usando o comando copia.

O script bin\ASC.cmd mostra um exemplo interessante de utilizao da funo.
Veja outros exemplos adiante.

Por questes de tradio, os nmeros do cdigos so precedidos de um sinal de #(#number).
Veja por exemplo no manual original do ScriptVox, os cdigos das teclas simples como Tab, Enter e BackSpace.
Os cdigos estendidos, aqueles que utilizam dois nmeros como por exemplo a tecla F1 (#0#59), no podem ser convertidos em caracteres.
Estes so cdigos de teclas, e no de caracteres.
Lembre-se de que os cdigos ASCII vo de 0 a 255 (1 byte).

A outra funo de manipulao de cdigos ASCII,  a funo CHR.
O nome vem das trs primeiras consoantes da palavra character, caracter em ingls.

A funo CHR retorna o caracter correspondente a um cdigo ASCII (precedido por #(number)).
Sua sintaxe :
seja varivel CHR cdigo
, onde:
varivel, poder ser uma varivel rpida ou lenta, e receber o caracter correspondente ao cdigo fornecido,
cdigo, poder ser uma constante ou uma varivel, que contenha o cdigo desejado.
O cdigo a ser convertido, dever ser uma string iniciada por um sinal de #(number), seguido dos dgitos que representam um valor de 0 a 255, tudo entre aspas.
Exemplo:
seja x chr "#98"
, resultando, b, minsculo na varivel x.
ou:
seja x "#67"
seja y chr x
, resultando a letra, C, maiscula em y.
.
Curiosamente, no ScriptVox verso 5, o cdigo #256 est associado a um caracter misterioso denominado "trao".

Se a converso no for possvel, a funo retornar uma string vazia ("").
Exemplo:
seja z chr "bilu"
seja w chr "#0"
, resultando uma string nula em ambos casos.
.

Veja um exemplo interessante de uso em bin\CHR.cmd, onde  processado o resultado da clusula tecla do comando l.

Outra utilizao interessante  a converso de maisculas em minsculas em bin\minusc.cmd.

Para os que gostariam de enviar e receber mensagens codificadas, o exemplo bin\crypto.cmd, demonstra uma possibilidade.

H um exemplo de treinamento de digitao em bin\cbtkeys.cmd.
Veja tambm o texto doc\CBT.txt para mais informaes sobre treinamento.

Com estas duas novas ferramentas voc poder se divertir bastante.
Experimente!

Boas converses.
#
