Programas relacionados com a Tabela ASCII
Caracteres ASCII no formato Texto em Linha
Neste programa, os caracteres são escritos todos em linha.
Program Ascii ;
Var i: integer;
Begin
for i:= 1 to 255 do
write( i, chr(i), ' ' );
readkey;
End.
Programa completo
Neste programa, é possível:
- Visualizar a Tabela ASCII em formato de Tabela;
- Premir uma tecla e visualizar
- A ordem;
- O caracter correspondente;
- Se é especial, função ou regular.
- Converter uma ordem ASCII no seu caracter correspondente;
- Converter um texto com um máximo de 100 caracteres num conjunto de ordens dos caracteres.
program ASCII_1;
uses crt;
var oqf : char; // O Que Fazer - voltar a mostrar menu ou sair?
procedure pausa;
(* Faz pausa ao programa, e só termina quando for premido "Enter" *)
var tecla : char;
begin
repeat
tecla := readkey;
until (tecla = #13);
end;
procedure tabela;
(* Mostra tabela ASCII *)
var i : integer;
begin
clrscr;
writeln('TABELA de caracteres regulares (#32 .. #255)');
for i:=32 to 255 do begin
write(i:3,' ',char(i),' | ');
end;
write('Enter para voltar...');
pausa;
end;
procedure conv_tecla;
(* Converte a tecla premida na ordem e caracter ASCII respectivo *)
(* Bom para detectar teclas especiais *)
var tecla : char;
especial : char;
begin
clrscr;
writeln('Prima tecla. "Enter" para sair. "Enter" é de ordem #13.');
writeln;
repeat
tecla := readkey;
if (tecla = #0) then begin // Tecla especial, com dupla ordem, cuja primeira é #0
especial := readkey;
writeln('ESPECIAL: #0 + #',ord(especial),' = ',char(especial));
end else begin
if (ord(tecla) < 32) then write(' FUNCAO: ')
else write(' REGULAR: ');
writeln('#',ord(tecla),' = ',char(tecla));
end;
until (tecla = #13);
end;
procedure conv_ord;
var n : byte; // de 0 a 255, só!
begin
clrscr;
writeln('ORDEM > CARACTER. "13" para sair.');
writeln;
repeat
repeat
write('Ordem (32 .. 255): '); // exclui ordens de caracteres de funcoes
readln(n);
until (n in [32..255] + [13]);
writeln('Caracter de ordem ',n,': ',char(n));
until (n = 13); // equivale ao "Enter" do conversor de teclas
end;
procedure conv_frases;
var frase : string[200];
i : integer;
begin
clrscr;
writeln('CONVERSOR DE FRASES');
write('Introduza frase (ate 200 caracteres): ');
readln(frase);
writeln;
for i:=1 to length(frase) do // Mostra ordens
write(ord(frase[i]):3,' ');
writeln;
for i:=1 to length(frase) do begin // Mostra respectivos caracteres por baixo
write(' ',frase[i],' ');
end;
pausa;
end;
procedure conversor_menu(var i_oi : char {Indicador "Onde Ir?"});
(* Conversor ASCII - menu *)
begin
clrscr;
writeln('CONVERSOR');
writeln(' 1 - Tecla > Ordem + Caracter (eq. Caracter > Ordem)');
writeln(' 2 - Ordem > Caracter');
writeln(' 3 - Conversor de frases');
writeln(' 0 - Voltar');
repeat (* Leitura da opção, de entre as "0", "1" "2" e "3" *)
i_oi := readkey;
until (char(i_oi) in ['0'..'3']);
case char(i_oi) of (* Selecção de acção consoante opção *)
'1': conv_tecla;
'2': conv_ord;
'3': conv_frases;
end;
// Se é "0", simplesmente tem de sair do procedimento e regressar ao Menu
end;
procedure menu(var opt : char);
(* Menu Principal *)
var oi : char; // Controlador "Onde Ir?", para o Conversor
begin
clrscr;
writeln('TABELA ASCII');
writeln(' 1 - Ver tabela');
writeln(' 2 - Conversor');
writeln(' 0 - Sair');
writeln;
write('Opcao: ');
repeat (* Leitura da opção, de entre as "0", "1" e "2" *)
opt := readkey;
until (char(opt) in ['0'..'2']);
case char(opt) of (* Selecção de acção consoante opção *)
'1': tabela;
'2': begin
repeat
conversor_menu(oi);
until (char(oi) = '0');
end;
end;
// Se é "0", simplesmente tem de sair do procedimento, indicando a "O Que Fazer" que deve terminar programa
end;
begin (* BLOCO PRINCIPAL *)
repeat
menu(oqf); // Menu, retornando "O Que Fazer"
until (char(oqf) = '0'); // Opção "0" indica término do programa
end.