J'ai lu des articles comme "Le gars qui ne peut que faire Ruby est un imbécile qui ne comprend pas l'algorithme" (j'ai oublié où je l'ai lu) J'entends souvent les gens dire qu'ils ne sont pas doués pour penser aux algorithmes lors du piratage avec des pros de la paire.
La ** théorie de l'algorithme ** (somnolente) que j'ai suivie à l'université peut être utile pour la première fois! J'ai pensé, alors je voudrais le démonter de différentes manières.
Tout d'abord, j'ai essayé d'organiser la syntaxe qui peut être utilisée.
・ La syntaxe de branchement conditionnel peut être utilisée correctement ・ Comprendre la différence entre le code Ruby et Python
Comment rédiger des instructions de base pour un programme.
Le programme ne comporte que trois mouvements.
-Traitement séquentiel: exécuté dans l'ordre du haut. La base est ce mouvement.
-Traitement de la branche: Le traitement est modifié en fonction des conditions. Mouvement comme un test psychologique.
-Répéter le traitement: Répéter le même traitement. Si vous le laissez seul, cela continuera indéfiniment, alors combinez-le avec une condition.
Ces règles d'écriture sont de la syntaxe!
À propos, les variables, les constantes, les affectations, etc. sont parfois appelées syntaxe.
if Le traitement à exécuter change en fonction des conditions définies. Vous pouvez également définir le traitement lorsque les conditions ne sont pas remplies. Voici un diagramme ↓
Vous pouvez également définir plusieurs conditions.
Décrivez avec ** if --elsif ・ ・ ・ else --end **.
if.rb
if a == b
puts "a et b sont égaux"
elsif a > b
puts "a est grand"
else
puts "b est grand"
end
Décrivez avec ** if --elif ・ ・ ・ else **.
if.py
if a == b:
print("a et b sont égaux")
elif a > b:
print("a est grand")
else:
print("b est grand")
Il est plus rapide de mettre en œuvre avec if-elsif-else-end que d'organiser plusieurs if-ends.
unless Le processus est exécuté lorsque les conditions définies ne sont pas remplies. Le contraire de if.
unless.rb
unless a = b
puts "a et b ne sont pas égaux"
end
Vous pouvez utiliser else, mais si vous souhaitez diviser le processus en deux, il est préférable d'utiliser ** if-else **. Utilisez l'opérateur négatif (!) Si vous voulez que la condition soit "quand non".
unlessOrIf.rb
unless a == b
puts "a et b ne sont pas égaux"
else
puts "a et b sont égaux"
end
#Identique à ci-dessous
if a != b
puts "a et b ne sont pas égaux"
else
puts "a et b sont égaux"
end
#Après tout c'est bien
if a == b
puts "a et b sont égaux"
else
puts "a et b ne sont pas égaux"
end
Vous ne pouvez pas définir plusieurs conditions avec elsif. Utilisez l'instruction if lorsqu'elle devient une branche compliquée.
À utiliser sauf pour.
unless.rb
unless year > 20
puts "Je ne peux pas acheter d'alcool"
end
Ne pas! !! Cependant, vous pouvez écrire sinon.
ifnot.rb
if not year > 20:
print("Je ne peux pas acheter d'alcool")
Il semble que les conditions puissent être définies à l'aide des opérateurs logiques de et, ou, non. Pour plus d'informations ici
La casse est recommandée lorsque vous souhaitez créer plusieurs branches en fonction d'une valeur. Dans le cas de if, l'expression conditionnelle doit être décrite pour le nombre de branches, mais dans le cas, une seule condition est requise. (Case est plus simple de ramener le menu en fonction de la valeur d'entrée du programme Ruby "Review App"!)
case.rb
case a
when 1
puts "a vaut 1"
when 2
puts "a vaut 2"
else
puts "Rien"
end
Le comportement est le même que lors de l'utilisation de == pour la condition if et de la définition de plusieurs branches.
Vous pouvez également définir deux valeurs ou plus à comparer.
case.rb
case a
when 1,2
puts "a vaut 1 ou 2"
when 3,4
puts "a vaut 3 ou 4"
else
puts "Rien"
end
Ne pas! !! !! !! Selon la documentation officielle Vous pouvez facilement faire de même en répétant> if ... elif ... elif ... else. Il y a eu quelques suggestions pour la syntaxe de l'instruction switch, mais il n'y a (encore) pas d'accord sur l'opportunité ou la manière de faire une vérification de plage.
Il semble que vous l'écrivez avec if-elif-else.
Il n'y a presque aucune différence de vitesse de traitement entre if et case. L'article de comparaison JS était également dans la plage d'erreur.
J'ai enquêté cette fois et j'ai trouvé ce qui suit (ce qui peut être évident).
・ La syntaxe qui peut être utilisée diffère selon la langue
-La syntaxe à utiliser diffère selon le processus que vous souhaitez implémenter.
Fondamentalement, il s'agit d'une instruction if et n'implémente que la force brute, j'ai donc décidé d'utiliser également une autre syntaxe. Cependant, il semble n'y avoir aucune base pour la vitesse de traitement ou l'utilisation de la mémoire. Est-ce juste un goût ou une lisibilité? Telle est la conclusion d'aujourd'hui.
Je voulais écrire de manière itérative ...
Je veux écrire cette fois. ・ Qu'est-ce qu'un algorithme en premier lieu? ・ Comment rédigez-vous un organigramme?
Recommended Posts