Informática, perguntado por lucas27484, 8 meses atrás

CRUD é uma sigla extremamente comum em tecnologia da informação. De forma geral, um CRUD é uma aplicação (um programa) que possui quatro funcionalidades principais:

C: Create – Criar/inserir dados.
R: Retrieve – Recuperar/imprimir dados.
U: Update – Atualizar/modificar dados.
D: Delete – Remover/apagar dados.

Utilize o conceito de CRUD para ajudar o professor a armazenar os alunos e suas notas da Turma G "de Gato". Cabe a você implementar a seguinte série de operações:

C aluno nota: Cria um novo aluno com nome aluno e com nota.
R aluno: Imprime uma linha com a nota do aluno de nome aluno.
U aluno nota: Atualiza a nota do aluno com a nova nota.

Entrada:

A primeira linha da entrada contém um inteiro 1 ≤ q ≤ 105 representando o número de operações. As próximas q linhas da entrada são operações dos tipos C, R e U, seguindo o formato descrito no enunciado e mostrado nos exemplos.

Saída:

Para cada operação do tipo R, imprima uma linha com a nota atual do aluno dado na operação.

Notas
Para cada caso de teste, já existe um dicionário inicial chamado dic_inicial, inicializado da seguinte forma:

dic_inicial = {
'João' : 10,
'Maria' : 10,
'Jorge' : 4,
'Marta' : 5,
'Mário' : 6,
'Mikael' : 9
}

No primeiro exemplo de teste, foi solicitado, na seguinte ordem:
1) a impressão do nome do João e sua respectiva nota;
2) Atualização da nota do Jorge para 10;
3) a impressão do nome do Jorge e sua respectiva nota;
4) atualização da nota da Marta para 4;
5) a impressão do nome da Marta e sua respectiva nota;

teste no anexo

Anexos:

Soluções para a tarefa

Respondido por GeBEfte
2

O programa a seguir não conta com validação de dados ou tratamento de exceções, assim cabe ao usuário alguns cuidados como, por exemplo, a digitação correta dos dados, atentando para a diferenciação entre letras minúsculas e maiúsculas, acentuação etc.

O interesse nessa resolução não será na performance de tempo do programa, mas a legibilidade do código e, dessa forma, utilizaremos os métodos update() e get() para criar, atualizar e adquirir informações do dicionário em vez da indexação (opção mais rápida).

[Python 3.8]

\sf dic\underline{~}inicial~ =~ \{\\'Jo\tilde{a}o'~ :~ 10,\\'Maria'~ : ~10,\\'Jorge'~ : ~4,\\'Marta'~ : ~5,\\'M\acute{a}rio'~ : ~6,\\'Mikael'~ :~ 9\\\}\\q~ =~ int(inpu t())\\

\sf for~ i~ in~ range(q):\\	~~~~comando~ =~ inpu t().split()\\~~~~	operacao~ =~ comando[0]\\~~~~	nome~ = ~comando[1]\\~~~~	if~ len(comando)~ ==~ 3:\\~~~~~~~~		nota~ = ~comando[2]\\	~~~~if~ operacao~ ==~ 'C':\\~~~~~~~~		dic\underline{~}inicial.update(\{nome:~ nota\})\\~~~~	elif~ operacao~ ==~ 'R':\\~~~~~~~~		print(f'\{nome\}~ \{dic\underline{~}inicial.get(nome)\}')\\~~~~	elif~ operacao~ ==~ 'U':\\~~~~~~~~		dic\underline{~}inicial.update(\{nome:~ nota\})

Comentários: Perceba que a criação e a atualização de dados são idênticas, isso acontece porque o método update() "tenta" atualizar um item no dicionário, mas, se a chave (key) não existir, o item é então criado.

Neste exercício, essas duas operações poderiam ter sido fundidas.

Ainda, como dito anteriormente, a indexação ofereceria uma alternativa mais rápida de execução do programa, porém discutivelmente menos legível. Abaixo deixo as linhas que sofreriam alteração seguindo a indexação.

\sf dic\underline{~}inicial.update(\{nome: ~nota\})~~\Longrightarrow~~dic\underline{~}inicial[nome]~ =~ nota\\\\print(f'\{nome\}~ \{dic\underline{~}inicial.get(nome)\}')~\Rightarrow~print(f'\{nome\}~ \{dic\underline{~}inicial[nome]\}')

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Perguntas interessantes