Ir para o conteúdo

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.