Universidade Lusófona de Humanidades e Tecnologias Fundamentos de Programação 2014/2015 primeira época v.1.0.0

Documentos relacionados
Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

Melhor caminho entre duas estações de metro

PARADIGMAS DA PROGRAMAÇÃO IV

Introdução aos Algoritmos e Estruturas de Dados 2011/2012

Informática para Ciências e Engenharias-B 2017/18

Teoria da Computação. 2006/2007 Trabalho prático nº 2. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

1 ō Trabalho Prático de Programação Imperativa 2001/2002 Propostas de trabalho

Projecto de Laboratório de Computadores

Encriptação de Mensagens

PROGRAMAÇÃO DE COMPUTADORES I - BCC Aula Prática 04 Exercício 1

AULA TEÓRICA 10. Tema 7. Introdução ao Microsoft Access Ø. conceitos

Informática para Ciências e Engenharias (C) Trabalho Prático /18

Instituto Superior de Engenharia de Lisboa

Universidade Federal de Ouro Preto UFOP. Instituto de Ciências Exatas e Biológicas ICEB. Departamento de Computação DECOM

Ficha 1 Noções de sequência e decisão em algoritmia

ESQUEMA AULA PRÁTICA 1

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

2. Descrição do problema

Informática para Ciências e Engenharias B

Trabalho Prático Data de Entrega : 30 de Maio

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

A linguagem C (visão histórica)

PROGRAMAÇÃO DE MICROPROCESSADORES 2009 / 2010

Introdução aos Algoritmos e Estruturas de Dados 2011/2012

Fundamentos da Programação de Computadores

Trabalho Prático 1 P2P-SDIS

Instituto de Informática Estrutura de Dados II

Portugol. Tiago Alves de Oliveira

Linguagem de programação métodos/funções

Algoritmos e Programação

ESQUEMA AULA PRÁTICA 1

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

X-IntegConfig. Configuração da integração do X-Mobile. Versão 1.0.7

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

Estruturas de Dados I Enunciado do Trabalho Prático

1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível?

Um sistema de difusão de informação a nível da aplicação

Trabalho de Linguagens Formais e Compilação

RESOLUÇÃO. Computação e Programação (2009/2010-1º Semestre) 1º Teste (11/11/2009) Nome. Número. Leia com atenção os pontos que se seguem:

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Desenho de algoritmos

Exercícios Informática II. Línguas e Secretariado

Métodos de Programação I Ana Maria de Almeida

Computação e Programação

Introdução à Programação em C Input / Output

Procalc v1.0. Versão Utilizador (Manual de Utilizador)

Tumblr Aplicação Android. Relatório Final

SSC Linguagem de Programação e Aplicações

COMPUTAÇÃO E PROGRAMAÇÃO

Compiladores - Análise Léxica

ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java.

Fundamentos de programação

Programação. Folha Prática 10. Lab. 10. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Programação. Folha Prática 1. Lab. 1. Departamento de Informática Universidade da Beira Interior Portugal Copyright Ó 2000 All rights reserved.

Identificadores Nome de variáveis, constantes, métodos, etc...

COMPUTAÇÃO E PROGRAMAÇÃO 1º Semestre 2010/2011 MEMec, LEAN

Sobre o envio de trabalhos para o Mooshak

Instrução da CMVM n.º 2/2000 Informação Estatística sobre a Actividade de Execução de Ordens

Cronograma de Aulas - Mococa 1º Módulo 23/05/2009 a 27/06/2009

Fundamentos da Programação. Ano lectivo , 2 o Semestre Projecto Primeira Parte 1. Nim

Tarefa Orientada 3 Criação de tabelas

CEM01 Sistemas de Informação para Gestão

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Instrução da CMVM n.º 2/2005 Carteira de Fundos de Investimento Imobiliário

Conceito de Linguagens de Programação - 1

Legibilidade do código fonte

