34
Computa¸ ao I - Python Aula 12 - Te´ orica: Modulariza¸ ao Jo˜ ao C. P. da Silva Carla A. D. M. Delgado Ana Luisa Duboc Dept. Ciˆ encia da Computa¸ ao - UFRJ http://www.dcc.ufrj.br/˜pythonUFRJ/ Computa¸ ao I - Python Aula 12 1 / 25

Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Computacao I - Python

Aula 12 - Teorica: Modularizacao

Joao C. P. da Silva

Carla A. D. M. Delgado

Ana Luisa Duboc

Dept. Ciencia da Computacao - UFRJ

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 1 / 25

Page 2: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquido ecalculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, e do resultado,descontando-se 15% de imposto de renda (IR).

Exemplo

Salario Bruto = R$ 5000,00

Desconto do INSS = R$ 550,00 (11% de R$ 5000,00)

Desconto do IR = R$ 667,50 (15% de R$ 4450,00)

Salario Lıquido = 5000 - (550 + 667,50) = 3782,50

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 2 / 25

Page 3: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquido ecalculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, e do resultado,descontando-se 15% de imposto de renda (IR).

1 de f s a l a r i o L i q u i d o ( s a l a r i o B r u t o ) :2 ”””Dado o s a l a r i o b ru to c a l c u l a o s a l a r i o l i q u i d o3 Entrada : f l o a t4 Saida : f l o a t ”””56 descontoINSS = ( s a l a r i o B r u t o ) ∗0.117 de sc onto IR = ( s a l a r i o B r u t o − descontoINSS ) ∗0.158 s a l a r i o L i q = ( s a l a r i o B r u t o − descontoINSS − de sc onto IR )9 r e t u r n s a l a r i o L i q

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 3 / 25

Page 4: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquido ecalculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, e do resultado,descontando-se 15% de imposto de renda (IR).

1 de f s a l a r i o L i q u i d o ( s a l a r i o B r u t o ) :2 ”””Dado o s a l a r i o b ru to c a l c u l a o s a l a r i o l i q u i d o3 Entrada : f l o a t4 Saida : f l o a t ”””56 descontoINSS = ( s a l a r i o B r u t o ) ∗0.117 de sc onto IR = ( s a l a r i o B r u t o − descontoINSS ) ∗0.158 s a l a r i o L i q = ( s a l a r i o B r u t o − descontoINSS − de sc onto IR )9 r e t u r n s a l a r i o L i q

Note que o calculo do desconto e sempre feito de uma mesma maneira.Podemos entao generalizar seu calculo.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 3 / 25

Page 5: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquido ecalculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, e do resultado,descontando-se 15% de imposto de renda (IR).

1 de f s a l a r i o L i q u i d o ( s a l a r i o B r u t o ) :2 ”””Dado o s a l a r i o b ru to c a l c u l a o s a l a r i o l i q u i d o3 Entrada : f l o a t4 Saida : f l o a t ”””56 descontoINSS = ( s a l a r i o B r u t o ) ∗0.117 de sc onto IR = ( s a l a r i o B r u t o − descontoINSS ) ∗0.158 s a l a r i o L i q = ( s a l a r i o B r u t o − descontoINSS − de sc onto IR )9 r e t u r n s a l a r i o L i q

Note que o calculo do desconto e sempre feito de uma mesma maneira.Podemos entao generalizar seu calculo.

1 de f c a l c u l a d e s c on t o ( va l o rBru to , p e r c e n t u a l ) :2 ”””Dado um v a l o r b ru to e um pe r c e n t u a l de de sc onto3 c a l c u l a o v a l o r com o de sc onto ap l i c a do4 Entrada : f l o a t , f l o a t5 Saida : f l o a t ”””67 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.08 v a l o r L i q u i d o = va l o rBru to−de sc onto9 r e t u r n v a l o r L i q u i d o

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 3 / 25

Page 6: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquido ecalculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, e do resultado,descontando-se 15% de imposto de renda (IR).

