SlideShare ist ein Scribd-Unternehmen logo
Daniel Dengler
                                                                                               web developer




   Ruby on Rails
               Workshop SS 2009


„Ruby on Rails“ and the Rails-Logo are registered trademarks of David Heinemeier Hansson – www.rubyonrails.org
3
                                    Ruby
„ist eine dynamische, freie Programmiersprache,
die sich einfach anwenden und produktiv einsetzen
lässt. Sie hat eine elegante Syntax, die man leicht
lesen und schreiben kann.“
(Quelle: http://www.ruby-lang.org /de)
Ruby ≠ Rails
Geschichte
  1993 von Yukihiro Matsumoto in
  Japan entwickelt. Ein üsse aus
  Smalltalk, Perl, Python & LISP
  1995 Erste Veröffentlichung
  2000 erste nicht japanische
  Literatur in Europa und Amerika
  2004 Erscheinen von Ruby on
  Rails verhilft Ruby zum heutigen
  Erfolg


Quellen: http://www.ruby-lang.org/de/about, http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29, Stand: 15.10.2007
Grundsätzliches
  •    Formatierung: 2 Leerzeichen als Einrückung

  •    Keine Semikolons. Nur wenn man mehrere
       Anweisungen in eine Zeile bringen will nötig

  •    Klammern können weggelassen werden, solange die
       Anweisung eindeutig bleibt

  •    Implizite Rückgabewerte. Das Ergebnis der letzten
       ausgeführten Operation ist gleichzeitig
       Rückgabewert der Methode
(Quelle: vgl. R. Wartala, J. Krutisch: Webanwendungen mit Ruby on Rails, Addison-Wesley 2007)
Grundsätzliches
•   Konstanten- und Klassennamen beginnen mit
    einem Großbuchstaben

•   Variablen- und Methodennamen beginnen mit
    einem Kleinbuchstaben

•   Variablen müssen vor ihrer Verwendung nicht
    de niert werden

•   Vollständig Objekt-Orientiert
    (es gibt keine primitiven Datentypen)
Konventionen

• # Kommentare
• # => Repräsentation des aktuellen Wertes
• # >> Ausgabe auf dem Bildschirm
a = 1; b = 2;
if (a < b)
  puts(quot;a ist kleiner als bquot;);
else
  puts(quot;a ist nicht kleiner als bquot;);
end
# >> a ist kleiner als b
a = 1; b = 2
if a < b
  puts quot;a ist kleiner als bquot;
else
  puts quot;a ist nicht kleiner als bquot;
end
# >> a ist kleiner als b
def method(a, b)
  puts a + b
end

method(1, 2)
method 1, 2
# >> 3
# >> 3
Basisdatentypen
•   Fixnum – ganze Zahlen (1 , 3, 1000)

•   Bignum – große ganze Zahlen
    (10000000000000000)

•   Float – Fließkommazahlen (1.45)

•   String – Zeichenketten (quot;Hallo Weltquot;, 'Hallo Welt')



•   Symbol – Bezeichner (:name)
a = quot;Weltquot;
puts quot;Hallo #{a}quot;
=> Hallo Welt

puts 'Hallo #{a}'
=> Hallo #{a}

# Alternativ:
puts 'Hallo ' + a
=> Hallo Welt
Operatoren

•   =   Zuweisungsoperator (a = 5)

•   +, -, *, /, () Arithmetische Operatoren((1 + 2) * 5)

•   ==, <, >, <=, >=, != Vergleichsoperatoren (a == 5)

•   and, &&, or, || Logische Operatoren (true or false)
Arrays & Hashes

•   Arrays
    [7, 3, 1, 5, 9, 12]
    [Element, Element, …]

•   Hashes
    {:titel => quot;Rubyquot;, :untertitel => quot;für Einstiegerquot;}
    {Schlüssel => Wert, Schlüssel => Wert, …}
array   = [1,2,3]
array   << 4 # => [1,2,3,4]
array   + [5,6] # => [1,2,3,4,5,6]
array   - [1,5] # => [2,3,4,6]

array = [1,2,3] # => [1,2,3]
array[0] # => 1
array[2] # => 3
array[3] # => nil
# Iteration über ein Array
[1,2,3].each do |i|
  puts i * 2
end
# Ausgabe: 2 4 6

# weitere einfach Arrayoperationen
[1,3,2].sort # => [1,2,3]
[1,3,2].sort.reverse # => [3,2,1]
hash = {:eins => 1, 'zwei' => 2}
 hash[:eins] # => 1
 hash['zwei'] # => 2
 hash[:drei] # => nil


hash = {:a => {:a => quot;aaquot;}, :b => quot;bquot;}
hash[:a] # => {:a => quot;aaquot;}
hash[:a][:a] # => quot;aaquot;
Kontrollstrukturen

•   Steuern den Programmablauf

•   Wichtige Kontrollstrukturen in Ruby

    •   Entscheidungen: if, unless, case

    •   Schleifen: while, until, for, .each
a=3
if a < 5
  puts quot;a ist kleiner als 5quot;
elsif a == 5
  puts quot;a ist gleich 5quot;
else
  puts quot;a ist größer als 5quot;
end

farbe = :rot
if farbe != :grün
  puts 'Die Farbe ist nicht Grün'
end

# unless ist das negierte if
unless farbe == :grün
  puts 'Die Farbe ist nicht Grün'
end

puts 'Die Farbe ist nicht Grün' unless farbe == :grün
puts (a == 5 ? 'a ist gleich 5' : 'a ist nicht gleich 5')
farbe = :rot
case farbe
when :grün
  puts 'Die Farbe ist Grün'
when :rot, :blau
  puts 'Die Farbe ist Rot oder Blau'
else
  puts 'Die Farbe ist nicht bekannt'
end

a=1
while a < 3
  puts a
  # Inkrement Operator (+1)
  a++ # entspricht a = a + 1
end

# Ausgabe: 1 2
Klassen, Methoden & Objekte


•   Klassen beginnen mit den Schlüsselwort class
    und können verschiedene Methoden beinhalten

•   Methoden beginnen mit dem Schlüsselwort def

•   Die konkrete Instanz einer Klasse ist ein Objekt
class Fahrzeug
end

auto = Fahrzeug.new
class Fahrzeug
  def kmh
    @kmh # gleichbedeutend mit: return @kmh
  end
  def kmh=(wert)
    @kmh = wert
  end
end

auto = Fahrzeug.new
auto.kmh = 10
auto.kmh=(10)
puts auto.kmh # >> 10
class Fahrzeug       class Fahrzeug
  def kmh              attr_reader :kmh
    @kmh               attr_writer :kmh
  end                end
  def kmh=(kmh)
    @kmh = kmh       class Fahrzeug
  end                  attr_accessor :kmh
end                  end

class Fahrzeug       auto = Fahrzeug.new
  attr_reader :kmh
  def kmh=(kmh)      auto.kmh = 10
    @kmh = kmh
  end                puts auto.kmh
end                  # >> 10
class Fahrzeug
  attr_accessor :kmh

  # wird beim Erstellen aufgerufen
  def initialize(kmh)
    @kmh = kmh
  end
  def beschleunigen
    @kmh += 10 # entspricht: @kmh = @kmh + 10
  end
end

auto = Fahrzeug.new(5)
auto.kmh # => 5
auto.kmh = 10 # => 10
auto.beschleunigen # => 20
class Fahrzeug
  attr_accessor :kmh
  def initialize(kmh)
    # kmh ist eine Variable
    # @kmh ist eine Instanzvariable
    @kmh = kmh
  end
  def beschleunigen
    @kmh += 10
  end
end

auto = Fahrzeug.new(5)
auto.kmh # => 5
auto.kmh = 10 # => 10
auto.beschleunigen # => 20

# new, kmh, kmh= und beschleunigen sind
Methodenaufrufe
class Fahrzeug
  attr_accessor :kmh

  def initialize(kmh = 0)
    @kmh = kmh
  end

  def beschleunigen
    @kmh += 10
  end
end

auto = Fahrzeug.new(5)
auto.kmh # => 5
auto.beschleunigen # => 15

auto = Fahrzeug.new
auto.kmh # => 0
auto.beschleunigen # => 10
class Auto < Fahrzeug   auto_a = Auto.new
   @@anzahl = 0          auto_a.kmh # => 0
   # @@anzahl ist eine   auto_a.beschleunigen
   Klassenvariable       # => 25
                         auto_a.anzahl # => 1
  def initialize         auto_b = Auto.new
    @@anzahl++           auto_b.anzahl # => 2
    super                auto_a.anzahl # => 2
  end                    auto_a.kmh # => 25
                         auto_b.kmh # => 0
  def beschleunigen
    @kmh += 25
  end
  def anzahl
    @@anzahl
  end
end
Ruby Skripte ausführen
•   Interpreter

    •   ruby skriptname.rb



•   Interactive Shell

    •   irb skriptname.rb
Online Ruby Interpreter
•   http://tryruby.hobix.com

•   Geeignet um den Quellcode der Beispiele selbst zu
    testen und sich mit der Sprache vertraut zu machen

•   Bietet ein Ruby-Lern-Tutorial aus 8 Blöcken

•   Bitte jetzt anfangen (und zu Hause fertig machen!)

•   Lesen und merken sie sich die Anweisungen des
    Anfangs, falls sie stecken bleiben sollten!
    ( help Kapitelnummer, Ctrl + D)
?

Weitere ähnliche Inhalte

Andere mochten auch

El Arte Del Liderazgo Panama 2009
El Arte Del Liderazgo Panama 2009El Arte Del Liderazgo Panama 2009
El Arte Del Liderazgo Panama 2009
hgeager
 
Deficit de atención hiperactividad
Deficit de atención   hiperactividadDeficit de atención   hiperactividad
Deficit de atención hiperactividad
Pedagogical and Technological University of Colombia
 
Biicode en la Hackers Week
Biicode en la  Hackers WeekBiicode en la  Hackers Week
Biicode en la Hackers Week
Julia S. Simon
 
Amisamigas
AmisamigasAmisamigas
Amisamigas
diana maricela
 
La Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar Leon
La Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar LeonLa Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar Leon
La Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar Leon
guesta5cad2
 
Refracción
RefracciónRefracción
Refracción
guest742eebc
 
Evelin 1
Evelin 1Evelin 1
Evelin 1evelin
 
Pml. La EducacióN Libre
Pml. La EducacióN LibrePml. La EducacióN Libre
Pml. La EducacióN Libre
Useranav
 
Concepto E Historia De La UrbanizacióN
Concepto E Historia De La UrbanizacióNConcepto E Historia De La UrbanizacióN
Concepto E Historia De La UrbanizacióN
guest41f67e8
 
Senama
SenamaSenama
Senama
guest82b2d7
 
Novembre
NovembreNovembre
Novembre
reneecouturier
 
Genaro Garcia
Genaro GarciaGenaro Garcia
Genaro Garcia
congresoandicom
 
Pointdufle site web
Pointdufle site webPointdufle site web
Pointdufle site web
Mademoiselle Williams
 
India Datos Generales
India Datos GeneralesIndia Datos Generales
India Datos Generales
IndiraReyes
 
Transporte Modelo OSI
Transporte Modelo OSITransporte Modelo OSI
Transporte Modelo OSI
Tecnolgicos del Norte del Valle
 
Entorno de desarrollo de heurísticas distribuidas utilizando OSGi
Entorno de desarrollo de heurísticas distribuidas utilizando OSGiEntorno de desarrollo de heurísticas distribuidas utilizando OSGi
Entorno de desarrollo de heurísticas distribuidas utilizando OSGi
Pablo García Sánchez
 
Proyecto De Aula
Proyecto De AulaProyecto De Aula
Proyecto De Aula
erick
 
Catalogue de la saison 2012-2013 de la Fondation Clément
Catalogue de la saison 2012-2013 de la Fondation ClémentCatalogue de la saison 2012-2013 de la Fondation Clément
Catalogue de la saison 2012-2013 de la Fondation ClémentFondationClement
 

Andere mochten auch (20)

El Arte Del Liderazgo Panama 2009
El Arte Del Liderazgo Panama 2009El Arte Del Liderazgo Panama 2009
El Arte Del Liderazgo Panama 2009
 
germinal
germinalgerminal
germinal
 
Deficit de atención hiperactividad
Deficit de atención   hiperactividadDeficit de atención   hiperactividad
Deficit de atención hiperactividad
 
Le Web 2
Le  Web 2Le  Web 2
Le Web 2
 
Biicode en la Hackers Week
Biicode en la  Hackers WeekBiicode en la  Hackers Week
Biicode en la Hackers Week
 
Amisamigas
AmisamigasAmisamigas
Amisamigas
 
La Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar Leon
La Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar LeonLa Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar Leon
La Gripe A Nueva Algunas Cosas Que Quiza No Sabias Dra Pilar Leon
 
Refracción
RefracciónRefracción
Refracción
 
Evelin 1
Evelin 1Evelin 1
Evelin 1
 
Pml. La EducacióN Libre
Pml. La EducacióN LibrePml. La EducacióN Libre
Pml. La EducacióN Libre
 
Concepto E Historia De La UrbanizacióN
Concepto E Historia De La UrbanizacióNConcepto E Historia De La UrbanizacióN
Concepto E Historia De La UrbanizacióN
 
Senama
SenamaSenama
Senama
 
Novembre
NovembreNovembre
Novembre
 
Genaro Garcia
Genaro GarciaGenaro Garcia
Genaro Garcia
 
Pointdufle site web
Pointdufle site webPointdufle site web
Pointdufle site web
 
India Datos Generales
India Datos GeneralesIndia Datos Generales
India Datos Generales
 
Transporte Modelo OSI
Transporte Modelo OSITransporte Modelo OSI
Transporte Modelo OSI
 
Entorno de desarrollo de heurísticas distribuidas utilizando OSGi
Entorno de desarrollo de heurísticas distribuidas utilizando OSGiEntorno de desarrollo de heurísticas distribuidas utilizando OSGi
Entorno de desarrollo de heurísticas distribuidas utilizando OSGi
 
Proyecto De Aula
Proyecto De AulaProyecto De Aula
Proyecto De Aula
 
Catalogue de la saison 2012-2013 de la Fondation Clément
Catalogue de la saison 2012-2013 de la Fondation ClémentCatalogue de la saison 2012-2013 de la Fondation Clément
Catalogue de la saison 2012-2013 de la Fondation Clément
 

Ähnlich wie Ruby on Rails SS09 03

Einführung in SASS und Compass
Einführung in SASS und CompassEinführung in SASS und Compass
Einführung in SASS und Compass
eigentor
 
Designpatterns in Ruby
Designpatterns in RubyDesignpatterns in Ruby
Designpatterns in Rubypfleidi
 
Perl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, WerkzeugePerl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, Werkzeuge
lichtkind
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Brigitte Jellinek
 
Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails Einführung
Reinhold Weber
 
An Introduction to Ruby
An Introduction to RubyAn Introduction to Ruby
An Introduction to Ruby
Jonathan Weiss
 
Ruby
RubyRuby
Ruby
alexbo
 
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenTim Furche
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovy
mwie
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007
jan_mindmatters
 
Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006
Sven Haiges
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
jan_mindmatters
 
Perl 6 Regex und Grammars
Perl 6 Regex und GrammarsPerl 6 Regex und Grammars
Perl 6 Regex und Grammars
lichtkind
 
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Cadaxo GmbH
 
Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAP
Cadaxo GmbH
 

Ähnlich wie Ruby on Rails SS09 03 (20)

Ruby on Rails SS09 06
Ruby on Rails SS09 06Ruby on Rails SS09 06
Ruby on Rails SS09 06
 
Einführung in SASS und Compass
Einführung in SASS und CompassEinführung in SASS und Compass
Einführung in SASS und Compass
 
Designpatterns in Ruby
Designpatterns in RubyDesignpatterns in Ruby
Designpatterns in Ruby
 
Perl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, WerkzeugePerl 5.20: Feature, Kultur, Module, Werkzeuge
Perl 5.20: Feature, Kultur, Module, Werkzeuge
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
 
Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails Einführung
 
An Introduction to Ruby
An Introduction to RubyAn Introduction to Ruby
An Introduction to Ruby
 
Ruby
RubyRuby
Ruby
 
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovy
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007
 
Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006Grails 0.3-SNAPSHOT Presentation WJAX 2006
Grails 0.3-SNAPSHOT Presentation WJAX 2006
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
Ruby on Rails SS09 08
Ruby on Rails SS09 08Ruby on Rails SS09 08
Ruby on Rails SS09 08
 
Perl 6 Regex und Grammars
Perl 6 Regex und GrammarsPerl 6 Regex und Grammars
Perl 6 Regex und Grammars
 
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige Änderungen
 
Ext Js On Rails
Ext Js On RailsExt Js On Rails
Ext Js On Rails
 
Ext Js On Rails
Ext Js On RailsExt Js On Rails
Ext Js On Rails
 
Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAP
 

Mehr von Daniel Dengler

Ruby on Rails SS09 02
Ruby on Rails SS09 02Ruby on Rails SS09 02
Ruby on Rails SS09 02
Daniel Dengler
 
Ruby on Rails SS09 01
Ruby on Rails SS09 01Ruby on Rails SS09 01
Ruby on Rails SS09 01
Daniel Dengler
 

Mehr von Daniel Dengler (7)

Ruby on Rails SS09 12
Ruby on Rails SS09 12Ruby on Rails SS09 12
Ruby on Rails SS09 12
 
Ruby on Rails SS09 11
Ruby on Rails SS09 11Ruby on Rails SS09 11
Ruby on Rails SS09 11
 
Ruby on Rails SS09 10
Ruby on Rails SS09 10Ruby on Rails SS09 10
Ruby on Rails SS09 10
 
Ruby on Rails SS09 07
Ruby on Rails SS09 07Ruby on Rails SS09 07
Ruby on Rails SS09 07
 
Ruby on Rails SS09 05
Ruby on Rails SS09 05Ruby on Rails SS09 05
Ruby on Rails SS09 05
 
Ruby on Rails SS09 02
Ruby on Rails SS09 02Ruby on Rails SS09 02
Ruby on Rails SS09 02
 
Ruby on Rails SS09 01
Ruby on Rails SS09 01Ruby on Rails SS09 01
Ruby on Rails SS09 01
 

Ruby on Rails SS09 03

  • 1. Daniel Dengler web developer Ruby on Rails Workshop SS 2009 „Ruby on Rails“ and the Rails-Logo are registered trademarks of David Heinemeier Hansson – www.rubyonrails.org
  • 2. 3 Ruby „ist eine dynamische, freie Programmiersprache, die sich einfach anwenden und produktiv einsetzen lässt. Sie hat eine elegante Syntax, die man leicht lesen und schreiben kann.“ (Quelle: http://www.ruby-lang.org /de)
  • 4. Geschichte 1993 von Yukihiro Matsumoto in Japan entwickelt. Ein üsse aus Smalltalk, Perl, Python & LISP 1995 Erste Veröffentlichung 2000 erste nicht japanische Literatur in Europa und Amerika 2004 Erscheinen von Ruby on Rails verhilft Ruby zum heutigen Erfolg Quellen: http://www.ruby-lang.org/de/about, http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29, Stand: 15.10.2007
  • 5. Grundsätzliches • Formatierung: 2 Leerzeichen als Einrückung • Keine Semikolons. Nur wenn man mehrere Anweisungen in eine Zeile bringen will nötig • Klammern können weggelassen werden, solange die Anweisung eindeutig bleibt • Implizite Rückgabewerte. Das Ergebnis der letzten ausgeführten Operation ist gleichzeitig Rückgabewert der Methode (Quelle: vgl. R. Wartala, J. Krutisch: Webanwendungen mit Ruby on Rails, Addison-Wesley 2007)
  • 6. Grundsätzliches • Konstanten- und Klassennamen beginnen mit einem Großbuchstaben • Variablen- und Methodennamen beginnen mit einem Kleinbuchstaben • Variablen müssen vor ihrer Verwendung nicht de niert werden • Vollständig Objekt-Orientiert (es gibt keine primitiven Datentypen)
  • 7. Konventionen • # Kommentare • # => Repräsentation des aktuellen Wertes • # >> Ausgabe auf dem Bildschirm
  • 8. a = 1; b = 2; if (a < b) puts(quot;a ist kleiner als bquot;); else puts(quot;a ist nicht kleiner als bquot;); end # >> a ist kleiner als b
  • 9. a = 1; b = 2 if a < b puts quot;a ist kleiner als bquot; else puts quot;a ist nicht kleiner als bquot; end # >> a ist kleiner als b
  • 10. def method(a, b) puts a + b end method(1, 2) method 1, 2 # >> 3 # >> 3
  • 11. Basisdatentypen • Fixnum – ganze Zahlen (1 , 3, 1000) • Bignum – große ganze Zahlen (10000000000000000) • Float – Fließkommazahlen (1.45) • String – Zeichenketten (quot;Hallo Weltquot;, 'Hallo Welt') • Symbol – Bezeichner (:name)
  • 12. a = quot;Weltquot; puts quot;Hallo #{a}quot; => Hallo Welt puts 'Hallo #{a}' => Hallo #{a} # Alternativ: puts 'Hallo ' + a => Hallo Welt
  • 13. Operatoren • = Zuweisungsoperator (a = 5) • +, -, *, /, () Arithmetische Operatoren((1 + 2) * 5) • ==, <, >, <=, >=, != Vergleichsoperatoren (a == 5) • and, &&, or, || Logische Operatoren (true or false)
  • 14. Arrays & Hashes • Arrays [7, 3, 1, 5, 9, 12] [Element, Element, …] • Hashes {:titel => quot;Rubyquot;, :untertitel => quot;für Einstiegerquot;} {Schlüssel => Wert, Schlüssel => Wert, …}
  • 15. array = [1,2,3] array << 4 # => [1,2,3,4] array + [5,6] # => [1,2,3,4,5,6] array - [1,5] # => [2,3,4,6] array = [1,2,3] # => [1,2,3] array[0] # => 1 array[2] # => 3 array[3] # => nil
  • 16. # Iteration über ein Array [1,2,3].each do |i| puts i * 2 end # Ausgabe: 2 4 6 # weitere einfach Arrayoperationen [1,3,2].sort # => [1,2,3] [1,3,2].sort.reverse # => [3,2,1]
  • 17. hash = {:eins => 1, 'zwei' => 2} hash[:eins] # => 1 hash['zwei'] # => 2 hash[:drei] # => nil hash = {:a => {:a => quot;aaquot;}, :b => quot;bquot;} hash[:a] # => {:a => quot;aaquot;} hash[:a][:a] # => quot;aaquot;
  • 18. Kontrollstrukturen • Steuern den Programmablauf • Wichtige Kontrollstrukturen in Ruby • Entscheidungen: if, unless, case • Schleifen: while, until, for, .each
  • 19. a=3 if a < 5 puts quot;a ist kleiner als 5quot; elsif a == 5 puts quot;a ist gleich 5quot; else puts quot;a ist größer als 5quot; end farbe = :rot if farbe != :grün puts 'Die Farbe ist nicht Grün' end # unless ist das negierte if unless farbe == :grün puts 'Die Farbe ist nicht Grün' end puts 'Die Farbe ist nicht Grün' unless farbe == :grün puts (a == 5 ? 'a ist gleich 5' : 'a ist nicht gleich 5')
  • 20. farbe = :rot case farbe when :grün puts 'Die Farbe ist Grün' when :rot, :blau puts 'Die Farbe ist Rot oder Blau' else puts 'Die Farbe ist nicht bekannt' end a=1 while a < 3 puts a # Inkrement Operator (+1) a++ # entspricht a = a + 1 end # Ausgabe: 1 2
  • 21. Klassen, Methoden & Objekte • Klassen beginnen mit den Schlüsselwort class und können verschiedene Methoden beinhalten • Methoden beginnen mit dem Schlüsselwort def • Die konkrete Instanz einer Klasse ist ein Objekt
  • 23. class Fahrzeug def kmh @kmh # gleichbedeutend mit: return @kmh end def kmh=(wert) @kmh = wert end end auto = Fahrzeug.new auto.kmh = 10 auto.kmh=(10) puts auto.kmh # >> 10
  • 24. class Fahrzeug class Fahrzeug def kmh attr_reader :kmh @kmh attr_writer :kmh end end def kmh=(kmh) @kmh = kmh class Fahrzeug end attr_accessor :kmh end end class Fahrzeug auto = Fahrzeug.new attr_reader :kmh def kmh=(kmh) auto.kmh = 10 @kmh = kmh end puts auto.kmh end # >> 10
  • 25. class Fahrzeug attr_accessor :kmh # wird beim Erstellen aufgerufen def initialize(kmh) @kmh = kmh end def beschleunigen @kmh += 10 # entspricht: @kmh = @kmh + 10 end end auto = Fahrzeug.new(5) auto.kmh # => 5 auto.kmh = 10 # => 10 auto.beschleunigen # => 20
  • 26. class Fahrzeug attr_accessor :kmh def initialize(kmh) # kmh ist eine Variable # @kmh ist eine Instanzvariable @kmh = kmh end def beschleunigen @kmh += 10 end end auto = Fahrzeug.new(5) auto.kmh # => 5 auto.kmh = 10 # => 10 auto.beschleunigen # => 20 # new, kmh, kmh= und beschleunigen sind Methodenaufrufe
  • 27. class Fahrzeug attr_accessor :kmh def initialize(kmh = 0) @kmh = kmh end def beschleunigen @kmh += 10 end end auto = Fahrzeug.new(5) auto.kmh # => 5 auto.beschleunigen # => 15 auto = Fahrzeug.new auto.kmh # => 0 auto.beschleunigen # => 10
  • 28. class Auto < Fahrzeug auto_a = Auto.new @@anzahl = 0 auto_a.kmh # => 0 # @@anzahl ist eine auto_a.beschleunigen Klassenvariable # => 25 auto_a.anzahl # => 1 def initialize auto_b = Auto.new @@anzahl++ auto_b.anzahl # => 2 super auto_a.anzahl # => 2 end auto_a.kmh # => 25 auto_b.kmh # => 0 def beschleunigen @kmh += 25 end def anzahl @@anzahl end end
  • 29. Ruby Skripte ausführen • Interpreter • ruby skriptname.rb • Interactive Shell • irb skriptname.rb
  • 30. Online Ruby Interpreter • http://tryruby.hobix.com • Geeignet um den Quellcode der Beispiele selbst zu testen und sich mit der Sprache vertraut zu machen • Bietet ein Ruby-Lern-Tutorial aus 8 Blöcken • Bitte jetzt anfangen (und zu Hause fertig machen!) • Lesen und merken sie sich die Anweisungen des Anfangs, falls sie stecken bleiben sollten! ( help Kapitelnummer, Ctrl + D)
  • 31. ?

Hinweis der Redaktion