mirror of
https://github.com/Gustavo-E-D-Demarchi/dicionario.git
synced 2026-07-27 16:25:46 -03:00
370 lines
4.7 KiB
Plaintext
370 lines
4.7 KiB
Plaintext
# Dicionário Português-Inglês em Pascal
|
|
|
|
## Descrição
|
|
|
|
Este programa implementa um dicionário Português-Inglês utilizando listas encadeadas dinâmicas em Pascal.
|
|
|
|
A estrutura principal é composta por:
|
|
|
|
* Uma lista duplamente encadeada de chaves.
|
|
* Cada chave possui um dicionário próprio.
|
|
* Cada dicionário é uma lista simplesmente encadeada de verbetes.
|
|
|
|
Cada verbete contém:
|
|
|
|
* Palavra em português.
|
|
* Tradução em inglês.
|
|
|
|
Exemplo:
|
|
|
|
Chave: A
|
|
|
|
* Abacaxi = Pineapple
|
|
* Amor = Love
|
|
* Avião = Airplane
|
|
|
|
Chave: M
|
|
|
|
* Mesa = Table
|
|
* Morango = Strawberry
|
|
|
|
---
|
|
|
|
# Estruturas Utilizadas
|
|
|
|
## Tverbete
|
|
|
|
Representa um verbete do dicionário.
|
|
|
|
Campos:
|
|
|
|
* br: palavra em português.
|
|
* ing: tradução em inglês.
|
|
* prox: próximo verbete da lista.
|
|
|
|
## Tlista
|
|
|
|
Representa uma chave do dicionário.
|
|
|
|
Campos:
|
|
|
|
* key: letra ou chave identificadora.
|
|
* dicionario: lista de verbetes pertencentes à chave.
|
|
* ant: chave anterior.
|
|
* prox: próxima chave.
|
|
|
|
---
|
|
|
|
# Funções
|
|
|
|
## ler
|
|
|
|
Lê uma string digitada pelo usuário.
|
|
|
|
Retorno:
|
|
|
|
* String informada pelo usuário.
|
|
|
|
---
|
|
|
|
## ler_int
|
|
|
|
Lê um número inteiro digitado pelo usuário.
|
|
|
|
Retorno:
|
|
|
|
* Valor inteiro informado.
|
|
|
|
---
|
|
|
|
## buscar_verbete
|
|
|
|
Procura uma palavra dentro de um dicionário.
|
|
|
|
Parâmetros:
|
|
|
|
* D: dicionário onde será feita a busca.
|
|
* P: palavra procurada.
|
|
|
|
Retorno:
|
|
|
|
* Ponteiro para o verbete encontrado.
|
|
* Nil caso não exista.
|
|
|
|
Método utilizado:
|
|
|
|
Busca recursiva.
|
|
|
|
---
|
|
|
|
## encontrar_lista
|
|
|
|
Localiza a chave responsável por armazenar determinada palavra.
|
|
|
|
Parâmetros:
|
|
|
|
* T_lista: lista principal.
|
|
* palavra: palavra a ser localizada.
|
|
|
|
Retorno:
|
|
|
|
* Ponteiro para a chave adequada.
|
|
* Nil caso não exista chave compatível.
|
|
|
|
---
|
|
|
|
# Procedimentos
|
|
|
|
## lista_iniciar
|
|
|
|
Inicializa a estrutura principal.
|
|
|
|
Ação:
|
|
|
|
* Define a lista principal como vazia.
|
|
|
|
---
|
|
|
|
## dicionario_adicionar
|
|
|
|
Insere um novo verbete em ordem alfabética.
|
|
|
|
Parâmetros:
|
|
|
|
* dicionario
|
|
* br
|
|
* ing
|
|
|
|
Ação:
|
|
|
|
* Cria um novo verbete.
|
|
* Insere mantendo a ordenação alfabética.
|
|
|
|
---
|
|
|
|
## dicionario_remover
|
|
|
|
Remove um verbete de um dicionário.
|
|
|
|
Parâmetros:
|
|
|
|
* dicionario
|
|
* palavra
|
|
* removido
|
|
|
|
Ação:
|
|
|
|
* Procura a palavra.
|
|
* Remove da lista.
|
|
* Retorna o ponteiro removido.
|
|
|
|
---
|
|
|
|
## lista_adicionar
|
|
|
|
Insere uma nova chave.
|
|
|
|
Parâmetros:
|
|
|
|
* lista
|
|
|
|
Ação:
|
|
|
|
* Cria uma nova chave.
|
|
* Mantém as chaves ordenadas.
|
|
* Atualiza ponteiros anterior e próximo.
|
|
* Redistribui verbetes quando necessário.
|
|
|
|
---
|
|
|
|
## redistribuir_verbetes
|
|
|
|
Redistribui verbetes após a criação de uma nova chave.
|
|
|
|
Parâmetros:
|
|
|
|
* lista
|
|
* chave
|
|
|
|
Ação:
|
|
|
|
* Localiza a nova chave.
|
|
* Analisa o dicionário da chave anterior.
|
|
* Separa os verbetes que agora pertencem à nova chave.
|
|
* Move esses verbetes para o novo dicionário.
|
|
|
|
Exemplo:
|
|
|
|
Antes:
|
|
|
|
Chave A
|
|
|
|
* Abacaxi
|
|
* Banana
|
|
* Morango
|
|
|
|
Após criar a chave M:
|
|
|
|
Chave A
|
|
|
|
* Abacaxi
|
|
* Banana
|
|
|
|
Chave M
|
|
|
|
* Morango
|
|
|
|
---
|
|
|
|
## mover_verbetes_para_listas
|
|
|
|
Redistribui verbetes quando uma chave é removida.
|
|
|
|
Parâmetros:
|
|
|
|
* lista
|
|
* origem
|
|
|
|
Ação:
|
|
|
|
* Percorre todos os verbetes da chave removida.
|
|
* Procura uma nova chave compatível.
|
|
* Reinsere os verbetes.
|
|
* Descarta os verbetes sem destino válido.
|
|
|
|
---
|
|
|
|
## adicionar_dicionario
|
|
|
|
Adiciona uma nova palavra ao sistema.
|
|
|
|
Ação:
|
|
|
|
* Solicita palavra em português.
|
|
* Solicita tradução.
|
|
* Localiza a chave correta.
|
|
* Insere o verbete.
|
|
|
|
---
|
|
|
|
## consultar_lista
|
|
|
|
Exibe todas as chaves cadastradas.
|
|
|
|
Ação:
|
|
|
|
* Percorre a lista principal.
|
|
* Mostra cada chave.
|
|
|
|
---
|
|
|
|
## consultar_dicionario
|
|
|
|
Busca uma palavra específica.
|
|
|
|
Ação:
|
|
|
|
* Procura a palavra em todas as chaves.
|
|
* Exibe a tradução caso encontrada.
|
|
|
|
---
|
|
|
|
## consultar_geral
|
|
|
|
Exibe todo o conteúdo do sistema.
|
|
|
|
Ação:
|
|
|
|
* Mostra todas as chaves.
|
|
* Mostra todos os verbetes de cada chave.
|
|
|
|
---
|
|
|
|
## remover_dicionario
|
|
|
|
Remove uma palavra do sistema.
|
|
|
|
Ação:
|
|
|
|
* Procura a palavra.
|
|
* Remove o verbete.
|
|
* Libera a memória utilizada.
|
|
|
|
---
|
|
|
|
## remover_lista
|
|
|
|
Remove uma chave inteira.
|
|
|
|
Ação:
|
|
|
|
* Remove a chave da lista principal.
|
|
* Redistribui seus verbetes.
|
|
* Libera a memória da chave removida.
|
|
|
|
---
|
|
|
|
## menu
|
|
|
|
Controla a interação com o usuário.
|
|
|
|
Opções:
|
|
|
|
1 - Adicionar chave
|
|
|
|
2 - Adicionar palavra
|
|
|
|
3 - Consultar chaves
|
|
|
|
4 - Consultar palavra
|
|
|
|
5 - Consultar geral
|
|
|
|
6 - Remover chave
|
|
|
|
7 - Remover palavra
|
|
|
|
0 - Sair
|
|
|
|
---
|
|
|
|
# Fluxo Geral do Programa
|
|
|
|
1. Inicializa a lista principal.
|
|
2. Exibe o menu.
|
|
3. Recebe a opção do usuário.
|
|
4. Executa a operação escolhida.
|
|
5. Retorna ao menu.
|
|
6. Encerra quando o usuário selecionar a opção 0.
|
|
|
|
---
|
|
|
|
# Conceitos Aplicados
|
|
|
|
* Ponteiros
|
|
* Alocação dinâmica
|
|
* Listas simplesmente encadeadas
|
|
* Listas duplamente encadeadas
|
|
* Recursão
|
|
* Manipulação de memória
|
|
* Ordenação alfabética
|
|
* Estruturas de dados dinâmicas
|
|
|
|
Lista Principal
|
|
|
|
[A] <-> [M] <-> [S]
|
|
|
|
[A]
|
|
|
|
|
v
|
|
Abacaxi -> Amor -> Avião
|
|
|
|
[M]
|
|
|
|
|
v
|
|
Mesa -> Morango
|
|
|
|
[S]
|
|
|
|
|
v
|
|
Sapato -> Sol |