Menu
Coddy logo textTech

Adicionar Aluno

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 49 de 56.

Defina um método add_student que registra um novo aluno no hash compartilhado student_records.

Recusar duplicatas é a única ramificação; uma vez que um aluno exista, relate isso e retorne sem sobrescrever.

challenge icon

Desafio

Fácil

No topo do seu arquivo, mantenha student_records = {}. Em seguida, defina um método add_student(name, age, courses) que:

  1. Se name já for uma chave em student_records, exibe Student '<name>' already exists. e retorna.
  2. Caso contrário, armazena { age: age, grades: [], courses: courses } sob name e exibe Student '<name>' added.

No final do seu arquivo, substitua o bloco de teste por:

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspect

A saída esperada é:

Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}

Como os métodos não conseguem ver variáveis locais do script envolvente, declare student_records com $student_records (uma global) para que o método possa lê-la e atualizá-la. Use esse nome dentro do método também.

Folha de consulta

Use uma variável global ($variable_name) para que os métodos possam acessar e modificar variáveis definidas fora de seu escopo:

$student_records = {}

def add_student(name, age, courses)
  if $student_records.key?(name)
    puts "Student '#{name}' already exists."
    return
  end
  $student_records[name] = { age: age, grades: [], courses: courses }
  puts "Student '#{name}' added."
end

Pontos principais:

  • Prefixe com $ para tornar uma variável global (acessível dentro de métodos)
  • Use .key?(name) para verificar se um hash já contém uma chave
  • Use return para sair de um método antecipadamente após lidar com uma duplicata

Experimente você mesmo

$student_records = {}

# TODO: def add_student(name, age, courses), proteger contra duplicatas,
# armazenar { age:, grades: [], courses: }, imprimir adicionado/já existe

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo