Skip to content

Adição do tipo STRUCT #4

@thiagoausechi

Description

@thiagoausechi

A proposta é implementar o tipo struct para permitir a criação de tipos compostos na linguagem. O struct permitirá definir uma nova estrutura de dados com chaves (ou propriedades) associadas a tipos específicos. Cada struct funciona como um novo tipo primitivo que pode ser utilizado para declarar variáveis, e essas variáveis podem acessar e modificar seus campos por meio das chaves definidas.

Descrição da Funcionalidade

  1. Sintaxe e Comportamento:
TYPE
    IDENTIFIER_1: struct {
        key: type;
        key: type;
    };

Após definir um struct, o IDENTIFIER_1 como exemplo, pode-se então ser utilizado como um tipo primitivo para outras variáveis, permitindo acessos e atribuições de valores às suas chaves:

VAR
    IDENTIFIER_2: IDENTIFIER_1;

Para acessar ou atribuir valores, utiliza-se a notação de ponto:

START
    IDENTIFIER_2.key1 <- value; // Atribuição do valor
    PRINT IDENTIFIER_2.key1; // Leitura do valor
END.

Neste exemplo então:

  • IDENTIFIER_1 define um novo tipo struct com chaves e tipos associados.
  • IDENTIFIER_2 é uma variável do tipo IDENTIFIER_1, e você pode acessar suas chaves para leitura e escrita de valores.
  1. Alternativas & Sinônimos (Aliases):
  • estrutura
  • record
  • object | objeto

Exemplo de Uso

TYPE
    Person: struct {
        name: string;
        age: integer;
    };

VAR
    people: array[5] of Person;
    individual: Person;

START
    individual.name <- "John Doe";
    individual.age <- 30;
    PRINT individual.name; // Saída: John Doe
    PRINT individual.age; // Saída: 30
    
    people[0] <- individual; // Atribui o "objeto" todo
    PRINT people[0].name; // Saída: John Doe
END.

Neste exemplo, o tipo Person é definido como um struct que possui as chaves name e age. Uma variável individual do tipo Person é criada, e valores são atribuídos às chaves dessa estrutura.

É possível atribuir um individual na lista de people, uma vez que people é um arranjo do tipo Person.

Objetivo

Implementar o tipo struct permitirá que os usuários da linguagem definam tipos personalizados que agrupam diferentes dados sob uma única entidade. Isso adiciona mais flexibilidade e organização ao código, permitindo a criação de estruturas complexas de maneira mais clara e eficiente. Além disso, a implementação de struct contribui para a capacidade da linguagem de suportar programação orientada a dados, melhorando a capacidade de modelar problemas do mundo real de maneira mais natural.

Metadata

Metadata

Assignees

Labels

💡 suggestionSugestão de melhorias ou novas funcionalidades🔡 languageRelacionado à linguagem de programação

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions