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

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

Примеры программ (боюсь слова "оригинальных" потому как сам язык - весьма оригинален)
Евгений Тюленев ( Пользователь )
Книга А. Шень "Программирование, теоремы и задачи"
1.1.1-1.1.2
#coding: utf-8
print "введите что-нибудь через пробел:"
a=gets.chop.split(' ')
a[0],a[1]=a[1],a[0]
puts "поменяли:#{a[0]} #{a[1]}"
#Веселуха!


И зачем голову ломать, кстати можно, только в сторону улучшения, и именно на Ruby.

Вот задачка из олимпиады:
посчитать количество слов в строке! Ну мама не горюй:
#coding: utf-8
print "введите что-нибудь:"
puts" количество слов:#{gets.chop.split(' ').size}"
Михаил Густокашин ( Пользователь )
Есть ли для Руби удобная среда с отладчиком?
Эклипс и НетБинс мне кажутся слишком громоздкими для школьников, так что интересно что-нибудь легкое, в стиле Wing 101 для Питона.
Вэньшу * ( Пользователь )
Цитата (Михаил Густокашин, 01.06.2010, 12:28) <{POST_SNAPBACK}>
Есть ли для Руби удобная среда с отладчиком?
Эклипс и НетБинс мне кажутся слишком громоздкими для школьников, так что интересно что-нибудь легкое, в стиле Wing 101 для Питона.


Школьникам вполне сойдет Geany, без изысков, но свое дело знает... особенно, если параллельно школьников приучить сразу к irb.
Евгений Тюленев ( Пользователь )
Например:
[user@note ~]$ irb
irb(main):001:0> 2**100
=> 1267650600228229401496703205376
irb(main):002:0>

помню в 8 классе мы 2 в сотую возводили. Ох и натерпелись! А теперь!!!!!

Цитата
Школьникам вполне сойдет Geany, без изысков, но свое дело знает... особенно, если параллельно школьников приучить сразу к irb.

Ни чего себе, а что так уничижительно-то? Работает здорово. И профессионалам не грех ручки попробовать! Можь что дельное посоветуют разработчикам. А пока... они не плохую штучку сделали.

"Для школьников"! Обидно. Да!!!
Станислав Михалкович ( Пользователь )
Цитата (Евгений Анатольевич, 01.06.2010, 17:43) <{POST_SNAPBACK}>
Ни чего себе, а что так уничижительно-то? Работает здорово. И профессионалам не грех ручки попробовать! Можь что дельное посоветуют разработчикам. А пока... они не плохую штучку сделали.

"Для школьников"! Обидно. Да!!!

Ну, наконец-то появился топик по Руби! Вот это я понимаю - выбор языка для школьной информатики с примерами кода, какими-то наработками, рекомендациями использовать те или иные среды!

Очень интересно увидеть здесь не примеры того, что раньше было сделать нельзя, выхваченные из середины, а методику построения занятий - я уверен, что методика ввиду наличия новых средств меняется.


По поводу Geany - честно говоря, я пробовал, и ощущение топорности меня не покидало - Вы уж извините. Для школьников - ну, может быть, но только после некоторых доделок - выбрасывания некоторых пунктов меню, например. Конечно, на безрыбье и рак - рыба. Но заточенной под школьников оболочки не хватает.


Смотрю на Wiki другие оболочки для Ruby:
http://freeride.rubyforge.org/wiki/wiki.pl - с виду неплохая
http://homepage2.nifty.com/sakazuki/rde_en/ - сложновато выглядит

Вэньшу * ( Пользователь )
Цитата (Евгений Анатольевич, 01.06.2010, 17:43) <{POST_SNAPBACK}>
Ни чего себе, а что так уничижительно-то? Работает здорово. И профессионалам не грех ручки попробовать! Можь что дельное посоветуют разработчикам. А пока... они не плохую штучку сделали.

"Для школьников"! Обидно. Да!!!


:))) Не сочтите за оскорбление Geany, но она действительно много проще, чем Netbeans, Eclipse или Rubymine. Школьникам она очень удобна в целях обучения именно. Я на ней иногда что-нибудь простенькое делаю.

Цитата (Михалкович Станислав, 01.06.2010, 21:05) <{POST_SNAPBACK}>
Ну, наконец-то появился топик по Руби!

Смотрю на Wiki другие оболочки для Ruby:
http://freeride.rubyforge.org/wiki/wiki.pl - с виду неплохая
http://homepage2.nifty.com/sakazuki/rde_en/ - сложновато выглядит


Есть еще Komodo... Но лично я бы взял Rubymine, это идеал вообще... Но платная она. Хотя я переписывался с создателем ее, так он говорил, что для школ можно ее получить вполне бесплатно, у них там что-то типа академической программы есть для этого.
Михаил Густокашин ( Пользователь )
Цитата (Михалкович Станислав, 01.06.2010, 21:05) <{POST_SNAPBACK}>
Очень интересно увидеть здесь не примеры того, что раньше было сделать нельзя, выхваченные из середины, а методику построения занятий - я уверен, что методика ввиду наличия новых средств меняется.

Мне кажется, что до определенного уровня (до ООП) пути Питона и Руби совпадают полностью. И сильно расходятся с самого начала с классическим путем паскалей-си-бейсиков. На методику обучению таким языкам было бы действительно очень интересно взглянуть, а то хочется через год взять класс (физмат) для обучению Питону, а наступать на все грабли самому не очень хочется.
Вэньшу * ( Пользователь )
Цитата (Михаил Густокашин, 02.06.2010, 02:08) <{POST_SNAPBACK}>
Мне кажется, что до определенного уровня (до ООП) пути Питона и Руби совпадают полностью.


Дело в том, что в Ruby, в отличие от Python, все есть объекты. Так что он изначально целиком объектноориентированный, и это надо иметь в виду при его изучении.

Цитата (Евгений Анатольевич, 01.06.2010, 17:43) <{POST_SNAPBACK}>
Например:
[user@note ~]$ irb
irb(main):001:0> 2**100
=> 1267650600228229401496703205376
irb(main):002:0>

помню в 8 классе мы 2 в сотую возводили. Ох и натерпелись! А теперь!!!!!


А вот факториал 10000!:

puts (1..10000).inject(1) {|a, i| a *= i}

Результат, понятно, не буду здесь выкладывать :) Считает довольно быстро (у меня ruby-1.9.1), на моем ноуте примерно 0.813899 сек
Евгений Тюленев ( Пользователь )
[
Цитата
Мне кажется, что до определенного уровня (до ООП) пути Питона и Руби совпадают полностью.

Ruby без ООП это уже не Ruby.

#coding: utf-8
class Integer
def fact
(1..self).inject(1) {|a, i| a *= i}#Алексей Алексеевич, прекрасная идея

end
end
print "введите что-нибудь:"
puts "#{gets.chop.to_i.fact}"


Доопределять свойства и методы на лету. Разве это не здорово?

Кстати о методике. Примерно в этом ключе можно говорить от Ruby?
http://schbor.ucoz.ru/tea/ruby.pdf
Станислав Михалкович ( Пользователь )
Цитата (Алексей Ухань, 02.06.2010, 02:45) <{POST_SNAPBACK}>
Дело в том, что в Ruby, в отличие от Python, все есть объекты. Так что он изначально целиком объектноориентированный, и это надо иметь в виду при его изучении.

А вот факториал 10000!:
puts (1..10000).inject(1) {|a, i| a *= i}

Результат, понятно, не буду здесь выкладывать :) Считает довольно быстро (у меня ruby-1.9.1), на моем ноуте примерно 0.813899 сек

Ну, этот пример - вещь в себе. Можно посчитать большой факториал - и всё, больше особо никаких задач не решишь. Если в языке или библиотеках есть тип длинного целого, то это делается без проблем. Вот код на PascalABC.NET:

uses Ironmath;

var x: BigInteger;

begin
var n := 10000;
x := 1;
for var i:=2 to n do
x := x * i;
writeln(x);
writeln(Milliseconds);
end.


Считает где-то за полсекунды :) Пользуется, кстати, .NET-библиотекой, которая используется в IronRyby :)
Мы это школьникам не даём. Мне кажется, интересно, но - никакого педагогического эффекта.

По поводу второй идеи - это тоже известный элемент современных языков - так называемые методы расширения. Вот опять-таки позволю себе код на PascalABC.NET (не ругайте сильно в топике Руби):

function integer.factorial: integer;
begin
Result := 1;
for var i:=2 to Self do
Result *= i
end;

begin
var x := ReadInteger;
writeln(x.factorial());
end.


Эта идея - более интересная. Но опять-таки, для школьников мы её не используем. Несомненно, в Руби всё синтаксически попроще, но тем не менее. Мне кажется, это - синтаксический сахар, который может стать регулярным подходом при изложении, но вот вопрос - с какой целью? Где, в каком месте, в каких темах школьнику рассказывать методы расширения? Надо полагать. что функции ему должны быть известны и какое-то представление о классах он должен получить.

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