Ich lese Artikel wie "Der Typ, der nur Ruby kann, ist ein Dummkopf, der den Algorithmus nicht versteht" (ich habe vergessen, wo ich ihn gelesen habe) Ich höre oft Leute sagen, dass sie nicht gut darin sind, über Algorithmen nachzudenken, während sie mit Paarprofis hacken.
Die ** Algorithmus-Theorie ** (schläfrig), die ich an der Universität gemacht habe, kann zum ersten Mal nützlich sein! Ich dachte, also würde ich es gerne auf verschiedene Arten zerlegen.
Zuerst habe ich versucht, die Syntax zu organisieren, die verwendet werden kann.
・ Die bedingte Verzweigungssyntax kann ordnungsgemäß verwendet werden ・ Verstehen Sie den Unterschied zwischen Ruby- und Python-Code
So schreiben Sie grundlegende Anweisungen für ein Programm.
Das Programm hat nur drei Sätze.
-Sequenzielle Verarbeitung: In der Reihenfolge von oben ausgeführt. Die Basis ist diese Bewegung.
-Zweigverarbeitung: Die Verarbeitung wird abhängig von den Bedingungen geändert. Bewegung wie ein psychologischer Test.
- Wiederholen Sie die Verarbeitung: Wiederholen Sie die gleiche Verarbeitung. Wenn Sie es in Ruhe lassen, wird es auf unbestimmte Zeit fortgesetzt. Kombinieren Sie es also mit einer bestimmten Bedingung.
Diese Schreibregeln sind Syntax!
Variablen, Konstanten, Zuweisungen usw. werden übrigens manchmal als Syntax bezeichnet.
if Die auszuführende Verarbeitung ändert sich abhängig von den eingestellten Bedingungen. Sie können die Verarbeitung auch einstellen, wenn die Bedingungen nicht erfüllt sind. Hier ist ein Diagramm ↓
Sie können auch mehrere Bedingungen festlegen.
Beschreibe mit ** if --elsif ・ ・ ・ else --end **.
if.rb
if a == b
puts "a und b sind gleich"
elsif a > b
puts "a ist groß"
else
puts "b ist groß"
end
Beschreibe mit ** if --elif ・ ・ ・ else **.
if.py
if a == b:
print("a und b sind gleich")
elif a > b:
print("a ist groß")
else:
print("b ist groß")
Die Implementierung mit if-elsif-else-end ist schneller als das Anordnen mehrerer if-Enden.
unless Der Prozess wird ausgeführt, wenn die festgelegten Bedingungen nicht erfüllt sind. Das Gegenteil von wenn.
unless.rb
unless a = b
puts "a und b sind nicht gleich"
end
Sie können else verwenden, aber wenn Sie den Prozess in zwei Teile aufteilen möchten, ist es besser, ** if-else ** zu verwenden. Verwenden Sie den negativen Operator (!), Wenn die Bedingung "wenn nicht" sein soll.
unlessOrIf.rb
unless a == b
puts "a und b sind nicht gleich"
else
puts "a und b sind gleich"
end
#Gleich wie unten
if a != b
puts "a und b sind nicht gleich"
else
puts "a und b sind gleich"
end
#Immerhin ist das in Ordnung
if a == b
puts "a und b sind gleich"
else
puts "a und b sind nicht gleich"
end
Sie können mit elsif nicht mehrere Bedingungen festlegen. Verwenden Sie die if-Anweisung, wenn es sich um einen komplizierten Zweig handelt.
Verwenden Sie es sei denn für.
unless.rb
unless year > 20
puts "Ich kann keinen Schnaps kaufen"
end
Nicht! !! Sie können jedoch schreiben, wenn nicht.
ifnot.rb
if not year > 20:
print("Ich kann keinen Schnaps kaufen")
Es scheint, dass Bedingungen mit den logischen Operatoren von und oder nicht festgelegt werden können. Weitere Informationen hier
Groß- / Kleinschreibung wird empfohlen, wenn Sie abhängig von einem bestimmten Wert mehrere Zweige erstellen möchten. Im Fall von if muss der bedingte Ausdruck für die Anzahl der Zweige beschrieben werden, im Fall ist jedoch nur eine Bedingung erforderlich. (Fall ist einfacher, das Menü abhängig vom Eingabewert des Ruby-Lehrplans "Review App" zu verzweigen!)
case.rb
case a
when 1
puts "a ist 1"
when 2
puts "a ist 2"
else
puts "Nichts"
end
Das Verhalten ist das gleiche wie bei Verwendung von == für die if-Bedingung und Festlegen mehrerer Zweige.
Sie können auch zwei oder mehr zu vergleichende Werte festlegen.
case.rb
case a
when 1,2
puts "a ist 1 oder 2"
when 3,4
puts "a ist 3 oder 4"
else
puts "Nichts"
end
Nicht! !! !! !! Nach der offiziellen Dokumentation Sie können das auch einfach tun, indem Sie> if ... elif ... elif ... else wiederholen. Es gab einige Vorschläge für die Syntax der switch-Anweisung, aber es besteht (noch) kein Konsens darüber, ob oder wie eine Bereichsprüfung durchgeführt werden soll.
Es scheint, dass Sie es mit if-elif-else schreiben.
Es gibt fast keinen Unterschied in der Verarbeitungsgeschwindigkeit zwischen if und case. Der JS-Vergleichsartikel lag ebenfalls im Fehlerbereich.
Ich habe diesmal nachgeforscht und Folgendes festgestellt (was offensichtlich sein kann).
・ Die Syntax, die verwendet werden kann, ist je nach Sprache unterschiedlich
-Die zu verwendende Syntax hängt vom zu implementierenden Prozess ab.
Grundsätzlich handelt es sich um eine if-Anweisung, die nur Brute Force implementiert. Daher habe ich mich für eine andere Syntax entschieden. Es scheint jedoch keine Grundlage für die Verarbeitungsgeschwindigkeit oder die Speichernutzung zu geben. Ist es nur ein Geschmack oder eine Lesbarkeit? Das ist die heutige Schlussfolgerung.
Ich wollte iterativ schreiben ...
Ich möchte diesmal schreiben. ・ Was ist überhaupt ein Algorithmus? ・ Wie schreibt man ein Flussdiagramm?
Recommended Posts