EXERCCIO 1 - CONHECIMENTO DELPHI
Uma loja vende DVDs por R$ 1,10 a unidade. Acima de 10 unidades, ser
vendido cada DVD por R$ 1,00 a unidade adicional e acima de 20 unidades,
ser vendido cada unidade adicional a R$ 0,90. Exemplo, vendendo 21
unidades dever ser cobrado 10x1.10+10x1.00+1x0.90. Escreva uma
funo (utilizando Delphi / Pascal) que receba a quantidade de DVDs a ser
vendida e retorne o valor desta venda.
EXERCCIO 2 - CONHECIMENTO DELPHI COM BANCO DE DADOS
Dado o problema do exerccio 1 e procurando ter uma forma mais flexvel
para o usurio, o analista de requisito escreveu o requisito abaixo:
REQUISITO: Calcular preo de venda: O valor de venda do produto 
definido no campo valor da tabela Produto. O valor de venda diminui 
medida que a quantidade a ser vendida aumenta. Este valor ser vlido at
a quantidade da prxima faixa.  importante ressaltar que o produto no
assume o valor da respectiva faixa de quantidade e sim, ele  vendido cada
faixa com seu respectivo valor, devendo ao final ser calculado o valor total
do produto. Por exemplo, a venda de 21 unidades de um produto com valor
de venda de R$ 1,10 de 1 a 10 unidades, R$ 1,00 de 11 a 20 unidades e R$
0,90 acima de 20 unidades ser 10x1.10+10x1.00+1x0.90.
Para atender este requisito, o requisito Manter dados do Produto foi
alterado para suportar a tabela com valor progressivo de desconto, ficando
o banco de dados definido conforme o diagrama seguinte:
Dicionrio de Dados:
TABELA: PRODUTO
CAMPO
DESCRIO
codigo
Cdigo do produto.
Chave primria
nome
Nome do produto
valor
Valor de venda do produto.
O produto tem este valor de venda at a quantidade atingir
(inclusive) o valor da prxima faixa estabelecida na tabela
produtodesconto.
TABELA PRODUTODESCONTO
CAMPO
DESCRIO
codigo
quantidade
valor
Cdigo do produto
Chave primria e estrangeira para a tabela produto.
Quantidade acima da qual o produto  vendido com valor
diferente, devendo o produto ser vendido cada faixa de
quantidade pelo respectivo valor de venda da faixa.
Chave primria
Valor de venda do produto j com desconto embutido (no 
o valor do desconto).
Observao: As questes abaixo devem ser escritas utilizando o
componente de acesso a banco de dados de sua preferncia, desde que o
mesmo herde de TDataset. Utilize a funo abaixo para criar uma instncia
do seu componente com a conexo j estabelecida. Faa o typecast para
a sua classe conforme sua necessidade.
functioncreateDataset():TDataset;
QUESTO A) Escreva o comando SQL para criar as tabelas acima com as
respectivas chaves primrias, estrangeiras e ndice nico.
QUESTO B) Escreva uma funo para inserir um registro na tabela
produto que recebe como parmetro o nome do produto e o valor e retorna
o cdigo que deve ser gerado por esta funo.
QUESTO C) Escreva uma funo para inserir um registro na tabela
ProdutoDesconto que recebe como parmetro o cdigo do produto, a
quantidade inicial da faixa e o valor.
QUESTO D) Escreva uma funo que utilize as funes criadas acima,
para inserir os registros no banco de dados do problema do EXERCCIO 1
QUESTO E) Escreva uma funo que receba como parmetro o cdigo do
produto e a quantidade a ser vendida, e retorne o valor total da venda. Esta
questo, para melhor entendimento,  o algoritmo da questo A, porm,
utilizando as tabelas que foram criadas nas demais questes.
EXEMPLOS DE TESTES PARA A QUESTO E:
E1)
TABELA PRODUTO
Cdigo=1, Nome=DVD, Valor=15,00
TABELA PRODUTODESCONTO
Cdigo=1, Quantidade=20, Valor=14,00
RESULTADO ESPERADO
Para uma venda de 10 unidades, resultado = 15,00 * 10 = 150,00
Para uma venda de 30 unidades, resultado = 15,00 * 20 + 14,00 * 10
= 440,00
E2)
TABELA PRODUTO
Cdigo=1, Nome=DVD, Valor=11,00
TABELA PRODUTODESCONTO
Cdigo=1, Quantidade=5, Valor=10,00
Cdigo=1, Quantidade=12, Valor=9,00
RESULTADO ESPERADO
Para uma venda de 3 unidades, resultado = 11,00 * 3 = 33,00
Para uma venda de 7 unidades, resultado = 11,00 * 5 + 10,00 * 2 =
75,00
Para uma venda de 15 unidades, resultado = 11,00 * 5 + 10,00 * 7 +
9,00 * 3 = 152,00