• Nenhum resultado encontrado

Publicações do PESC Um Editor Interativo para o Terminal Inteligente

N/A
N/A
Protected

Academic year: 2021

Share "Publicações do PESC Um Editor Interativo para o Terminal Inteligente"

Copied!
76
0
0

Texto

(1)

UM EDITOR INTERATIVO

PARA O TERMINAL INTELIGENTE

W i l l i ã m B a r b o s a de A r a u j o

TESE SUBMETIDA AO CORPO DOCENTE DA CDORDENAÇÃO DOS PROGRAMAS DE PÕS-GRADUA - ÇÃO DE ENGENHARIA DA UNIVERSIDADE FEDERAL DO R I O DE JANEIRO COMO PARTE DOS REQUISITOS NECESSARLOS PARA A OBTENÇÃO DO GRAU DE MESTRE EM ÊNCI - CIAS IM.Sc.1.

A p r o v a d a p o r :

PAULO MARIO B I A N C H I FRANÇA

,L.L

A

J j ?

S U E L I MENDES DOS SANTOS

NELSON MACULAN F I L H O

'

R I O DE JANEIRO, R J - B R A S I L AGOSTO DE 1 9 8 1

(2)

ARAUJO, KILLIAM BARBOSA DE

Um Editor Interativo Para o Terminal

Inteligente Rio de Janeiro 1981.

VII, 68 p. 29,7 cm (COPPE-UFRJ, M.Sc, Engenharia de Sistemas e computação, 1981)

Tese

-

Univ. Fed. Rio de Janeiro. Coor-

denação dos Programas de pós-~raduação em

Engenharia

1.Computadores I.COPPE/UFRJ 11.~itul0 (sêrie)

.

(3)

Aos meus avós:

Arnaud

,

Maria do Carmo, ~ n t o n i o e

(4)

iii

AGRADECIMENTOS

Ao professor GUILHERME CHAGAS RODRIGUES, pela ori- entação e incentivo recebidos durante a execução deste trabalho.

A Paulo

ésa ar

Moraes Me10 e ~ o s é ~ n t Ô n i o dos Santos Borges pelo auxilio na utilização do terminal e pelas criticas e sugestões.

(5)

RESUMO

Descreve o projeto

e

a implementação de um editor de

textos interativo para o terminal inteligente desenvolvido pelo

~ Ú c l e o de computação ~letrõnica da Universidade Federal do Rio

de Janeiro.

são apresentados os criterios para

a

escolha das fun -

ç8es de edição, do de operação e da estrutura do arquivo em

-

pregado para armazenar o texto em disco magnetico.

O editor procura fornecer ao usuário as facilidades

permitidas pela associação de

um

teclado dotado de teclas de con

-

trole à um terminal de video baseado em tubo de raios catõdicos.

Na tela do terminal, é exibida uma janela bi-dimensi

-

onal atravês da qual o operador pode visualizar e modificar o con -

tezdo do texto. Um cursor luminoso indica a posição em que o tex

-

to vai ser modificado. A janela pode ser deslocada sobre o texto de forma que qualquer porção do mesmo possa ser exibida.

Embora orientado para edição de programas escritos em linguagem de alto nível, o editor permite também a edição de textos em formato livre.

(6)

ABSTRACT

Describes the design and implementation of an inter- active text editor £or the intelLgent terminal developed by

~ U c l e o de computação Eletronica da Universidade Federal do Rio

de Janeiro.

The criterion for selecting the editing functions, the mode o£ operation and the structure o£ the file empioyed to store the text are presented.

The editor tries to give to the user the power generated by the association o£ a keyboard with control keys and a CRT display.

A two-dimensional window into the text is diplayed on the screen. A cursor points the place where the text will be modified. The window can be moved up and down the file in order to edit different parts o£ it.

Although oriented to program editing it can be also used to edit free form texts.

(7)

. . .

Antecedentes 01

. . .

~ r o ~ o s i ç g o 02

. . .

Equipamento 03

. . .

Sistema operacional 04 ~plicações

. . .

05 usuários

. . .

06

. . .

Diretrizes 07 Objetivos

. . .

08 I1

.

PROJETO

. . .

Perfildousu5rio 09

. . .

~rinclpios de projeto 10

. . .

~aracterísticas do editor 13

. . .

Modelo do editor 17 111

.

DESCRIÇÃO DO EDITOR

. . .

utilização

. . .

Formato da tela

unções

do editor

. . .

unções

de controle

. . .

. . .

unções

de movimento do cursor

unções

de movimento do texto

. . .

unções

de modificaçãa do texto

. . .

Mensagens de erro

. . .

. . .

Comandos do SOCO

. . .

Descrição das funções de controle

Descrição das funções de movimento do cursor

.

Descrição das funções de movimento do texto

.

(8)

vii

Definição do progrânâ

. . .

39

Estrutura do arquivo de texto

. . .

40

~ Z v e i s de impiementaqão

. . .

42

~ ó d u l o s

. . .

43

. . .

Descrição dos módulos 44 Tabelas

. . .

54

Descrição das tabelas

. . .

55

~ v a i i a ç d o

. . .

63

Extensões

. . .

6 5 VI

.

BIBLIOGRAFIA

. . .

67

(9)

Antecedentes

O ~ Ú c l e o de computação ~ l e t r o n i c a da U n i v e r s i d a d e Fe

-

d e r a 1 do Rio de J a n e i r o (NCE) desenvolveu, em um p r o j e t o i n t e g r a - do de 'hardware

'

e

'

s o f tware

'

,

um t e r m i n a l i n t e l i g e n t e baseado no m i c r o p r o c e s s a d o r INTEL-8080. E s t e t e r m i n a l pode s e r l i g a d o a um computador de maior p o r t e ou s e r u t i l i z a d o de modo independen - t e p a r a e x e c u t a r a p l i c a ç õ e s t í p i c a s dos pequenos computadores.

P a r a p o s s i b i l i t a r a compilação e o t e s t e de p r o g r a - mas p a r a o t e r m i n a l , em p a r a l e l o com a c o n s t r u ç ã o do p r i m e i r o p r o

-

t ó t i p o , o S i s t e m a O p e r a c i o n a l de simulação ( S O S ) f o i implementa- do no computador BURROUGHS 6 7 0 0 d i s p o n í v e l no NCE. Graças e o em - prego da t é c n i c a da compilação c r u z a d a , que c o n s i s t e na compila- ção de um programa p a r a um novo computador u t i l i z a n d o um o u t r o computador e x i s t e n t e , o s i s t e m a SOS p e r m i t i u o desenvolvimen- t o de uma v e r s ã o mínima do s i s t e m a o p e r a c i o n a l p r o j e t a d o p a r a - o t e r m i n a l , o S i s t e m a O p e r a c i o n a l de Disco ( S O C O ) .

pós a implementação d a b e r s ã o mínima do s i s t e m a SO- CO no p r i m e i r o p r o t ó t i p o , o t e r m i n a l e s t a v a c a p a c i t a d o a compi- l a r e e x e c u t a r s e u s p r ó p r i o s programas, i n c l u s i v e a f i n a l i z a r o desenvolvimento do s i s t e m a SOCO. E n t r e t a n t o , algumas d i f i c u l d a - des tornavam a t a r e f a de d e s e n v o l v e r programas no t e r m i n a l e x c e s sivamente t r a b a l h o s a .

0s programas f o n t e eram p e r f u r a d o s em c a r t õ e s e a l i - mentados no t e r m i n a l p o r meio de uma l e i t o r a de c a r t õ e s . Como a l e i t o r a a p r e s e n t a s s e um comportamento e r r á t i c o , t o d o programa li

-

do t i n h a que s e r i n s p e c i o n a d o v i s u a l m e n t e na t e l a do t e r m i n a l de v í d e o . S u c e s s i v a s l e i t u r a s eram f e i t a s a t é que s e o b t i v e s s e uma l e i t u r a c o r r e t a . Caso algum e r r o f o s s e e n c o n t r a d o d u r a n t e a com - p i l a ç ã o ou d u r a n t e o t e s t e do programa, o u s u á r i o d e v e r i a s e des

-

l o c a r a t é a s a l a das p e r f u r a d o r a s , p e r f u r a r um novo c a r t ã o e s u b s t i t u i r o c a r t ã o e r r a d o . A p a r t i r d a i , t o d o o p r o c e s s o ti- nha que s e r r e p e t i d o desde o i n í c i o .

(10)

Considerando a u t i l i d a d e de um programa que p e r m i t i s - s e a c r i a ç ã o de novos programas e a modificação de programas e x i s t e n t e s , e s t e t r a b a l h o s e propõe a d e f i n i r e implementar um

-

