Estrutura Básica de Dados


Um vetor (tabela de uma dimensão) é representado por um nome de identificação e definição da dimensão de seu tamanho entre os símbolos de chaves, tendo a seguinte sintaxe: tabela = {}.

O identificador tabela deverá ser o nome da variável indexada a se fazer uso e os símbolos { } são os construtores que criam e definem a estrutura de uma variável indexada.

Para fazer uso de vetores na linguagem Lua é necessária declarar o vetor no inicio do código de programa antes de usá-lo. Não é necessário indicar a quantidade de elementos (valores) que serão armazenados no vetor, pois a própria linguagem efetua o ajuste da tabela à medida que a tabela é utilizada.

Considere um programa que efetue a leitura de dez elementos de um vetor denominado A. Em seguida, construa um vetor denominado B, em que o vetor B seja formado de acordo com a seguinte lei de formação: se o valor do índice do vetor A for par, o valor para o vetor B deve ser multiplicado por 5; sendo o índice do vetor A ímpar, o valor do vetor B deverá ser somado com 5. Ao final, mostrar os conteúdos dos vetores A e B.

Este exemplo demonstra como fazer o tratamento da condição do índice.

No programa são usados três laços de repetição for: o primeiro laço controla a entrada dos dados, o segundo verifica se cada elemento da matriz A é par ou ímpar processando o cálculo desejado, implicando os elementos calculados na matriz B, o terceiro laço é utilizado para apresentar as duas matrizes.

No laço de processamento, é utilizada a instrução if (R == 0) then, sendo a variável R carregada com o resultado da equação I - 2 * math.floor(I / 2) que possibilita extrair o resultado do resto da divisão de inteiros do valor I sobre o valor 2. Qualquer valor dividido por 2 que resultar zero é par; se o resto for diferente de zero, o valor é ímpar.

Com o conhecimento adquirido é possível criar um programa que efetue a leitura das notas escolares de oito alunos e apresente-as em seguida utilizando apenas tabelas unidimensionais. Porém, deve ser considerado que este tipo de trabalho é grande, já que é necessário manter um controle de cada índice em cada tabela para um mesmo aluno.

Para o trabalho com estruturas deste porte, devemos utilizar tabelas com mais de uma dimensão. A forma mais comum é a tabela de duas dimensões. Tabelas com mais de duas dimensões são de uso menos freqüente, mas são fáceis de serem usadas quando se conhece bem a utilização de tabelas com duas dimensões.

Um aspecto a ser considerado no uso de tabela unidimensional é o fato de estar em uso apenas uma única instrução de laço de repetição. Em relação às tabelas com mais dimensões, deve ser utilizado o número de laços de repetição relativos ao tamanho de sua dimensão. Desta forma, uma tabela de duas dimensões deve ser controlada com dois laços de repetição, de três dimensões deve ser controlada por três laços de repetição e assim por diante.

Uma tabela de duas dimensões é aquela que possui um determinado número de colunas com um determinado número de linhas. Por exemplo, uma tabela com 5 linhas e 3 colunas, uma tabela de 5x3.

O uso de variáveis indexadas como listas de valores em linguagem Lua pode ser feita com a sintaxe:

DIA_SEMANA = { "domingo", "segunda-feira", "terca-feira", "quarta-feira", "quinta-feira", "sexta-feira", "sabado" }

A variável DIA_SEMANA terá sete índices. Se pedir a posição 1 como DIA_SEMANA[1] será pego o valor domingo.

Note que o primeiro índice da tabela é o índice 1 e não 0 como em algumas outras linguagens de programação. No entanto, se for de vontade definir o primeiro índice como zero, faça o seguinte:

Observe que o dia da semana domingo passa a posicionar no índice zero da variável indexada, ou seja, posicionado em DIA_SEMANA[0].

O programa a seguir apresenta o resultado de algumas raízes quadradas. Observe o uso da função math.sqrt() como elemento da variável indexada RAIZES.

A linha for I = 1, 4 do, veja que está sendo omitido o valor de incremento do contador. Quando isso ocorre a linguagem Lua assume a contagem em um.

Uma variável do tipo registro é uma estrutura de dados que permite o uso de tipos de dados diferentes na mesma variável. A linguagem Lua não é rígida, pois trata automaticamente o tipo do dado em uso. Portanto, é possível definir dados em forma de registros, de forma semelhante a outras linguagens.

O programa seguinte faz a entrada e saída do nome e de quatro notas escolares de um aluno. Observe atentamente o detalhe na definição do registro ALUNO com os campos NOME e NOTAS. A definição de registros estará gravada com o nome do registro sublinhado para melhor visualização neste trabalho. Assim sendo o registro ALUNO está referenciado como ALUNO.

Variáveis indexadas do tipo registro podem ser operacionalizadas pela identificação do nome do campo, como VARIÁVEL.CAMPO, bem como VARIÁVEL["CAMPO"].

Um recurso importante oferecido em uma linguagem de programação de computadores á a capacidade de se fazer a manipulação de arquivos. A linguagem Lua oferta para o programador uma biblioteca de entrada e de saída para o controle das operações de arquivos.

O programa seguinte apresenta um exemplo de programa que cria um arquivo contendo valores numéricos pares situados na faixa de valores entre 1 (um) e 200 (duzentos).

O programa determina para a variável ARQ que foi atribuída pela função io.open() que tem que abrir um arquivo para escrita, leitura ou adição. Caso não exista o arquivo, ele será criado.

A função io.open() utiliza entre aspas duplas dois argumentos para sua operação: nome (primeiro argumento) e modo (segundo argumento). O argumento nome caracteriza-se por ser o nome do arquivo a ser aberto ou criado, neste caso pares.txt e o argumento modo indica a forma de operação sobre o arquivo, podendo ser: r – modo leitura (forma padrão), w – modo escrita, a – modo adição (inserção), r+ – modo atualização, todos os registros existentes são preservados, w+ – modo atualização, todos os registros existentes são apagados, ou a+ – modo atualização de adição, todos os registros existentes são preservados e as novas inserções ocorrem após o final do arquivo.

Quando trabalhamos com arquivos na linguagem Lua fazemos uso de duas formas de acesso aos descritores, pode ser implícito ou explicito. Se usar descritores implícitos, as operações de acesso ocorrem com o uso dos recursos da tabela io. Se usar descritores explícitos, as operações são providas como métodos do descritor de arquivo.




© Acadêmico F.J.T.P da Unifenas - Todos os direitos reservados.