Giter Club home page Giter Club logo

trabalho_pf's Introduction

Relatório: Manipulação de Mapa em Haskell

Este relatório descreve um conjunto de funções em Haskell que permitem a manipulação de um mapa contendo informações sobre cidades e estradas. O código baseia-se em operações simples de adição e remoção de cidades e estradas no mapa.

Equipe

  • ALEFE FREIRE SANTOS
  • HERNANDISON DA SILVA BISPO
  • JOSE FAGNER SILVA JUNQUEIRA
  • MATHEUS EVANGELISTA OLIVEIRA DA SILVA

1. Estrutura Básica do Mapa

A estrutura básica do mapa é uma lista de tuplas, onde cada tupla representa uma cidade. Cada cidade é composta por um nome, coordenadas (expressas como um par de valores Double) e uma lista de rotas.

type Mapa = [(Nome, Coordenadas, Rotas)]
type Coordenadas = (Double, Double)
type Rotas = [String]

Aqui, Nome representa o nome de uma cidade, Coordenadas são as coordenadas geográficas e Rotas são as estradas associadas à cidade.

2. Adição de Cidades (adcCidade :: IO ())

A função adcCidade permite a adição de uma cidade ao mapa. O usuário é solicitado a fornecer o nome da cidade, suas coordenadas e um arquivo de mapa. A cidade é então adicionada ao mapa existente.

  • A função putStrLn é usada para exibir mensagens no console, solicitando informações ao usuário.
  • getLine é usado para obter entrada do usuário.
  • A função carregarMapa é chamada para carregar o mapa existente a partir de um arquivo.
  • A nova cidade é criada e adicionada ao mapa existente.
  • O novo mapa é salvo em um arquivo chamado "saida.mapa" e exibido no console.

3. Adição de Estradas a uma Cidade (adcEstrada :: IO ())

A função adcEstrada permite adicionar novas estradas a uma cidade existente no mapa. O usuário fornece o nome da cidade e uma lista de novas estradas.

  • Assim como em adcCidade, o usuário é solicitado a fornecer informações.
  • A função colocarEstrada é usada para adicionar as novas estradas à cidade especificada.
  • A cidade é então atualizada no mapa existente, e o novo mapa é salvo e exibido no console.

4. Remoção de Estradas de uma Cidade (tirarEstrada :: Mapa -> Nome -> Nome -> Mapa)

A função tirarEstrada remove uma estrada especificada de uma cidade no mapa.

  • A função percorre o mapa, encontra a cidade alvo e remove a estrada indicada.
  • O novo mapa com a estrada removida é retornado.

5. Remoção de Cidades (rmvCidade :: IO ())

A função rmvCidade permite ao usuário remover uma cidade do mapa.

  • Similar às funções anteriores, as informações são solicitadas ao usuário.
  • A função remover é usada para remover a cidade alvo do mapa.
  • A função tirarEstrada é chamada para remover a estrada associada à cidade que está sendo removida.
  • O novo mapa é então salvo e exibido no console.

Conclusão

Essas funções em Haskell permitem ao usuário interagir com um mapa, adicionando e removendo cidades e estradas de maneira simples e interativa. Elas utilizam conceitos básicos da linguagem, como entrada/saída, manipulação de listas e definição de tipos, proporcionando uma introdução inicial ao desenvolvimento de algoritmos em Haskell.

Observação

  • Sempre que um mapa for manipulado a saida dele será salva no arquivo saida.mapa

Requisitos Entrega 01

  • Criação dos tipos de dados que representam os mapas, cidades, estradas, e o que mais julgarem necessário
  • Função sem entrada e que retorna um mapa vazio
  • Função que, dado o mapa, o nome de uma cidade e as coordenadas da cidade, adiciona a cidade ao mapa
  • Função que, dado o nome de uma cidade e um mapa, retorna o mapa sem a cidade (e, consequentemente, remove as rotas que a envolvam)
  • Função que adiciona uma estrada a um mapa
  • Função que remove uma estrada de um mapa
  • Função que carrega um mapa de um arquivo (vide Subseção 1.1)
  • Função que salva um mapa em um arquivo (vide Subseção 1.1)
  • Função que salva um mapa como uma imagem (será fornecido código de apoio)

Requisitos Entrega 02

  • Função que, dadas duas cidades, calcula a distância euclidiana entre elas
  • Função que, dadas duas cidades, indica se há ou não uma estrada entre elas
  • Função que, dadas duas cidades, indica se há ou não uma rota entre elas
  • Função que, dada uma cidade, retorna os nomes das cidades conectadas a ela por uma estrada
  • Função que, dadas duas cidades, mostra as cidades que aparecem em uma rota entre elas – se houver. Havendo rota, não precisa ser a mais curta.
  • Função que, dadas duas cidades, calcula a comprimento da rota entre elas (somatório das distâncias euclidianas entre as cidades que formam a rota)
  • Códigos de teste para estas funções (comandos do GHCi)

Requisitos Concluidos Entrega 02

  • Função que, dadas duas cidades, calcula a distância euclidiana entre elas
  • Função que, dadas duas cidades, indica se há ou não uma estrada entre elas
  • Função que, dadas duas cidades, indica se há ou não uma rota entre elas
  • Função que, dada uma cidade, retorna os nomes das cidades conectadas a ela por uma estrada
  • Função que, dadas duas cidades, mostra as cidades que aparecem em uma rota entre elas – se houver. Havendo rota, não precisa ser a mais curta.
  • Função que, dadas duas cidades, calcula a comprimento da rota entre elas (somatório das distâncias euclidianas entre as cidades que formam a rota)
  • Códigos de teste para estas funções (comandos do GHCi)

trabalho_pf's People

Contributors

fagnerjunqueira avatar feale00 avatar hernandison avatar mathiosbr avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.