e d i t o r de t e x t o s i n t e r a t i v o s p a r a o t e r m i n a l i n t e l i g e n t e d e s e n v o l - v i d o p e l o NCE. Embora o r i e n t a d o p a r a a e d i ç ã o de programas, o e d i - t o r poderá também e d i t a r q u a l q u e r o u t r o t i p o de t e x t o , t a i s c o m : manuais, i n s t r u ç õ e s , n o t a s de a u l a , a r t i g o s , c o r r e s p o n d ê n c i a s

,

e t c . .

.

A s m o d i f i c a ç õ e s r e a l i z a d a s no t e x t o deverão s e r mos- t r a d a s

5

medida que forem comandadas p e l o o p e r a d o r , a p r o v e i t a n d o a s p o t e n c i a l i d a d e s da a s s o c i a ç ã o de um t e c l a d o com t e c l a s de ca- r a c t e r e s e c o n t r o l e

5

uma unidade de v i d e o baseada em t u b o de r a i o s c a t ó d i c o s .

Por meio do e d i t o r , poderemos:

1

-

c r i a r novos t e x t o s ;

2

-

m o d i f i c a r t e x t o s e x i s t e n t e s ;

3

-

r e t i r a r l i n h a s do t e x t o ;

4

-

i n s e r i r novas l i n h a s no t e x t o ;

(11)

O t e r m i n a l i n t e l i g e n t e é um microcomputador que pode s e comunicar com o u t r o s computadores a t r a v é s de uma l i n h a de co- municações. A e l e podem s e r l i g a d o s q u a i s q u e r d i s p o s i t i v o s de e n t r a d a e s a í d a , a t r a v é s de uma i n t e r f a c e adequada.

A c o n f i g u r a ç ã o mínima p r e v i s t a p a r a o t e r m i n a l cons- t a de:

1

-

C P U baseada no m i c r o p r o c e s s a d o r INTEL-8080, com um tempo de execução p o r i n s t r u ç ã o , de 2 u s a 9

u s ;

2

-

~ e m Õ r i a ROM p a r a o programa de c a r g a i n i c i a l ; 3

-

~ e m ó r i a RAM, 1 6 K b y t e s , p a r a armazenamento de

dados e i n s t r u ç õ e s . Tem uma l a r g u r a de 8 b i t s e tempo de a c e s s o da ordem de 480 n s ;

4

-

Teclado, MICROSWITCH, com t e c l a s de c a r a c t e r e s e de c o n t r o l e , em código ASCII;

5

-

Unidade de v í d e o , baseada em t u b o de r a i o s catÕ- d i c o s , com 2 4 l i n h a s de 80 c a r a c t e r e s , mapeados' d i r e t a m e n t e d a memória i n t e r n a do t e r m i n a l a p a r - t i r do e n d e r e ç o 100016;

6

-

Uma unidade d e d i s c o , D I G I T A L RK-05, removível

'

com c a p a c i d a d e de 2 , 4 M b y t e s . Com 203 t r i l h a s p o r s u p e r f í c i e , formatadas em 1 2 s e t o r e s de 256

b y t e s cada. O tempo de posicionãmento é de 10

m s p a r a uma t r i l h a e de 50 m s em média. O tempo de e s t a b i l i z a ç ã o do b r a ç o da l e i t u r a é de 20 m s .

A v e l o c i d a d e de t r a n s f e r e n c i a é de 11,l us p o r p a l a v r a ( 1 6 b i t s )

.

(12)

S i s t e m a - O p e r a c i o n a l -

O s i s t e m a o p e r a c i o n a l SOCO p r o p o r c i o n a a o t e r m i n a l a capacidade de c o m p i l a r e e x e c u t a r programas. A p r e s e n t a uma con- cepção b a s t a n t e s i m p l e s , mas s u f i c i e n t e m e n t e poderosa p a r a p o s s i - b i l i t a r a p l e n a u t i l i z a ç ã o dos r e c u r s o s do t e r m i n a l p o r u s u á r i o s com d i f e r e n t e s g r a u s de t r e i n a m e n t o e d i f e r e n t e s n e c e s s i d a d e s . O s i s t e m a SOCO é formado p e l o s s e g u i n t e s módulos:

1

-

programa de c a r g a i n i c i a l armazenando em memória ROM ; 2

-

n ú c l e o r e s i d e n t e ; 3

-

c a r r e g a d o r de programas; 4

-

r o t i n a s de e n t r a d a e s a i d a ; 5

-

e d i t o r de r e f e r ê n c i a s e x t e r n a s ; 6

-

compilador e i n t e r p r e t a d o r da linguagem P L T I , u- ma linguagem semelhante ao FL/M d a I N T E L , desen- v o l v i d a e s p e c i a l m e n t e p a r a o t e r m i n a l ;

7

-

r o t i n a s de uso g e r a l ;

8

-

programas u t i l i t á r i o s ;

(13)

O terminal é utilizado para executar t& principais tipos de aplicações:

1

-

desenvolvimento da programação básica (sistema - o peracional) do terminal;

2

-

desenvolvimento de pacotes de programas de apli-

cação;

(14)

usuários

A cada uma das principais aplicações do termina1,não

de uma maneirra muito rígida, podemos associar um tipo de usuá

-

rio, com caracterlsticas e interesses próprios:

1

-

profissionais de processamento de dados;

2

-

alunos de cursos de processamento de dados;

(15)

Sendo o editor de textos um rnódulo do sistema opera

-

cional SOCO, devemos seguir as mesmas diretrizes adotadas para o desenvolvimento dos demais m5dulos:

1

-

utilizar a configuração minima do terminal inte -

ligente ;

2

-

ser compatfvel com os demais módulos do sistema

operacional SOCO;

3

-

ser programado em linguagem PLTI;

4

-

operar de modo interativo;

5

-

ser fácil de aprender;

6

-

ser fácil de utilizar;

7

-

ser fácil de implemeritar;

S

-

ser fácil de modificar.

~ l é m de atender a essas diretrizes gerais, ênfase

deve ser colocada em fornecer ao usuário o mzximo de potencia-

lidade permitido pelos recursos disponíveis no terminal. A como -

didade do usuário deve ser considerada mais importante do que

uma eficiência operacional ótima. As modificações devem ser per -

mitidas em qualquer parte do texto e na sequência que o usuário desejar.

(16)

Objetivos

0s objetivos de um editor de textos, do ponto de v5s

-

ta do usu~rio, são:

1

-

resposta rápida;

2

-

linguagem de comandos concisa e mnemônica;

3

-

comandos poderosos, com poucas excessões e pou-

cas restrições.

4

-

comandos que aproveitem as aapacidades do compu-

tador. Por exemplo, procurar a primeira ocorrên -

cin de uma sequência de caracteres.

Estes objetivos não são independentes. Em alguns ca -

sos, são até mesmo conflitantes. Um repertório de instruções po -

derosas implica na utilização de uma maior quantidade de recur

-

sos, acarretando um maior tempo de resposta. Deve-se buscar o - e

quilibrio no atendimento destes objetivcs, de modo a produzir u- ma solução de compromisso satisfatória.

(17)

I1

.

PROJETO

Perfil do usuário

--

----

Os usuários do editor de textos são os mesmos do

terminal: profissionais de processamento de dados, alunos de

cursos de processamento de dados e usuários sem formação em

processamento de dados. Devido 2s grandes variações existentes

nas formações, nas experiências, nos interesses e nas habilidades destes usuários, não podemos estabelecer um Único perfil para o usuário. Consideramos, para efeito de projeto, que o usuario tí-

pico do editor

é

um aluno de curso de processamento de dados des

-

envolvendo programas de aplicaqão escritos em linguagem de alto nível (PLTI). Esta simplificação, entretanto, não deve implicar

em restrições importantes

2

utilização do editor por qualquer

dos tipos de usuários previstos.

~ l e m do grau de instrução do usuário, o projeto deve

tambgm tomar em consideração diferentes frequências de utiliza- ção por parte dos mesmos, sendo capaz de atender tanto ao usua- rio eventual que deseja modificar uma Única linha do texto como ao que trabalha em tempo integral criando e modificando progra- mas e textos.

Outra importante caracterlstica a ser considerada

é

a habilidade do usuário como datilógrafo. O editor não deve exi

-

gir mais do que a m h i m a capacidade de operar o teclado e deve ser capaz de atender até a eximios datilógrafos que não olham para

o

t e c i d o

2

medida que diyitam

e

acompanham o aparecimento dos caracteres na tela.

(18)

~rincipios de pro j eto

Apesar das diferenças entre os usuários, eles compar -

tilham duas importantes caracterzsticas: esquecem e cometem

erros.

Durante a operação de um sistema interativo, o usuá- rio pode esquecer como executar determinada função, o conteúdodo

arquivo e, se interrompido, at6 mesmo o que estava fazendo. O

trabalho Wbl forte pressão de tempo e em ambientes dispersivos

,

frequentemente ocasiona a ocorrência de muitos erros.

Para minimizar o impacto negativo destes fatores, o

