Evgenii Legotckoi
Evgenii Legotckoi18. Juni 2016 01:36

Benutzerhandbuch #03 - Ruby - Einfache Beispiele

Schreiben wir eine Funktion zum Berechnen von Fakultäten. Die mathematische Definition einer Fakultät von * n * lautet wie folgt:

n! = 1                (когда n==0)
   = n * (n-1)!       (иначе)

In Ruby kann es so geschrieben werden:

def fact(n)
  if n == 0
    1
  else
    n * fact(n-1)
  end
end

Möglicherweise stellen Sie fest, dass die Anweisung * end * hier wiederholt wird. Aus diesem Grund wird Ruby als Alogolo-like bezeichnet. (Eigentlich ähnelt die Ruby-Syntax eher der Eiffel-Syntax.) Möglicherweise stellen Sie auch fest, dass die Anweisung * return * fehlt. Es ist nicht erforderlich, da Ruby den letzten Wert zurückgibt, mit dem es die Funktion verlassen hat. Die Verwendung des Operators * return * ist möglich, aber nicht erforderlich.


Probieren wir die Herleitung unserer Fakultät aus. Fügen wir eine Codezeile hinzu, die uns ein funktionierendes Programm mit Ausgabe liefert:

# Программа находит факториал от числа
# Сохраните этот файл как fact.rb

def fact(n)
  if n == 0
    1
  else
    n * fact(n-1)
  end
end

print fact(ARGV[0].to_i), "\n"

Es gibt ein Array * ARGV, *, das die Befehlsargumente enthält, und die Umwandlung von String-Zeichen in eine Integer-Variable.

% ruby fact.rb 1
1
% ruby fact.rb 5
120

Lassen Sie uns das Programm mit Argument 40 ausführen. Dies könnte Ihren Taschenrechner überlaufen ...

% ruby fact.rb 40
815915283247897734345611269596115894272000000000

Aber es funktioniert. Tatsächlich kann Ruby mit jeder Ganzzahl arbeiten, die der Speicher Ihres Computers verarbeiten kann. Die Zahl ist also 400! Wir können auch die Fakultät dafür berechnen:

% ruby fact.rb 400
64034522846623895262347970319503005850702583026002959458684
44594280239716918683143627847864746326467629435057503585681
08482981628835174352289619886468029979373416541508381624264
61942352307046244325015114448670890662773914918117331955996
44070954967134529047702032243491121079759328079510154537266
72516278778900093497637657103263503315339653498683868313393
52024373788157786791506311858702618270169819740062983025308
59129834616227230455833952075961150530223608681043329725519
48526744322324386699484224042325998055516106359423769613992 
31917134063858996537970147827206606320217379472010321356624 
61380907794230459736069956759583609615871512991382228657857 
95493616176544804532220078258184008484364155912294542753848 
03558374518022675900061399560145595206127211192918105032491 
00800000000000000000000000000000000000000000000000000000000 
0000000000000000000000000000000000000000000

Wir können die Richtigkeit dieser Schlussfolgerung nicht schnell genug überprüfen, aber sie muss richtig sein.

Eingabe- und Rechenzyklus

Wenn Sie Ruby ohne Argumente aufrufen, liest es Befehle aus der Standardeingabe und führt sie am Ende der Eingabe aus:

% ruby
print "hello world\n"
print "good-bye world\n"
^D
hello world
good-bye world

Ruby wird auch mit einem Programm namens eval.rb geliefert, mit dem Sie Ruby-Code über die Tastatur in einer interaktiven Schleife eingeben können, die Ihnen das Ergebnis im Verlauf anzeigt. Dies wird in diesem Tutorial verwendet.

Wenn Sie ein ANSI-kompatibles Terminal haben (dies ist korrekt, wenn Sie Programme unter UNIX ausführen; unter DOS müssen Sie ANSI.SYS oder ANSI.COM installieren (zum Zeitpunkt der Übersetzung mussten diese Dienstprogramme nicht installiert werden)) . Suchen Sie alternativ nach dem Unterverzeichnis * Beispiel * in der Ruby-Distribution für eine Nicht-ANSI-Version, die in jedem Terminal funktioniert. Unten ist eine kurze * eval.rb-Sitzung: *

% ruby eval.rb
ruby> print "Hello, world.\n"
Hello, world.
   nil
ruby> exit
  • hello world * wird von * print output bereitgestellt * Die nächste Zeile, in diesem Fall * nil *, meldet den zuletzt empfangenen Wert; Ruby unterscheidet nicht zwischen Operatoren und Ausdrücken, daher bedeutet das Ergebnis eines Codestücks im Grunde dasselbe wie das Ergebnis einer Funktion. * nil * bedeutet hier, dass * print * keinen Wert zurückgibt. Beachten Sie, dass wir die Interpreter-Schleife beenden können, indem Sie ihr exit mitteilen, obwohl * Strg + D * auch funktioniert.

In diesem Tutorial markiert * "ruby>" * die Eingabe für unser nützliches kleines Programm * eval.rb. *

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
A
ALO1ZE19. Oktober 2024 08:19
Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken