Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Uğur "vigo" Özyılmazel vigobronx vigo

Slide 3

Slide 3 text

PROGRAMLAMA DİLİ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Ruby, programcıları mutlu etmek üzere tasarlanmıştır! - Matz

Slide 6

Slide 6 text

TÜRKÇE BİLİYOR!

Slide 7

Slide 7 text

şehirler = %w[İstanbul Ankara Viyana Paris] gittiğim_şehirler = %w[İstanbul Viyana] puts "Gitmem gereken şehirler", şehirler - gittiğim_şehirler Gitmem gereken şehirler Ankara Paris

Slide 8

Slide 8 text

Herşey : nesne

Slide 9

Slide 9 text

5.class # => Integer 5.class.superclass # => Numeric 5.class.superclass.superclass # => Object 5.class.superclass.superclass.superclass # => BasicObject 5.class.superclass.superclass.superclass.superclass # => nil

Slide 10

Slide 10 text

Integer Numeric Object Basic Object

Slide 11

Slide 11 text

5.methods # => [:- @, :**, :<=>, :upto, :<<, :<=, :>=, :==, :chr, :===, :>>, :[], : %, :&, :inspect, : +, :ord, :-, :/, :*, :size, :succ, :<, :>, :to_int, :coerce, :divmod, :to_ s, :to_i, :fdiv, :modulo, :remainder, :abs, :magnitude, :lcm, :integer?, : rationalize, :gcdlcm, :gcd, :denominator, :floor, :ceil, :round, :truncate , :to_r, :to_f, :^, :odd?, :even?, :allbits?, :anybits?, :nobits?, :downto , :times, :pred, :pow, :bit_length, :digits, :numerator, :next, :div, :|, :~, : +@, :conjugate, :eql?, :singleton_method_added, :i, :real?, :zero?, :nonze ro?, :finite?, :infinite?, :step, :positive?, :negative?, :angle, :real, : to_c, :conj, :phase, :imag, :abs2, :arg, :imaginary, :rectangular, :rect, :clone, :dup, :polar, :quo, :between?, :clamp, :instance_variable_set, :in stance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_ of?, :is_a?, :tap, :instance_variable_get, :public_methods, :instance_vari ables, :method, :public_method, :define_singleton_method, :singleton_metho d, :public_send, :extend, :pp, :to_enum, :enum_for, :=~, :! ~, :respond_to?, :freeze, :object_id, :send, :display, :nil?, :hash, :clas s, :singleton_class, :yield_self, :itself, :tainted?, :taint, :untrust, :u ntaint, :trust, :untrusted?, :methods, :frozen?, :singleton_methods, :prot ected_methods, :private_methods, :!, :equal?, :instance_eval, :instance_ex ec, :!=, :__id__, :__send__]

Slide 12

Slide 12 text

TÜM SINIFLAR AÇIKTIR!

Slide 13

Slide 13 text

class Integer def kere(n) self * n end end 5.kere(5) # => 25 5.kere(5).kere(2) # => 50

Slide 14

Slide 14 text

class Integer def gün self * 24 * 60 * 60 end def önce Time.now - self end def sonra Time.now + self end end Time.now # => 2018-11-23 14:42:23 +0300 5.gün.önce # => 2018-11-18 14:42:23 +0300 1.gün.sonra # => 2018-11-24 14:42:23 +0300

Slide 15

Slide 15 text

konuşma dİlİne benzer

Slide 16

Slide 16 text

5.times do |i| puts "Ruby’i seviyorum, i = #{i}" if i > 2 end # Ruby’i seviyorum, i = 3 # Ruby’i seviyorum, i = 4

Slide 17

Slide 17 text

meals = %w[Pizza Döner Kebab] print "Let’s eat here!" unless meals.include? "Soup" menü'de çorba yoksa yemeğİ burada YİYELİM!

Slide 18

Slide 18 text

varıable merhaba = "Dünya" # Değişken @merhaba # Instance Variable @@merhaba # Class Variable $merhaba # Global Variable MERHABA # Constant

Slide 19

Slide 19 text

ARRAY [] # => [] [1, "Merhaba", 2] # => [1, "Merhaba", 2] [[1, 2], ["Merhaba", "Dünya"]] # => [[1, 2], ["Merhaba", "Dünya"]]

Slide 20

Slide 20 text

hash {} # => {} {:foo => "bar"} # => {:foo=>"bar"} # Eski {foo: "bar"} # => {:foo=>"bar"} # Yeni

Slide 21

Slide 21 text

parantez? def merhaba kullanıcı "Merhaba #{kullanıcı}" end merhaba "vigo" # => "Merhaba vigo"

Slide 22

Slide 22 text

SORU İŞARETİ [].empty? # => true ["vigo", "ezel"].include? "vigo" # => true user.admin? # => false

Slide 23

Slide 23 text

ÜNLEM İŞARETİ isim = "vigo" isim.reverse # => "ogiv" isim # => "vigo" isim.reverse! # => "ogiv" isim # => "ogiv"

Slide 24

Slide 24 text

zİNCİRLEME METHODLAR "vigo".reverse.reverse # => "vigo" ["v", "i", "g", "o"].join.reverse.split(//).join.reverse # => "vigo"

Slide 25

Slide 25 text

İterasyon [1, "merhaba", 2, "dünya"].each do |eleman| puts eleman end [1, "merhaba", 2, "dünya"].each {|eleman| puts eleman} # 1 # merhaba # 2 # dünya

Slide 26

Slide 26 text

İterasyon [1, 2, 3, 4, 5].select{|number| number.even?} # => [2, 4] [1, 2, 3, 4, 5].inject{|sum, number| sum + number} # => 15 [1, 2, 3, 4, 5].map{|number| number * 2} # => [2, 4, 6, 8, 10]

Slide 27

Slide 27 text

class class Person attr_accessor :age end vigo = Person.new vigo # => # vigo.age = 46 vigo # => # vigo.age # => 46

Slide 28

Slide 28 text

class class Person attr_accessor :age # Getter & Setter def initialize(name) @name = name end def greet "Hello #{@name}" end end vigo = Person.new "Uğur" vigo.age = 46 vigo # => # vigo.greet # => "Hello Uğur"

Slide 29

Slide 29 text

class class Person def initialize(name) @name = name end def age=(value) @age = value end def age @age end def greet "Hello #{@name}" end end vigo = Person.new "Uğur" vigo.age = 43 Getter Setter attr_accessor :age }

Slide 30

Slide 30 text

class class Person def is_human? true end end class Cyborg < Person def is_human? false end end vigo = Person.new # => # vigo.is_human? # => true t800 = Cyborg.new # => # t800.is_human? # => false

Slide 31

Slide 31 text

module + MIXIN module Greeter def say_hello "Hello #{@name}" end end class Person include Greeter def initialize(name) @name = name end end vigo = Person.new "Uğur" vigo.say_hello # => "Hello Uğur"

Slide 32

Slide 32 text

İLERİ SEVİYE KONULAR Meta Programming Monkey Patching Block & Proc & Lambda Functional Programming

Slide 33

Slide 33 text

kaynaklar http://www.ruby-doc.org/ http://vigo.gitbooks.io/ruby-101/ http://tryruby.org/ http://rubykoans.com/ https://rubymonk.com/ https://www.ruby-lang.org/en/documentation/quickstart/ https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/