
Captulo 11 - outros comandos simples
Outro comando de entrada via console  o READKEY

READKEY
    READKEY: CHAR;

O READKEY  uma funo que nos retorna o valor de uma tecla pressionada.
Este valor  do tipo caractere. Quando utilizamos esta funo, no 
necessrio que seja pressionada a tecla <ENTER>. No exemplo anterior, se
para escolha da operao no quisermos pressionar a tecla <ENTER>, devemos
substituir o READLN(OP) por READKEY, desta forma:
PROGRAM teste_READKEY;
USES CRT;
VAR
    op              :BYTE;
    valor1, valor2  : REAL;
BEGIN
    CLRSCR;
    GOTOXY(10,6);
    WRITELN(Calculadora eletrnic);
    GOTOXY(10,10);
    WRITE(Entre com o primeiro valor :);
    READLN(valo1);
    GOTOXY(10,12)
    WRITE(Entre com o tipo de operao (+,-,*,/) );
    op :=READKEY;
    GOTOXY(10,14);
    WRITE(Entre com o segundo valor :);
    READLN(valor2);          
    GOTOXY(10,16);
    CASE op OF
      +:WRITELN(A soma entre os valores   , valor1+valor2);
      *:WRITELN(A multiplicao entre os ,valores  , valor1*valor2);
      -:WRITELN(A subtrao entre os valores,   , valor1-valor2);
      /:WRITELN(A diviso entre os valores ,  , valor1/valor2);
    ELSE
      WRITE(Opo invlida ,#7);
    END;  {end do case}
    DELAY(1000);
END.

A funo READKEY s est disponvel na unidade CRT, nas verses anteriores a
4.0 do Turbo. Esta funo no estava disponvel, porm existia um
procediemento similar READ(KBD, varchar). Em algumas publicaes, os
exemplos podem estar neste formato e podemos substituir por READKEY,  ou
ainda, escrevermos no mesmo formato e utilizarmos na declarao USES  a
unidade TURBO3.
As teclas de funo nos retornam dois cdigos, o primeiro sendo o caractere
zero da tabela ASCII #0, e o segundo o da prpria tecla de funo. Os
valores de retorno de todas as teclas esto dispostos no Apndice A.
Existem algumas funes que nos auxiliam na manipulao de caracteres, CHR,
ORD e UPCASE

CHR
Esta funo nos retorna o caractere ASCII,  correspondente ao valor do
parmetro passado. Sua sintaxe :
    CHR(<n>:BYTE):CHAR;

ORD
Esta funoretorna a posio ordinal do parmetro passado. Sua sintaxe :
ORD(<x>):LONGINT;
Veremos agora alguns exemplos usando a funo ORD

PROGRAM teste_ord;
USES    CRT
VAR ch:CHAR;
BEGIN
    CLRSCR;
    GOTOXY(12,10);
    WRITELN(Pressione uma tecla qualquer );
    ch :=READKEY;
    GOTOXY(12,12);
    IF ch=#0
        THEN
            BEGIN 
                ch:=READKEY;
                WRITELN(O segundo cdigo desta tecla de , funo  , ORD(ch));
        END
    ELSE
        WRITELN(Esta no  uma tecla de funo,, e seu cdigo na tabela
ASCI,   , ORD(ch);
    GOTOXY(12,25);
    WRITE(Pressione alguma tecla para finalizar);
    ch:=READKEY;
END.

UPCASE
Esta funo retorna o caractere contido no parmetro em maisculo. Sua
sintaxe :
            UPCASE(<ch>:CHAR):CHAR;
Vamos ver um exemplo onde poderemos, mais adiante, utilizar a sua lgica:
PROGRAM teste_upcase;

USES        CRT;
VAR
    ch : CHAR;

BEGIN
    CLRSCR;
    GOTOXY(12,10);
    WRITELN(Digite S ou N);
    ch:=READKEY;
    GOTOXY(12,12);
    ch:=UPCASE(ch);
    IF (ch=S) OR (ch=N)
        THEN
            WRITELN(A tecla digitada  valid)        
        ELSE
            WRITELN(No foi digitado nem"s" nem"N");
    GOTOXY(12,25);
    WRITE(Pressione alguma tecla para finalizar);
    ch :=READKEY;
END.
