Buscar

ATIVIDADE PRATICA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER
ESCOLA SUPERIOR POLITÉCNICA
BACHARELADO EM ENGENHARIA eletrica
LÓGICA DE PROGRAMAÇÃO E ALGORITMOS
ATIVIDADE PRÁTICA
XXXXXXXXXX – RU: 1,,,,,,
Vinicius Pozzobon Borin
Pelotas – RS
2021 
1. EXERCÍCIO 1
Escreva um programa que leia o nome de um lutador e seu peso. Em seguida, informe a categoria a que pertence o lutador, conforme a Tabela a seguir (note que a tabela foi criada para efeito deste exercício e não condiz com qualquer categoria de luta). A saída do programa deve exibir na tela uma frase com o padrão descrito a seguir: 
Nome fornecido: Pepe Jordão 
Peso fornecido: 73.4 
Frase a ser exibida: O lutador Pepe Jordão pesa 73,4 kg e se enquadra na categoria Ligeiro 
 Todos os dados devem ser lidos do teclado, sendo que o nome do lutador é string e o peso é um número real. Não é necessário armazenar os dados em uma estrutura de dados, basta imprimir na tela. Coloque todo o seu programa dentro de um laço de repetição e faça-o se encerrar quando uma determinada condição for satisfeita. A condição fica a seu critério. 
Imprima na tela um teste do seu programa utilizando o seu nome e os dois últimos dígitos do seu RU para o peso. 
Solução do aluno:
def categoria(m_peso):
 """
 funcao que recebe o peso e indica qual a categoria pertence o lutador
 :param m_peso: peso recebido (float)
 :return: string com a categoria
 """
 try: # testa se o parametro e valido
 float(m_peso)
 if m_peso <= 0:
 print('dado invalido para funcao categoria.')
 if m_peso < 65: # identificacao de categoria
 return 'Pena'
 if 65 <= m_peso < 72:
 return 'Leve'
 if 72 <= m_peso < 79:
 return 'Ligeiro'
 if 79 <= m_peso < 86:
 return 'Meio-medio'
 if 86 <= m_peso < 93:
 return 'Medio'
 if 93 <= m_peso < 100:
 return 'Meio-pesado'
 if m_peso >= 100:
 return 'pesado'
 except ValueError: # tratamento de valor fora de padrao
 print('dado invalido para funcao categoria.')
def recebe_peso(m_texto):
 """
 funçao utilizada para ler o peso (real) do teclado
 :param m_texto: frase apresentada ma pergunta do valor
 :return: retorna o valor intiro digitado
 """
 while True:
 try: # teste para validade o tipo de caractere
 m_x = float(input(m_texto))
 if m_x > 0: # teste para verificar se o peso é valido
 return m_x
 print('ops, peso inválido, Digite um peso real')
 continue
 except ValueError: # tratamento de tipo errado
 print('ops, peso inválido, Digite um peso real')
# programa principal
m_controle = 's' # inicialização de variavel de controle de parada
print('\nSeletor de categorias\nDigite o nome do atleta e seu peso\n') # cabeçalho do programa
while True: # loop de execução
 if m_controle == 'N' or m_controle == 'n': # teste de finalizaçao do programa
 print('fim das classificações')
 break
# aquisicao de dados
 m_nome = input('Digite o nome do atleta ')
 m_peso = recebe_peso('Digite o peso do atleta ')
 m_categoria = categoria(m_peso) # define categoria
# apresentacao de dados conforme solicitado
 print('O liutador {} pesa {}Kg e se enquadra na categoria {}'.format(m_nome, m_peso, m_categoria))
 m_controle = input('Deseja catalogar outro atleta? S ou N ') # pergunta para conclusao do programa
Imagem do código funcionando no seu computador:
1. EXERCÍCIO 2
Escreva um programa que receba como parâmetro de entrada um número inteiro de 5 dígitos no intervalo fechado [10000, 30000] que represente códigos de produtos vendidos em uma loja. Crie uma função para validar os dados de entrada, obrigando o usuário a respeitar o intervalo e o tipo de dado (inteiro).
 Crie uma função que calcule e retorne o dígito verificador do código, utilizando a regra de cálculo explicada a seguir. Por exemplo, considere o código 21853, em que cada dígito é multiplicado por um peso começando em 2, os valores obtidos são somados, e do total obtido calcula-se o resto de sua divisão por 7. Retorne na função o valor do dígito verificador calculado e imprima na tela o código do produto digitado e seu dígito verificador separado por hífen, como: 21853-5. 
Imprima na tela um teste do seu programa utilizando como código os 5 primeiros dígitos do seu RU. Se seu RU tiver menos de 5 dígitos, complete com zeros. Se seu RU cair fora do intervalo especificado, realize o teste mesmo assim. 
Solução do aluno:
def checksum(m_codigo):
 """
 funcao que calcula o digito verificador
 :param m_codigo: codigo do produto
 :return: retorna o valor do DV
 """
 if m_codigo < 10000 or m_codigo > 30000: # testa se o dado recebido é valido.
 print('codigo invalido') # caso dado invalido encerra a função
 return 0
 m_soma = 0 # inicializa variavel de soma
 m_codigo = str(m_codigo) # transforma o dado em string para percorrer os valores
 for c in range(0, 5, 1):
 m_soma += (int(m_codigo[c]) * (c + 2)) # soma proposta no enunciado
 return m_soma % 7 # retorna o resto da divisao por 7
def valida_dados(m_texto, m_min, m_max):
 """
 funcao que recebe os dados via teclado e valida o formato
 :param m_texto: texto apresentado durante a leitura
 :param m_min: valor minimo a ser lido
 :param m_max: valor maximo a ser lido
 :return: retorna o valor inteiro digitado, dentro da faixa especificada
 """
 while True:
 try: # teste para validade o tipo de caractere
 m_codigo = int(input(m_texto))
 if m_min < m_codigo < m_max:
 return m_codigo
 else:
 print('digite um valor entre {} e {}'.format(m_min, m_max))
 except ValueError:
 print('ops, numero invalido, Digite um codigo valido...')
# funcao principal
m_item = valida_dados('digite o codigo do item: ', 10000, 30000) # comando para leitura de dados
m_dv = checksum(m_item) # chamada de validação
print('{}-{}'.format(m_item, m_dv)) # apresentação de resultado conforme proposto
Imagem do código funcionando no seu computador:
1. EXERCÍCIO 3
Considere o seguinte conjunto de dados: Nome + (N1, N2, N3, N4). Nome representa o nome de um aluno e deve ser usado como chave. Já N1, N2, N3, N4 representam as notas de provas desse aluno. Utilize uma estrutura de dicionário com listas para resolver este exercício. 
Escreva um programa que leia os dados de N alunos e apresente na tela se foram aprovados ou reprovados. O critério que garante a aprovação é que a média aritmética das 4 notas seja maior ou igual 7,0. O valor de N é a quantidade de alunos, e esse valor deve ser lido do teclado no começo do programa. Faça um laço de repetição para a leitura destes N alunos. As notas devem ser exibidas ao final do programa com uma casa decimal de precisão. 
Imprima na tela um teste do seu programa usando como primeiro cadastro o seu nome, e como nota os 4 primeiros dígitos do seu RU. 
Solução do aluno:
def valida_int(m_texto, m_min, m_max):
 """
 funcao que recebe os dados via teclado e valida o formato numero inteiro
 :param m_texto: texto apresentado durante a leitura
 :param m_min: valor minimo a ser lido
 :param m_max: valor maximo a ser lido
 :return: retorna o valor inteiro digitado, dentro da faixa especificada
 """
 while True:
 try: # teste para validade o tipo de caractere
 m_codigo = int(input(m_texto))
 if m_min < m_codigo < m_max:
 return m_codigo
 else:
 print('digite um valor entre {} e {}'.format(m_min, m_max))
 except ValueError:
 print('ops, numero invalido, Digite um valor inteiro...')
def valida_float(m_texto, m_min, m_max):
 """
 funcao que recebe os dados via teclado e valida o formato numero com virgula
 :param m_texto: texto apresentadodurante a leitura
 :param m_min: valor minimo a ser lido
 :param m_max: valor maximo a ser lido
 :return: retorna o valor inteiro digitado, dentro da faixa especificada
 """
 while True:
 try: # teste para validade o tipo de caractere
 m_codigo = float(input(m_texto))
 if m_min <= m_codigo <= m_max:
 return m_codigo
 else:
 print('digite um valor entre {} e {}'.format(m_min, m_max))
 except ValueError:
 print('ops, numero invalido, Digite nota valida...')
# programa principal
# cria dicionario de listas vazio
d_alunos = {'nome': [], 'nota1': [], 'nota2': [], 'nota3': [], 'nota4': [], 'media': [], 'situacao': []}
m_alunos = valida_int('Quantos alunos vamos cadastrar? ', 0, 9999) # identifica a quantidade de cadastros realizados
for i in range(0, m_alunos, 1): # povoamento do dicionario
 d_alunos['nome'].append(input('Digite o nome do aluno: '))
 d_alunos['nota1'].append(valida_float('Digite a primeira nota: ', 0, 10))
 d_alunos['nota2'].append(valida_float('Digite a segunda nota: ', 0, 10))
 d_alunos['nota3'].append(valida_float('Digite a terceira nota: ', 0, 10))
 d_alunos['nota4'].append(valida_float('Digite a quarta nota: ', 0, 10))
 # calculo da media
 d_alunos['media'].append(
 (d_alunos['nota1'][i] + d_alunos['nota2'][i] + d_alunos['nota3'][i] + d_alunos['nota4'][i]) / 4)
 # teste para preenchimento da situacao
 if d_alunos['media'][i] >= 7:
 d_alunos['situacao'].append('aprovado')
 else:
 d_alunos['situacao'].append('reprovado')
