Computação 1 - Python Aula 12 - Teórica...
Transcript of Computação 1 - Python Aula 12 - Teórica...
Computacao 1 - Python
Aula 12 - Teorica
Modularizacao
Joao Carlos, Carla Delgado, Ana Luisa Duboc
1/ 22
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Computacao 1 - Python
Aula 12 - Teorica
Modularizacao
Joao Carlos, Carla Delgado, Ana Luisa Duboc
22/ 22