editor deve ser projetado como uma ferramenta de auxilio, ao

desenvolvimento de programas, atuando como um amplificador das

capacidades do operador. Isto pode ser atingido pelo emprego de três princzpios de projeto:

1

-

Minimizar as necessidades de memorização;

2

-

Otimizar a execu$o das operações;

(19)

1

-

Minimizar necessidade de rnemorizayão

a

-

Selecionar entre opções

Deve ser apresentado ao usuário um repertório de

escolhas ("menu") a partir do qual ele seleciona, a cada passo

,

a opção desejada, evitando que tenha de decorar uma série de

códigos de operação.

b

-

Evitar a utilização de numeros

As escolhas devem ser feitas a partir de nomes e não de números.

c

-

Apresentar comportamento previsível

O usuário deve dispor de um modelo de funcionamento

-

do editor que lhe permita prever as consequências da execuçao

dos comandos fornecidos.

d

-

Fornecer acesso às informações internas

O usuário deve ter acesso às informações internas

que indicam o estado corrente do editor.

2

-

Otimizar operações

Este princTpio está ligado à aparência externa do

editor e se baseia em evitar que o programa interfira no proces -

so consciente da edição de textos, não criando obstáculos a *

execução das operações e permitindo que o usuário se concentre

nas modificações que deseja introduzir no texto.

a

-

Executar operações comuns rapidamente

As operações mais comuns (mais frequentes) devem ser executadas rapidamente.

(20)

A

informação apresentada na tela deve ser mod&ficada o m h i m a necesssrio para cumprir a execução de cada comando.

c

-

Aproveitar a memória muscular

operações muito repetitivas podem ser executadas sem

o controle conthuo da consciencia. Para aproveitar esta caracte -

ristica, o editor deve ser capaz de aceitar râpidas rajadas de co

-

mando e utilizar cada tecla com apenas um significado, indepen -

dente do modo de operação.

3

-

Minimizar possibilidades de erro

O editor deve ser projetado de modo a tomnar difícil

a ocorrência de erros catastróficos e permitir a recuperação da maior quantidade de erros possíveis. Isto pode ser obtido a par- tir de :

a

-

Fornecer boas mensagens de erro

A disponibilidade de uma unidade de vídeo permite a emissão de mensagens indicando a causa do erro com um m h i m o de perda de tempo.

b

-

Impedir erros comuns

O editor deve ser projetado de modo a dificultar a

execução acidental de operações que possam modificar substancial -

mente o conteúdo do texto.

c - Prover comandos reversíveis

Para facilitar a recuperação de erros acidentais, o editor deve prover meios para que toda modificação introduzida no

texto possa ser revertida, retornando o texto à sua forma original.

d

-

Prover integridade dos dados

A estrutura dos dados armazenados dever ser tal que apesar dos erros de equipamento e do operador, alguma versão do texto seja sempre preservada.

(21)

c a r a c t e r í s t i c a s do e d i t o r

A s c a r a c t e r l s t i c a s d e um e d i t o r d e t e x t o s s ã o f o r t e - mente i n f l u e n c i a d a s p e l a s c a r a c t e r í s t i c a s do equipamento u t i l i z a

-

do e p e l o t i p o de t e x t o a que o e d i t o r s e d e s t i n a , Embora s e j a p o s s í v e l o p r o j e t o d e um e d i t c r que p o s s a t r a t a r adequadamente t a n t o programas e s c r i t o s em linguagem formal quanto t e x t o s de formato l i v r e , consideraçÕes de ordem p r á t i c a nos .levaram a d i r i - g i r o p r o j e t o p a r a um e d i t o r d e programas capaz d e e d i t a r , a i n d a que com algumas r e s t r i ç õ e s , t e x t o s em formato l i v r e . A p a r t i r d e s t a o r i e n t a ç ã o , r e l a c i o n a m o s a s s e g u i n t e s c a r a c t e r í s t i c a s , p a r a o e d i t o r : 1

-

Tipo de e d i ç ã o O s e d i t o r e s d e t e x t o l i v r e s ã o o r i e n t a d o s p a r a modi- f i c a r , r e t i r a r ou i n s e r i r uma s e q u ê n c i a d e c a r a c t e r e s ( p a l a v r a ) de cada v e z . A l a r g u r a f í s i c a do meio u t i l i z a d o p a r a r e p r e s e n t a r o t e x t o ( c a r t ã o , t e l a , f o r m u l ã r i o ) não e s t á r e l a k i o n a d a com a e s t r u t u r a do t e x t o , que

6

o r g a n i z a d o em p a r á g r a f o s , c a p í t u l o s

,

e t c . 0s e d i t o r e s de programa, p o r o u t r o l a d o , s ã o o r i e n t a d o s pa- r a m o d i f i c a r um c a r a c t e r d e cada vez e a s d e c l a r a ç õ e s do p r o g r a - ma, g e r a l m e n t e , e s t ã o a s s o c i a d a s a uma l i n h a . Considerando que a u t i l i z a ç ã o mais f r e q u e n t e d e f i n i d a p a r a o e d i t o r é a e d i ç ã o de programas, e que um e d i t o r d e programas é mais s i m p l e s e mais adequado ao pequeno p o r t e do t e r m i n a l , optamos p o r d e s e n v o l v e r um e d i t o r o r i e n t a d o p a r a programas, capaz d e m a n i p u l a r também

,

a i n d a que com menor f a c i l i d a d e , t e x t o s em formato l i v r e .

2

-

~ e p e r t ó r i o d e f u n ç õ e s

O r e p e r t ó r i o d e f u n ç õ e s e s t á também a s s o c i a d o ao t i p o d e t e x t o a s e r e d i t a d o . A opção por um e d i t o r d e programas conduz a e s c o l h a d e um r e p e r t ó r i o d e f u n ç õ e s p o d e r o s a s ( que permitam a o u s u á r i o r e a l i z a r com f a c i l i d a d e m o d i f i c a ç õ e s que de-

s e j a ) e o r i e n t a d a s p a r a a modificação d e c a r a c t e r e s e l i n h a s . Pa - r a maior comodidade do u s u á r i o , algumas funções r e d u n d a n t e s (que poderiam s e r e x e c u t a d a s p o r combinação de o u t r a s f u n ç õ e s ) foram d e f i n i d a s .

(22)

3

-

Linguagem d e comandos

Um comando p a r a um e d i t o r d e t e x t o s deve e s p e c i f i - c a r a o p e r a ç ã o a s e r e x e c u t a d a e o p o n t o do t e x t o a s e r m o d i f i c a do.

A o p e r a ç ã o pode s e r e s p e c i f i c a d a p e l a u t i l i z a ç ã o de um código d e operação (geralmente a b r e v i a d o emnem6nicóv.;,) ou p e l o acionamento d e uma t e c l a de função. Optamos p o r u t i l i z a r a s t e c l a s de f u n ç ã o por a p r e s e n t a r e m a s s e g u i n t e s v a n t a g e n s s o b r e o s c ó d i g o s de operação: Se a s t e c l a s d e função s ã o i d e n t i f i c a d a s , o u s u á r i o d i s p õ e , em s u a f r e n t e , de um "menu", r e p r e s e n t a d o p e l o t e c l a d o t a p a r t i r do q u a l pode s e l e c i o n a r a função d e s e j a d a . b

-

Otimiza o p e r a ç õ e s

A u t i l i z a ç ã o d e t e c l a s d e função minimiza o número d e t e c l a g e n s n e c e s s á r i a s p a r a e s p e c i f i c a r um comando.

~ l é m

d e permi

7

t i r que o u s u á r i o sejsa mais r á o i d o , p e r m i t e uma execução mais r á

-

p i d a , uma vez que não n e c e s s ã r i o i n t e r p r e t a r um comando d i g i -

t a d o , c a r a c t e r p o r c a r a c t e r . c

-

Minimiza e r r o s Diminuindo o número d e d i g i t a ~ õ e s n e c e s s â r i a s a e s - p e c i f i c a r o comando, d i m i n u i

,

consequentemente, a s ~ p o s s i b i l i d a - d e s de o c o r r ê n c i a de enganos. A i n d i c a ç ã o da p o s i ç ã o do t e x t o a s e r modificado po

-

de s e r f e i t a a p a r t i r do número d a l i n h a em r e l a ç ã o a o i n í c i o do t e x t o ou por um c u r s o r luminoso na t e l a . Como o t e r m i n a l d e v í d e o d i s p Õ e da f a c i l i d a d e de r e p r e s e n t a r o c u r s o r , optamOs por u t i l i z a r o mesmo, t e n d o em v i s t a que a p r e s e n t a a s s e g u i n t e s van- t a g e n s :

(23)

a

-

Minimiza mernorizaçao

O ususrio nzo precisa de lembrar do nfimero da linha a ser modificada,

b

-

Otimiza operações

