aprog_leim_1091265_1111263
TRANSCRIPT
7/25/2019 APROG_LEIM_1091265_1111263
http://slidepdf.com/reader/full/aprogleim10912651111263 1/7
1
!"#$%&'(&) + ,%$#%)()-.$
!"#$#%&' )"*+,-'
Ano de 2015/2016
Nome / Sara Belchior / 1091265
João Ribeiro / 1111263
Número / Curso / Engenharia Instrumentação e Metrologia
Data 09/01/2016
7/25/2019 APROG_LEIM_1091265_1111263
http://slidepdf.com/reader/full/aprogleim10912651111263 2/7
2
Índice
Introdução…………………………………………………………3
Desenvolvimento do trabalho.………….…………………………4
Conclusão……………………………………….……………….…7
7/25/2019 APROG_LEIM_1091265_1111263
http://slidepdf.com/reader/full/aprogleim10912651111263 3/7
3
Introdução
No âmbito da unidade curricular Algoritmia e Programação foi proposto à
turma, desenvolver um programa que auxiliasse o processo de gestão de portagens de
uma auto-estrada em linguagem de programação C.
Neste projecto o programa deve registar a informação dos veículos que entram
na autoestrada, bem como todas as portagens onde entraram e saíram, e montantes
pagos.
Este trabalho permiti-nos-á desenvolver uma melhor capacidade de resolver
problemas propostos e ajudará na nossa evolução da aprendizagem de uma liguagem
de programação. Através dele iremos aprender a utilizar certas ferramentas úteis em progamação, como por exemplo vetores e estruturas.
7/25/2019 APROG_LEIM_1091265_1111263
http://slidepdf.com/reader/full/aprogleim10912651111263 4/7
4
Objectivos e Desenvolvimento do trabalho
Para a realização deste projecto foi necessario criar 3 estruturas (uma de
veiculos, uma de portagens e uma de autoestradas) e vectores onde fosse possivel
armazenar toda a informação recolhida pelo utilizador.
Para ser possivel registar a entrada de um veiculo na autoestrada foi criada a
função “registarentrada” onde vai ser possivel perguntar ao utilizador qual é a
matricula e a classe do carro que quer dar entrada na autoestrada, bem como a
portagem onde dá entrada. Já nesta função é feita a validação da classe do carro.
A função “veiculosretidos” tem como função registar todos os veiculos que
ainda não registaram a saída, logo que ainda não saíram da autoestrada. Esta função percorre o vector dos veiculos e verifica quais os veiculos que ainda não têm uma
saida registada e guarda esse veiculos num novo vetor de veiculos retidos.
Para listar os veiculos que ainda se encontram em circulação foi criada a função
“listarretidos” que simplesmente percorre a portagem de saída e caso esteja a 0
(significa que o veiculo ainda não saíu) ele mostra a matricula e a classe dos mesmos.
De seguida criamos a funçã ” pesquisarclasse”, que vai pedir ao utilizador a
classe que pretende procurar (e validando de novo a mesma) e usando o vetor
preenchido na função “veiculosretidos”, ela percorre-o e conta quantos veiculos estão
nesse vetor.
A proxima função ” pesquisarmatricula”, vai fazer pesquisar a uma matricula
introduzida pelo utilizador e vai mostrar se este se encontra na autoestrada ou não e se
ainda estiver em circulação, ela vai vai mostrar em que portagem entrou.
Na função “valorpagar ”, a unica funcionalidade é calcular os valores a pagar por
cada classe, visto que se o veiculo não for de classe 1 tem um valor acrescido a pagar.
A função seguite “registarsaida”, vai registar a saída do veículo da autoestrada,
ela vai listar todos os veiculos que ainda não deram saída da autoestrada, vai pedir para
o utilizador escolher um veiculo e depois listar as possibilidade de saída que o veiculo
e de seguida calcular o valor total a pagar pelo mesmo. Da maneira como foi criada
esta função não é necessario haver uma validação se o veiculo quer dar saida sem ter
dado entrada.
7/25/2019 APROG_LEIM_1091265_1111263
http://slidepdf.com/reader/full/aprogleim10912651111263 5/7
5
De seguida com a função “maismenosfaturado”, vai percorrer o vector de
portagnes e por comparação entre eles vai apresental qual a portagem que mais faturou
e a que menos faturou até ao momento. Apresenta tambem o valor que elas faturaram.
A função “valoranual ”, percorrendo o vetor vai fazendo o sumatorio do valor de
total pago de todas as portagens.
A próxima função “listadecrescente”, de novo vai percorrer o vetor de
autoestrada e comparando o valor das variaveis totalveiculos (trafego que passa em cada
portagem) e faz uma lista decrescente com base nessa variavel.
No menu temos o primeiro conjunto de opções iniciais que irá fazer com que o
utilizador tenha a possibilidade de escolher fazer o que pretende mediante as opções que
lhe são apresentadas.
Na main foram criados todos os vetores necessarios neste programa e foi
tambem adicionada a autoestrada que nos foi fornecida como exemplo para que seja
fosse possivel testar previamente o programa.
7/25/2019 APROG_LEIM_1091265_1111263
http://slidepdf.com/reader/full/aprogleim10912651111263 6/7
6
Limitações Encontradas
Foram encontrados muitos obstáculos no decorrer deste projecto. Um deles foi
com a utilização do “gets” para guardar uma variável do tipo string, pois este método não
aceitava o uso de scanf no decorrer do código, pelo menos achamos que era esse o
problema. Até que decidimos trocar o “gets” para o “fgets” e mesmo assim não
conseguimos solucionar o problema e então por fim decidimos passar também todos os
“scanfs” para “fgets” e imediatamente a seguir, quando a variável era um inteiro ou um
float fez logo a conversão de “string” para, por exemplo, inteiro pelo método “atoi” e só
assim conseguimos contornar este obstáculo. Só tomamos conhecimento que era possível
a utilização do método “atoi” através um nosso colega que frequenta o curso deEngenharia Informática e nos explicou como fazer quando lhe perguntamos o que ele
faria se este problema lhe aparecesse. Outros problemas surgiram como, por exemplo,
para inserir um veiculo, ao preencher os seus dados, o programa, mesmo não sendo
introduzida nenhuma informação relativamente à saída do mesmo, preenche a saída com
informação “lixo” não sendo depois possível para a função de veículos retidos procurar
por saídas “vazias”.
7/25/2019 APROG_LEIM_1091265_1111263
http://slidepdf.com/reader/full/aprogleim10912651111263 7/7
7
Conclusão
Como já foi referido, este trabalho foi muito útil para consolidar vários conceitos
aprendidos em aulas teóricas desta unidade curricular. Saber algumas bases de
programação poderá vir a ser muito útil a nível profissional.
Com este trabalho, através da sua resolução conseguimos absorver bastante
conhecimento relativamente a vetores e apontadores. Permitiu-nos desenvolver a
capacidade de sermos autónomos e foi necessário organizar as ideias que iam surgindo de
modo a conseguir implementa-las no código.
Por fim podemos afirmar que com este projeto, é uma forma de aplicarmos o
nosso conhecimento adquirindo ao longo das aulas práticas e teóricas de Algoritmia eProgramação que nos possibilitou a passagem por alguns obstáculos que fomos
encontrando ao longo da resolução do trabalho. Porém existem muitas melhorias a fazer
ao programa, tais como a verificação da matricula, entre outras. Muitas duvidas surgiram
na conclusão do programa o que dificultou bastante a qualidade do mesmo. Não foram
efectuadas muitas validações possível, uma vez que sem ultrapassar os obstáculos
referidos no decorrer deste relatório não fazia sentido acrescentar mais código, sendo que
a nossa prioridade era primeiro pôr todas as funcionalidade básicas a correr direito e só
depois fazer as várias validações pedidas.