MACROECONOMIA I. Licenciatura em Economia 2006/2007. Exame Época Especial - 11 Setembro Normas e Indicações: Bom trabalho!

CRITÉRIOS GERAIS DE CLASSIFICAÇÃO

Ficha de Avaliação Sumativa. Notas Gerais:

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

INSTRUÇÃO 1 Crie uma nova Base de Dados na sua disquete cujo nome é Futebol.

3. Linguagem de Programação C

Exercício 1. Quadro Formatar células. Separador Alinhamento. Cláusula Unir Células

Programação III (PG III) Semestre de Verão de º Trabalho prático. Data de Entrega: 12 de Maio de 2016

Apontamentos de. Programação e Algoritmia

MENSAGEM FONADAS. Processamento e envio de mensagens VOZ

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

LEIA ATENTAMENTE AS INSTRUÇÕES PARA A RESOLUÇÃO DO

Oficina de Programação de Drones Fundamentos de Python Prof. Me. José Carlos Perini

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Trabalho Prático 2015 Simulador de Circuitos Opção 1 Versão /11/2013

Compilador de LP3 para C3E e P3

2 Fluxogramas e Pseudocódigo. 18 Programação em C/C++ estrutura básica e conceitos fundamentais

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

UNIVERSIDADE DE AVEIRO PROGRAMAÇÃO I EXAME PRÁTICO

Iniciação à Informática

Macroeconomia - Teste Intercalar 22 de abril de 2015, 12h00 Duração da Prova: 1 hora

O Mundo das Margaridas

Concepção e Fabrico Assistido por Computador

Exercícios de Excel com Programação em VBA. Luís Vieira Lobo

Análise e Síntese de Algoritmos.

Trabalhos de Laboratório de Interpretação e Compilação de Linguagens de Programação

ARQUITETURA DE COMPUTADORES

Familiarização com a ferramenta JavaCC

Engenharia de Software 2º Semestre de 2006/2007

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Transcrição:

Cálculo de salários Introdução e objectivos O Tio Manuel abriu um novo negócio: um restaurante dedicado exclusivamente a entregas de comida ao domicilio. Para apoiar a gestão deste seu novo negócio, contratou a ULHT para desenvolver um programa de calculo de salários dos funcionários responsáveis pelas entregas de comida. O programa deverá ser desenvolvido em linguagem Java. Devem ser implementados os requisitos que se apresentam neste documento. Informação do domínio Como se indicou anteriormente, o principal objectivo do programa é determinar o salário de cada funcionário. Caracterização do Funcionário Os funcionários são caracterizados por: o seu ID de funcionário um número inteiro positivo. o seu nome uma String o seu nível de experiência um número inteiro entre 0 e 5. Calculo de Salário O Salário de um determinado funcionário é calculado da seguinte forma: Salário Bruto = Salário Base + Bónus Salário Líquido = Salário Bruto Imposto * Salário Bruto 1

Salário Base Cada funcionário tem um Salário Base. Este é um valor que o funcionário recebe, independentemente do número de entregas que efectua. Os funcionários com mais experiência recebem um salário base maior. O Salário Base (SB)é calculado da seguinte forma: SB = Remuneração Base + Nível de experiência * 5 O valor actual da Remuneração Baseé de 500.5unidades monetárias. Bónus Para além do Salário Base, cada funcionário recebe um Bónus. O objectivo deste pagamento extra é premiar os funcionários que são mais eficientes no seu trabalho. Desta forma, por cada entrega, é pago um valor monetário extra. Este valor depende do número de quilómetros percorridos para fazer a entrega. Por uma questão de simplificação da realidade, o restaurante divide a área geográfica na qual opera em três zonas (A, B e C). A tabela seguinte apresenta os valores que são pagos actualmente, em cada zona. Zona Valor / encomenda A 0.5 B 0.75 C 1.5 Assim sendo, o Bónusde um funcionário, num determinado mês, é calculado da seguinte forma: Bónus = Enc. Zona A * 0.5 + Enc. Zona B * 0.75 + Enc. Zona C * 1.5 Onde: Enc. Zona Aé o número de encomendas que o funcionário entregou na Zona A. Enc. Zona Bé o número de encomendas que o funcionário entregou na Zona B. Enc. Zona Cé o número de encomendas que o funcionário entregou na Zona C. 2