O número da linha muda dinamicamente durante a edi

-

ção, como consequência de inserções e retiradas ,de linhas. O uso

do cursor cria uma inércia na representação da localização da

linha.

4

-

Armazenamento do texto

A forma pela qual o texto é armazenado na memóli-ia

interna é dependente, principalmente, do tamanho da memória e

do tipo do texto. Os textos em formato livre são melhor armazena -

dos em uma forma comprimida onde os espaços são suprimidos e

indicadores de fim de linha, fim de página, inzcio de parágrafo e outros controles de edição são armazenados embebidos no próprio

texto. Os textos de programa, dado sua simplicidade, caso não

haja problemas com a memória, podem ser armazenados em formato! imagem, linha a linha.

5

-

~ ~ r e s e n t a ç ã o do texto

A forma pela qual o texto é apresentado durante a

edição depende do dispositivo empregado para apresentação, da

velocidade de processamento e do modo em que o texto está armaze

-

nado. Impressoras lentas permitem a anresentação de uma tecla de cada vez e sob solicitação do usuário. Telas de tubos de raios

catódicos apresentam grande quantidade de informaçã0:em alta

velocidade e são ideais para a edição interativa de textos.

Se o processador é bastante rápido o texto pode es-

tar comprimido ou não. Para processadores mais lentos, a sobre

-

carga para reformatar os dados antes de apresentá-los na tela

(24)

Os dispositivos impressores, embora não sendo os mais indicados para a ediqão interativa, permitem o registro permanen- te da sessão de edição. Vale lembrar, também, que uma impressora

de boa qualidade, dispondo de tipos maiúsculos e minusculos, é de

(25)

Modelo do' edi't'or

A partir do levantamento do perfil do usuãrio e das

suas necessidades, considerando os princípios de projeto e das

caracterzsticas dos editores de texto, procuramos conciliar as

caracteristicas do equipamento disponível para elaborar um modelo do editor a ser implementado.

Este modelo considera a edição de programas e p ~ e v ê

a edição de um arquivo contendo as declarações em um formato ima

-

gem de cartão. O editor deve ser capaz de permitir as modifica

-

ções que usualmente são feitas em uma massa de cartões com auxí- lio de uma máquina perfuradora.

O texto é formado por um conjunto de linhas de 80 ca

-

racteres. A tela do terminal do video é utilizada como uma jane-

la bi-dimensional através da qual as linhas podem ser visualiza

-

das e modificadas, um cursor luminoso sobre a tela indica O

ponto do texto a ser modificado. As modificações são feitas a

medida que são comandadas e o usuário vê o resultado podendo a-

companhar a edição de modo interativo. Os comandos são forneci

-

dos ao editor por meio de teclas de função e controle do teclado. O cursor não sai dos limites da tela, ficando retido na margem correspondente ao sentido do movimento. A primeira linha da tela

só pode ser rolada por solicitação explícita do usuário.

podem ser modificadas linhas que estejam na tela e só podem ser retiradas ou inseridas linhas que estejam na tela. A atualização do arquivo em disco se faz a medida que as linhas modificadas ou inseridas são roladas para fora da tela. As linhas retiradas:de- vem ser mantidas no arquivo até o final da edição. Por motivo de segurança, o usuário deve editar uma cópia do arquivo original.

(26)

DO EDITOR u t i l i z a ç ã o O e d i t o r de t e x t o s é um módulo do s i s t e m a o p e r a c i o

-

n a 1 do t e r m i n a l i n t e l i g e n t e que p e r m i t e a c r i a ç ã o e m o d i f i c a ç ã o ' i n t e r a t i v a s de programas e t e x t o s em formato l i v r e a r m a z e n a d o ~ ~ e m a r q u i v o s de d i s c o magnético, Os q r q u i v o s contêm r e g i s t r o de 8 0 c a r a c t e r e s , em formato imagem de c a r t ã o . A unidade de v i d e o f o r n e c e a o u s u ã r i o uma j a n e l a b i - d i m e n s i o n a l a t r a v é s da q u a l e l e , p o d e v i s u a l i z a r e m o d i f i c a r O t e x t o que e s t á e d i t a n d o . A p o s i ç ã o do t e x t o em que s e r á e f e t u a - da a m o d i f i c a ç ã o

6

i n d i c a d a na t e l a p o r um c u r s o r . O c u r s o r é

-

r e p r e s e n t a d o p o r um c a r a c t e r e x i b i d o na forma n e g a t i v a , i s t o e , c a r a c t e r e s c u r o s o b r e fundo c l a r o . A medida que o o p e r a d o r d i g i

-

t a c a r a c t e r e s no t e c l a d o , e s t e s s u b s t i t u e m o c a r a c t e r que s e en- c o n t r a s o b r e o c u r s o r e o c u r s o ç avança p a r a o c a r a c t e r s e g u i n t e , em d i r e ç ã o a o f i n a l da l i n h a . E r r o s de d a t i l o g r a f i a podem s e r f a c i l m e n t e c o r r i g i d o s , r e t r o c e d e n d o o c u r s o r e d i g i t a n d o o c a r a c t e r c o r r e t o s o b r e o e r r a d o . U t i l i z a n d o a s t e c l a s de c o n t r o l e do t e c l a d o , o opera - dor pode a p a g a r , c o p i a r , i n s e r i r e r e t i r a r l i n h a s ou c a r a c t e r e s ' do t e x t o , movimentar a j a n e l a s o b r e o a r q u i v o e p o s i i c i o n a r o c u r s o r s o b r e a t e l a . Pode também f o r n e c e r um argumento númeriao que d e t e r m i n a m ú l t i p l a s execuções de uma mesma função com um Único comando. P a r a f a c i l i t a r o posicionamento de um determinado t r e - cho do a r q u i v o n a t e l a do t e r m i n a l , e x i s t e uma função que procu- r a a p r i m e i r a o c o r r ê n c i a de uma s e q u ê n c i a de c a r a c t e r e s .

Um segundo a r q u i v o , j á e x i s t e n t e , pode s e r u t i l i z a d o na e d i ç ã o e dele sepodem v i s u a l i z a r e c o p i a r l i n h a s . N ~ O s ã o per- m i t i d a s m o d i f i c a ç õ e s no a r q u i v o a u x i l i a r . Mais de um a r q u i v o au

-

x i l i a r pode s e r u t i l i z a d o em uma ú n i c a s e s s ã o de e d i ç ã o .

(27)

Formato da T e l a

O e d i t o r u t i l i z a a t e l a da unidade de v i d e o como vez - c u l o p a r a comunicação com o p e r a d o r . A s v i n t e e q u a t r o l i n h a s da t e l a foram formatadas da s e g u i n t e maneira:

A s v i n t e p r i m e i r a s l i n h a s da t e l a foram r e s e r v a - das p a r a e x i b i r continuamente uma p á g i n a do t e x - t o em e d i ç ã o , formada p o r v i n t e l i n h a s c o n s e c u t i

-

v a s do t e x t o . A p r i m e i r a l i n h a da p á g i n a denomi - na-se t o p o da p á g i n a e a ú l t i m a l i n h a denomina

-

s e b a s e d a p á g i n a .

a v i g é s i m a p r i m e i r a l i n h a da t e l a f o i d e i x a d a em b r a n c o , de modo a permanecer apagada e p r o v e r u- ma s e p a r a ç ã o e n t r e o t e x t o e a s demais l i n h a s da t e l a .

a v i g é s i m a segunda l i n h a da t e l a f o i d e s t i n a d a à

a p r e s e n t a ç ã o do t e x t o do a r q u i v o a u x i l i a r da e d i - ç ã o , uma l i n h a de cada vez

a v i g é s i m a t e r c e i r a l i n h a d a t e l a f o i r e s e r v a d a ' p a r a comunicações do e d i t o r com o o p e r a d o r , s o l i - c i t a n d o informações ou i n d i c a n d o uma condição de e r r o e n c o n t r a d a ao t e n t a r e x e c u t a r um comando,

a vigésima q u a r t a l i n h a d a t e l a , a mais próxima' do t e c l a d o , f o i d e s t i n a d a a r e p r o d u z i r a s Eespog t a s do o p e r a d o r 5s s o l i c i t a ç õ e s do e d i t o r e 0s.m

-

gumentos fornecid-os como p a r h e t r o s p a r a modifi- c a r a execução da função s u b s e q u e n t e .

(28)

unções

do E d i t o r

A s funções do e d i t o r de t e x t o s podem s e r c l a s s i f i c a - d a s , de acordo com s u a f i n a l i d a d e p r i n c i p a l , em q u a t r o cntego- r i a s :

1

-

funções de c o n t r o l e da e d i ç ã o ;

2

-

funções de movimento do c u r s o r ;

3

-

funções de movimento do t e x t o ; 4

-

funções de m o d i f i c a ç ã o do t e x t o .