1 de f c a l c u l a d e s c on t o ( va l o rBru to , p e r c e n t u a l ) :2 ”””Dado um v a l o r b ru to e um pe r c e n t u a l de de sc onto3 c a l c u l a o v a l o r com o de sc onto ap l i c a do4 Entrada : f l o a t , f l o a t5 Saida : f l o a t ”””67 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.08 v a l o r L i q u i d o = va l o rBru to−de sc onto9 r e t u r n v a l o r L i q u i d o

Usando a funcao acima:

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 4 / 25

Page 7: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquido ecalculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, e do resultado,descontando-se 15% de imposto de renda (IR).

1 de f c a l c u l a d e s c on t o ( va l o rBru to , p e r c e n t u a l ) :2 ”””Dado um v a l o r b ru to e um pe r c e n t u a l de de sc onto3 c a l c u l a o v a l o r com o de sc onto ap l i c a do4 Entrada : f l o a t , f l o a t5 Saida : f l o a t ”””67 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.08 v a l o r L i q u i d o = va l o rBru to−de sc onto9 r e t u r n v a l o r L i q u i d o

Usando a funcao acima:

1 de f s a l a r i o L i q u i d o ( s a l a r i o B r u t o ) :2 ”””Dado o s a l a r i o b ru to c a l c u l a o s a l a r i o l i q u i d o3 Entrada : f l o a t4 Saida : f l o a t ”””56 sa l a r i o s emINSS = c a l c u l a d e s c on t o ( s a l a r i oB r u t o , 1 1 . 0 )7 sa l a r i o s emIRsemINSS = c a l c u l a d e s c on t o ( sa l a r i o s emINSS , 1 5 . 0 )8 r e t u r n sa l a r i o s emIRsemINSS

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 4 / 25

Page 8: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Torna o codigo mais legıvel.

Permite que algumas funcionalidades sejam reaproveitadas.

Permite que partes do codigo sejam testadas isoladamente.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 5 / 25

Page 9: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Torna o codigo mais legıvel.

Permite que algumas funcionalidades sejam reaproveitadas.

Permite que partes do codigo sejam testadas isoladamente.

1 de f c a l c u l a d e s c on t o ( va l o rBru to , p e r c e n t u a l ) :2 ”””Dado um v a l o r b ru to e um pe r c e n t u a l de de sc onto3 c a l c u l a o v a l o r com o de sc onto ap l i c a do4 Entrada : f l o a t , f l o a t5 Saida : f l o a t ”””67 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.08 v a l o r L i q u i d o = va l o rBru to−de sc onto9 r e t u r n v a l o r L i q u i d o

1 >>> c a l c u l a d e s c on t o ( 5000 . 0 0 , 1 1 . 0 )2 4450.034 >>> c a l c u l a d e s c on t o ( 4450 . 0 0 , 1 5 . 0 )5 3782.5

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 5 / 25

Page 10: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que permita o lancamento de notas de uma disciplina e a consulta a taisnotas. O programa deve:

possuir um menu principal com o seguinte layout:

Escolha uma opc~ao :

1 - lancamento de notas de uma disciplina

2 - listar notas de uma disciplina

0 - terminar

Opc~ao :

possuir uma tela para lancamento das notas de uma disciplina com o seguinte layout:

Nome da Disciplina : computacao1

Ano-Periodo (XX-X) : 15-2

matrıcula (0 para terminar) :106041177

Nota : 8.5

matrıcula (0 para terminar) :114123723

Nota : 9.2

matrıcula (0 para terminar) :123041173

Nota : 3.3

matrıcula (0 para terminar) : 0

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 6 / 25

Page 11: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que permita o lancamento de notas de uma disciplina e a consulta a taisnotas. O programa deve:

possuir um menu para escolher qual disciplina tera suas notas apresentadas com oseguinte layout:

Escolha uma disciplina:

1- computacao1-15-2

2- calculo1-15-2

0- terminar

Opc~ao :

possuir uma saıda das notas de uma disciplina com o seguinte layout:

Disciplina - computacao1-15-2

Matrıcula Nota

106041177 8.5

114123723 9.2

123041173 3.3

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 7 / 25

Page 12: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Faca um programa que permita o lancamento de notas de uma disciplina e a consulta a taisnotas. O programa deve:

