• Nie Znaleziono Wyników

R by1

N/A
N/A
Protected

Academic year: 2021

Share "R by1"

Copied!
23
0
0

Pełen tekst

(1)
(2)

Planwykªadu

ogólne informa je ojzyku

podstawy

(3)

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

(4)

interpreterruby

interpreterRubego: ruby

program znajduj¡ ysi wpliku program.rburu hamiasi

pisz¡ :

ruby program.rb

(5)

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"

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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℄+)?/

(13)

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

(14)

tabli easo jatywne

zawieraj¡ pary przyporz¡dkowa« klu z-warto±¢

klu z iwarto±¢ mog¡by¢dowolnymi warto± iami

(15)

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(/#.*$/,)

(16)

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

;

w

2

; . . . ;

wn jestwarto±¢ wyra»eniawn

(17)

wyra»eniawarunkowe

if WARUNEK then CIAGWYRA›E‹ end

unless WARUNEK then CIAGWYRA›E‹ end

if WARUNEK then CIAGWYRA›E‹ else CIAGWYRA›E‹ end

unless WARUNEK then CIAGWYRA›E‹ else CIAGWYRA›E‹ end

WYRA›ENIE if WARUNEK

WYRA›ENIE unless WARUNEK

ase WARTO‘‚

when TEST

...

when TEST

...

else

...

end

(18)

wyra»eniaitera yjne

while WARUNEK do CIAGWYRA›E‹ end

until WARUNEK do CIAGWYRA›E‹ end

WYRA›ENIE while WARUNEK

WYRA›ENIE until WARUNEK

begin CIAGWYRA›E‹ end while WARUNEK

begin CIAGWYRA›E‹ end until WARUNEK

(19)

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

(20)

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}

(21)

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}

(22)

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

(23)

przykªady programów

Cytaty

Powiązane dokumenty

Z u¿yciem tego modelu okreœlana jest optymalna kolejnoœæ eksploatacji dla ka¿dego okresu, na podstawie optymalnych decyzji przetwarzania. W artykule zaprezentowano studium

[r]

 Prognoza ex-ante: jest prawdziwym wnioskowaniem poza próbą Dotyczy obserwacji, dla których nie znamy realizacji.  Prognoza ex-post: ma na celu sprawdzenie jakości modelu

Znale´ z´ c stabilizatory wierzcho lk´ ow, krawe , dzi i ´ scian obu tych bry l.. 43 Przypu´ s´ cmy, ˙ze grupa G dzia la tranzytywnie na

Wykorzystując bibliotekę Qt proszę napisać program rysujący figurę, jak w zadaniu 11, ale tak, aby wartość n była wprowadzana do programu z pomocą pola edycyjnego klasy QLineEdit

[r]

Udowodni¢, »e z dokªadno±ci¡ do izomorzmu istnieje przeliczalnie.. wiele przeliczalnych ciaª

Udowodni¢, »e je±li M jest projektywny, to M jest