Baixe o app para aproveitar ainda mais
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
Compartilhar