possuir um dicionario cuja chave e uma string que representa o nome da disciplina e operıodo em que ela foi lecionada, e o seu conteudo sera tambem um dicionario cuja chavee uma string que representa o matrıcula do aluno e seu conteudo e a sua nota.

Exemplo

Notas de Computacao 1 de 2015-2 formam o dicionario {’106041177’: 8.5, ’114123723’:9.2, ’123041173’:3.3}Notas de Calculo 1 de 2015-2 formam o dicionario {’123041173’: 1.4, ’142123343’:4.3, ’187233954’:6.7}Teremos entao um dicionario com todas as disciplinas e suas notas{’computacao1-15-2’ : {’106041177’: 8.5, ’114123723’:9.2, ’123041173’:3.3} ,’calculo1-15-2’ : {’123041173’: 1.4, ’142123343’:4.3, ’187233954’:6.7}}

computacao1-15-2 calculo 1-15-2matrıcula Nota matrıcula Nota106041177 8.5 123041173 1.4114123723 9.2 142123343 4.3123041173 3.3 187233954 6.7

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 8 / 25

Page 13: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

1 de f main ( ) :2 ””” Si stema academico de g e r e n c i a de notas e turmas para uso do p r o f e s s o r ”””34 # D e f i n i r d i c i o n a r i o das notas5 # E x i b i r o menu p r i n c i p a l6 wh i l e opcao != 0 :7 i f opcao == 1:8 # Lancar notas de uma d i s c i p l i n a9 # a c r e s c e n t a r no d i c i o n a r i o as notas de uma d i s c i p l i n a

10 e l i f opcao == 2:11 # Esco l ha de qua l d i s c i p l i n a se que r sabe r as notas12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a13 # Ex i b i r o menu p r i n c i p a l14 i f name == ” ma i n ” :15 main ( )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 9 / 25

Page 14: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

1 de f main ( ) :2 ””” Si stema academico de g e r e n c i a de notas e turmas para uso do p r o f e s s o r ”””34 d i c i o n a r i o D i s c i p l i n a s = {} # De f i n i r d i c i o n a r i o das notas5 # E x i b i r o menu p r i n c i p a l6 wh i l e opcao != 0 :7 i f opcao == 1:8 # Lancar notas de uma d i s c i p l i n a9 # a c r e s c e n t a r no d i c i o n a r i o as notas de uma d i s c i p l i n a

10 e l i f opcao == 2:11 # Esco l ha de qua l d i s c i p l i n a se que r sabe r as notas12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a13 # Ex i b i r o menu p r i n c i p a l14 i f name == ” ma i n ” :15 main ( )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 10 / 25

Page 15: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Passo 1: Fazendo o menu principal:

1 de f menuPr i nc i pa l ( ) :2 ””” Ex i be o menu p r i n c i p a l e r e t o r n a a opcao e s c o l h i d a3 Entrada : none4 Saida : s t r ”””56 p r i n t ( ” E sco l ha uma das opcoes : ” )7 p r i n t ( ”1− l ancamento de notas de uma d i s c i p l i n a ” )8 p r i n t ( ”2− l i s t a r notas de uma d i s c i p l i n a ” )9 p r i n t ( ”0− t e rm i n a r” )

10 opcao = i npu t ( ”Opcao : ” )11 r e t u r n opcao

Para testar esta funcao, basta chama-la no console digitando menuPrincipal().

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 11 / 25

Page 16: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

1 de f main ( ) :2 ””” Si stema academico de g e r e n c i a de notas e turmas para uso do p r o f e s s o r ”””34 d i c i o n a r i o D i s c i p l i n a s = {} # De f i n i r d i c i o n a r i o das notas5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l6 wh i l e opcao != 0 :7 i f opcao == 1:8 # Lancar notas de uma d i s c i p l i n a9 # a c r e s c e n t a r no d i c i o n a r i o as notas de uma d i s c i p l i n a

10 e l i f opcao == 2:11 # Esco l ha de qua l d i s c i p l i n a se que r sabe r as notas12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a13 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l14 i f name == ” ma i n ” :15 main ( )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 12 / 25

Page 17: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Passo 2: Fazendo a tela para lancamento das notas de uma disciplina.

Nome da Disciplina : computacao1

