• Nenhum resultado encontrado

Curso de Licenciatura em Engenharia Informática Cadeira de Algoritmia

N/A
N/A
Protected

Academic year: 2021

Share "Curso de Licenciatura em Engenharia Informática Cadeira de Algoritmia"

Copied!
5
0
0

Texto

(1)

Curso de

Licenciatura em Engenharia Informática

Cadeira de Algoritmia

Projecto de avaliação 2006/2007.

Este projecto visa a criação de um back-end para geração de facturas para um sistema de facturação Web. Num hipotético sistema de facturação Web, uma pessoa introduz dados que deseja ver facturados pela sua empresa, carrega num botão e na página seguinte surge-lhe a factura pronta a imprimir com os respectivos totais.

O programa que você vai desenvolver é utilizado pelas páginas que seriam desenvolvidas por outra pessoa, para gerar a factura em si. O seu programa não se preocupa com pedir dados ao utilizador pela Web, e as páginas não se iriam preocupar com gerar a factura: o seu programa faz isso.

É da responsabilidade das páginas que seriam desenvolvidas por outra pessoa, preocupar-se com o ambiente Web. O seu programa deve simplesmente assumir que está a ser chamado pela linha de comandos. Isto que dizer que os requisitos técnicos serão:

• O seu programa deve ser escrito em linguagem C padrão, lendo dados do teclado (ou melhor “entrada padrão” do C – stdin) e escrevendo dados para o ecrã (ou melhor “saída padrão” do C – stdout);

• Todos os dados devem ser lidos com a função scanf() do C;

• Os dados que vão ser fornecidos ao seu programa estarão em formato ASCII simples no conjunto de caracteres US-ASCII, sendo a saída idêntica (ou seja, não se preocupe com caracteres acentuados, não os use no programa, e não se preocupe com HTML, “entity-encoding” e outras situações habituais em programação Web);

Página a pedir dados para a factura.

Botão de “enviar”

O programa deste projecto.

Página que exibe a factura pronta a imprimir.

(2)

Durante o desenvolvimento, seria muito útil poder utilizar-se o seu programa para testar e corrigir erros no processo. Assim, a funcionalidade pretendida é a seguinte:

• O programa deve ler do teclado múltiplas linhas para o descritivo de uma factura. Cada linha deve ser composta de

o nome do produto/serviço (campo de texto com um máximo de 50 caracteres, não podendo conter espaços*)

o data em que o produto/serviço foi prestado (campo de texto com exactamente 10 caracteres no formato AAAA-MM-DD);

o quantidade de unidades compradas/prestadas (campo

float/double);

o preço total por esta linha do descritivo (sem IVA) (campo

float/double);

o percentagem do IVA (e.g. “21.0” = 21%) (campo float/double) • Não deve haver limite para a quantidade de linhas que uma factura pode

ter, enquanto o computador tiver memória livre para as guardar; • O programa deve arrancar e começar imediatamente a pedir linhas de

descritivo para facturas, sem nenhum “menu” inicial: isto para que possa ser chamado a partir da linha de comandos por um comando semelhante a “programa < descritivo-teste.txt”;

• O seu programa sabe que já não há mais linhas de descritivo, quando lê o nome do produto/serviço de uma dessas linhas e esse nome é “*” ou “+” (ou seja, quem estiver a usar o programa, termina a lista de

descritivo escrevendo apenas um asterisco ou símbolo “mais” sozinhos numa linha).

Se o símbolo terminador for o asterisco, o seu programa termina exibindo no ecrã um cabeçalho (“Factura electrónica”), o descritivo que foi introduzido (“bonito”, bem formatado, uma linha de ecrã por linha de descritivo), e ao final exibe o total de IVA, o sub-total dos produtos/serviços sem IVA, e o total final a pagar com a soma desses dois.

Se o símbolo terminador for o “mais”, o seu programa vai agora ler uma série de comandos (strings), um por linha, terminados ao final por um asterisco sozinho. Quando ler o asterisco, o seu programa corre os comandos pela mesma ordem em que foram introduzidos, e sai. Os comandos que ele deve reconhecer são:

• LL – listar a linha “actual” do descritivo (inicialmente, a linha “actual” é a 1ª até ser mudada pelos comandos L+ ou L-);

• L+ – avança a linha “actual” para passar a ser a seguinte (não exibe nada no ecrã nem muda a lista de linhas de descritivo, só muda a linha que será exibida pelo comando LL);

(3)

• L- – recua a linha “actual” para passar a ser a anterior (não exibe nada no ecrã nem muda a lista de linhas de descritivo, só muda a linha que será exibida pelo comando LL);

• LT – listar todo o descritivo tal como foi introduzido inicialmente, ou tal como ficou ordenado pelo último comando LN, LD, LQ, LP ou LI;

• LN – listar o descritivo ordenado pelo nome do produto/serviço; • LD – listar o descritivo ordenado pela data de prestação;

• LQ – listar o descritivo ordenado pela quantidade; • LP – listar o descritivo ordenado pelo preço (sem IVA); • LI – listar o descritivo ordenado pela percentagem de IVA;

• D - apaga (“delete”) a linha actual (ver comandos LL, L+ e L-), passando a linha “actual” a ser a que estava à frente desta;

• I – introduzir mais linhas de descritivo à frente das que já existem, voltando para todos os efeitos ao comportamento inicial do programa.

Encontra exemplo de utilização na página seguinte deste enunciado.

Tal como já deve ter compreendido, espera-se que o programa seja

implementado recorrendo ao uso de listas bidireccionais (duplamente ligadas) que guardam estruturas C em cada elemento. Cada ordenação deve alterar permanentemente a lista. O comando de apagar também deve alterar permanentemente a lista.

Nota: se tiver dificuldades com o uso de listas, aceita-se que o programa seja implementado com vectores (arrays). No entanto a nota máxima de um projecto com vectores é 14 o que significa que um projecto com vectores que cumpra apenas 50% dos critérios de avaliação tem nota 7!

Critérios de avaliação:

• Quantidade de comandos que foram correctamente implementados; • Qualidade do código;

• Exibir correctamente, caracter a caracter, alguns descritivos de teste que o professor irá usar;

• À-vontade em relação ao próprio trabalho, durante a apresentação oral do trabalho.

O projecto deve ser realizado em grupo e apresentado em grupo. A nota do projecto pode ser diferente para cada elemento do grupo. Um elemento do grupo que não apareça ao mesmo tempo que os restantes para a discussão terá nota zero para a apresentação oral do mesmo, e nota reduzida para os

restantes critérios.

Boa Sorte! Pedro Freire

(4)

Anexo: Exemplos de utilização.

Nestes exemplos, o texto que você escreveria está a azul, e o texto que o programa manda para o ecrã está a negro.

Portas 2007-01-02 5 500.2 21 Janelas 2007-01-01 8 1250.8 21 Cortinados 2007-01-01 8 50 5 * Factura electronica Portas 2007-01-02 5.0 500.20 21.0% Janelas 2007-01-01 8.0 1250.80 21.0% Cortinados 2007-01-01 8.0 50.00 5.0% Sub-total: 1801.00 IVA: 370.21 Total a pagar: 2171.21 Portas 2007-01-02 5 500.2 21 Janelas 2007-01-01 8 1250.8 21 Cortinados 2007-01-01 8 50 5 + LL * Portas 2007-01-02 5.0 500.20 21.0% Portas 2007-01-02 5 500.2 21 Janelas 2007-01-01 8 1250.8 21 Cortinados 2007-01-01 8 50 5 + LL LL L+ L+ LL * Portas 2007-01-02 5.0 500.20 21.0% Portas 2007-01-01 5.0 500.20 21.0% Cortinados 2007-01-01 8.0 50.00 5.0%

(5)

Portas 2007-01-02 5 500.2 21 Janelas 2007-01-01 8 1250.8 21 Cortinados 2007-01-01 8 50 5 + D LT * Janelas 2007-01-01 8.0 1250.80 21.0% Cortinados 2007-01-01 8.0 50.00 5.0% Portas 2007-01-02 5 500.2 21 Janelas 2007-01-01 8 1250.8 21 Cortinados 2007-01-01 8 50 5 + LD * Cortinados 2007-01-01 8.0 50.00 5.0% Janelas 2007-01-01 8.0 1250.80 21.0% Portas 2007-01-02 5.0 500.20 21.0% Portas 2007-01-02 5 500.2 21 Janelas 2007-01-01 8 1250.8 21 Cortinados 2007-01-01 8 50 5 + L+ D I LL * Cortinados 2007-01-01 8.0 50.00 5.0% Candeeiros 2007-01-01 3.00 30 21 + LT * Portas 2007-01-02 5.0 500.20 21.0% Cortinados 2007-01-01 8.0 50.00 5.0% Candeeiros 2007-01-01 3.0 30.00 21.0%

Referências

Documentos relacionados

¢ll', ™pe• oÙ m£qon œrga qalassopÒrwn ¡li»wn ka• buq…hj oÙk o‧da dolorrafšoj dÒlon ¥grhj, Leukoqšhj œce dîma baqÚrroon, e„sÒke pÒntou ka• s ka•

O emprego de um estimador robusto em variável que apresente valores discrepantes produz resultados adequados à avaliação e medição da variabilidade espacial de atributos de uma

Após retirar, da maré observada, o valor da maré teórica, aplicou-se uma linha de tendência aos dados resultantes, a qual representa a variação do nível médio das águas no

a) Doenças pré-existentes ao período de viagem (vigência do seguro) e quaisquer de suas conseqüências, incluindo convalescenças e afecções em tratamentos ainda

2) Para fins de entrega da documentação referente à Prova de Títulos, o candidato ou seu respectivo Procurador, deverá preencher o Formulário de Entrega dos Documentos

A Seqüência de Três Níveis oferece um quadro mais amplo de uma situação e pode ser útil para fazer perguntas a respeito da situação de pessoas que não estão fisicamente

Com uma preocupacao maior do que a de executar uma pura descricao do palacio e da cidade de Malia, Effenterre organizou seu trabalho de maneira a abranger temas

No Brasil, estão registradas 19 espécies com ocorrência nos domínios da Amazônia, Caatinga, Cerrado e Floresta Atlântica, três delas no Nordeste, sendo duas em Pernambuco