Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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