Ano-Periodo (XX-X) : 15-2

matrıcula (0 para terminar) :106041177

Nota : 8.5

matrıcula (0 para terminar) :114123723

Nota : 9.2

matrıcula (0 para terminar) :123041173

Nota : 3.3

matrıcula (0 para terminar) : 0

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 13 / 25

Page 18: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Passo 2: Fazendo a tela para lancamento das notas de uma disciplina.

Nome da Disciplina : computacao1

Ano-Periodo (XX-X) : 15-2

matrıcula (0 para terminar) :106041177

Nota : 8.5

matrıcula (0 para terminar) :114123723

Nota : 9.2

matrıcula (0 para terminar) :123041173

Nota : 3.3

matrıcula (0 para terminar) : 0

Lembre que:

Devemos perguntar o nome da disciplina e o ano-perıodo que ela foi oferecida. Usaremosestas informacoes para construir a chave do dicionario.

As notas devem ser armazenadas em um dicionario onde a chave deve ser o matrıcula doaluno e o conteudo deve ser a nota obtida na materia.

E se a disciplina-ano-periodo ja estiver no dicionario?

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 13 / 25

Page 19: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Passo 2: Fazendo a tela para lancamento das notas de uma disciplina.

Nome da Disciplina : computacao1

Ano-Periodo (XX-X) : 15-2

matrıcula (0 para terminar) :106041177

Nota : 8.5

matrıcula (0 para terminar) :114123723

Nota : 9.2

matrıcula (0 para terminar) :123041173

Nota : 3.3

matrıcula (0 para terminar) : 0

1 de f l anc a rNotas ( ) :2 ””” Funcao para lancamento de notas de uma d i s c i p l i n a3 Entrada : none4 Saida : s t r , d i c t ”””56 d i c i o n a r i oN o t a s = {}7 d i s c i p l i n a = i npu t ( ”Nome da D i s c i p l i n a : ” )8 p e r i o d o = i npu t ( ”Ano−Pe r i odo (XX−X) : ” )9 nomeD i s c i p l i n a = d i s c i p l i n a+’− ’+p e r i o d o

10 ma t r i c u l a = i npu t ( ’ Ma t r i c u l a (0 para t e rm i n a r ) : ’ )11 wh i l e ma t r i c u l a != ’ 0 ’ :12 nota = f l o a t ( i n pu t ( ’ Nota : ’ ) )13 d i c i o n a r i oN o t a s [ ma t r i c u l a ] = nota14 ma t r i c u l a = i npu t ( ’ Ma t r i c u l a (0 para t e rm i n a r ) : ’ )15 r e t u r n ( nomeDi sc i p l i na , d i c i o n a r i oN o t a s )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 14 / 25

Page 20: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Passo 2: Fazendo a tela para lancamento das notas de uma disciplina.

1 de f l anc a rNotas ( ) :2 ””” Funcao para lancamento de notas de uma d i s c i p l i n a3 Entrada : none4 Saida : s t r , d i c t ”””56 d i c i o n a r i oN o t a s = {}7 d i s c i p l i n a = i npu t ( ”Nome da D i s c i p l i n a : ” )8 p e r i o d o = i npu t ( ”Ano−Pe r i odo (XX−X) : ” )9 nomeD i s c i p l i n a = d i s c i p l i n a+’− ’+p e r i o d o

10 ma t r i c u l a = i npu t ( ’ Ma t r i c u l a (0 para t e rm i n a r ) : ’ )11 wh i l e ma t r i c u l a != ’ 0 ’ :12 nota = f l o a t ( i n pu t ( ’ Nota : ’ ) )13 d i c i o n a r i oN o t a s [ ma t r i c u l a ] = nota14 ma t r i c u l a = i npu t ( ’ Ma t r i c u l a (0 para t e rm i n a r ) : ’ )15 r e t u r n ( nomeDi sc i p l i na , d i c i o n a r i oN o t a s )

Teste esta funcao para os valores da seguinte tabela:

computacao1-15-2 calculo 1-15-2matrıcula Nota matrıcula Nota106041177 8.5 123041173 1.4114123723 9.2 142123343 4.3123041173 3.3 187233954 6.7

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 15 / 25

