Planwykªadu
◮
ogólne informa je ojzyku
◮
podstawy
◮
YukihiroMatsumoto,1995, jzyk"dla ludzi"
◮
jzyk
◮
skryptowy,
◮
obiektowy,
◮
dynami zny,
◮
interpretowany
◮
wysokiegopoziomu
◮
zapo»y zenia: Perl,Smalltalk,Python,S heme
◮
paradygmatobiektowy z domieszk¡funk yjnego
◮
wyso e przeno±ny
◮
podobnejzyki: Perl,Python
◮
interpreterruby
◮
interpreterRubego: ruby
◮
program znajduj¡ ysi wpliku program.rburu hamiasi
pisz¡ :
ruby program.rb
interaktywnyinterpreterirb
tolin:~$ irb
irb(main):001:0> 2+3
=> 5
irb(main):002:0> def razydwa(a) a*2 end
=> nil
irb(main):003:0> razydwa(5)
=> 10
irb(main):004:0> razydwa("Ala")
=> "AlaAla"
wszystkojestobiektem
irb(main):014:0> 1.to_s
=> "1"
irb(main):015:0> "125 kotów".to_i
=> 125
irb(main):016:0> (1.5). lass
zmienneprze howuj¡referen je
irb(main):017:0> a="ala"
=> "ala"
irb(main):018:0> b=a
=> "ala"
irb(main):019:0> a.gsub!('a','o')
=> "olo"
irb(main):020:0> a
=> "olo"
irb(main):021:0> b
metodymodykuj¡ e obiekty
◮
metodyzazwy zaj nie modykuj¡obiektówna rze zktóry h
zostaªywywoªane, zwra aj¡ nowe obiekty
◮
metodymodykuj¡ eobiekty maj¡(konwen ja) suks!
irb(main):022:0> a="ala"
=> "ala"
irb(main):023:0> a.gsub('a','o')
=> "olo"
irb(main):024:0> a
=> "ala"
irb(main):025:0> a.gsub!('a','o')
=> "olo"
irb(main):026:0> a
nazwy
nazwy pisownia przykªady
klas zwielkiejlitery Piosenka
staªy h zwielkiejlitery Pi
atrybutyobiektów preks value
atrybutyklas preks ount
zmiennelokalne zmaªejlitery n
zmienneglobalne preks$ $inputfile
warto± izmienny h
◮
zmienny hnie deklaruje si
◮
typzmiennej ustalasi przypisuj¡ jejwarto±¢
◮
tej samejzmiennejmo»na w trak ie dziaªaniaprogramu
przypisywa¢ warto± iró»ny h typów
dynami znetypowanie
W Rubym stosowane jestdynami zne typowanie zmienny h.
Ozna za to,»e typ warto± i sprawdzanyjestw trak ie wykonania
programu, gdywarto±¢ tamazosta¢u»yta.
Kod
if 1>2 then 2 + " koty" else 2.to_s + " koty" end
nie spowoduje pojawienia si bªdu, natomiastkod
if 2>1 then 2 + " koty" else 2.to_s + " koty" end
wbudowanetypydany h
typ(klasa) literaª
Fixnum li zba aªkowita 123
Bignum du»ali zba aªkowita 16596576956956759867
Float li zbazmiennopozy yjna 123.45
TrueClass,FalseClass prawda,faªsz true false
String napis "Dzie« dobry!"
Range zakres 1...10 "Ala".."Ola"
Array tabli aindeksowana [ 1, "pies", /-?[0-9℄+/ ℄
Hash tabli aaso ja yjna { 1=>[2,2℄, "poniedzialek"=>1 }
Regexp wyra»enieregularne /-?[0-9℄+(.[0-9℄+)?/
tabli eindeksowane
◮
dynami znie zmieniaj¡rozmiar
◮
mog¡ prze howywa¢ warto± iró»ny h typów
◮
mozna oprarowa¢ na ni hjakna lista h
◮
mozna oprarowa¢ na ni hjakna zbiora h
tabli easo jatywne
◮
zawieraj¡ pary przyporz¡dkowa« klu z-warto±¢
◮
klu z iwarto±¢ mog¡by¢dowolnymi warto± iami
wyra»eniaregularne
◮
wyra»enia regularne sªu»¡do deniowania zbiorównapisów
(wzor ów napisu),np.
◮
/-?[0-9℄+/- i¡g yfr0-9poprzedzonyby¢mo»eznakiem
minus
◮
/#.*$/-fragmentliniiodznaku#doko« alinii
◮
program usuwaj¡ y komentarze
while l=gets
print l.sub(/#.*$/,)
jestjzykiem'wyra»eniowym'
◮
ka»dy poprawny fragmentkoduw jzykuRuby jest
wyra»eniem (zwra awarto±¢)
◮
przykªad:
def max(a,b)
if a>b then a else b end
end
◮
warto±¢ wyra»eniamo»e by¢zignorowana
◮
nastpuj¡ e po sobiewyra»enia oddziela si ±rednikiemlub
znakiem nowejlinii
◮
warto± i¡wyra»enia w
1
;
w2
; . . . ;
wn jestwarto±¢ wyra»eniawnwyra»eniawarunkowe
◮
if WARUNEK then CIAGWYRAE end
◮
unless WARUNEK then CIAGWYRAE end
◮
if WARUNEK then CIAGWYRAE else CIAGWYRAE end
◮
unless WARUNEK then CIAGWYRAE else CIAGWYRAE end
◮
WYRAENIE if WARUNEK
◮
WYRAENIE unless WARUNEK
◮
ase WARTO
when TEST
...
when TEST
...
else
...
end
◮
wyra»eniaitera yjne
◮
while WARUNEK do CIAGWYRAE end
◮
until WARUNEK do CIAGWYRAE end
◮
WYRAENIE while WARUNEK
◮
WYRAENIE until WARUNEK
◮
begin CIAGWYRAE end while WARUNEK
◮
begin CIAGWYRAE end until WARUNEK
◮
itera japoelementa hkolek ji
wyra»enie
for ZMIENNA in KOLEKCJA do CIAGWYRAZEN end
to lukiersyntakty zny dlawywoªania metody
KOLEKCJA.ea h{|e| CIAGWYRAZEN}
argumentemmetodyea hjestblokkodu zjednym argumentem;
blok wywoªywany jestdlaka»dego elementukolek ji
itera japoelementa hkolek ji-przykªad
t=[1,2,3℄
for i in t do print i end
zyli
t=[1,2,3℄
t.ea h{|i| print i}
wej± ie/wyj± ie
◮
funk ja gets- zyta jedn¡lini z$stdin
◮
funk ja
t=[1,2,3℄
for i in t do print i end
zyli
t=[1,2,3℄
t.ea h{|i| print i}
blokjakoargument
◮
metodamo»e mie¢ jedenargument wposta ibloku
◮
typowe przykªady:
irb(main):004:0> [1, 5, 6, 3, 8, 5℄.sele t{|e| e > 4}
=> [5, 6, 8, 5℄
irb(main):005:0> [1,5,6,3,8,5℄.sele t{|e| e > 4}.map{|e| e**2}.sort
=> [25, 25, 36, 64℄
irb(main):006:0> [1,2,3,4,5℄.map{|a| [1,2,3,4,5℄.map{|b| a*b}}
=> [[1, 2, 3, 4, 5℄, [2, 4, 6, 8, 10℄, [3, 6, 9, 12, 15℄,
[4, 8, 12, 16, 20℄, [5, 10, 15, 20, 25℄℄
◮
mo»liwo±¢zwizªego (funk yjnego) zapisuopera ji
przykªady programów