Личный кабинет

Весело и просто о Ruby

Примеры программ (боюсь слова "оригинальных" потому как сам язык - весьма оригинален)
Андрей Сидоров ( Пользователь )
Думаете, тот, кто проводит подготовку проверяющих, знаком с Руби или Питоном? :)
Евгений Тюленев ( Пользователь )
А, вообще, существует очередь на замещение вакантной должности - проверяющий?

Как показывает опыт, особого энтузиазма не наблюдается.
Андрей Сидоров ( Пользователь )
Проверяющим платят гроши - меньше 1 тыс. руб. Поэтому желающие в очереди не стоят, и их присылают по разнарядке из школ и вузов.
Евгений Тюленев ( Пользователь )
Разбирался с регулярными выражениями, пришла на ум старая олимпиадная задача:
"Дан текст в котором присутствуют целые числа. Написать программу увеличивающие эти числа в два раза. Результат должен быть точно таким же текстом, за исключением чисел."
Вот решение(для краткости текст в самой программе):
#!/usr/bin/env ruby
#coding:utf-8
text = <<-EOF
fjfjf 456 7878
345
EOF
r1 = /[0-9]+/
text.gsub!(r1) do
|d|
d= "#{2*d.to_i}"

end
puts text


Евгений Тюленев ( Пользователь )


#!/usr/bin/env ruby
#coding:utf-8
=begin
Назначение этой программы: сортировка числового массива,
элементы которого водят с клавиатуры через запятую.
можно организовать ввод из файла.

=end

b=[] #опредление массива-результата

puts "Введите элементы числового массива через запятую:"

#чтение строки, преобразование элементов в числа и запись их в массив b
gets.split(","). each do |s|

b.push s.to_f

end

b.sort! #сортировка b

p b #Вывод массива b на консоль


Интересна также сортировка строкового массива:
#!/usr/bin/env ruby
#coding:utf-8
=begin
Назначение этой программы: сортировка строкового массива,
элементы которого водят с клавиатуры через запятую.
кодировка utf-8
=end
puts "Введите элементы строкового массива через запятую:"

puts"Результат:\n #{gets.chomp.split(",").each do |s|
s.strip!
end.sort!}"


Еще пример, построение графика функции:
#!/usr/bin/env ruby
#coding:utf-8

require 'gtk2'

class GraphApp < Gtk::Window

def initialize #Конструктор класса
super

set_title "График параболы"
signal_connect "destroy" do
Gtk.main_quit
end

init_ui

#установка начальный параметров окна
set_default_size 390, 240
set_window_position Gtk::Window::POS_CENTER

show_all

end

def init_ui #создание интерфейса пользователя.

@darea = Gtk::DrawingArea.new

@darea.signal_connect "expose-event" do
on_expose
end

add(@darea)

end

def on_expose

cr = @darea.window.create_cairo_context
draw_graph cr

end

def draw_graph cr
#Высота и ширина окна
w=allocation.width
h=allocation.height
#смещение начала координат
cr.translate w/2,h/2
cr.set_source_rgb 0, 0, 1
#расчет левой границы
min = Integer(Math.sqrt(h/2))

#Премещение в левую границу пера
cr.move_to -min, -min**2

#цикл построения графика.
(-min).upto(min) do |r|
cr.line_to r,-r**2
end

cr.set_line_width 2
cr.stroke

end

end

Gtk.init
window = GraphApp.new
Gtk.main

И ни каких ресурсных файлов. Все важное для решения задачи в draw, остальное - шаблонно, и на форму таскать мышкой не чего!!!
Евгений Тюленев ( Пользователь )
Что-то форум умер... Деньги кончились у флеймеров или? И все таки о ruby нужно говорить.
Тут возникла проблемка: нужно разместить на ucoz статьи с исходным кодом. Покопавшись в системе, я понял гиблое это дело - как, впрочем и на педсовете - стиля код просто нет как не изгаляйся. А копать html - всякий раз - в лом. Сдвиги, отступы, цвет фона - все это для любителей мышкотыкорства.

И вот, давай искать простенькую программульку для конвертации. Час прошел, другой идет .... Плюнул я на все это безобразие и решил сделать сам. Вот что получилось. Я - лодырь, поэтому красивухи там нет, но работает. Вот тут все об этом
Евгений Тюленев ( Пользователь )
В Ruby можно определять синонимы:
class Array
alias длина length
end

после этого можно использовать слово длина вместо length, например:
p [1,2,3].длина
=>3

Таким образом можно национализировать классы. Больше того - классы можно переопределять "на лету" как в случае Array.

Да и вообще допускаются национальные имена методов!!! Например:

def мойЛюбимыйМетод
print "привет"
end


мойЛюбимыйМетод
=>привет

Часок, другой и готов исполнитель с нужной нам системой команд!!!

footer logo © Образ–Центр, 2019. 12+