Linguagem Eiffel

Histórico, sintaxe, semântica, tipos, estrutura de controle e exemplos.

Posts Tagged ‘lista

Estrutura de dados

leave a comment »

Classe Array

A classe ARRAY no Eiffel é um recipiente ou uma estrutura de dados que permite que muitos objetos do mesmo tipo possam ser armazenados e recuperados da estrutura de dados (array). Um elemento de um array é indexado pela sua posição na matriz.

exemplo de array com números reais

exemplo de array com números reais

Aqui se tem um pequeno exemplo de como fica o código Eiffel para definir um array e qual o efeito sobre a estrutura de dados.

efeito sobre o array

efeito sobre o array

Classe Linked_List

Para utilizar uma estrutura de dados em lista encadeada em Eiffel, basta utilizar-se da classe LINKED_LIST. A lista usa um cursor para apontar para o elemento corrente na lista.

O cursor pode mover-se para frente e para trás na lista, assim ele pode ser usado para fazer a varredura da lista. Para saber se um elemento está na lista, por exemplo, o cursor é definido para o início da lista, e vai sendo movido para frente, item por item, até que o item desejado seja encontrado ou o final da lista seja atingido.

Uma lista em Eiffel é um objeto com um estado interno, o estado é definido pelo conteúdo da lista em si, e pela posição do cursor.

lista encadeada em Eiffel

lista encadeada em Eiffel

A classe possui comandos para alterar a posição do cursor, e consultas para descobrir onde ele está. Existem comandos para alterar um elemento da lista da posição atual do cursor, e consultas para verificar o valor encontrado. As rotinas que mudam ou retornam elementos da lista usam a posição atual do cursor ou o elemento imediatamente anterior ou posterior a posição atual do cursor. Há também recursos para combinar ou separar um conjunto de listas de objetos.

operações com lista

operações com lista

As principais funções da classe LINKED_LIST é mostrada abaixo. Existem três tipos de recursos: os que tratam da própria lista, com o cursor, e com os elementos da lista.

Lista

make cria uma lista vazia
count: INTEGER retorna o número de elementos da lista
merge_left (other: like Current) adiciona a lista other a esquerda do cursor
merge_right (other: like Current) adiciona a lista other a direita do cursor
wipe_out remove todos os elementos da lista

—————————————————————————————————–

Cursor

forth move o cursor uma posição pra frente
back move o cursor uma posição pra trás
start move o cursor para a primeira posição
finish move o cursor para a última posição
go_i_th (i: INTEGER) move o cursor para a posição i na lista
isfirst: BOOLEAN o cursor está na primeira posição?
islast: BOOLEAN o cursor está na última posição?

—————————————————————————————————–

Elementos

item: G elemento atual
first: like item primeiro elemento
last: like item ultimo elemento
previous: like item elemento anterior
next: like item próximo elemento
put (v: like item) insere o valor na posição atual
put_left (v: like item) insere o valor na posição anterior
put_right (v: like item) insere o valor na posição posterior
remove remove o valor da posição atual do cursor
remove_left remove o valor da posição anterior ao cursor
remove_right remove o valor da posição posterior ao cursor

Written by maxdangelo

21/04/2009 at 11:57