# impressao dos dados tabulados conforme solicitado. - ' '*20-len(nome) usado para garantir tabulacao com diferentes 
# nomes --- {:.1f} usado para garantir 1 casa decimal conforme solicitado
print('notas dos alunos')
print(
 'nome' + ' ' * 16 + 'N1' + ' ' * 5 + 'N2' + ' ' * 4 + 'N3' + ' ' * 4 + 'N4' + ' ' * 4 + 'media' +
 ' ' * 3 + 'situacao')
for i in range(0, m_alunos, 1):
 print(d_alunos['nome'][i] + ' ' * (
 20 - len(d_alunos['nome'][i])) + '{:.1f} {:.1f} {:.1f} {:.1f} {:.1f} {}'.format(
 d_alunos['nota1'][i], d_alunos['nota2'][i], d_alunos['nota3'][i], d_alunos['nota4'][i], d_alunos['media'][i],
 d_alunos['situacao'][i]))
Imagem do código funcionando no seu computador:
1. EXERCÍCIO 4
Leia e armazene em um dicionário o nome, a idade e o número do telefone de seus contatos, sendo que a chave deve ser o nome. Ao digitar uma string vazia para o nome, o programa interrompe a leitura e se encerra.
Apresente na tela os dados lidos em ordem alfabética pelo nome dos contatos. Uma possível solução de ordenar alfabeticamente é usar o método sort. Em seguida, armazene os contatos em outros dois dicionários, utilizando como critério a idade: menores de 18 anos em um e os maiores em outro dicionário, eliminando o original. Apresente na tela os dois dicionários resultantes da separação. 
Imprima na tela um teste do seu programa usando como primeiro cadastro o seu nome, como telefone o seu RU, e como idade os dois últimos dígitos do seu RU.
mo nota os 4 primeiros dígitos do seu RU. 
Solução do aluno:
def valida_int(m_texto, m_min, m_max):
 """
 funcao que recebe os dados via teclado e valida o formato numero inteiro
 :param m_texto: texto apresentado durante a leitura
 :param m_min: valor minimo a ser lido
 :param m_max: valor maximo a ser lido
 :return: retorna o valor inteiro digitado, dentro da faixa especificada
 """
 while True:
 try: # teste para validade o tipo de caractere
 m_codigo = int(input(m_texto))
 if m_min < m_codigo < m_max:
 return m_codigo
 else:
 print('digite um valor entre {} e {}'.format(m_min, m_max))
 except ValueError:
 print('ops, numero invalido, Digite um valor inteiro...')
# programa principal
# cria dicionario e listas vazios
d_contatos = {'nome': 0, 'idade': 0, 'telefone': 0}
l_contatos = []
l_menor18 = []
l_maior18 = []
m_count = 0
while True: # loop para cadastro ate que a condicao seja satisfeira
 d_contatos['nome'] = input('Digite o nome do contato: ') # cadastro de item
 if d_contatos['nome'] == '': # consicao de parada
 break
 m_count += 1
 d_contatos['idade'] = valida_int('Digite a idade: ', 0, 200) # cadastro de item 
 d_contatos['telefone'] = input('Digite o telefone: ') # cadastro de item
 l_contatos.append(d_contatos.copy()) # povoamento de lista
l_contatos.sort(key=lambda d: d['nome']) # ordena a lista usando como chave o nome
# impressao da lista completa ordenada
print('lista ordenada\n' + 'nome' + ' ' * 16 + 'idade' + ' ' * 6 + 'telefone')
for i in range(0, m_count, 1):
 print(l_contatos[i]['nome'] + ' ' * (20 - len(l_contatos[i]['nome'])) + '{} {}'.format(
 l_contatos[i]['idade'], l_contatos[i]['telefone']))
# separacao das listas
for i in range(0, m_count, 1):
 if l_contatos[i]['idade'] < 18:
 l_menor18.append(l_contatos[i])
 else:
 l_maior18.append(l_contatos[i])
# impressao das listas separadas
print('lista menores 18 anos\n' + 'nome' + ' ' * 16 + 'idade' + ' ' * 6 + 'telefone')
for i in l_menor18:
 print(i['nome'] + ' ' * (
 20 - len(i['nome'])) + '{} {}'.format(i['idade'], i['telefone']))
print('lista maiores 18 anos\n' + 'nome' + ' ' * 16 + 'idade' + ' ' * 6 + 'telefone')
for i in l_maior18:
 print(i['nome'] + ' ' * (
 20 - len(i['nome'])) + '{} {}'.format(i['idade'], i['telefone']))
Imagem do código funcionando no seu computador:
1

Continue navegando

Outros materiais