Computação 1 - Python Aula 12 - Teórica...

33
Computa¸ ao 1 - Python Aula 12 - Te´ orica Modulariza¸ ao Jo˜ ao Carlos, Carla Delgado, Ana Luisa Duboc 1/ 22

Transcript of Computação 1 - Python Aula 12 - Teórica...

Page 1: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Computacao 1 - Python

Aula 12 - Teorica

Modularizacao

Joao Carlos, Carla Delgado, Ana Luisa Duboc

1/ 22

Page 2: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquidoe calculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, edo 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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

2/ 22

Page 3: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Faca um programa que dado o salario bruto calcula o salario lıquido. O salario lıquidoe calculado a partir do salario bruto, primeiro descontando 11% referente ao INSS, edo 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

# Dado o salario bruto# calcula o salario lıquido# float → floatdef salarioLiquido(salarioBruto):

descontoINSS = (salarioBruto)*0.11descontoIR = (salarioBruto - descontoINSS)*0.15salarioLiq = (salarioBruto - descontoINSS - descontoIR)

return salarioLiq

Joao Carlos, Carla Delgado, Ana Luisa Duboc

2/ 22

Page 4: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

# Dado o salario bruto# calcula o salario lıquido# float → floatdef salarioLiquido(salarioBruto):

descontoINSS = (salarioBruto)*0.11descontoIR = (salarioBruto - descontoINSS)*0.15salarioLiq = (salarioBruto - descontoINSS - descontoIR)

return salarioLiq

Joao Carlos, Carla Delgado, Ana Luisa Duboc

3/ 22

Page 5: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

# Dado o salario bruto# calcula o salario lıquido# float → floatdef salarioLiquido(salarioBruto):

descontoINSS = (salarioBruto)*0.11descontoIR = (salarioBruto - descontoINSS)*0.15salarioLiq = (salarioBruto - descontoINSS - descontoIR)

return salarioLiq

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

3/ 22

Page 6: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

# Dado o salario bruto# calcula o salario lıquido# float → floatdef salarioLiquido(salarioBruto):

descontoINSS = (salarioBruto)*0.11descontoIR = (salarioBruto - descontoINSS)*0.15salarioLiq = (salarioBruto - descontoINSS - descontoIR)

return salarioLiq

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

# Dado um valor bruto e um percentual de desconto# calcula o valor lıquido obtido# float,float → floatdef calculadesconto(valorBruto,percentual):

desconto = valorBruto*percentual/100.0valorLiquido = valorBruto-desconto

return valorLiquido

Joao Carlos, Carla Delgado, Ana Luisa Duboc

3/ 22

Page 7: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

# Dado um valor bruto e um percentual de desconto# calcula o valor lıquido obtido# float,float → floatdef calculadesconto(valorBruto,percentual):

desconto = valorBruto*percentual/100.0valorLiquido = valorBruto-desconto

return valorLiquido

Usando a funcao acima:

Joao Carlos, Carla Delgado, Ana Luisa Duboc

4/ 22

Page 8: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

# Dado um valor bruto e um percentual de desconto# calcula o valor lıquido obtido# float,float → floatdef calculadesconto(valorBruto,percentual):

desconto = valorBruto*percentual/100.0valorLiquido = valorBruto-desconto

return valorLiquido

Usando a funcao acima:

# Dado o salario bruto# calcula o salario lıquido# float → floatdef salarioLiquido(salarioBruto):

salariosemINSS = calculadesconto(salarioBruto,11.0)salariosemIRsemINSS = calculadesconto(salariosemINSS,15.0)

return salariosemIRsemINSS

Joao Carlos, Carla Delgado, Ana Luisa Duboc

4/ 22

Page 9: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Torna o codigo mais legıvel.

Permite que algumas funcionalidades sejam reaproveitadas.

Permite que partes do codigo sejam testadas isoladamente.

# Dado um valor bruto e um percentual de desconto# calcula o valor lıquido obtido# float,float → floatdef calculadesconto(valorBruto,percentual):

desconto = valorBruto*percentual/100.0valorLiquido = valorBruto-desconto

return valorLiquido

>>> calculadesconto(5000.00,11.0)

4450.0

>>> calculadesconto(4450.00,15.0)

3782.5

Joao Carlos, Carla Delgado, Ana Luisa Duboc

5/ 22

Page 10: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Faca um programa que permita o lancamento de notas de uma disciplina e a consultaa tais notas. 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 seguintelayout:

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

6/ 22

Page 11: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

possuir um menu para escolher qual disciplina tera suas notas apresentadas como seguinte 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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

7/ 22

Page 12: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

possuir um dicionario cuja chave e uma string que representa o nome dadisciplina e o perıodo em que ela foi lecionada, e o seu conteudo sera tambemum dicionario cuja chave e uma string que representa o matrıcula do aluno e seuconteudo 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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

8/ 22

Page 13: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

# Funcao maindef main():

