Une certaine fonction d'application de base Ruby de classe de programmation

Fonction d'application du système d'affichage d'examen

Lorsque je révisais le programme d'une certaine classe de programmation, il était recommandé d'implémenter des fonctions appliquées, alors je l'ai essayé. Mise en garde -Ce n'est qu'un exemple d'implémentation! Il existe de nombreuses implémentations plus efficaces et des réponses alternatives. ・ Puisqu'il s'agit d'un programme assez basique, le sens de l'application est différent de votre imagination. C'est une extension qui n'a pas de réponse dans le curriculum.

Répondez immédiatement à l'exemple

1. Définir l'affichage du menu comme une fonction distincte

Collez la partie d'affichage de revue (la partie affichée par les puts) qui a été utilisée à l'avance dans la nouvelle fonction. N'oubliez pas de préparer un argument formel à ce stade et de passer l'argument réel dans show ("hash name") à l'appelant.

review.rb


def show(review)
  line = "------------------------------------"
  puts"Genre:#{review[:genle]}\n#{line}"
  puts"Titre:#{review[:title]}\n#{line}"
  puts"Impressions:\n#{review[:text]}\n#{line}"
  puts"Notation:#{review[:point]}\n#{line}"
end

2. Ajouter de nouveaux éléments d'évaluation

Tout ce que vous avez à faire est d'ajouter un nouvel élément d'entrée (met) dans la fonction qui publie la révision, d'attendre l'entrée avec gets et d'affecter la valeur d'entrée au hachage. À propos, comme il est nécessaire d'augmenter de nouveau les affichages pour l'affichage des revues, il est plus efficace d'effectuer d'abord le travail de «traitement pour faire de l'affichage une fonction distincte» de *** 1 ***.

review.rb


def write(hairetu)
  post = {}
  puts "Veuillez entrer un genre:"
~~~réduction~~~
  puts "Veuillez noter avec un maximum de 100 points:"
  point = gets.to_i
  while point > 100
    puts"0~Veuillez saisir un nombre de 100"
    point = gets.to_i
  end
  post[:point] = point
~~~réduction~~~

*** (La valeur saisie étant convertie en valeur numérique avec .to_i, n'ajoutez pas ".chomp", faites attention à ne pas ajouter inutilement \ n lors de l'affichage et à ne pas casser la ligne) *** (Cette fois, j'ai ajouté un élément de notation, ce qui est ennuyeux, alors je l'ai écrit comme ça, mais s'il s'agit d'une chaîne de caractères normale, je peux l'écrire de la même manière que les autres éléments.)

3. "Lire l'avis" ne peut pas être sélectionné lorsqu'aucun avis n'est rédigé

En écrivant "&& box.length> 0", vous pouvez empêcher l'appel de la fonction de lecture (fonction de lecture des avis) à moins que le contenu du tableau contenant les avis (hachage) ne soit égal ou supérieur à 0.

review.rb


while true
  puts "Nombre d'avis:#{box.length}"
  puts"[0]J'écris une critique"
  puts"[1]Lire les avis"
  puts"[2]Quittez l'appli"
  if choice==0
~~~réduction~~~
  elsif choice==1 && box.length > 0
    read(box)
~~~réduction~~~
end

4. Si le nombre d'avis que vous souhaitez voir est supérieur au nombre d'avis, saisissez-le à nouveau.

review.rb


  puts "Veuillez saisir le numéro de l'avis que vous souhaitez voir:"
  choice = gets.to_i
  while choice > box.length 
    puts "Veuillez saisir le numéro d'un avis existant:"
    choice = gets.to_i
  end

En écrivant de cette manière, vous pouvez configurer une méthode while qui ne cesse de ressaisir la valeur si le nombre entré par l'utilisateur est supérieur au nombre d'éléments dans la zone de tableau. *** Au fait *** Dans cette description, les avis publiés récemment lorsque l'utilisateur entre 0 ou une chaîne de caractères seront affichés. Il existe différentes solutions, mais la plus simple est

review.rb


  if choice == 0
    puts "valeur invalide"
    return 
  else
~~~Traitement après l'instruction while~~~
end

C'est une méthode pour entourer le processus de l'instruction conditionnelle de if. Quand je l'ai essayé, le 0 et la chaîne de caractères sont fermement repoussés. Veuillez noter que si vous mettez des put après le retour, la fonction de lecture se terminera silencieusement. Notez également que si vous n'écrivez pas fermement la partie esle, elle se terminera également en silence.

Exemple de code

review.rb


box = []
def write(hairetu)
  post = {}
  puts "Veuillez entrer un genre:"
  post[:genle] = gets.chomp
  puts "Veuillez entrer un titre:"
  post[:title] = gets.chomp
  puts "Veuillez saisir votre impression:"
  post[:text] = gets.chomp
  puts "Veuillez noter avec un maximum de 100 points:"
  point = gets.to_i
  while point > 100
    puts"0~Veuillez saisir un nombre de 100"
    point = gets.to_i
  end
  post[:point] = point
  show(post)
  hairetu << post
  return hairetu
end

def read(box)

  box.each_with_index do |reviews,index|
    index += 1
    puts "#{[index]}:#{reviews[:title]}Examen de"
  end
  puts "Veuillez saisir le numéro de l'avis que vous souhaitez voir:"
  choice = gets.to_i
  if choice == 0
    puts "valeur invalide"
    return 
  else
  while choice > box.length 
    puts "Veuillez saisir le numéro d'un avis existant:"
    choice = gets.to_i
  end
  choice -= 1
  review = box[choice]
  show(review)
end
end

def show(review)
  line = "------------------------------------"
  puts"Genre:#{review[:genle]}\n#{line}"
  puts"Titre:#{review[:title]}\n#{line}"
  puts"Impressions:\n#{review[:text]}\n#{line}"
  puts"Notation:#{review[:point]}\n#{line}"
end

def exit
  exit
end

def error
  puts "valeur invalide"
end

while true
  puts "Nombre d'avis:#{box.length}"
  puts"[0]J'écris une critique"
  puts"[1]Lire les avis"
  puts"[2]Quittez l'appli"
  choice = gets.to_i
  if choice==0
    box = write(box)
  elsif choice==1 && box.length > 0
    read(box)
  elsif choice==2
    exit
  else
    error
  end
end

Pour être honnête, il existe encore de nombreuses possibilités d'erreurs, donc si vous trouvez des défauts, veuillez commenter.

Recommended Posts

Une certaine fonction d'application de base Ruby de classe de programmation
[Java] Termes de base en programmation
Programmation orientée objet
Type de base-java
Notions de base
Exemple d'implémentation de programmation réactive Spring WebFlux (de base)
Une certaine fonction d'application de base Ruby de classe de programmation
Création d'applications Web de base Servlet / JSP (fonction de connexion)
Création d'applications Web de base Servlet / JSP (fonction de déconnexion)
Termes de base de Ruby
[Introduction] Créer une application Ruby on Rails
[Programmation complète] §5 Créer une application de gestion des avis dans Ruby