(29)

A s funções de c o n t r o l e permitem o c o n t r o l e de p r o c e s - s o de e d i ç ã o e a passagem de argumentos p a r a a execução d a s de- mais f u n ç õ e s . s ã o e l a s :

1

-

E n t r a r com argumento;

2

-

I n d i c a r a r q u i v o a u x i l i a r ;

3

-

P o s i c i o n a r Arquivo A u x i l i a r ;

4

-

Guardar Linhas do Texto;

5

-

E x i b i r E s t a d o do E d i t o r ;

(30)

e unções

de Movimento do Cursor

A s funções de movimento do c u r s o r permitem o p o s i c i o - namento do c u r s o r s o b r e q u a l q u e r ponto da página.

1

-

Mover c u r s o r p a r a d i r e i t a ; 2

-

Mover c u r s o r p a r a e s q u e r d a ; 3

-

Mover c u r s o s p a r a b a i x o ; 4

-

Mover c u r s o r p a r a cima; 5

-

Mover c u r s o r p a r a i n i c i o da l i n h a c o r r e n t e ; , 6

-

Mover c u r s o r p a r a i n i c i o da l i n h a s e g u i n t e ; 7

-

Mover c u r s o r p a r a i n 5 c i o da t e l a ; 8

-

Mover c u r s o r p a r a t a b u l a ç ã o

3

d i r e i t a ; 9

-

Mover c u r s o r p a r a t a b u l a ç ã o à esquerda.

(31)

unções

de Movimento do Texto

Rolam o t e x t o p a r a cima e p a r a b a i x o , de modo que q u a l q u e r porção do mesmo p o s s a s e r e x i b i d a na página d a t e l a do t e r m i n a l do video. 1

-

Rolar uma l i n h a p a r a f r e n t e ; 2

-

Rolar uma l i n h a p a r a t r á s ; 3

-

Rolar uma p á g i n a p a r a f r e n t e ; 4

-

Rolar uma p á g i n a p a r a t r á s ; 5

-

Rolar p a r a f r e n t e a t é e n c o n t r a r uma c a d e i a ; 6

-

Rolar p a r a t r a s a t e e n c o n t r a r uma c a d e i a ; 7

-

Rolar p a r a Última p á g i n a do t e x t o . 8

-

Rolar p a r a p r i m e i r a página do t e x t o .

(32)

unções

d e ~ o d i f i c a ç ã o do -T e x t o -Modificam a p o r ç ã o do t e x t o e x i b i d a na t e l a do t e r m i - n a 1 de v í d e o . S u b s t i t u i r o c a r a c t e r sob O c u r s o r ; 2

-

C o p i a r o c a r a c t e r acima do c u r s o r ; R e t i r a r o c a r a c t e r sob o c u r s o r ; I n s e r i r um e s p a ç o s o b o c u r s o r ; Apagar o r e s t o da l i n h a a p a r t i r do c u r s o r ; C o p i a r l i n h a d a memória; C o p i a r l i n h a do a r q u i v o a u x i l i a r ; T r o c a r duas l i n h a s ; R e t i r a r a l i n h a s o b o c u r s o r ; I n s e r i r uma l i n h a sob o c u r s o r .

(33)

Mensagens de E r r o

Toda vez que o e d i t o r s e e n c o n t r a na i m p o s s i b i l i d a - de de e x e c u t a r um comando, uma mensagem

e

movida p a r a a l i n h a

'

de mensagens da t e l a e o alarme sonoro do t e c l a d o é a c i o n a d o de modo a a l e r t a r o o p e r a d o r . O e d i t o r e m i t e a s s e g u i n t e s mensa

-

gens :

1- .NOME I N V A L I D O

Motivo,: O nome de a r q u i v o f o r n e c i d o ao e d i t o r pa * r a u t i l i z a ç ã o como a r q u i v o a u x i l i a r não obedece a s r e g r a s de s i n t a x e p a r a formação de nomes de a r q u i v o . Lembrar que o nome de a r q u i v o deve co - meçar o b r i g a t o r i a m e n t e com uma l e t r a e s e r f o r - mado de a t é s e i s l e t r a s ou a l g a r i s m o s .

Ação: F o r n e c e r um nome v á l i d o .

2- .ARQUIVO INEXISTENTE

Motivo: O a r q u i v o com o nome f o r n e c i d o não f o i e n c o n t r a d o no d i r e t ó r i o do d i s c o .

A Ç ~ O : F o r n e c e r o nome de um a r q u i v o e x i s t e n t e .

3- .ERRO NO DISCO

Motivo: O t e r m i n a l d e t e c t o u um e r r o d u r a n t e uma operação de l e i t u r a ou e s c r i t a no d i s c o .

Ação: E s t e e r r o não é r e c u p e r á v e l e c a u s a uma t e r m i n a ç ã o anormal da s e s s ã o de e d i ç ã o . V e r i f i - que s e a unidade de d i s c o e s t á l i g a d a e s e nao

s e e n c o n t r a p r o t e g i d a c o n t r a e s c r i t a .

4- 'ESPAÇO ESGOTADO

Motivo: N ~ Oh á mais espaço em d i s c o p a r a i n c l u - s ã o de novas l i n h a s ou. a t a b e l a de l i n h a s d e s l o c a - d a s e s t á c h e i a .

Ação: E n c e r r e a s e s s ã o de e d i ç ã o de modo a f o r - ç a r a r e o r g a n i z a ç ã o do a r q u i v o . I n i c i e uma no-

(34)

-

v a s e s s a o e p r o s s i g a . Caso o e r r o p e r s i s t a , c r i e um a r q u i v o maior e c o p i e o t e x t o p a r a e l e . 5- .CURSOR R E T I D O Motivo: F o i s o l i c i t a d o um deslocamento do c u r - s o r p a r a f o r a dos l i m i t e s da t e l a . O c u r s o r £ i

-

cou r e t i d o no l i m i t e da t e l a c o r r e s p o n d e n t e a o s e n t i d o do movimento.

Ação: Nenhuma, p r o s s i g a normalmente.

6 - . L I M I T E TEXTO

Motivo: F o i s o l i c i t a d o um rolamento do t e x t o a-

l é m d e s e u s l i m i t e s . P e l o menos uma l i n h a do a r q u i v o deve permanecer na t e l a .

4ção: Nenhuma, p r o s s i g a normalmente.

7- .FUNÇÃO INEXISTENTE

Motivo: F o i d i g i t a d a uma t e l a de c o n t r o l e p a r a a q u a l não e x i s t e nenhuma função do e d i t o r i m - plementada.

Ação: D i g i t e o u t r a t e c l a .

8-

.

EXECUÇÃO INCOMPLETA

Motivo: I m p o s s i b i l i d a d e t o t a l ou p a r c i a l , de e- x e c u t a r a funqão comandada.

Ação: Nenhuma, p r o s s i g a normalmente.

9- .CADEIA INEXISTENTE

Motivo: Durante uma o p e r a ç ã o d e busca d e c a d e i a no t e x t o , a c a d e i a não f o i e n c o n t r a d a .

(35)

C o m a n d o s do S O C O A p r e s e n t a m o s a q u i a l g u n s c o m a n d o s do s i s t e m a opera c i o n a l S O C O , u t e i s p a r a a edição de t e x t o s : 1

-

criação

de u m a r q u i v o d e n o m i n a d o T E X T O , f o r m a d o p o r 2 0 0 r e g i s t r o s de 8 0 c a r a c t e r e s . C R I E ' T E X T O COM 2 0 9 DE 80

'

.

2

-

C o p i a r o a r q u i v o t e x t o p a r a um arquivo d e n o m i n a - do F O N T E . C O P I E ' T E X T O P A R A F O N T E ' . 3

-

E d i t a r o a r q u i v o c h a m a d o F O N T E . E D I T E ' F O N T E ' . 4

-

Para c o m p i l a r um p r o g r a m a e s c r i t o e m l i n g u a g e m '

,'

P L T I , a r m a z e n a d o no a r q u i v o F O N T E . P L T I

.

5

-

Para r e s o l v e r as r e f e r e n c i a s e x t e r n a s de u m p r o

-

g r a m a c h a m a d o P R O G , c o m p i l a d o . MONTE

'

P R O G

'

.

6

-

P a r a e x e c u t a r o p r o g r a m a P R O G . P R O G . 7

-

P a r a o b t e r u m a cópia i m p r e s s a do a r q u i v o F O N T E . C O P I E

'

F O N T E P A R A I

'

.

8

-

P a r a l i s t a r o a r q u i v o T E X T O no t e r m i n a l de V:-deo :

(36)

C O P I E

'

TEXTO PARA V '

.

9

-

P a r a o b t e r u m a cópia i m p r e s s a do a r q u i v o TEXTO, u t i l i z a n d o o s caracteres de c o n t r o l e embebidos' no t e x t o . L I S T E ' T E X T O ' . 1 0

-

P a r a r e t i r a r o a r q u i v o do d k c o : APAGUE ' T E X T O ' .

(37)

~ e s c r i ç ã o d a s f u n ç õ e s de c o n t r o l e

E n t r a r com argumento

P e r m i t e ao usuário f o r n e c e r uma c a d e i a formada p o r - a

t é

8 0 c a r a c t e r e s e que s e r á u t i l i z a d a como parâmetro p a r a a exe- cução da próxima função s o l i c i t a d a . Caso a função não u t i l i z e

'

argumento, e l e s e r á i g n o r a d o .

A cada argumento é a s s o c i a d o u m v a l o r numérico que

G

i g u a l a 1 (um) p a r a a s c a d e i a s i n i c i a d a s por c a r a c t e r e s a l f a b é - t i c o s e i g u a l a o número formado p e l o s p r i m e i r o s a l g a r i s m o s da c a - d e i a , a t é um máximo de q u a t r o , p a r a a s c a d e i a s i n i c i a d a s p o r a l - g a r i s m o s .

Um c u r s o r é c o l o c a d o n a p r i m e i r a c o l u n a da l i n h a de argumento. A medida que a s t e c l a s s ã o d i g i t a d a s , o c a r a c t e r c o r - r e s p o n d e n t e s u b s t i t u i o c u r s o r e e s t e avança p a r a d i r e i t a . U t i - l i z a n d o - s e t e c l a s de c o n t r o l e , . o c u r s o r pode s e r movido p a r a d i - r e i t a e p a r a e s q u e r d a . Quando uma t e c l a de f u n ç ã o é d i g i t a d a , o s c a r a c t e r e s do i n í c i o da l i n h a a t é o c u r s o r , i n c l u s i v e , são u t i l i - zados como argumento. O s c a r a c t e r e s à d i r e i t a do c u r s o r s ã o i g - norados. Se a t e c l a de função é d i g i t a d a imediatamente após a t e c l a de e n t r a r com argumento, o Último argumento u t i l i z a d o é r e

-

p e t i d o .

I n d i c a r a r q u i v o a u x i l i a r

Por meio d e s t a f u n ç ã o o u s u á r i o pode i n d i c a r u m s e 7 gundo a r q u i v o do q u a l podem s e r c o p i a d a s l i n h a s p a r a o t e x t o que e s t á sendo e d i t a d o . Embora s ó s e p o s s a u t i l i z a r um a r q u i v o a u x i -

l i a r de cada v e z , mais de um a r q u i v o pode s e r c o n s u l t a d o d u r a n t e uma Única s e s s ã o de e d i ç ã o . E s t a função u t i l i z a o argumento pa- r a o b t e r o nome do a r q u i v o . O nome do a r q u i v o deve i n i c i a r p o r uma l e t r a , s e r formado p o r l e t r a s e a l g a r i s m o s e c o n t e r , no máxi mo, s e i s l e i x a s ou a l g a r i s m o s . Caso o nome f o r n e c i d o não s a t i s - f a ç a a s r e g r a s de s i n t a x e ou não s e j a e n c o n t r a d o um a r q u i v o com e s t e nome no d i s c o , o o p e r a d o r é a d v e r t i d o . Caso c o n t r á r i o , a p r i m e i r a l i n h a do a r q u i v o é e x i b i d a na l i n h a do a r q u i v o a u x i l i a r da t e l a .

(38)

P o s i c i o n a r a r q u i v o a u x i l i a r

P e r m i t e a e x i b i ç ã o , na t e l a do t e r m i n a l de v í d e o , d e q u a l q u e r l i n h a do a r q u i v o a u x i l i a r .

Se um a r q u i v o a u x i l i a r não f o i a n t e r i o r m e n t e i n d i c a - do com s u c e s s o , a função r e t o r n a com uma mensagem de e r r o . Se não é f o r n e c i d o um argumento p a r a e s t a função, a l i n h a s e g u i n t e ' à que e s t á sendo a p r e s e n t a d a na t e l a é e x i b i d a . Caso s e j a f o r n e -

tido um argumento, e l e é i n t e r p r e t a d o do s e g u i n t e modo:

a

-

Se o argumento i n i c i a com o c a r a c t e r ' = I

,

O nÚme -

r o a s e g u i r é i n t e r p r e t a d o como número da l i n h a do a r q u i v o a u x i l i a r que s e d e s e j a e x i b i r ;

b

-

Se o argumento i n i c i a com o c a r a c t e r i + ' , o núme

r o a s e g u i r i n d i c a q u a n t a s l i n h a s

5

f r e n t e da li

-

nha a t u a l m e n t e e x i b i d a s e e n c o n t r a a l i n h a q u e s e d e s e j a e x i b i r ;

c

-

Se o argumento i n i c i a com o c a r a c t e r ' - I , o núme

-

r o a s e g u i r i n d i c a q u a n t a s l i n h a s a t r á s da l i n h a a t u a l m e n t e e x i b i d a s e e n c o n t r a a l i n h a que se de

-

s e j a e x i b i r . Caso o s l i m i t e s do a r q u i v o sejam u l t r a p a s s a d o s , a e x i b i ç ã o s e li - m i t a à p r i m e i r a ou à Última l i n h a do a r q u i v o a u x i l i a r , conforme' o s e n t i d o da u l t r a p a s s a g e m . Guardar l i n h a s do t e x t o P o r meio d e s t a f u n ç ã o , a t é v i n t e l i n h a s do t e x t o que e s t e j a m sendo e x i b i d a s na t e l a do t e r m i n a l de v í d e o , podem s e r

'

armazenadas em uma á r e a i n t e r n a de memória do e d i t o r . Se a fun- ç ã o é s o l i c i t a d a sem a u t i l i z a ç ã o do argumento, a l i n h a que con-

t é m

o c u r s o r é armazenada. Caso s e u t i l i z e o argumento, e s t e i n - d i c a q u a n t a s l i n h a s , a p a r t i r d a que contém o c u r s o r , i n c l u s i v e , devem s e r armazenadas. Somente l i n h a s que e s t e j a m sendo exibidas na t e l a podem s e r armazenadas. E s t a função é

6 t i l

p a r a mover um t r e c h o do t e x t o de um ponto p a r a o u t r o do mesmo.

(39)

Exibir estado do editor

Esta função coloca -na linha de mensagens da tela do

terminal de video os valores correntes das seguintes variáveis

'

internas, indicativas do estado do editor:

a

-

número da coluna em que se encontra o cursor;

b

-

número da linha da tela em que se encontra o cur -

sor;

c

-

número da linha do texto em que se encontra O

cursor;

d

-

número da linha do texto que se encontra no topo

da página;

e

-

número total de linhas no texto;

f

-

número da linha do arquivo auxiliar que está sen -

do exibida;

g

-

número total de linhas no arquivo auxiliar;

h

-

número de linhas disponíveis para inserções;

i

-

número de entradas disponiveis na tabela de li-

nhas deslocadas.

Terminaç sessão de edição

Esta função termina a sessão de edição, causando a

reorganização do arquivo de texto, isto é, as linhas deslocadas'

(40)

~ e s c r i ç ã o das f u n ç õ e s de movimento do c u r s o r

Mover c u r s o r p a r a d i r e i t a

O c u r s o r é movido p a r a a ~ r ó x i m a c o l u n a ,

2

d i r e i t a

,

em d i r e ç ã o a o f i n a l da l i n h a . Quando a t i n g e o f i n a l d a l i n h a , o c u r s o r não mais s e d e s l o c a , f i c a n d o r e t i d o na margem.

Mover c u r s o r p a r a e s q u e r d a

O c u r s o r é movido p a r a a coluna a n t e r i o r , à esquerda, em d i r e ç ã o a o i n í c i o da l i n h a . Quando a t i n g e o i n i c i o d a l i n h a , o c u r s o r não mais s e d e s l o c a , f i c a n d o r e t i d o na margem.

Mover c u r s o r p a r a b a i x o

O c u r s o r é movido p a r a l i n h a imediatamente a b a i x o da que se e n c o n t r a , em d i r e ç ã o à b a s e da t e l a , permanecendo na mes- ma c o l u n a . Quando a t i n g e a base d a t e l a , o c u r s o r não mais s e

d e s l o c a , f i c a n d o r e t i d o .

Mover c u r s o r p a r a cima

O c u r s o r é movido p a r a l i n h a imediatamente acima da que s e e n c o n t r a , em d i r e ç ã o a o t o p o da t e l a , permanecendo na mes

-

ma c o l u n a . Quando a t i n g e o topo da t e l a , o c u r s o r não mais s e d e s l o c a , f i c a n d o r e t i d o . Mover c u r s o r p a r a i n i c i o da l i n h a c o r r e n t e O c u r s o r é movido p a r a p r i m e i r a c o l u n a da l i n h a em que se e n c o n t r a . Mover c u r s o r p a r a i n í c i o da l i n h a s e g u i n t e O c u r s o r é movido p a r a p r i m e i r a c o l u n a da l i n h a i m e - d i a t a m e n t e a b a i x o da l i n h a em que s e e n c o n t r a . Caso o c u r s o r e s

-

t e j a n a l i n h a de b a s e , a função não é e x e c u t a d a .

(41)

Mover c u r s o r p a r a i n i c i o d a p á g i n a O c u r s o r é movido p a r a p r i m e i r a c o l u n a d a l i n h a d e t o p o d a t e l a , no c a n t o s u p e r i o r e s q u e r d o d a mesma. Mover c u r s o r p a r a t a b u l a ç ã o

5

d i r e i t a O c u r s o r é movido p a r a ~ r ó x i m a c o l u n a t a b u l a d a à d i - r e i t a . s ã o c o n s i d e r a d a s como t a b u l a d a s a p r i m e i r a c o l u n a d a li- n h a , as c o l u n a s 5 , 9 , 1 3 , 1 7 , 21, 25, 29, 33, 37, 4 1 , 45, 4 9 , 5 3 , 57, 6 1 , 69, 73, 77 e a ú l t i m a c o l u n a d a l i n h a . Caso a t i n j a a Ú1- t i m a c o l u n a d a l i n h a , o c u r s o r f i c a r e t i d o n a margem. Mover c u r s o r p a r a t a b u l a ç ã o

5

e s q u e r d a O c u r s o r é movido p a r a c o l u n a a n t e r i o r , à e s q u e r d a

,

t a b u l a d a . Caso a t i n j a a p r i m e i r a c o l u n a d a l i n h a , o c u r s o r f i c a r e t i d o n a margem.

(42)

~ e s c r i ç ã o d a s f u n ç õ e s d e movimento do t e x t o

R o l a r uma l i n h a p a r a f r e n t e

A l i n h a do t e x t o que s e e n c o n t r a na l i n h a de t o p o da t e l a é r e t i r a d a , a s demais l i n h a s s ã o d e s l o c a d a s p a r a cima e uma nova l i n h a do t e x t o é e x i b i d a na l i n h a de b a s e , causando o d e s l o

-

camento da t e l a em d i r e ç ã o ao f i n a l do t e x t o . Com a u t i l i z a ç ã o ' de um argumento numérico, pode-çe r o l a r mais de uma l i n h a de ca- da v e z , p o r meio de um ú n i c o comando. Caso a execução do coman- do c a u s e a s a í d a do t e x t o dos l i m i t e s da t e l a , a l i n h a i n d i c a t i - va d e fim de t e x t o é e x i b i d a na l i n h a de topo da t e l a . R o l a r uma l i n h a p a r a t r á s A l i n h a do t e x t o que s e e n c o n t r a na l i n h a d e b a s e da t e l a é r e t i r a d a , a s demais l i n h a s s ã o d e s l o c a d a s p a r a b a i x o e u- ma nova l i n h a do t e x t o é e x i b i d a na l i n h a d e t o p o , c a u s a n d o 0 d e s - locamento da t e l a em d i r e q ã o ao i n i c i o do t e x t o . Com a u t i l i z a - ção de um argumento numérico, pode-se r o l a r mais de uma l i n h a de cada vez p o r meio de um Único comando. Caso a execução do coman - do c a u s e a s a í d a do t e x t o dos l i m i t e s da t e l a , a p r i m e i r a l i n h a do t e x t o é e x i b i d a na l i n h a de t o p o da t e l a . R o l a r uma p á g i n a p a r a f r e n t e E s t a função c o r r e s p o n d e a o rolamento de v i n t e l i n h a s c o n s e c u t i v a s p a r a f r e n t e . U t i l i z a o argumento numérico p a r a i n - d i c a r o número de p á g i n a s a r o l a r . R o l a r uma p á g i n a p a r a t r á s

E s t a função corresponde a o rolamento d e v i n t e l i n h a s c o n s e c u t i v a s p a r a

t r á s .

U t i l i z a o argumento numérico p a r a i n d i - c a r o número de p á g i n a s a r o l a r .

Rolar p a r a f r e n t e a t é e n c o n t r a r uma c a d e i a

(43)

a t é que a p r i m e i r a o c o r r e n c i a de uma c a d e i a no t e x t o i g u a l a uma c a d e i a de c a r a c t e r e s f o r n e c i d a s como argumento ocupe a l i n h a d e ' t o p o da t e l a . O c u r s o r é colocado s o b r e o p r i m e i r o c a r a c t e r da c a d e i a e n c o n t r a d a . Caso a c a d e i a não s e j a e n c o n t r a d a , o rolamen -

t o não é executado e o c u r s o r permanece na mesma p o s i ç ã o .

Rolar p a r a t r á s a t é e n c o n t a r uma c a d e i a

E s t a função c a u s a um rolamento do t e x t o pana t r a g a-

t é

que a p r i m e i r a o c o r r e n c i a no t e x t o d e uma c a d e i a i g u a l à ca- d e i a de c a r a c t e r e s f o r n e c i d a como argumento ocupe a l i n h a de t o - po da t e l a . O c u r s o r é p o s i c i o n a d o s o b r e o p r i m e i r o c a r a c t e r da c a d e i a e n c o n t r a d a . Caso a c a d e i a não s e j a e n c o n t r a d a , o rolamen t o não e executado e o c u r s o r permanece na mesma p o s i ç ã o .

R o l a r p a r a Última p á g i n a do t e x t o A s Últimas v i n t e l i n h a s do t e x t o s ã o e x i b i d a s na t e - l a do t e r m i n a l de v i d e o . Rolar p a r a p r i m e i r a p á g i n a do t e x t o A s p r i m e i r a s v i n t e l i n h a s do t e x t o s ã o e x i b i d a s na t e l a do t e r m i n a l de v i d e o .

(44)

~ e s c r i ç ã o d a s f u n ç õ e s d e m o d i f i c a ç ã o do t e x t o S u b s t i t u i r o c a r a c t e r s o b o c u r s o r # E s t a f u n ç ã o é e x e c u t a d a t o d a vez que um c a r a c t e r e d i g i t a d o no t e c l a d o . O c a r a c t e r d i g i t a d o s u b s t i t u i o c a r a c t e r

'

que e s t á s o b o c u r s o r e o c u r s o r se d e s l o c a p a r a a próxima c o l u - na à d i r e i t a , em d i r e ç ã o ao f i m d a l i n h a . Quando o c u r s o r a t i n g e o f i n a l da l i n h a , a s s u b s t i t u i ç Õ e s continuam a s e r e f e t u a d a s , mas o c u r s o r não

6

d e s l o c a d o e o o p e r a d o r é a d v e r t i d o . Copiar o c a r a c t e r acima do c u r s o r S u b s t i t u i o c a r a c t e r que e s t á s o b o c u r s o r p e l o ca- r a c t e r q u e se e n c o n t r a na mesma c o l u n a , na l i n h a i m e d i a t a m e n t e s u - p e r i c r à que s e e n c o n t r a o c u r s o r . pós a s u b s t i t u i ç ã o o c u r s o r se d e s l o c a p a r a a próxima c o l u n a à d i r e i t a , e m d i r e ç ã o a o f i n a l

'

da l i n h a . Quando o c u r s o r a t i n g e o f i n a l da l i n h a , a c ó p i a é e f e t u a d a , mas o c u r s o r não é d e s l o c a d o e o o p e r a d o r é a d v e r t i d o . , Q u a n - do u t i l i z a d a com o c u r s o r na p r i m e i r a l i n h a da t e l a ( l i n h a de tg po ) e s t a f u n ç ã o s u b s t i t u i o c a r a c t e r s o b o c u r s o r p o r um e s p a ç o ( c a r a c t e r b r a n c o )

.

R e t i r a r o c a r a c t e r s o b o c u r s o r O c a r a c t e r que e s t á s o b o c u r s o r é s u b s t i t u í d o p e l o ' c a r a c t e r que l h e e s t á à d i r e i t a , o mesmo sucedendo a o s demais ca- r a c t e r e s a p a r t i r do c u r s o r a t é o fim d a l i n h a . A ú l t i m a c o l u n a da l i n h a é p r e e n c h i d a p o r um c a r a c t e r e m branco. A p o s i ç ã o do c u r

-

s o r não é m o d i f i c a d a . I n s e r i r um e s p a ç o s o b o c u r s o r Um c a r a c t e r em b r a n c o ( e s p a ç o ) é c o l o c a d o na c o l u n a em que s e e n c o n t r a o c u r s o r . O s c a r a c t e r e s a p a r t i r do c u r s o r s ã o d e s l o c a d o s uma c o l u n a p a r a d i r e i t a . O ú l t i m o c a r a c t e r da l i n h a é p e r d i d o . A p o s i ç ã o do c u r s o r não é m o d i f i c a d a . Apagar o r e s t o da l i n h a a p a r t i r 6o c u r s o r O s c a r a c t e r e s da l i n h a , a p a r t i r da p o s i ç ã o do cur- s o r , i n c l u s i v e , a t é o f i n a l da l i n h a s ã o s u b s t i t u í d o s p o r c a r a c t e

-

res b r a n c o s ( e s p a ç o s )

.

(45)

Copiar l i n h a da mem6ria

P o r meio d e s t a f u n ç ã o , a t é v i n t e l i n h a s a n t e r i o r m e n - t e guardadas na memória do e d i t o r podem s e r t r a n s f e r i d a s p a r a t e

-

l a a p a r t i r da l i n h a em que s e e n c o n t r a o c u r s o r . A função a c e i - t a um argumento numérico que i n d i c a o número d e l i n h a s a c o p i a r . O número de l i n h a s a c o p i a r deve s e r menor ou i g u a l ao número de l i n h a s a n t e r i o r m e n t e guardado e t o d a s a s l i n h a s c o p i a d a s devem

'

poder s e r e x i b i d a s n a t e l a . Caso e s t a s condições não sejam saWi -

f e i t a s , a função é t r u n c a d a p a r a o maior número que s a t i s f a ç a a e s t a s duas c o n d i ç õ e s .

Copiar l i n h a do a r q u i v o a u x i l i a r

Por meio d e s t a função, a t é v i n t e l i n h a s do a r q u i v o

'

a u x i l i a r podem s e r c o p i a d a s p a r a o t e x t o , a p a r t i r d a l i n h a em que s e e n c o n t r a o c u r s o r , i n c l u s i v e . A função é t r u n c a d a c a s o não p o s s a e x i b i r t o d a s a s l i n h a s a s e r e m c o p i a d a s ou s e j a , a t i n - gindo o fim do t e x t o a u x i l i a r . À medida que a s l i n h a s s ã o c n p i c

4

d a s do a r q u i v o a u x i l i a r , a l i n h a s e g u i n t e do a r q u i v o a u x i l i a r e e x i b i d a na t e l a . A função a c e i t a argumento numérico i n d i c a n d o o número d e l i n h a s a c o p i a r . A s l i n h a s a serem c o p i a d a s devem po- d e r s e r e x i b i d a s na t e l a , ou a execução da função é t r u n c a d a .

T r o c a r duas l i n h a s

A l i n h a que contém o c u r s o r é t r w a d a com a l i n h a que e s t á imediatamente a b a i x o e o c u r s o r d e s c e uma l i n h a . A f u n ç ã o ' não é e x e c u t a d a c a s o o c u r s o r e s t e j a na l i n h a de b a s e da t e l a .

R e t i r a r a l i n h a sob o c u r s o r

A l i n h a que contém o c u r s o r é r e t i r a d a do t e x t o . A s l i n h a s que e s t ã o a b a i x o d e l a s ã o r o l a d a s p a r a cima e uma nova

'

l i n h a é . i n c l u í d a na l i n h a de b a s e da t e l a . E s t a f u n ç ã o a c e i t a um argumento numérico que i n d i c a o número de l i n h a s a serem r e t L r a d a s . SÓ podem s e r r e t i r a d a s do t e x t o l i n h a s que e s t e j a m sendo e x i b i d a s na t e l a . A Última l i n h a do t e x t o , i n d i c a t i v a do fim do a r q u i v o , não pode s e r r e t i r a d a . A p o s i ç ã o do c u r s o r não

é

modi- f i c a d a .

(46)

I n s e r i r uma l i n h a s o b o c u r s o r

Uma l i n h a em b r a n c o é i n s e r i d a s o b o c u r s o r . A s li-

nhas a p a r t i r do c u r s o r s ã o r o l a d a s p a r a b a i x o e a Última l i n h a s a i da t e l a . O c u r s o r permanece s o b r e a l i n h a i n s e r i d a . E s t a função a c e i t a um argumento numérico que i n d i c a o número de li-

nhas a serem i n s e r i d a s . podem s e r i n s e r i d a s l i n h a s no l i m i t e da t e l a . Caso um número maior de l i n h a s s e j a e s p e c i f i c a d o , ; s ã o i n s e r i d a s l i n h a s e m b r a n c o a t é o f i m da t e l a e a f u n ç ã o é t r u n c a

-

d a .

(47)

~ e f i n i ç ã o do Programa

O e d i t o r d e t e x t o s

6

um programa o r i e n t a d o p a r a a e d i ç ã o i n t e r a t i v a de programas e s c r i t o s em linguagem d e a l t o n í v e l .

Tem como e n t r a d a s o t e c l a d o , um a r q u i v o em d i s c o com o í n d i c e d o s a a q u i v o s c a t a l o g a d o s no d i s c o , um a r q u i v o contendo o t e x t o a s e r e d i t a d o e pode a c e s s a r a o u t r o s a r q u i v o s do mesmo d i s c o p a r a c o p i a r l i n h a s . Como s a l d a u t i l i z a o p r ó p r i o a r q u i v o d e t e x t o e a t e l a d a unidade de v í d e o do t e r m i n a l .

(48)

Estrutura do arauivo de texto

A determinação de uma estrutura para o arquivo de

texto que permitisse o tratament8 da inclusão de novas linhas e

a alteração do texto na sequgncia desejada para o usuário sem

degradar o desempenho do editor constitui o ponto crucial do

projeto.

As técnicas de compressão de dados e de utilização

de listas encadeadas não foram utilizadas por acarretarem os

seguintes inçovenientes:

1

-

A modificação de uma única linha do texto, muito

frequente na depuração de programas, implicaria na necessidade

de comprimir o texto e expandi-lo em seguida, porque o compila

-

dor existente não utiliza textos compactados

..

2

-

O acesso aleatório a qualquer ponto do texto se-

ria dificultado por não se poder calcular diretamente a posição do texto no arquivo.

3

-

Um maior número de acessos a disco seria necessá

rio de modo a fazer a leitura sequencial de todas as linhas entre a posição corrente da tela e a posição para a qual se deseja ro- lar.

Considerando estes incovenientes, optamos por utili- zar um arquivo em seu formato original de regiskros:de 80 carac- teres, mais adequado para a edição de programas.

O problema seguinte consistiu em determinar onde

colocar as novas linhas inseridas. Foram consideradas duas alter -

nativas :

1

-

Colocar em um arquivo de trabalho;

(49)

Optamos pela segunda alternativa, pois embora

implique na utilização de um espaço em disco maior do que O

texto sendo utilizado, provoca menos deslocamentos da cabeça de leitura/escrita do disco, resultando num menor kempo de resposta.

Na impossibilidade de deslocar todas as linhas do

arquivo a cada inserção de nova linha, optamos por colocar as

linhas inseridas depdis do texto e reorganizar o arquivo ao

final da sessão de edição de modo que o texto fique na forma

sequencial. 0s espaços deixados pelas linhas retiradas

são

c o b e ~

tos e as linhas inseridas são colocadas em suas posições fi

-

(50)

Para facilitar o desenvolvimento e depuração do edi-

tor e torna-lo mais flex5vel para poste~iores modificações, O

editor foi desenvolvido

em

dois nTveis

.

O nível mais interno im -

plementa um editor de linhas capaz de ler uma linha, escrever

uma linha, retirar uma Pinha e inserir uma linha. Este nível rea -

liza também a leitura inicial do arquivo para determinar seu

tamanho e a reorganização do arquivo ao final da sessão de edi

-

ção.

O nivel mais externo, constitui um editor de tela

,

Referências

Documentos relacionados

ensino superior como um todo e para o curso específico; desenho do projeto: a identidade da educação a distância; equipe profissional multidisciplinar;comunicação/interatividade

O questionário aplicado aos docentes que lecionam ciências nos anos iniciais na escola-campo de estágio e pesquisa buscou identificar a quantidade de vezes que a

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Dessa forma, devemos limitar o uso do predicado verdadeiro à sentenças, essa será a extensão mais adequada para os propósitos em questão e “consequentemente,

Os resultados deste estudo mostram que entre os grupos pesquisados de diferentes faixas etárias não há diferenças nos envoltórios lineares normalizados das três porções do

Os estudos originais encontrados entre janeiro de 2007 e dezembro de 2017 foram selecionados de acordo com os seguintes critérios de inclusão: obtenção de valores de

A seleção portuguesa feminina de andebol de sub-20 perdeu hoje 21-20 com a Hungria, na terceira jornada do Grupo C do Mundial da categoria, a decorrer em Koprivnica, na

Para tal, constou de pesquisa de natureza aplicada à 4 sujeitos, os quais foram selecionados devido às suas condições de paraplegia Os dados coletados foram analisados de