áNgulos Y TriáNgulos
Upcoming SlideShare
Loading in...5
×
 

áNgulos Y TriáNgulos

on

  • 2,597 views

 

Statistics

Views

Total Views
2,597
Views on SlideShare
2,580
Embed Views
17

Actions

Likes
0
Downloads
5
Comments
0

3 Embeds 17

http://www.de-los-amigos.blogspot.com 9
http://de-los-amigos.blogspot.com 6
http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

áNgulos Y TriáNgulos áNgulos Y TriáNgulos Presentation Transcript

  • R uby Talk – An Introduction to Premshree Pillai [email_address]
  • S cope of Talk
    • What this talk is and what it isn’t
    • Me, myself
    • What is?
    • Why use?
    • How to? (a quick run through the syntax)
    • Quick comparisons (with Perl and Python)
    • Resources
  • P urpose
    • What this talk is?
    • Get you interested
    • Get you started with Ruby
    • What it isn’t?
    • Not a tutorial
  • W ho am I?
    • (or why should you listen to me)
    • 21/male/single :)
    • Technology consultant
    • Freelance writer since 2001
    • Perl/Python/Ruby/REBOL hacker
  • H istory (Ruby’s, not mine)
    • Created (in Japan) by Yukihiro Matsumoto, popularly called Matz
    • Named as “Ruby” to reflect its Perl hertitage
    • Released to the public in 1995
    • Licensed under GPL or Ruby terms
  • W hat the heck is Ruby?
    • An object-oriented “scripting” language
    • As powerful as Perl; simpler, better OO
    • The simplicity of Python
    • Follows the principle of “Least Surprise” – What You Expect Is What You Get
  • W here can you use Ruby?
    • System (n/w, RegExps)
    • Web programming (using CGI)
      • Agents, crawlers
    • DB programming (using DBI)
    • GUI (Tk, RubyMagick)
  • G eneral Features
    • High level language
    • True OO (everything’s an object!)
    • Interpreted
    • Portable
    • Low learning curve
    • A quick scan thro’ the syntax
  • R unning Ruby
    • From the command line:
    • ruby file.rb
    • Windows binary comes bundled with Scintilla
  • B asic stuff
    • print 'Hello, world!'
    • p 'Hello, world!' # prints with newline
    • my_var = gets # get input
  • O perators
    • + (addition)
    • - (subtraction/negation)
    • * (multiplication)
    • / (division)
    • % (modulus)
    • ** (exponentiation)
  • O perators (contd.)
    • ==
    • <=> (returns -1, 0 or 1)
    • <, <=, >=, >
    • =~ (matching)
    • eql? (test of equality of type and values)
  • O perators (contd.)
    • ++ and -- are not reserved operators
    • Use += and +-
  • L ogical Operators
    • and
    • or
    • not
  • T yping
    • Dynamic typed
      • Type checking at run-time
    • Strong typed
  • B asic Data Types
    • Integers and floats
    • Strings
    • Ranges
    • Arrays
    • Hashes
  • S trings
    • my_str = 'whatever'
    • my_str = &quot;blah, blah&quot;
    • my_str.split(&quot;,&quot;)[0].split(&quot;&quot;)[2] * 3
  • R anges
    • Inclusive range
    • my_range = 1 .. 3
    • my_range = 'abc' .. 'abf'
    • Non-inclusive range
    • my_range = 1 … 5
    • my_range = 'abc' … 'abf'
  • A rrays
    • my_array = [1, 2, 3]
    • Common methods:
    • my_array.length
    • my_array << 4
    • my_array[0], etc.
  • H ashes
    • my_hash = {
    • 'desc' => {'color' => 'blue',},
    • 1 => [1, 2, 3]
    • }
    • print my_hash['desc']['color']
    • will return
    • blue
  • H ashes (contd.)
    • Common methods:
    • my_hash.keys
    • my_hash.values
  • D ata Type Conversion
    • Converting to an Array:
    • var_data_type .to_a
    • Converting to an String:
    • var_data_type .to_s
    • More (guess!):
    • var_data_type .to_i
    • var_data_type .to_f
  • E verything's an Object
    • Methods can be applied to data directly – not just on variables holding data
    • Example:
    • 5.to_s will return &quot;5&quot;
  • C ode Blocks
    • Code blocks may use braces ( { } ) or do/end
  • C ode Blocks (contd.)
    • Example
    • def my_print(what)
    • print what
    • end
    • You cannot use braces for function blocks
  • I f Statement
    • if expression
    • code block
    • elsif ( expression )
    • code block
    • else
    • code block
    • end
  • W hile Statement
    • while expression
    • code block
    • end
    • Example:
    • count = 1
    • while count < 10
    • print count
    • count += 1
    • end
  • F or Loop
    • for variable_name in range
    • code block
    • end
    • Example:
    • for count in 0..2
    • print count
    • end
  • I terators
    • array_or_range = value
    • array_or_range.each { |x|
    • print x
    • }
    • Example:
    • my_range = 1..5
    • my_range.each { |x|
    • print x
    • }
  • F unctions
    • Functions begin with the keyword def
    • def function_name ( [args] )
    • code block
    • end
    • Example:
    • def print_name(name='Ruby')
    • print name
    • end
  • O O Ruby
    • Classes are containers for static data members and functions
    • Declared using the class keyword. All class names should begin with a capital letter
    • Constructor declared using the initialize keyword
    • Class variables precede with an “ @ ”
    • Objects created using the new method
  • E xample class
    • class My_class
    • def initialize(arg1, arg2)
    • @arg1 = arg1
    • @arg2 = arg1
    • end
    • def print_arg1()
    • print @arg1
    • end
    • def print_foo()
    • print &quot; I Love Ruby! &quot;
    • end
    • private
    • def print_arg2()
    • print @arg2
    • end
    • end
    • my_object = My_class.new(2, 3)
    • my_object.print_arg1
    • my_object.print_arg2 # will cause an exception
  • I nheritance
    • class Derived_class < My_class
    • def initialize()
    • @arg = &quot;I Love Ruby!&quot;
    • end
    • def print_arg()
    • print @arg
    • end
    • end
    • my_object = Derived_class.new
    • my_object.print_foo
  • N otes on OO Ruby
    • Access specifiers: public , protected , private
    • Multiple inheritance not possible
  • R uby modules
    • require 'net/http'
    superclass subclass
  • A dvanced topics
    • Regular expressions
    • Network programming
    • MT programming
    • GUI programming (using Tk)
    • Web programming
  • N ow what?
    • What you can do now?
    • Get your hands dirty with Ruby
    • Write simple Ruby programs
    • What you have to do?
    • Explore Ruby modules
    • Find a problem, and Ruby it!
  • P erl compared to Ruby
    • Complicated OO
    • Cryptic code
    • (Ruby is often called “A Better Perl”)
    • PS: Don’t kill me!
  • P ython compared to Ruby
    • Incomplete OO
    • Instance variables require self. var
    • No class method
    • No true GC (uses ref counting)
    • Not suitable for one-liners
    • PS: Don’t kill me!
  • R esources
    • Ruby Home Page
    • http://www.ruby-lang.org/en/
    • Programming Ruby
    • http://www.rubycentral.com/book/
    • RubyGarden
    • http:// www.rubygarden.org /ruby
    • Ruby Application Archive (RAA)
    • http://raa.ruby-lang.org/
  • R esources (contd.)
    • RubyForge
    • http://rubyforge.org/
    • ruby-talk
    • http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml
    • If God did OOP, he’d probably do it in Python; He’s now considering switching to Ruby!
    • Thank you!
    • Questions?