Page 21: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Passo 2: Fazendo a tela para lancamento das notas de uma disciplina.

1 de f l anc a rNotas ( ) :2 ””” Funcao para lancamento de notas de uma d i s c i p l i n a3 Entrada : none4 Saida : s t r , d i c t ”””56 d i c i o n a r i oN o t a s = {}7 d i s c i p l i n a = i npu t ( ”Nome da D i s c i p l i n a : ” )8 p e r i o d o = i npu t ( ”Ano−Pe r i odo (XX−X) : ” )9 nomeD i s c i p l i n a = d i s c i p l i n a+’− ’+p e r i o d o

10 ma t r i c u l a = i npu t ( ’ Ma t r i c u l a (0 para t e rm i n a r ) : ’ )11 wh i l e ma t r i c u l a != ’ 0 ’ :12 nota = f l o a t ( i n pu t ( ’ Nota : ’ ) )13 d i c i o n a r i oN o t a s [ ma t r i c u l a ] = nota14 ma t r i c u l a = i npu t ( ’ Ma t r i c u l a (0 para t e rm i n a r ) : ’ )15 r e t u r n ( nomeDi sc i p l i na , d i c i o n a r i oN o t a s )

Retorno da funcao para cada disciplina:

(’computacao1-15-2’, {’106041177’: 8.5, ’114123723’: 9.2, ’123041173’: 3.3})

(’calculo1-15-2’, {’123041173’: 1.4, ’142123343’: 4.3, ’187233954’: 6.7})

Vamos usar esta tupla para construir o dicionario com todas as disciplinas e suas respectivas

notas.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 16 / 25

Page 22: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

1 de f main ( ) :2 ””” Si stema academico de g e r e n c i a de notas e turmas para uso do p r o f e s s o r ”””34 d i c i o n a r i o D i s c i p l i n a s = {} # De f i n i r d i c i o n a r i o das notas5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l6 wh i l e opcao != 0 :7 i f opcao == 1:8 nomeDi sc i p l i na , d i c i o n a r i oN o t a s = l anca rNotas ( ) # Lancar notas de uma d i s c i p l i n a9 # a c r e s c e n t a r no d i c i o n a r i o as notas de uma d i s c i p l i n a

10 e l i f opcao == 2:11 # Esco l ha de qua l d i s c i p l i n a se que r sabe r as notas12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a13 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l14 i f name == ” ma i n ” :15 main ( )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 17 / 25

Page 23: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

1 de f main ( ) :2 ””” Si stema academico de g e r e n c i a de notas e turmas para uso do p r o f e s s o r ”””34 d i c i o n a r i o D i s c i p l i n a s = {} # De f i n i r d i c i o n a r i o das notas5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l6 wh i l e opcao != 0 :7 i f opcao == 1:8 # Lancar notas de uma d i s c i p l i n a9 nomeDi sc i p l i na , d i c i o n a r i oN o t a s = l anca rNotas ( )

10 # Ac r e s c e n t a r no d i c i o n a r i o as notas de uma d i s c i p l i n a11 d i c i o n a r i o D i s c i p l i n a s [ n omeD i s c i p l i n a]= d i c i o n a r i oNo t a s12 e l i f opcao == 2:13 # Esco l ha de qua l d i s c i p l i n a se que r sabe r as notas14 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a15 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l16 i f name == ” ma i n ” :17 main ( )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 18 / 25

Page 24: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.Passo 3: Vamos fazer um menu para escolher qual disciplina tera suas notas apresentadas.

Escolha uma disciplina:

1- computacao1-15-2

2- calculo1-15-2

0- terminar

Opc~ao :

Lembre que:

Os nomes das disciplinas serao as chaves do dicionario dicionarioDisciplinas.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 19 / 25

Page 25: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.Passo 3: Vamos fazer um menu para escolher qual disciplina tera suas notas apresentadas.

Escolha uma disciplina:

1- computacao1-15-2

2- calculo1-15-2

0- terminar

Opc~ao :

Lembre que:

Os nomes das disciplinas serao as chaves do dicionario dicionarioDisciplinas.

