La période d'étude est maintenant dans la 11e semaine. Voici un retour sur ce que j'ai appris et ce que je fais souvent des erreurs.
Cette fois, c'est "l'ordre de traitement". Bien qu'il s'agisse d'un contenu basique et rudimentaire dans les bases, il existe de nombreux cas où une erreur s'est produite en raison d'un mauvais ordre de description, j'espère donc que cela sera utile pour ceux qui commencent tout juste à apprendre. De plus, comme la langue que nous apprenons actuellement est "Ruby", le contenu sera également celui de "Ruby".
La version de ruby utilisée est la suivante.
ruby 2.6.5
Tout d'abord, l'ordre de traitement du programme dans la source est essentiellement ** "dans l'ordre de haut en bas, ligne par ligne" *. Cela ne change pas même si vous créez une application en utilisant une description compliquée ou Ruby on Rails. ( Lors de l'appel d'une méthode, d'un branchement conditionnel ou d'un traitement répété, la ligne peut sauter de bas en haut, mais elle sera plus facile à comprendre si vous connaissez l'ordre de traitement de base.) Exprimé dans un programme simple
puts "1ère ligne"
puts "2e ligne"
puts "3e ligne"
Si vous écrivez, lorsque vous l'exécutez sur la console
1ère ligne
2e ligne
3e ligne
Ce sera. Avec cette description, le résultat de sortie du programme met "3ème ligne"
ne viendra pas à la 1ère ligne. Ce serait dur s'il y en avait.
Si le branchement conditionnel (if, while, etc.) ou le traitement répétitif (temps, chacun, etc.) chevauche cela, l'ordre de traitement a tendance à être bâclé. (Peut-être que je suis le seul ...)
Par exemple, prenez le fameux ** "FizzBuzz Problem" ** comme exemple.
Problème FizzBuzz
1~Créez un programme qui génère le nombre 100.
Lorsqu'il s'agit d'un multiple de 3, il s'affiche sous la forme "Fizz", et lorsqu'il est un multiple de 5, il s'affiche sous la forme "Buzz".
Créez un programme à afficher.
Cependant, lorsqu'il s'agit d'un multiple de 15, affichez "Fizz Buzz".
Un exemple de cette réponse est
#Code correct
def fizz_buzz
num = 0
while num <= 99
num += 1
if num % 15 == 0
puts "FizzBuzz"
elsif num % 3 == 0
puts "Fizz"
elsif num % 5 == 0
puts "Buzz"
else
puts num
end
end
end
puts fizz_buzz
Le résultat de sortie est le suivant
Modifions l'ordre des expressions conditionnelles dans ce programme comme suit.
#Mauvais code
def fizz_buzz
num = 0
while num <= 99
num += 1
if num % 3 == 0 # num % 15 ==Changé de l'expression conditionnelle de 0
puts "Fizz"
elsif num % 5 == 0
puts "Buzz"
elsif num % 15 == 0 #num % 3 ==Changé de l'expression conditionnelle de 0
puts "FizzBuzz"
else
puts num
end
end
end
puts fizz_buzz
Voici le résultat de sortie décrit comme ci-dessus.
Lorsqu'il s'agit d'un multiple de 15, "FizzBuzz" n'est pas affiché mais "Fizz" est affiché. La raison en est "Je ne comprends pas l'ordre de traitement des programmes".
Compte tenu de l'ordre de traitement du mauvais code ci-dessus Par exemple, si num == 3,
#Mauvais code
if num % 3 == 0 #Cette formule s'applique
puts "Fizz"
=> "Fizz"
Lorsque num == 5
#Mauvais code
if num % 3 == 0 # num ==5 n'est pas divisible par 3, alors procédez comme suit
puts "Fizz"
elsif num % 5 == 0 # num ==5 est divisible par 5, alors faites-le
puts "Buzz"
=> "Buzz"
Si le problème num == 15
#Mauvais code
if num % 3 == 0 # num ==15 est divisible par 3, alors faites-le!
puts "Fizz"
elsif num % 5 == 0 # num ==15 a été traité et ne fonctionne plus.
puts "Buzz"
elsif num % 15 == 0 # num ==15 a été traité et ne fonctionne plus.
puts "FizzBuzz"
end
=> "Fizz"
Il sera traité comme ceci. Faites donc attention à l'ordre dans lequel vous écrivez le programme.
if num % 15 == 0 #Premièrement, il est déterminé si num est divisible par 15.
puts "FizzBuzz" #Si l'expression conditionnelle est vraie"FizzBuzz"Si l'affichage ne s'applique pas, passez à la suivante
elsif num % 3 == 0 #Ensuite, jugez s'il est divisible par 3 mais non divisible par 15.
puts "Fizz" #Si l'expression conditionnelle est vraie"Fizz"Est affiché.
#Si cela ne s'applique pas non plus, passez à la suivante
elsif num % 5 == 0 #Il n'est pas divisible par 3 ou 15, mais on juge s'il est divisible par 5.
puts "Buzz" #Si l'expression conditionnelle est vraie"Buzz"Est affiché.
#Si cela ne s'applique pas non plus, passez à la suivante
else
puts num #Si toutes les conditions précédentes ne sont pas remplies
end #Afficher num tel quel
c'est tout. C'est une chose basique, mais d'après mon expérience jusqu'à présent, il y a eu des situations où j'ai eu des problèmes parce que je n'avais pas une solide compréhension de ces bases, donc si vous faites face à une situation similaire, j'apprécierais que vous puissiez vous y référer.
Recommended Posts