Imposto Cada funcionário tem ainda de pagar uma parte do seu salário como Impostosobre o seu rendimento. Este Impostoé calculado considerando a seguinte tabela: Salário bruto entre Taxa a aplicar (%) < 505 0 [505; 1000[ 10 [1000; 1500[ 15 >= 1500 20 Exemplo Por exemplo, para um salário bruto de 1350, a Taxa será de 15%. Logo, Salário Bruto = 1350 Imposto = 1350 * 15% = 202.5 Salário Líquido = 1350 202.5 = 1147.5 Programa a desenvolver Input do programa Para alimentar o programa serão usados dois ficheiros de texto, conforme indicados na tabela seguinte. Nome do ficheiro funcionarios.txt entregas.txt Descrição Contém a listagem de funcionários que trabalham para o restaurante. Contém a listagem de entregas efectuadas por cada funcionário, num determinado mês. 3

Estrutura e conteúdo do ficheiro de input funcionarios.txt Onde: <ID Funcionário> : <Nome Funcionário> : <Nível experiência> <ID Funcionário>é um número inteiro positivo; <Nome Funcionário>é uma String; <Nível experiência>é um número inteiro positivo. Notas: Eventuais linhas em branco no ficheiro devem ser ignoradas. É garantido que não aparecem no ficheiro entradas com IDs de funcionário repetidos. Os símbolos <>acima indicados servem apenas como identificador dos vários componentes e não estão presentes nos ficheiros de input. Eventuais espaços em branco à volta do nome do Funcionário devem ser ignorados. p.e. Victor Valente deve ser interpretado como Victor Valente. Estrutura e conteúdo do ficheiro de input entregas.txt Cada linha do ficheiro de input irá conter o nome de um produto e o número de unidades, separados pelo caractere de dois pontos conforme a descrição que se segue: <ID Funcionário> : <Zona Encomenda> : <Peso> Onde: <ID Motorista>é um número inteiro positivo <Zona Encomenda>é um caractere (com os valores A, B ou C ) <Peso Encomenda>é um número inteiro positivo, em gramas (p.e. 200) Output do programa O programa deverá ter como output um ficheiro de texto chamado resultados <data hora>.txt. 4

Onde <data hora> será a concatenação da data e hora de início de execução do programa, no formato AAAAMMDDHH24MISS. Estrutura e conteúdo do ficheiro de output O ficheiro de output deve apresentar a seguinte informação, para cada um dos funcionários: O seu ID de Funcionário. O seu nome. O seu nível de experiência. O número total de encomendas que o funcionário realizou. O número total de encomendas para a Zona A. O número total de encomendas para a Zona B. O número total de encomendas para a Zona C. O peso total transportado pelo funcionário. O peso total transportado para a Zona A. O peso total transportado para a Zona B. O peso total transportado para a Zona C. O valor do Salário Base O valor do Bónus O valor do Salário Bruto A percentagem a pagar de Imposto. O valor a pagar de Imposto O valor do Salário Líquido 5

Notas: Os Pesos devem ser apresentados em quilogramas e com 3 casas decimais. Os Salários e Imposto devem ser apresentado com 3 casas decimais. Esta informação deve ser escrita usando a seguinte sintaxe: Exemplos <Nome> <ID> <Nível experiência> <Total enc> <Total zona A> <Total zona B> <Total zona C> <Peso total> <Peso Zona A> <Peso Zona B> <Peso Zona C> <Salário Base> <Bónus> <Salário Bruto> <Percentagem Imposto> <Valor do Imposto> <Salário Líquido> <Linha em branco> Ficheiros de Input Segue se um exemplo do ficheiro de input funcionarios.txt: 1 : Pedro Reis : 5 2 : Miguel Teles : 5 3 : Nuno Reis : 4 4 : Rafael Carrilho : 3 5 : Nuno Nunes : 3 6 : Osvaldo Pires : 2 7 : Tiago Santos : 2 8 : J. Almeida : 2 9 : Rui Almondegas : 2 10 : Anacleto : 1 11 : José Manuel : 3 12 : Rudolfo Bento : 3 13 : Victor Valente : 1 14 : Lúcia Portugal : 3 15 : Vanessa Santos : 1 6

Segue se um exemplo do ficheiro de input entregas.txt: 1 : A : 250 2 : B : 610 3 : C : 1250 2 : D : 350 3 : A : 250 4 : A : 500 1 : B : 200 5 : C : 300 5 : C : 250 Ficheiro de output Segue se um exemplo que demonstra a estrutura esperada do ficheiro de output: Pedro Reis 1 5 2 1 1 0 0.450 0.250 0.200 0.000 525.500 1.250 526.75 10% 52.675 474.075 Miguel Teles 2 5 (...) Avaliação e cotações O projecto será avaliado tendo em conta os requisitos implementados, através da análise do ficheiro de output. 7

Item Descrição Pontuação Leitura do ficheiro, calculo de salários e outros dados, escrita dos resultados. Legibilidade do código Escrita correcta no ficheiro de output dos dados pedidos, para cada funcionário, respeitando o formato indicado. Inclui: Informação base do funcionário Total de encomendas Sub totais de encomendas (por zona) Peso total, em Kg. Sub totais de peso (por zona) Salário base Bónus Salário bruto Percentagem de Imposto Imposto Salário líquido Nome do ficheiro de output composto pela data e hora, no formato indicado. São seguidas as boas práticas de programação e legibilidade de código exploradas nas aulas. Nomeadamente: Evitar duplicação de código; Nomes significativos para a classe, variáveis e funções; Minimizar o uso de variáveis globais; Evitar o uso de constantes mágicas ; 17 valores 3 valores Entrega A entrega deve ser feita via moodle, usando a pasta de entrega de projecto do Professor 8

correspondente. A data de entrega é 23 de Janeiro, pelas 23h55m. Não serão aceites trabalhos após esta data e hora. Cópias Trabalhos que sejam identificados como cópias serão anulados e os alunos respectivos terão nota zero. A decisão sobre se um trabalho é uma cópia cabe exclusivamente aos docentes da cadeira. Outras informações relevantes Não deve ser implementado qualquer menu para interacção manual com o utilizador. Trabalhos que não leiam e escrevam os ficheiros nos formatos indicados não serão avaliados. Não devem ser adicionados quaisquer cabeçalhos (ou rodapés) aos ficheiros de output. Recomenda se que eventuais dúvidas sobre o enunciado sejam esclarecidas no fórum do moodle de 2014/2015. Os projectos devem ser realizados em grupos de 1 a 3 alunos. Existirá uma defesa presencial e individual do projecto. Durante esta defesa individual, será pedido ao aluno que faça alterações ao código para dar resposta a alterações aos requisitos. É possível que sejam feitas alterações a este enunciado, durante o tempo de desenvolvimento do projecto. Por esta razão, os alunos devem estar atentos ao moodle de FP. 9

Anexo I Excerto de código que determina a Data e Hora actual num determinado formato import java.util.calendar; import java.text.simpledateformat; public static final String DATE_FORMAT = "yyyy MM dd HH:mm:ss"; public static String now() { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); return sdf.format(cal.gettime()); } Nota: O formato de data demonstrado neste exemplo (ver String DATE_FORMAT)não é igual ao formato que é pedido no projecto para criação do ficheiro de output. 10