1 de f me nuD i s c i p l i n a s ( D i s c i p l i n a s ) :2 ”””Mostra o menu para e s c o l h e r as d i s c i p l i n a s3 Entrada : l i s t4 Saida : s t r i n g ”””56 p r i n t ( ” E sco l ha uma d i s c i p l i n a : ” )7 f o r i n d i c e i n range ( l e n ( D i s c i p l i n a s ) ) :8 p r i n t ( i n d i c e +1,”− ” , D i s c i p l i n a s [ i n d i c e ] )9 p r i n t ( ”0− t e rm i n a r” )

10 opcao = i npu t ( ”Opcao : ” )11 r e t u r n D i s c i p l i n a s [ opcao−1]

Teste a funcao com a lista [’computacao1-15-2’,’calculo1-15-2’]

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 19 / 25

Page 26: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

1 de f main ( ) :2 ””” Si stema academico de g e r e n c i a de notas e turmas para uso do p r o f e s s o r ”””34 d i c i o n a r i o D i s c i p l i n a s = {} # De f i n i r d i c i o n a r i o das notas5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l6 wh i l e opcao != 0 :7 i f opcao == 1:8 # Lancar notas de uma d i s c i p l i n a9 nomeDi sc i p l i na , d i c i o n a r i oN o t a s = l anca rNotas ( )

10 # Ac r e s c e n t a r no d i c i o n a r i o as notas de uma d i s c i p l i n a11 d i c i o n a r i o D i s c i p l i n a s [ n omeD i s c i p l i n a]= d i c i o n a r i oNo t a s12 e l i f opcao == 2:13 # Con s t r o i uma l i s t a com os nomes das d i s c i p l i n a s14 D i s c i p l i n a s = d i c t . k e y s ( d i c i o n a r i o D i s c i p l i n a s )15 # Esco l ha de qua l d i s c i p l i n a se que r sabe r as notas16 D i s c i p l i n a S e l e c i o n a d a = menuD i s c i p l i n a s ( D i s c i p l i n a s )17 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a18 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l19 i f name == ” ma i n ” :20 main ( )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 20 / 25

Page 27: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.Passo 4: Vamos fazer uma funcao para mostrar as notas de uma disciplina. Lembre que:

A entrada desta funcao vai ser o dicionario com as notas de uma certa disciplina.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 21 / 25

Page 28: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.Passo 4: Vamos fazer uma funcao para mostrar as notas de uma disciplina. Lembre que:

A entrada desta funcao vai ser o dicionario com as notas de uma certa disciplina.

1 de f impr imeNotas ( D i s c i p l i n a S e l e c i o n a d a , n o t a sD i s c i p l i n a ) :2 ””” impr ime as notas de uma d i s c i p l i n a3 Entrada : s t r i n g (nome da d i s c i p l i n a ) , d i c t ( a l uno : nota )4 Saida : none ”””56 p r i n t ( ” D i s c i p l i n a − ”+D i s c i p l i n a S e l e c i o n a d a )7 p r i n t ( ” Ma t r i c u l a NOTA” )8 f o r a l uno i n n o t a sD i s c i p l i n a :9 p r i n t ( s t r . format ( ”{0} {1 : 2 . 1 f}” , a luno , n o t a s D i s c i p l i n a [ a l uno ] ) )

10 r e t u r n

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 21 / 25

Page 29: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.Passo 4: Vamos fazer uma funcao para mostrar as notas de uma disciplina. Lembre que:

A entrada desta funcao vai ser o dicionario com as notas de uma certa disciplina.

1 de f impr imeNotas ( D i s c i p l i n a S e l e c i o n a d a , n o t a sD i s c i p l i n a ) :2 ””” impr ime as notas de uma d i s c i p l i n a3 Entrada : s t r i n g (nome da d i s c i p l i n a ) , d i c t ( a l uno : nota )4 Saida : none ”””56 p r i n t ( ” D i s c i p l i n a − ”+D i s c i p l i n a S e l e c i o n a d a )7 p r i n t ( ” Ma t r i c u l a NOTA” )8 f o r a l uno i n n o t a sD i s c i p l i n a :9 p r i n t ( s t r . format ( ”{0} {1 : 2 . 1 f}” , a luno , n o t a s D i s c i p l i n a [ a l uno ] ) )

10 r e t u r n

Teste esta funcao para as seguintes chamadas:

imprimeNotas(”computacao1-15-2”,{’106041177’: 8.5, ’114123723’:9.2,’123041173’:3.3})

imprimeNotas(”calculo1-15-2”,{’123041173’: 1.4, ’142123343’:4.3, ’187233954’:6.7})

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 21 / 25

Page 30: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Vamos resolver este problema passo a passo.

A funcao main()

1 de f main ( ) :2 ””” Si stema academico de g e r e n c i a de notas e turmas para uso do p r o f e s s o r ”””34 d i c i o n a r i o D i s c i p l i n a s = {} # De f i n i r d i c i o n a r i o das notas5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l6 wh i l e opcao != 0 :7 i f opcao == 1:8 # Lancar notas de uma d i s c i p l i n a9 nomeDi sc i p l i na , d i c i o n a r i oN o t a s = l anca rNotas ( )

10 # a c r e s c e n t a r no d i c i o n a r i o as notas de uma d i s c i p l i n a11 d i c i o n a r i o D i s c i p l i n a s [ n omeD i s c i p l i n a]= d i c i o n a r i oNo t a s12 e l i f opcao == 2:13 # Con s t r o i uma l i s t a com os nomes das d i s c i p l i n a s14 D i s c i p l i n a s = d i c t . k e y s ( d i c i o n a r i o D i s c i p l i n a s )15 # Esco l ha de qua l d i s c i p l i n a se que r sabe r as notas16 D i s c i p l i n a S e l e c i o n a d a = menuD i s c i p l i n a s ( D i s c i p l i n a s )17 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a18 impr imeNotas ( D i s c i p l i n a S e l e c i o n a d a , d i c i o n a r i o D i s c i p l i n a s [ D i s c i p l i n a S e l e c i o n a d a ] )19 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l20 i f name == ” ma i n ” :21 main ( )

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 22 / 25

Page 31: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

A programacao permeia muitas areas atualmente. O nıvel de

sofisticacao esperado e elevado.

Para justificar o investimento, um trecho de codigo deve ser

reutilizavel. Varias pessoas reutilizam e compartilham seus codigos,

criando comunidades.

A organizacao e a legibilidade do codigo sao requisitos essenciais,

tao importantes quanto eficiencia e eficacia.

Ter seu codigo bem documentado tambem e importante para que

voce mesmo consiga utiliza-lo futuramente. E muito facil esquecer o

que um codigo faz, e gasta-se tempo para tentar entende-lo

novamente.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 23 / 25

Page 32: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Modularizacao

Para atender as demandas atuais, cada vez mais complexas e

sofisticadas, o programador deve pesquisar sobre bibliotecas

disponıveis que o auxiliem.

Tao importante quanto saber programar tudo o que precisa, e saber

aproveitar o que esta disponıvel, ou nao e possıvel atender as

demandas em tempo aceitavel.

E importante ser capaz de ler e entender a documentacao de tais

bibliotecas. Um bom conhecimento da linguagem de programacao em

que a biblioteca foi escrita ajuda muito.

Uma vez que se produza codigo reutilizavel e de boa qualidade, e de

bom tom compartilhar! A comunidade agradece e reconhece o

esforco.

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 24 / 25

Page 33: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Autores

Joao C. P. da Silva Lattes

Carla Delgado Lattes

Ana Luisa Duboc Lattes

Colaboradores

Anamaria Martins Moreira Lattes

Fabio Mascarenhas Lattes

Leonardo de Oliveira Carvalho Lattes

Charles Figueiredo de Barros Lattes

Fabrıcio Firmino de Faria Lattes

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 25 / 25

Page 34: Computação I - Python Aula 12 - Teórica: Modularização · 2019-08-03 · Modularizac˜ao Fa¸ca um programa que dado o salario bruto calcula o salario l´ıquido. O salario l´ıquido

Computacao I - Python

Aula 12 - Teorica: Modularizacao

Joao C. P. da Silva

Carla A. D. M. Delgado

Ana Luisa Duboc

Dept. Ciencia da Computacao - UFRJ

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computacao I - Python Aula 12 26 / 25