# Definir dicionario das notas disciplinas# Exibir o menu principalwhile opcao != 0:

if opcao == 1:# Lancar notas de uma disciplina# acrescentar no dicionario as notas de uma disciplina

elif opcao == 2:# Escolha de qual disciplina se quer saber as notas# Mostrar as notas da disciplina escolhida

# Exibir o menu principalif name == ” main ”:

main()

Joao Carlos, Carla Delgado, Ana Luisa Duboc

9/ 22

Page 14: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

# Funcao maindef main():

dicionarioDisciplinas = {} #Definir dicionario das notas disciplinas# Exibir o menu principalwhile opcao != 0:

if opcao == 1:# Lancar notas de uma disciplina# acrescentar no dicionario as notas de uma disciplina

elif opcao == 2:# Escolha de qual disciplina se quer saber as notas# Mostrar as notas da disciplina escolhida

# Exibir o menu principalif name == ” main ”:

main()

Joao Carlos, Carla Delgado, Ana Luisa Duboc

10/ 22

Page 15: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

Passo 1: Fazendo o menu principal:

Escolha uma opc~ao:

1 - lancamento de notas de uma disciplina

2 - listar notas de uma disciplina

0 - terminar

Opc~ao :

Joao Carlos, Carla Delgado, Ana Luisa Duboc

11/ 22

Page 16: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

Passo 1: Fazendo o menu principal:

Escolha uma opc~ao:

1 - lancamento de notas de uma disciplina

2 - listar notas de uma disciplina

0 - terminar

Opc~ao :

# Menu Principal# none → stringdef menuPrincipal():

print ”Escolha uma das opcoes: ”print ”1- lancamento de notas de uma disciplina”print ”2- listar notas de uma disciplina”print ”0- terminar”opcao = input(”Opcao : ”)return opcao

Para testar esta funcao, basta chama-la (menuPrincipal()). Seleciona cada uma das 3 opcoes possıveis.

Joao Carlos, Carla Delgado, Ana Luisa Duboc

11/ 22

Page 17: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

# Funcao maindef main():

dicionarioDisciplinas = {} #Definir dicionario das notas disciplinasopcao = menuPrincipal() # Exibir o menu principalwhile opcao != 0:

if opcao == 1:# Lancar notas de uma disciplina# acrescentar no dicionario as notas de uma disciplina

elif opcao == 2:# Escolha de qual disciplina se quer saber as notas# Mostrar as notas da disciplina escolhida

opcao = menuPrincipal() # Exibir o menu principalif name == ” main ”:

main()

Joao Carlos, Carla Delgado, Ana Luisa Duboc

12/ 22

Page 18: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

13/ 22

Page 19: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

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.Usaremos estas informacoes para construir a chave do dicionario.

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

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

13/ 22

Page 20: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

14/ 22

Page 21: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

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

# Funcao para lancar as notas de uma disciplina# none → tupladef lancarNotas():

dicionarioNotas = {}disciplina = raw input(”Nome da Disciplina : ”)periodo = raw input(”Ano-Periodo (XX-X): ”)nomeDisciplina = disciplina+’-’+periodomatricula = raw input(’Matrıcula (0 para terminar) : ’)while matricula != ’0’:

nota = input(’Nota : ’)dicionarioNotas[matricula] = notamatricula = raw input(’Matrıcula (0 para terminar) : ’)

return (nomeDisciplina,dicionarioNotas)

Joao Carlos, Carla Delgado, Ana Luisa Duboc

14/ 22

Page 22: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

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

# Funcao para lancar as notas de uma disciplina# none → tupladef lancarNotas():

dicionarioNotas = {}disciplina = raw input(”Nome da Disciplina : ”)periodo = raw input(”Ano-Periodo (XX-X): ”)nomeDisciplina = disciplina+’-’+periodomatricula = raw input(’Matrıcula (0 para terminar) : ’)while matricula != ’0’:

nota = input(’Nota : ’)dicionarioNotas[matricula] = notamatricula = raw input(’Matrıcula (0 para terminar) : ’)

return (nomeDisciplina,dicionarioNotas)

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

15/ 22

Page 23: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

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

# Funcao para lancar as notas de uma disciplina# none → tupladef lancarNotas():

dicionarioNotas = {}disciplina = raw input(”Nome da Disciplina : ”)periodo = raw input(”Ano-Periodo (XX-X): ”)nomeDisciplina = disciplina+’-’+periodomatricula = raw input(’Matrıcula (0 para terminar) : ’)while matricula != ’0’:

nota = input(’Nota : ’)dicionarioNotas[matricula] = notamatricula = raw input(’Matrıcula (0 para terminar) : ’)

return (nomeDisciplina,dicionarioNotas)

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.

Joao Carlos, Carla Delgado, Ana Luisa Duboc

16/ 22

Page 24: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

# Funcao maindef main():

dicionarioDisciplinas = {} # Definir dicionario das notas disciplinasopcao = menuPrincipal() # Exibir o menu principalwhile opcao != 0:

if opcao == 1:nomeDisciplina,dicionarioNotas = lancarNotas() # Lancar notas de uma disciplinadicionarioDisciplinas[nomeDisciplina]=dicionarioNotas # acrescentar no dicionario as notas

elif opcao == 2:# Escolha de qual disciplina se quer saber as notas# Mostrar as notas da disciplina escolhida

opcao = menuPrincipal() # Exibir o menu principalif name == ” main ”:

main()

Joao Carlos, Carla Delgado, Ana Luisa Duboc

17/ 22

Page 25: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

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.

Joao Carlos, Carla Delgado, Ana Luisa Duboc

18/ 22

Page 26: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

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.

# Menu para escolher disciplina# list → stringdef menuDisciplinas(Disciplinas):

print ”Escolha uma disciplina:”for indice in range(len(Disciplinas)):

print indice+1,”- ”,Disciplinas[indice]print ”0- terminar”opcao = input(”Opcao : ”)return Disciplinas[opcao-1]

Joao Carlos, Carla Delgado, Ana Luisa Duboc

18/ 22

Page 27: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

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.

# Menu para escolher disciplina# list → stringdef menuDisciplinas(Disciplinas):

print ”Escolha uma disciplina:”for indice in range(len(Disciplinas)):

print indice+1,”- ”,Disciplinas[indice]print ”0- terminar”opcao = input(”Opcao : ”)return Disciplinas[opcao-1]

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

18/ 22

Page 28: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

Esboco: A funcao main()

# Funcao maindef main():

dicionarioDisciplinas = {} # Definir dicionario das notas disciplinasopcao = menuPrincipal() # Exibir o menu principalwhile opcao != 0:

if opcao == 1:nomeDisciplina,dicionarioNotas = lancarNotas() # Lancar notas de uma disciplinadicionarioDisciplinas[nomeDisciplina]=dicionarioNotas # acrescentar no dicionario as notas

elif opcao == 2:Disciplinas = dict.keys(dicionarioDisciplinas) # Lista de disciplinasDisciplinaSelecionada = menuDisciplinas(Disciplinas)# Escolha da disc. que se quer saber as notas# Mostrar as notas da disciplina escolhida

opcao = menuPrincipal() # Exibir o menu principalif name == ” main ”:

main()

Joao Carlos, Carla Delgado, Ana Luisa Duboc

19/ 22

Page 29: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

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

Joao Carlos, Carla Delgado, Ana Luisa Duboc

20/ 22

Page 30: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

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

# Funcao para lancar as notas de uma disciplina# none → stringdef imprimeNotas(DisciplinaSelecionada,notasDisciplina):

print ”Disciplina - ”,DisciplinaSelecionadaprint ”Matricula NOTA”for aluno in notasDisciplina:

print aluno,” ”,notasDisciplina[aluno]return

Joao Carlos, Carla Delgado, Ana Luisa Duboc

20/ 22

Page 31: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

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

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

# Funcao para lancar as notas de uma disciplina# none → stringdef imprimeNotas(DisciplinaSelecionada,notasDisciplina):

print ”Disciplina - ”,DisciplinaSelecionadaprint ”Matricula NOTA”for aluno in notasDisciplina:

print aluno,” ”,notasDisciplina[aluno]return

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})

Joao Carlos, Carla Delgado, Ana Luisa Duboc

20/ 22

Page 32: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Modularizacao

Vamos resolver este problema passo a passo.

A funcao main()

# Funcao maindef main():

dicionarioDisciplinas = {} # Definir dicionario das notas disciplinasopcao = menuPrincipal() # Exibir o menu principalwhile opcao != 0:

if opcao == 1:nomeDisciplina,dicionarioNotas = lancarNotas() # Lancar notas de uma disciplinadicionarioDisciplinas[nomeDisciplina]=dicionarioNotas # acrescentar no dicionario as notas

elif opcao == 2:Disciplinas = dict.keys(dicionarioDisciplinas) # Lista de disciplinasDisciplinaSelecionada = menuDisciplinas(Disciplinas)# Escolha da disc. que se quer saber as notas# Mostrar as notas da disciplina escolhidaimprimeNotas(DisciplinaSelecionada,dicionarioDisciplinas[DisciplinaSelecionada])

opcao = menuPrincipal() # Exibir o menu principalif name == ” main ”:

main()

Joao Carlos, Carla Delgado, Ana Luisa Duboc

21/ 22

Page 33: Computação 1 - Python Aula 12 - Teórica Modularizaçãojacarepagua.dcc.ufrj.br/~ladybug//aulas-python1/aula12_teorica.pdf · Computac˜ao 1 - Python Aula 12 - Teo´rica Modularizac˜ao

Computacao 1 - Python

Aula 12 - Teorica

Modularizacao

Joao Carlos, Carla Delgado, Ana Luisa Duboc

22/ 22