Buscar

aula12_teorica

Prévia do material em texto

Computação I - Python
Aula 12 - Teórica: Modularização
João C. P. da Silva
Carla A. D. M. Delgado
Ana Luisa Duboc
Dept. Ciência da Computação - UFRJ
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 1 / 25
http://lattes.cnpq.br/9413102524215939
http://lattes.cnpq.br/3831909651244142
http://lattes.cnpq.br/3831909651244142
Modularização
Faça um programa que dado o salário bruto calcula o salário ĺıquido. O salário ĺıquido é
calculado a partir do salário bruto, primeiro descontando 11% referente ao INSS, e do resultado,
descontando-se 15% de imposto de renda (IR).
Exemplo
Salário 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)
Salário Ĺıquido = 5000 - (550 + 667,50) = 3782,50
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 2 / 25
Modularização
Faça um programa que dado o salário bruto calcula o salário ĺıquido. O salário ĺıquido é
calculado a partir do salário 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 o
3 Entrada : f l o a t
4 Saida : f l o a t ”””
5
6 descontoINSS = ( s a l a r i o B r u t o ) ∗0.11
7 de sc onto IR = ( s a l a r i o B r u t o − descontoINSS ) ∗0.15
8 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/ Computação I - Python Aula 12 3 / 25
Modularização
Faça um programa que dado o salário bruto calcula o salário ĺıquido. O salário ĺıquido é
calculado a partir do salário 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 o
3 Entrada : f l o a t
4 Saida : f l o a t ”””
5
6 descontoINSS = ( s a l a r i o B r u t o ) ∗0.11
7 de sc onto IR = ( s a l a r i o B r u t o − descontoINSS ) ∗0.15
8 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 cálculo do desconto é sempre feito de uma mesma maneira.
Podemos então generalizar seu cálculo.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 3 / 25
Modularização
Faça um programa que dado o salário bruto calcula o salário ĺıquido. O salário ĺıquido é
calculado a partir do salário 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 o
3 Entrada : f l o a t
4 Saida : f l o a t ”””
5
6 descontoINSS = ( s a l a r i o B r u t o ) ∗0.11
7 de sc onto IR = ( s a l a r i o B r u t o − descontoINSS ) ∗0.15
8 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 cálculo do desconto é sempre feito de uma mesma maneira.
Podemos então generalizar seu cálculo.
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 onto
3 c a l c u l a o v a l o r com o de sc onto ap l i c a do
4 Entrada : f l o a t , f l o a t
5 Saida : f l o a t ”””
6
7 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.0
8 v a l o r L i q u i d o = va l o rBru to−de sc onto
9 r e t u r n v a l o r L i q u i d o
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 3 / 25
Modularização
Faça um programa que dado o salário bruto calcula o salário ĺıquido. O salário ĺıquido é
calculado a partir do salário 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 onto
3 c a l c u l a o v a l o r com o de sc onto ap l i c a do
4 Entrada : f l o a t , f l o a t
5 Saida : f l o a t ”””
6
7 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.0
8 v a l o r L i q u i d o = va l o rBru to−de sc onto
9 r e t u r n v a l o r L i q u i d o
Usando a função acima:
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 4 / 25
Modularização
Faça um programa que dado o salário bruto calcula o salário ĺıquido. O salário ĺıquido é
calculado a partir do salário 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 onto
3 c a l c u l a o v a l o r com o de sc onto ap l i c a do
4 Entrada : f l o a t , f l o a t
5 Saida : f l o a t ”””
6
7 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.0
8 v a l o r L i q u i d o = va l o rBru to−de sc onto
9 r e t u r n v a l o r L i q u i d o
Usando a função 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 o
3 Entrada : f l o a t
4 Saida : f l o a t ”””
5
6 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/ Computação I - Python Aula 12 4 / 25
Modularização
Torna o código mais leǵıvel.
Permite que algumas funcionalidades sejam reaproveitadas.
Permite que partes do código sejam testadas isoladamente.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 5 / 25
Modularização
Torna o código mais leǵıvel.
Permite que algumas funcionalidades sejam reaproveitadas.
Permite que partes do código 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 onto
3 c a l c u l a o v a l o r com o de sc onto ap l i c a do
4 Entrada : f l o a t , f l o a t
5 Saida : f l o a t ”””
6
7 de sc onto = va l o rB r u t o∗ p e r c e n t u a l /100.0
8 v a l o r L i q u i d o = va l o rBru to−de sc onto
9 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.0
3
4 >>> 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/ Computação I - Python Aula 12 5 / 25
Modularização
Faça um programa que permita o lançamento de notas de uma disciplina e a consulta a tais
notas. O programa deve:
possuir um menu principal com o seguinte layout:
Escolha uma opç~ao :
1 - lançamento de notas de uma disciplina
2 - listar notas de uma disciplina
0 - terminar
Opç~ao :
possuir uma tela para lançamento 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/ Computação I - Python Aula 12 6 / 25
Modularização
Faça um programa que permita o lançamento de notas de uma disciplina e a consulta a tais
notas. O programa deve:
possuir um menu para escolher qual disciplina terá suas notas apresentadas com o
seguinte layout:
Escolha uma disciplina:
1- computacao1-15-2
2- calculo1-15-2
0- terminar
Opç~ao :
possuir uma sáıda das notas de uma disciplina com o seguinte layout:
Disciplina - computacao1-15-2
Matrı́cula Nota
106041177 8.5
1141237239.2
123041173 3.3
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 7 / 25
Modularização
Faça um programa que permita o lançamento de notas de uma disciplina e a consulta a tais
notas. O programa deve:
possuir um dicionário cuja chave é uma string que representa o nome da disciplina e o
peŕıodo em que ela foi lecionada, e o seu conteúdo será também um dicionário cuja chave
é uma string que representa o matŕıcula do aluno e seu conteúdo é a sua nota.
Exemplo
Notas de Computação 1 de 2015-2 formam o dicionário {’106041177’: 8.5, ’114123723’:9.2, ’123041173’:3.3}
Notas de Cálculo 1 de 2015-2 formam o dicionário {’123041173’: 1.4, ’142123343’:4.3, ’187233954’:6.7}
Teremos então um dicionário 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-2
matŕıcula Nota matŕıcula Nota
106041177 8.5 123041173 1.4
114123723 9.2 142123343 4.3
123041173 3.3 187233954 6.7
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 8 / 25
Modularização
Vamos resolver este problema passo a passo.
Esboço: A função 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 ”””
3
4 # D e f i n i r d i c i o n a r i o das notas
5 # E x i b i r o menu p r i n c i p a l
6 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 a
9 # 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 notas
12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a
13 # Ex i b i r o menu p r i n c i p a l
14 i f name == ” ma i n ” :
15 main ( )
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 9 / 25
Modularização
Vamos resolver este problema passo a passo.
Esboço: A função 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 ”””
3
4 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 notas
5 # E x i b i r o menu p r i n c i p a l
6 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 a
9 # 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 notas
12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a
13 # Ex i b i r o menu p r i n c i p a l
14 i f name == ” ma i n ” :
15 main ( )
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 10 / 25
Modularização
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 a
3 Entrada : none
4 Saida : s t r ”””
5
6 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 função, basta chamá-la no console digitando menuPrincipal().
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 11 / 25
Modularização
Vamos resolver este problema passo a passo.
Esboço: A função 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 ”””
3
4 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 notas
5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
6 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 a
9 # 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 notas
12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a
13 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
14 i f name == ” ma i n ” :
15 main ( )
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 12 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 2: Fazendo a tela para lançamento 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/ Computação I - Python Aula 12 13 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 2: Fazendo a tela para lançamento 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-peŕıodo que ela foi oferecida. Usaremos
estas informações para construir a chave do dicionário.
As notas devem ser armazenadas em um dicionário onde a chave deve ser o matŕıcula do
aluno e o conteúdo deve ser a nota obtida na matéria.
E se a disciplina-ano-periodo já estiver no dicionário?
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 13 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 2: Fazendo a tela para lançamento 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 a
3 Entrada : none
4 Saida : s t r , d i c t ”””
5
6 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 ] = nota
14 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/ Computação I - Python Aula 12 14 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 2: Fazendo a tela para lançamento 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 a
3 Entrada : none
4 Saida : s t r , d i c t ”””
5
6 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 ] = nota
14 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 função para os valores da seguinte tabela:
computacao1-15-2 calculo 1-15-2
matŕıcula Nota matŕıcula Nota
106041177 8.5 123041173 1.4
114123723 9.2 142123343 4.3
123041173 3.3 187233954 6.7
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 15 / 25
ModularizaçãoVamos resolver este problema passo a passo.
Passo 2: Fazendo a tela para lançamento 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 a
3 Entrada : none
4 Saida : s t r , d i c t ”””
5
6 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 ] = nota
14 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 função 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 dicionário com todas as disciplinas e suas respectivas
notas.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 16 / 25
Modularização
Vamos resolver este problema passo a passo.
Esboço: A função 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 ”””
3
4 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 notas
5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
6 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 a
9 # 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 notas
12 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a
13 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
14 i f name == ” ma i n ” :
15 main ( )
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 17 / 25
Modularização
Vamos resolver este problema passo a passo.
Esboço: A função 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 ”””
3
4 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 notas
5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
6 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 a
9 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 a
11 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 s
12 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 notas
14 # Mostrar as notas da d i s c i p l i n a e s c o l h i d a
15 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
16 i f name == ” ma i n ” :
17 main ( )
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 18 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 3: Vamos fazer um menu para escolher qual disciplina terá suas notas apresentadas.
Escolha uma disciplina:
1- computacao1-15-2
2- calculo1-15-2
0- terminar
Opç~ao :
Lembre que:
Os nomes das disciplinas serão as chaves do dicionário dicionarioDisciplinas.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 19 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 3: Vamos fazer um menu para escolher qual disciplina terá suas notas apresentadas.
Escolha uma disciplina:
1- computacao1-15-2
2- calculo1-15-2
0- terminar
Opç~ao :
Lembre que:
Os nomes das disciplinas serão as chaves do dicionário 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 s
3 Entrada : l i s t
4 Saida : s t r i n g ”””
5
6 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 função com a lista [’computacao1-15-2’,’calculo1-15-2’]
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 19 / 25
Modularização
Vamos resolver este problema passo a passo.
Esboço: A função 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 ”””
3
4 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 notas
5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
6 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 a
9 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 a
11 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 s
12 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 s
14 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 notas
16 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 a
18 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
19 i f name == ” ma i n ” :
20 main ( )
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 20 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 4: Vamos fazer uma função para mostrar as notas de uma disciplina. Lembre que:
A entrada desta função vai ser o dicionário com as notas de uma certa disciplina.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 21 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 4: Vamos fazer uma função para mostrar as notas de uma disciplina. Lembre que:
A entrada desta função vai ser o dicionário 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 a
3 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 ”””
5
6 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/ Computação I - Python Aula 12 21 / 25
Modularização
Vamos resolver este problema passo a passo.
Passo 4: Vamos fazer uma função para mostrar as notas de uma disciplina. Lembre que:
A entrada desta função vai ser o dicionário 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 a
3 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 ”””
5
6 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 função 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/ Computação I - Python Aula 12 21 / 25
Modularização
Vamos resolver este problema passo a passo.
A função 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 ”””
3
4 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 notas
5 opcao = menuPr i nc i pa l ( ) # E x i b i r o menu p r i n c i p a l
6 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 a
9 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 a
11 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 s
12 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 s
14 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 notas
16 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 a
18 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 l
20 i f name == ” ma i n ” :
21 main ( )
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 22 / 25
Modularização
A programação permeia muitas áreas atualmente. O ńıvel de
sofisticação esperado é elevado.
Para justificar o investimento, um trecho de código deve ser
reutilizável. Várias pessoas reutilizam e compartilham seus códigos,
criando comunidades.
A organização e a legibilidade do código são requisitos essenciais,
tão importantes quanto eficiência e eficácia.
Ter seu código bem documentado também é importante para que
você mesmo consiga utilizá-lo futuramente. É muito fácil esquecer o
que um código faz, e gasta-se tempo para tentar entendê-lo
novamente.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 23 / 25
Modularização
Para atender às demandas atuais, cada vez mais complexas e
sofisticadas, o programador deve pesquisar sobre bibliotecas
dispońıveis que o auxiliem.
Tão importante quanto saber programar tudo o que precisa, é saber
aproveitar o que está dispońıvel, ou não é posśıvel atender às
demandas em tempo aceitável.
É importante ser capaz de ler e entender a documentação de tais
bibliotecas. Um bom conhecimento da linguagem de programação em
que a biblioteca foi escrita ajuda muito.
Uma vez que se produza código reutilizável e de boa qualidade, é de
bom tom compartilhar! A comunidade agradece e reconhece o
esforço.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 24 / 25
Autores
João 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
Fabŕıcio Firmino de Faria Lattes
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 25 / 25
http://lattes.cnpq.br/9413102524215939
http://lattes.cnpq.br/3831909651244142
http://lattes.cnpq.br/8362978460368738
http://lattes.cnpq.br/2363575151206774
http://lattes.cnpq.br/2273723591083358
http://lattes.cnpq.br/3754078390316976
http://lattes.cnpq.br/1853606206364277
http://lattes.cnpq.br/9994062739448952
Computação I - Python
Aula 12 - Teórica: Modularização
João C. P. da Silva
Carla A. D. M. Delgado
Ana Luisa Duboc
Dept. Ciência da Computação - UFRJ
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 12 26 / 25
http://lattes.cnpq.br/9413102524215939
http://lattes.cnpq.br/3831909651244142
http://lattes.cnpq.br/3831909651244142

Continue navegando