Funda¸
c˜
ao CECIERJ - Vice Presidˆ
encia de Educa¸
c˜
ao Superior a Distˆ
ancia
Curso de Tecnologia em Sistemas de Computa¸
c˜
ao
Disciplina: Programa¸
c˜
ao com Interfaces Gr´
aficas
AD2 2
osemestre de 2021.
Professores: Mario Benevides e Paulo Roma
AD2: Desconto Racional por Dentro
1
Objetivo
O objetivo da AD2 ´
e complementar as tarefas que ficaram faltando na AD1:
• O projeto proposto na AD1 ´e extremamente pr´
atico e atual. Ele versa sobre juros
compostos e diversos bancos oferecem algo similar, via uma interface gr´
afica acessada
com a utiliza¸c˜
ao de um navegador qualquer. Por exemplo, considere-se a calculadora do
cidad˜
ao do Banco Central do Brasil
1. Embora ela tenha sido implementada pelo BC,
ela ´
e mal projetada, visualmente feia, e se algu´
em tentar preencher valores da tabela,
provavelmente obter´
a um erro dizendo algo como: ”• Informe 3 valores e pressione o
bot˜
ao ’Calcular’ para obter o 4
o•”, conforme pode ser visto na Figura 1.
Nesse caso, restam trˆ
es op¸c˜
oes:
– tentar adivinhar como o programa funciona, ou
– procurar uma alternativa diferente de alguma outra institui¸c˜
ao financeira, ou
– implementar a sua pr´
opria calculadora.
Portanto, como nosso curso ´
e sobre interfaces gr´
aficas, vamos analisar trˆ
es maneiras
diferentes de implementar uma interface funcional para o problema em quest˜
ao.
1: Uma interface textual exibida diretamente numa janela do seu terminal.
2: Utilizando componentes de interface apropriados.
1
https://www3.bcb.gov.br/CALCIDADAO/publico/exibirFormFinanciamentoPrestacoesFixas.do?
Figura 1: Calculadora do Cidad˜
ao.
– Normalmente, usu´
arios n˜
ao est˜
ao acostumados a usar terminais que executam um
shell qualquer, como bash ou tcsh.
– Portanto, ´
e mais indicado criar a calculadora usando componentes de interface
adequados fornecidos pelo tkinter
2. N˜
ao existe uma forma fixa. Tente ser criativo
e implemente a interface mais apropriada.
3: Atrav´
es de uma interface gr´
afica implementada com HTML/CSS e que roda em um
navegador qualquer
3 4.
Nessa AD2, vocˆ
e dever´
a implementar as duas primeiras op¸c˜
oes, apenas. A terceira op¸c˜
ao
foi abordada de alguma forma na AD1, mas se vocˆ
e quiser tentar escrever uma interface
HTML/CSS diferente da nossa, sinta-se `
a vontade...
2
https://docs.python.org/3/library/tkinter.html
3http://orion.lcg.ufrj.br/python/html/cdc.html
42
Diretivas Gerais
Para ajud´
a-lo a implementar uma interface textual, fornecemos o c´
odigo b´
asico para manter
a intera¸c˜
ao com o usu´
ario.
r a i s e V a l u e E r r o r ( str ( msg ))
# o p t s is an o p t i o n l i s t of p a i r s [( o p t i o n 1 , a r g u m e n t 1 ) , ( o p t i o n 2 , a r g u m e n t 2 )] # a r g s is t h e l i s t of p r o g r a m a r g u m e n t s l e f t a f t e r t h e o p t i o n l i s t w a s s t r i p p e d # f o r i n s t a n c e , " m o v e . py - h - - h e l p 1 2" , s e t s o p t s a n d a r g s to :
# [( ’ - h ’ , ’ ’) , ( ’ - - h e l p ’ , ’ ’)] [ ’1 ’ , ’2 ’]
pv -= pmt # p r e ¸c o `a v i s t a m e n o s a e n t r a d a p r i n t ( " V a l o r f i n a n c i a d o = %.2 f - %.2 f = %.2 f " % ( pv + pmt , pmt , pv )) p r i n t ( " C o e f i c i e n t e de F i n a n c i a m e n t o : % f " % cf ) p r i n t ( " P r e s t a ¸c ~a o : $ %.2 f " % pmt ) # T a b e l a P r i c e if d e b u g : p r i n t T a b l e ( p r i c e T a b l e ( np , pv , t , pmt )) if _ _ n a m e _ _ == " _ _ m a i n _ _ " : sys . e x i t ( m a i n ())
C´
odigo 1: 02f rational.py
O c´
odigo 1 permite executar a calculadora no modo texto, sem o uso de qualquer tipo de
inter-face gr´
afica, como pode ser visto abaixo, no c´
odigo 2, em substitui¸c˜
ao a interface HTML/CSS
da Figura 2.
Desta forma, ´
e mais f´
acil criar testes espec´ıficos para cada m´
etodo. Abaixo, est´
a impressa
a sa´ıda da utiliza¸c˜
ao da interface textual, na simula¸c˜
ao real de um empr´
estimo do Banco do
Brasil contra´ıdo em 2019, com 96 parcelas mensais e taxa de 4.98% ao mˆ
es. Um claro exemplo
de agiotagem expl´ıcita: 383% em oito anos.
r o m a : $ _ 0 2 f _ r a t i o n a l . py - - p a r c e l a s =96 - - t a x a = 4 . 5 5 - - v a l o r V = 2 3 0 0 0 - - v a l o r P = 1 1 1 0 6 4 . 8 0 O pre ¸c o `a v i s t a ´e m e n o r ou i g u a l do que pre ¸c o t o t a l c o r r i g i d o . T a x a R e a l = 4 . 9 8 2 9 % , I t e r a ¸c ~o es = 3 , F a t o r = 0 . 2 2 5 7 Pre ¸c o `a v i s t a + j u r o s de 4 . 5 5 % ao m ^e s = $ 1 0 1 8 8 6 .36 Pre ¸c o a p r a z o - j u r o s de 4 . 5 5 % ao m ^e s = $ 2 5 0 7 1 .96 J u r o s E m b u t i d o s = ( $ 1 1 1 0 6 4 .80 - $ 2 3 0 0 0 . 0 0 ) / $ 2 3 0 0 0 .00 * 100 = 3 8 2 . 8 9 % D e s c o n t o = ( $ 1 1 1 0 6 4 .80 - $ 2 3 0 0 0 . 0 0 ) / $ 1 1 1 0 6 4 .80 * 100 = 7 9 . 2 9 % E x c e s s o = $ 2 5 0 7 1 .96 - $ 2 3 0 0 0 .00 = $ 2 0 7 1 .96 E x c e s s o = ( $ 1 1 1 0 6 4 .80 - $ 1 0 1 8 8 6 . 3 6 ) * 0 . 2 2 5 7 = $ 2 0 7 1 .96 P e r c e n t u a l p a g o a m a i s = 8 . 2 6 % C o e f i c i e n t e de F i n a n c i a m e n t o : 0 . 0 4 6 1 4 4 P r e s t a ¸c ~a o : $ 1 0 6 1 .32
Note - se que t a x a i n f o r m a d a foi m e n o r do que a t a x a r e a l .
Figura 4: Lavadora Brastemp.
Considere-se, agora, o exemplo da Figura 4:
pre¸co `
a vista = R$ 1889.10, e a
prazo = R$ 2099.00, quando parcelado em 12 vezes sem juros. Nesse caso, o juros real ´
e
de 1.66% ao mˆ
es (contra 0.12% da poupan¸ca), e n˜
ao zero, como sugerido. Por outro lado, o
U s a g e ./ _ 0 2 f _ r a t i o n a l . py - n [ n o ¯ p a r c e l a s ] - t [ t a x a ] - x [ v a l o r a p r a z o ] - y [ v a l o r `a v i s t a ] - e [ e n t r a d a ] - v [ m o d o v e r b o s o ] r o m a : $ _ 0 2 f _ r a t i o n a l . py - n12 - t0 - x 2 0 9 9 - y 1 8 8 9 .10 - v T a x a = 1 . 6 5 9 4 % - 7 i t e r a ¸c ~o es O pre ¸c o `a v i s t a ´e i g u a l ao pre ¸c o t o t a l c o r r i g i d o . T a x a R e a l = 1 . 6 5 9 4 % , I t e r a ¸c ~o es = 7 , F a t o r = 0 . 9 0 0 0 Pre ¸c o `a v i s t a + j u r o s de 1 . 6 6 % ao m ^e s = $ 2 0 9 9 .00 Pre ¸c o a p r a z o - j u r o s de 1 . 6 6 % ao m ^e s = $ 1 8 8 9 .10 J u r o s E m b u t i d o s = ( $ 2 0 9 9 .00 - $ 1 8 8 9 . 1 0 ) / $ 1 8 8 9 .10 * 100 = 1 1 . 1 1 % D e s c o n t o = ( $ 2 0 9 9 .00 - $ 1 8 8 9 . 1 0 ) / $ 2 0 9 9 .00 * 100 = 1 0 . 0 0 % E x c e s s o = $ 1 8 8 9 .10 - $ 1 8 8 9 .10 = $ - 0 . 0 0 E x c e s s o = ( $ 2 0 9 9 .00 - $ 2 0 9 9 . 0 0 ) * 0 . 9 0 0 0 = $ - 0 . 0 0 P e r c e n t u a l p a g o a m a i s = -0.00% C o e f i c i e n t e de F i n a n c i a m e n t o : 0 . 0 9 2 5 9 3 P r e s t a ¸c ~a o : $ 1 7 4 .92 T a b e l a P r i c e _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | M ^e s | P r e s t a ¸c ~a o | J u r o s | A m o r t i z a ¸c ~a o | S a l d o D e v e d o r | | _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | | 1 | 1 7 4 . 9 2 | 3 1 . 3 5 | 1 4 3 . 5 7 | 1 7 4 5 . 5 3 | | 2 | 1 7 4 . 9 2 | 2 8 . 9 6 | 1 4 5 . 9 5 | 1 5 9 9 . 5 8 | | 3 | 1 7 4 . 9 2 | 2 6 . 5 4 | 1 4 8 . 3 7 | 1 4 5 1 . 2 0 | | 4 | 1 7 4 . 9 2 | 2 4 . 0 8 | 1 5 0 . 8 4 | 1 3 0 0 . 3 7 | | 5 | 1 7 4 . 9 2 | 2 1 . 5 8 | 1 5 3 . 3 4 | 1 1 4 7 . 0 3 | | 6 | 1 7 4 . 9 2 | 1 9 . 0 3 | 1 5 5 . 8 8 | 9 9 1 . 1 5 | | 7 | 1 7 4 . 9 2 | 1 6 . 4 5 | 1 5 8 . 4 7 | 8 3 2 . 6 8 | | 8 | 1 7 4 . 9 2 | 1 3 . 8 2 | 1 6 1 . 1 0 | 6 7 1 . 5 8 | | 9 | 1 7 4 . 9 2 | 1 1 . 1 4 | 1 6 3 . 7 7 | 5 0 7 . 8 0 | | 10 | 1 7 4 . 9 2 | 8 . 4 3 | 1 6 6 . 4 9 | 3 4 1 . 3 1 | | 11 | 1 7 4 . 9 2 | 5 . 6 6 | 1 6 9 . 2 5 | 1 7 2 . 0 6 | | 12 | 1 7 4 . 9 2 | 2 . 8 6 | 1 7 2 . 0 6 | 0 . 0 0 | | _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | | T o t a l | 2 0 9 9 . 0 0 | 2 0 9 . 9 0 | 1 8 8 9 . 1 0 | 0 | | _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ |
C´
odigo 2: Calculadora - sa´ıda modo texto.
Se vocˆ
e utilizou a API sugerida na AD1, o c´
odigo 1 rodar´
a sem modifica¸c˜
ao alguma. Caso,
contr´
ario, ser´
a necess´
ario adaptar as chamadas dos m´
etodos utilizados. De qualquer forma,
todo o seu c´
odigo dever´
a estar documentado de acordo com o Doxygen
5e seguir as diretivas
do PEP8
6 7.
5