4.7 KiB
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
- Inicializa a lista principal.
- Exibe o menu.
- Recebe a opção do usuário.
- Executa a operação escolhida.
- Retorna ao menu.
- 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