terça-feira, 31 de julho de 2012

Entrada e saída de dados




Write e Writeln

Estas são as principais procedures destinadas a exibir todos os tipos dados no vídeo. A diferença entre write  e writeln reside no fato de que a procedure write escreve o parâmetro, e mantém o cursor do lado daquilo que foi escrito, enquanto que writeln passa o cursor para a próxima linha. Estas procedures possuem 3 formas de sintaxes, a saber:

Primeira forma:

    Write(parâmetro_1,Parâmetro_2, ...);

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Var      i : integer;
r : real;
c : char;
s : string[20];
    Begin
       ClrScr;         (* apaga a tela e coloca o cursor em 1,1 *)
       Writeln('Exemplos de aplicação de writeln e write');
       writeln;   (* apenas pula uma linha *)
       i:=100;
       r:=3.14;
       c:='A';
       s:='interessante';
       writeln('Valor de i e igual a ',i);
       write('valor de r = ');
       writeln(r);
       writeln(c,'   ',s);
    end.

    Este programa resultaria na seguinte tela:

Exemplos de aplicação de writeln e write
    Valor de i e igual a 100
    valor de r =   3.1400000000E+00
    A interessante

    Segunda forma:

    Write(parâmetro : n);

onde n é um número inteiro que determina quantas colunas o cursor deve ser deslocado à direita, antes do parâmetro ser escrito. Além disso, o parâmetro é escrito da direita para a esquerda, exemplo:

    Program Exemplo;
    Uses CRT;
    Begin
       Writeln('A');
       Writeln('A':5);
    end.

    Resultaria a seguinte tela:

    A
    .....A

    Os pontos representam espaços em branco

    Terceira forma:

    Write(parâmetro : n : d);

Neste caso,  n  tem a mesma função que o caso anterior sendo que d representa o número de casas decimais. Obviamente, parâmetro terá queser do tipo Real. Exemplo:
    Program Exemplo;
    Uses CRT;
    Var r : real;
    Begin
        ClrScr;
        r:=3.14156;
        Writeln(r);
        Writeln(r:10:2);
    End.
    resultaria a seguinte tela:

    3.1415600000E+00
           3.14

Read e Readln

Estas procedures são utilizadas para fazer leitura de dados via teclado. A procedure Read lê um dado do teclado até que se pressione a tecla ENTER, sendo que cada tecla digitada é ecoada para o vídeo. Após pressionarmos ENTER, o cursor permanecerá no mesmo lugar. Já, a procedure Readln faz a mesma coisa só que o cursor passa para a próxima linha. A sintaxe geral para estas procedures é:
    Read (Var_1,Var_2,Var_3,...);

Ao se digitar os valores das variáveis pedidas, deve-se separá-los por espaços.

Exemplo 1:

    Program teste;
    Uses CRT;
    Var a,b,c:integer;
    Begin
       clrscr;
       readln(a,b,c);
       writeln (a,' ',b,' ',c);
    end.

Exemplo 2:
    Program teste;
    Uses CRT;
    Var i : integer;
        r : real;
        c : char;
        s : string[10];
    Begin
       ClrScr;
       Write('Digite um numero inteiro ------> ');
       Readln(i);
       Write('Digite um numero real ---------> ');
       Readln(r);
       Write('Digite um caractere -----------> ');
       Readln(c);
       Write('Digite uma string -------------> ');
       Readln(s);
       Writeln;Writeln;  (* pula duas linhas *)
       Writeln(i);
       Writeln(r);
       Writeln(c);
       Writeln(s);
    End.

Exemplo 3:

PROGRAMA AREA_DE_TRIANGULOS : calcula área de triângulos

    Program Area_de_Triangulos;
    Uses CRT;
    Var Base,        (* base do triângulo   *)
        altura:      (* altura do triângulo *)
                Real;
    Begin
       ClrScr;
       Writeln('CALCULO DA ÁREA DE TRIANGULOS':55);
       Writeln;
       Write('Valor da base ------> ');
       Readln(base);
       Writeln;
       Write('Valor da altura ----> ');
       Readln(altura);
       Writeln;
       Writeln;
       Writeln('Área do triângulo = ',base*altura/2 : 10 : 2);
    End.

ReadKey:

Lê uma tecla do teclado, sem que seja necessário pressionar a tecla ENTER

    Program Exemplo;
    Uses CRT;
    Var tecla:char;
    Begin
        Write('digite uma tecla ->');
        Tecla:=readkey;
        Writeln;
writeln('você digitou ',tecla);
    end.

Impressora

Podemos enviar dados para a impressora através das procedures Write e Writeln. Para tanto, devemos colocar, antes dos parâmetros a serem enviados à impressora, o nome lógico LST. Exemplo:

    Writeln('isto vai para o vídeo');
    Writeln(lst,'isto vai para a impressora',' e isto também');

Funções e procedures para controle de vídeo

ClrScr

Esta procedure tem a finalidade de limpar a tela de vídeo e colocar o cursor na primeira coluna da primeira linha. A tela de vídeo é dividida em 80 colunas e 25 linhas. O canto superior esquerdo tem coordenadas (1,1) e o inferior direito (80,25).

Gotoxy(x,y)

    Move o cursor para a coluna x e linha y.

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Var x,y : Byte;
    Begin
        ClrScr;
        Gotoxy(10,2);
        Write('Coluna 10 da linha 2');
        x:=40;
        y:=10;
        Gotoxy(x,y);
        Write('Coluna 40 da linha 10');
    End.

ClrEol

Esta procedure limpa desde a posição atual do cursor até o final da linha.

CrtExit

Envia para a tela de vídeo  a  string de finalização definida na instalação

CrtInit

Envia para a tela de vídeo a string de inicialização definida na instalação.

Delline

Procedure que elimina a linha em que está o cursor. As linhas posteriores sobem, ocupando a que foi eliminada.

Exemplo:

    Program exemplo;
    Uses CRT;
    Begin
        ClrScr;
        Writeln('linha 1');
        Writeln('linha 2');
        Writeln('linha 3');
        Writeln('linha 4');
        Gotoxy(1,2);        (* posicionei o cursor no início da linha 2 *)
        Delline;
    End.

    O programa anterior irá provocar a seguinte tela:

    linha 1
    linha 3
    linha 4

    Repare que a string 'linha 2' foi eliminada.

HighVideo

Coloca o vídeo no modo normal. Esta procedure é equivalente a NormVídeo.

InsLine

Esta procedure faz exatamente o contrário de Delline, ou seja, insere uma linha na posição atual do cursor.

    Exemplo

    Program Exemplo;
    Begin
        ClrScr;
        Writeln('linha 1');
        Writeln('linha 2');
        Writeln('linha 3');
        Writeln('linha 4');
        Gotoxy(1,3);        (* cursor na 1a. coluna da 3a. linha *)
        InsLine;
        Write('teste');
        Gotoxy(1,20);
    End.

    Este Programa provocará a seguinte tela

    linha 1
    linha 2
    teste
    linha 3
    linha 4

LowVideo

Coloca o vídeo em baixa intensidade até que se execute a procedure NormVideo ou HighVideo.

NormVideo

O mesmo que HighVideo

TextBackGround

Esta procedure seleciona a cor do fundo sobre o qual o texto será escrito. Sua sintaxe geral é:
    TextBackGround(cor);

    Tabela de cores

0
Black
Preto
1
Blue
Azul
2
Green
Verde
3
Cyan
Ciano
4
Red
Vermelho
5
Magenta
Magenta
6
LightGray
Cinza-claro

Nós podemos entrar com o número ou o nome da cor em inglês

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Begin
        ClrScr;
        WriteLn('teste');
        TextBackGround(7);
        Writeln('teste');
        TextBackGround(Brown);
        Writeln('teste');
    End.

TextColor

    Esta procedure permite selecionar a cor com que o texto será impresso.

Tabela de cores

0.     
Black
Preto
1.     
Blue
Azul
2.     
Green
Verde
3.     
Cyan
Ciano
4.     
Red
Vermelho
5.     
Magenta
Magenta
6.     
Brown  
Marrom
7.     
LightGray
Cinza-claro
8.     
DarkGray
Cinza-escuro
9.     
LightBlue
Azul-claro
10.  
LightGreen
Verde-claro
11.  
LightCyan
Ciano-claro
12.  
LightRed
Vermelho-claro
13.  
LightMagenta
Magenta-claro
14.  
Yellow
Amarelo
15.  
White
Branco
16.  
Blink
Piscante

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Begin
       Clrscr;
       TextBackGround(7);
       TextColor(black);
       writeln('teste');
       TextColor(black+blink);
       write('teste');
    End.

Window

    Sintaxe:  Window(x1,y1,x2,y2);

Esta procedure tem o poder de definir uma janela de texto cujo canto esquerdo superior é x1,y1 e canto inferior direito é x2,y2. Após esta instrução, as instruções ClrScr, Write Writeln agem somente dentro da janela recém definida. A instrução Gotoxy passa a utilizar como referencial o ponto x1,y1 que passa a ser considerado 1,1.

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Begin
        Window(10,10,70,20);
        ClrScr;               (* limpa somente a janela *);
        Writeln('teste');     (* escreve 'teste' em 10,10 *)
    End.

WhereX

    Função que retorna o número da coluna onde está o cursor.

WhereY

    Função que retorna o número da linha onde está o cursor.

Controle do teclado

Kbd

Quando quisermos ler dados do teclado e que não sejam ecoados para o monitor de vídeo até que sejam processados e aceitos, nós podemos utilizar a seguinte sintaxe:

    Read(Kbd,Variável);

No caso de números inteiros ou reais, o número só será aceito quando pressionarmos a tecla  <enter>,  no caso de variáveis do tipo char, o caractere será aceito sem que seja necessário pressionar a tecla  <enter>,  idem para o tipo string.

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Var i:integer;
    Begin
        ClrScr;
        Write('Entre com um inteiro --> ');
        Readln(Kbd,i);
        Writeln(i);
    End.

BufLen

Buflen é uma variável interna pré-definida em Turbo Pascal cujo valor inicial é 126. Ela contém o número máximo de caracteres aceitos por Read.

    Exemplo:
    Program Exemplo;
    Uses CRT;
    Var i : Integer;
    Begin
        ClrScr;
        Writeln(Buflen);    (* escreve 126 *)
        Buflen:=2;
        Write('Digite um inteiro --> ');
        Readln(i);          (* se você tentar digitar inteiros com mais de dois dígitos, readln não permitirá *)
    End.

Keypressed

O identificador Keypressed é uma função especial do Turbo Pascal que retorna um valor booleano - TRUE se uma tecla foi pressionada, ou FALSE caso contrário. Ela é muito utilizada para detectar teclas pressionadas no teclado.

    Exemplo

    Program Exemplo;
    Uses CRT;
    Begin
        ClrScr;
        Write('Pressione uma tecla -> ');
        Repeat until Keypressed; (* repita até que uma tecla seja pressionada. O comando Repeat Until será estudado mais adiante *)
    End.


Nenhum comentário:

Postar um comentário