Estruturas no Octave
Na lição de hoje, vamos desvendar o uso das estruturas no Octave, ilustrando isso com exemplos práticos.
Então, o que são essas tais estruturas? Bem, estruturas, ou vetores de estruturas, se assemelham bastante aos vetores. Porém, ao contrário de um vetor, uma estrutura tem a habilidade de armazenar dados de diferentes tipos ao mesmo tempo. Esses dados são organizados em campos, e cada campo tem um nome. Um bom exemplo para entender o conceito de estrutura é pensar numa agenda telefônica.
Como criar uma estrutura
Vamos criar uma estrutura para representar uma agenda telefônica.
Chame a estrutura de "agenda". O primeiro campo dessa estrutura será o "nome" da pessoa.
>> agenda.nome="Paul Red";
O segundo campo será o "telefone" da pessoa.
>> agenda(1).telefone=[123456789, 987654321]
Caso necessário, os dados de um campo podem ser um vetor.
>> agenda(1).telefone=[123456789, 987654321]
O terceiro campo da estrutura será o endereço da pessoa.
>> agenda.endereco="Roma";
Em vez disso, é possível criar a estrutura já preenchendo todos os campos de uma só vez, utilizando a função struct().
>> agenda = struct('nome','Paul Red','telefone',123456789, 'endereco', 'Roma')
Pronto! Acabamos de criar uma estrutura (diretório) com um único registro, composto por três campos: nome, telefone e endereço.
Observação: Perceba que os campos possuem diferentes tipos de dados. Temos dois campos alfanuméricos (nome e endereço), enquanto um é numérico (telefone).
Se preferir, é possível criar uma estrutura com vários campos e preenchê-los com dados desde o início.
Nesse caso, é importante se lembrar de escrever os nomes dos campos apenas uma vez e colocar os dados de um campo entre chaves.
C = struct('aula',{'Matemática', 'Latim', 'Ciência'},'nota',{27,30,18})
Como exibir os campos de uma estrutura
Para visualizar a lista de campos na estrutura, podemos utilizar a função fieldnames().
>> fieldnames(agenda)
ans =
{
[1,1] = nome
[2,1] = telefone
[3,1] = endereco
}
Todos os registros na estrutura possuem o mesmo número e nomes de campos.
Neste caso, a estrutura tem três campos: nome, telefone e endereço.
Como adicionar dados a uma estrutura
Você pode incluir registros adicionais à estrutura.
Por exemplo, para inserir um segundo registro, use o nome da estrutura seguido do número do índice entre parênteses
>> agenda(2).nome="Mario White";
>> agenda(2).telefone=987654321;
Agora a nossa estrutura possui dois registros.
Ao adicionar um novo registro à estrutura, não é necessário preencher todos os campos. É possível deixar alguns deles vazios.
Por exemplo, no segundo registro da estrutura, você não preencheu nada no campo de endereço.
>> agenda(2)
ans =
scalar structure containing the fields:
nome = Mario White
telefone = 987654321
endereco = [](0x0)
Alternativamente, você pode adicionar um novo registro inserindo todosos campos de uma vez utilizando a função struct().
>> agenda(3) = struct('nome','Joseph Green','telefone',123456789, 'endereco', 'Milão')
Como acessar os dados de uma estrutura
Para acessar um dado dentro de uma estrutura, é necessário escrever o nome da estrutura seguido pelo índice (entre parênteses). Após isso, acrescente um ponto e o nome do campo que você deseja acessar.
Por exemplo, para acessar o número de telefone do primeiro registro na estrutura, digite agenda(1).telefone.
>> agenda(1).telefone
ans = 123456789
Para ler o número de telefone do segundo registro, digite agenda(2).telefone
>> agenda(2).telefone
ans = 987654321
Para visualizar todos os dados no campo telefone, digite agenda.telefone
>> agenda.telefone
ans = 123456789
ans = 987654321
Para exibir todos os dados de um registro específico, digite agenda(1)
>> agenda(1)
ans =
scalar structure containing the fields:
nome = Paul Red
telefone = 123456789 987654321
endereco = Roma
Como remover um campo de uma estrutura
Para remover um campo de uma estrutura, é necessário utilizar a função rmfield()
Por exemplo, se adicionarmos um campo à estrutura, ela passará a ter quatro campos.
>> agenda(2).teste="teste";
Agora, a estrutura possui quatro campos.
>> fieldnames(agenda)
ans =
{
[1,1] = nome
[2,1] = telefone
[3,1] = endereco
[4,1] = teste
}
Para remover o campo "teste", digite rmfield(agenda,"teste")
>> agenda=rmfield(agenda,"teste");
O campo "teste" foi então removido da estrutura.
>> fieldnames(agenda)
ans =
{
[1,1] = nome
[2,1] = telefone
[3,1] = endereco
}
Agora, você já tem em mãos todas as informações necessárias para começar a trabalhar com estruturas no Octave.