Justin Mui

Justin Mui

Math Operations, Part 2

Slide Duration:

Table of Contents

Section 1: Introduction to Ruby
Setting Up Your Environment

22m 8s

Intro
0:00
Installing Ruby
0:06
Ruby-lan.org
0:07
Three Ways of Installing Ruby
2:26
Compiling Ruby-Source Code
3:02
Third Party Tools
3:28
Other Implementations of Ruby
4:48
Windows Installation
5:21
RubyInstaller.org
5:22
Mac OSX and Linux Installation
6:13
Mac OSX and Linux Installation
6:14
Setting Up Debian/Linux
6:42
Setting Up Debian/Linux
6:43
Installing HomeBrew
6:56
HomeBrew for MAC OSX
6:57
HomeBrew Wiki
9:44
Installing HomeBrew
10:02
Setting Up Mac OSX
11:46
HomeBrew, RVM, OSX-GCC Installer, and Install Ruby 1.9.3
11:47
Ruby Version Manager (RVM)
12:11
Ruby Version Manager (RVM) Overview
12:12
Installing Ruby Version Manager (RVM): http://rvm.io
12:35
Install RVM with Ruby
14:20
Install RVM with Ruby
14:21
Install OSX-GCC-Installer
16:18
Download and Install Package for Your OSX
16:19
Install Ruby 1.9.3
17:28
Install Ruby 1.9.3
17:29
Test It Out!
18:09
rvm-help & ruby-v
18:10
Example: rvm gemset create educator
18:52
Set It As Default!
20:47
rvm Use 1.9.3@educator--default
20:48
Intro to Ruby

22m 20s

Intro
0:00
What is Ruby?
0:06
What is Ruby?
0:07
Ruby Standard Library
0:52
Who Created Ruby?
1:22
Yukihiro Matsumoto
1:23
History
2:45
The Name 'Ruby'
2:46
Ruby v0.95
3:10
Ruby v1.0
3:56
English Language Mailing List Rubytalk
4:08
ruby-forum.com & the Mailing Lists
4:27
Ruby In The West
9:51
Ruby on Rails
10:39
The Pragmatic Programmer's Guide to Ruby
11:30
rubyonrails.org
13:34
Current Ruby
14:42
Ruby 1.8.7, Ruby 1.9.3, and Ruby 2.0
14:43
Why Programmers Enjoy Ruby?
15:40
Why Programmers Enjoy Ruby?
15:41
Ruby Is An Interpreted Language
16:21
Ruby Is An Interpreted Language
16:22
What Is It Used For?
16:50
What Is It Used For?
16:51
Ruby is Object-Oriented
18:17
Example: 5.class
18:18
Example: 0.0.class
18:54
Example: true.class
19:03
Example: nil.class
19:12
Object Class
19:19
BasicObject
19:20
Example
19:52
Superclass
20:50
Fixnum → Integer → Numeric → Object
21:32
Basic Tools for Using Ruby

27m 44s

Intro
0:00
Interactive Ruby
0:08
irb: Interactive Command-Line Environment
0:09
Example
0:49
irb-v
0:50
irb-executes terminal
1:02
1.9.3-p125 > 'hi'
1:09
Live Demonstration
1:31
Why Use Interactive Ruby?
2:21
Why Use Interactive Ruby?
2:22
RDoc
3:05
RDoc
3:06
Ruby Core Documentation
3:32
Ruby Core Documentation: Example
5:30
Ruby Core Documentation: Markup
6:12
Ruby Core Documentation: Headings
7:44
Coding Example: RDoc
9:30
Why Use RDoc?
13:02
Learning Core Ruby Functions
13:03
Generating RDoc
15:31
rdoc-help # usage
15:32
Ruby Interpreter
15:57
ruby -- help
15:58
ruby [switches] [-] program [arguments]
16:16
Example: How to Run a Ruby Script
16:28
Rake
18:38
Rake Overview
18:39
Ruby Core Documentation: Rake
19:46
Coding Example: Rake
23:14
Why Was It Created?
24:30
Why Was It Created?
24:31
Lesson Summary
25:13
Lesson Summary
25:14
IDE/script Editors: MacVIM
26:24
Ruby Specifics

20m 45s

Intro
0:00
Ruby Specifics
0:06
Comments
0:51
Hashtags
1:00
Example
1:23
Multi-Line Comment
2:04
Example
3:10
RDoc Comments
4:02
When do you generate an Rdoc?
4:10
Headings and subheadings
4:24
Examples
4:48
Generating an Rdoc - example
4:50
Common Code Conventions
6:28
For every tab use two spaces indentation
7:38
Never use tabs
7:42
Common Code Conventions (Cont.)
8:18
Camel case
8:20
Snake case
9:18
Identifiers
9:44
Constants begin with CAP letter
10:00
Examples
10:10
Identifiers with Different Scoping
10:26
Global
10:34
Instance Variable
10:40
Class Variable
10:46
Examples
10:56
Reserved Keywords
12:22
Do not use reserved keywords in code
12:25
Parentheses are Sometimes Optional
13:04
Functions do not require parentheses
13:16
When in doubt, use parentheses
13:54
Examples
14:10
Newlines Are Statement Terminators
14:20
Examples
15:10
Continuation with a Period
16:20
Period means continue to next line
16:46
Multiple Statements Allowed on a Single Line
17:38
Try not to use semi-colons
17:58
Code Blocks
18:20
Use code blocks for one liners
18:28
Examples
18:40
Recommended for multiple lines
20:16
Ruby Data Types (Part 1)

29m 37s

Intro
0:00
Overview
0:10
Ruby Data Types
0:10
Numbers
0:16
Strings
0:18
Symbols
0:24
Numbers
0:30
Numeric
0:44
Float
0:50
Complex
0:56
BigDecimal
0:58
Rational
1:00
Integer (most popular) - Fixnum and Bignum
1:06
Fixnum stores 31 bits
1:18
Bignum stores larger bits
1:24
All number objects are instances of Numeric
1:28
Integer Literals
2:28
Represent whole-numbers
2:40
Examples - Different bases
2:42
Binary
3:04
Octal
3:30
Hexadecimal
3:44
Examples
4:06
Floating Point Literals
4:45
Examples
4:58
e-value can be capital or lowercase
5:30
Example
5:44
Strings
6:16
Mutable objects
6:18
Used for inserting and deleting text, searching, and replacing
6:26
String Rdoc
6:46
Definition
7:00
String Literals
8:20
Single-Quoted
8:28
Double-Quoted (most used)
8:50
Example
9:32
Escape Sequences
11:10
Newline
11:16
Tab
11:22
Double quote
11:28
Blackslash
11:36
Interpolation
11:50
Sprintf
13:48
Unicode Escaping
14:38
Example
15:50
Delimiters
16:18
Here Documents
17:18
Example
17:25
String Operators
19:58
Concatenation
20:03
Appending
20:40
String Equality
21:04
Example
21:24
Substrings
22:00
Range object (inclusive)
22:22
String Encoding
24:52
Differences between Ruby 1.8 and 1.9
24:56
Symbols
26:02
Definitions
26:04
Examples
26:46
When to use symbols
26:54
Symbols and Strings
27:42
Symbols Rdoc
28:22
Ruby Gems

25m 50s

Intro
0:00
RubyGems
0:08
What are RubyGems?
0:24
RubyGems.org
0:44
How RubyGems are used
2:06
Java's jar utility
2:50
Unix/Linux's tar utility
3:06
What is a Gem?
3:16
Definition of Gem
3:20
Version
3:34
Date
3:44
Author
3:50
Description
5:58
What Are the Uses?
4:18
Uses for Gems
4:22
Installation
5:06
How to install RubyGems
5:30
Updating to the Latest Ruby Gems
5:54
Testing
6:22
Example
6:34
Installing Rake
7:24
Example
7:46
Verifying
9:22
Example
9:56
Structure
10:56
gem.gemspec
11:30
Specification
13:40
What is in the gem?
13:42
Who made it?
13:50
Update gem version
13:58
Example
14:10
Create Our First Gem
17:20
Steps involved
17:28
RubyGems Guides
17:36
Example
20:02
Steps Review
18:56
Create Our First Gem (Cont.)
23:08
Building the gem
19:38
Example
20:00
Installing the gem
22:32
Run it
22:52
Publish it
23:04
Get Some Gems!
25:06
rake
25:14
rails
25:19
fastercsv
25:25
koala
25:37
Ruby Data Types (Part 2)

40m 24s

Intro
0:00
Ruby Data Types
0:15
Boolean
0:21
Arrays
0:27
Hashes
0:33
Range
0:37
Boolean Types
0:42
TrueClass
0:56
FalseClass
1:12
NilClass
1:18
TrueClass Examples
2:48
FalseClass Examples
3:22
Arrays
4:16
Ordered collection of objects
4:22
Can hold different objects
4:32
Starts at index 0
4:50
Array of Strings
5:50
Example
5:52
Arrays (Cont.)
6:20
Can be created using literals
6:22
Can be created using constructors
6:54
Position and indexed value
8:04
Negative Indexed Values
8:56
Shift and Unshift
10:18
Push and Pop
11:38
.delete method
12:38
Addition and Subtraction
13:32
Union and Intersection
14:48
Insert
15:52
Iteration
16:52
Arrays Rdoc
17:48
Hashes
22:08
Maps and Associative Arrays
22:44
Created using the constructor
22:56
Created using a hash literal
24:02
Stored in a hash table
25:26
Example
25:50
Accessing Key-Values
27:46
Deletion
29:48
Iteration
31:04
Hashes Rdoc
32:04
Ranges
36:40
Two dots are inclusive
36:57
Three dots are exclusive
37:16
Example
37:50
Ranges Rdoc
38:24
Objects

1h 5m 46s

Intro
0:00
Objects
0:10
Object References
1:36
Ruby Core
2:16
Example
4:30
Creating New Objects
6:00
New Method
6:08
Initialize Method
6:31
Example
7:18
Garbage Collection
9:54
Global values always reachable
10:25
Object Identity
11:08
Every object has an object identifier
11:20
Object identifier is constant and unique
11:30
Example
11:54
Object Class
12:58
Class method
13:10
Superclass method
13:28
Object Testing
14:46
is_a?
15:49
respond_to?
16:26
String and Regexp
18:10
Comparing two object instances
20:06
Example
23:30
Object Equality
25:48
Comparing objects
25:54
equal?
25:58
Popular way to test for equality
27:16
Opposite way to test for equality
27:25
Arrays
28:30
Hash
29:42
Case equality operator
30:47
Class tests
31:16
Range tests
31:48
Symbol tests
32:32
Object Conversion
33:14
Explicit conversion
33:54
Implicit conversion
35:00
Example
36:12
Object Conversion: Kernel Module
38:22
Array
38:38
Float
39:26
Integer
39:58
String
40:10
Example
40:34
Object Conversion: Coerce
42:00
Used for mixed type numeric operations
42:08
Example
43:40
Object Conversion: Boolean
47:42
Every object has a boolean value
47:44
Example
48:54
Object Copying
50:52
dup
50:58
clone
51:03
Example
51:42
Object Freezing
57:36
Object Marshaling
58:38
Save state
59:04
Load state
59:27
Example
59:32
Tainted Objects
1:01:50
taint
1:02:08
farm field
1:02:12
Untrusted Objects
1:04:06
trust
1:04:24
untrust
1:04:34
untrusted?
1:04:42
Loops

38m 54s

Intro
0:00
Loops
0:12
while and until
0:48
for and in
0:54
iterators
1:04
enumerable in objects
1:06
While-loop
1:14
Will keep going is condition is true
1:18
Until-loop
2:58
Will keep going until condition becomes true
3:06
Single Expression Loops
4:20
Compact form
4:30
Expressed as a modifier
4:42
Do-While Loop
5:52
Executes body first
6:06
Do-Until Loop
7:54
Similar to do-while loop
7:58
Using Break Inside Loops
8:54
break
8:58
For-In Loop
11:56
for-loop
12:06
var
12:34
collection
12:54
body
13:00
Examples
13:08
Examples (Cont.)
15:54
Nested loops
16:40
Numeric Iterators
18:32
upto
18:40
downto
18:42
times
18:48
Examples
20:28
External Iterators
21:00
Enumerator class
21:04
Rdoc
21:16
Enumerables in Objects
24:35
Enumerable is a mix-in
24:41
RDoc
25:24
Commonly Used Enumerables in Objects
27:01
Array
27:19
Hash
27:51
Range
28:47
Examples
29:29
Enumerables in Objects (Cont.)
31:13
File Processing
31:15
Example
31:45
Enumerables in Objects (Cont.)
33:07
collect
33:23
select
34:11
reject
34:59
inject
35:29
Strings

28m 30s

Intro
0:00
Strings
0:08
Why do you want to get familiar with strings?
1:00
String Creation
1:16
new
1:28
empty?
1:50
length or size
2:10
Example
3:12
String Manipulation
4:40
slice
4:56
square brackets [ ]
5:02
token
5:40
[fixnum]
6:52
offset and length
8:40
chaining
12:42
String Insertion
12:56
insert
12:58
positive or negative index
13:46
String Updates
15:24
[token]
15:36
Examples
16:40
chop or chop!
17:54
chomp!
18:56
gsub
20:28
String Deletion
21:38
delete
21:38
String Reversal
22:46
reverse
22:52
String Manipulation
23:16
split(pattern=$, limit)
23:22
pattern
24:10
limit
24:15
upcase or upcase!
25:28
downcase or downcase!
26:02
swapcase
26:24
Incrementing Strings
27:26
next or next!
27:32
Check Out the Other Lessons
28:00
Ruby Data Types Part 1
28:12
Regular Expressions
28:18
Regular Expressions

33m 27s

Intro
0:00
Regular Expressions
0:10
How to create a regular expression
0:48
What goes inside
1:36
Metacharacters
3:10
Bracket expressions
3:14
Quantifiers
3:18
Anchors
3:20
Metacharacters
3:30
word and non-word characters
4:04
digit and non-digit characters
4:44
hexdigit and non-hexdigit characters
4:56
whitespace and non-whitespace characters
5:08
Examples
5:24
POSIX Bracket Expressions
7:48
Non-POSIX Bracket Expressions
9:48
Bracket Expression Examples
10:58
Quantifiers
12:34
Examples
13:30
Character Properties
17:24
Similar to POSIX bracket classes
18:22
More Character Properties
18:48
Examples
19:32
Anchors
20:08
Examples
21:14
Regular Expression Matching: Regexp Object
22:40
match
22:51
Regular Expression Matching: String Object
24:14
match
24:26
Regular Expression Modifier Characters
25:14
pat
25:38
Example
26:42
Regular Expression Modifier Objects
27:14
Example
28:38
Regexp Rdoc
30:40
Arrays

14m 35s

Intro
0:00
Arrays
0:12
Creating an Array with a Block
0:50
Alternative Ways to Create an Array
3:52
Checking the Class
5:14
Iterate through the array
5:26
Call the class method
5:28
Array Shortcuts
6:38
at(index)
6:44
delete_at(index)
7:28
first(n)
8:28
last(n)
9:28
Removing Duplicates
9:58
uniq or uniq!
10:04
Sorting the Array
10:48
sort or sort!
10:54
Getting the Index
11:35
index
11:56
rindex
12:38
Multidimensional Arrays
12:56
flatten
13:33
Check Out the Earlier Lesson
14:16
Ruby Data Types Part 2
14:26
Hashes

27m 48s

Intro
0:00
Hashes
0:12
Creating Hashes
1:18
Setting a Default Value
2:24
Accessing Hashes
4:16
Accessible by keys or by values
4:28
Keys must be unique
4:36
Creating Hashes
5:16
Comma-separated list
5:42
Hash rocket
8:28
Examples
10:16
Iterating Keys and Values
11:43
each_key
12:04
each_value
14:04
Merging Hashes
16:10
merge(other_hash)
16:20
Sorting Hashes
18:46
Replacing Hashes
20:57
replace(other_hash)
21:18
Converting Hashes to Other Classes
22:04
to_a
22:22
to_s
23:22
Example
24:34
Check Out the Earlier Lesson
27:22
Ruby Data Types Part 2
27:32
Math Operations, Part 1

28m 47s

Intro
0:00
Math Objects
0:12
Numeric
0:26
Integer
0:38
Float
1:02
Fixnum
1:14
Bignum
1:56
Rational
2:04
Math
2:24
Math Operations
2:36
Example
3:14
div(numeric)
4:54
divmod(numeric)
6:30
modulo(numeric)
7:23
quo(numeric)
8:18
remainder(numeric)
9:35
Operation Precedence 1 of 3
10:35
Operation Precedence 2 of 3
13:18
Operation Precedence 3 of 3
14:28
Abbreviated Math Operations
14:54
Move the operator in front of the equal sign
15:52
Numbers
16:36
Numeric Class
17:06
Numeric Methods
18:41
ceil
18:52
floor
19:32
round
19:50
Example with Numbers
20:20
Numeric Methods (Cont.)
22:20
truncate
22:28
num.step(limit, step)
23:02
Numeric Rdoc
25:26
Math Operations, Part 2

28m 51s

Intro
0:00
Math Operations
0:12
Math Module
0:24
Rational Numbers
0:44
Complex Numbers
0:52
Prime Numbers
0:58
Matrices
1:06
Math Module
1:12
PI and E
1:32
Math Module Methods
2:47
atan2(x,y)
2:56
cos(x)
3:14
exp(x)
3:44
Examples
4:38
log(x)
5:44
log(num, base)
6:34
log10(x)
7:04
sin(x)
7:34
sqrt(x)
7:52
tan(x)
8:06
Math Functions: Part 1 of 3
8:12
Math Functions: Part 2 of 3
9:32
Math Functions: Part 3 of 3
10:19
Math Module Rdoc
11:25
Rational Numbers
13:23
How to use
14:06
Example
15:02
Mathematical Ruby Scripts (Mathn)
16:25
Example
17:28
Complex Numbers
18:26
polar
18:56
rect
19:10
Complex Number Examples
19:18
Prime Numbers
20:14
each(ubound=nil)
20:44
prime?
21:22
Example
21:58
Matrices
23:15
build(row_size, column_size=row_size)
23:44
Example
24:44
Matrix Rdoc
24:58
Dates and Times

26m 1s

Intro
0:00
Dates and Times
0:12
Time Class
0:38
Methods of the Time Class
1:43
now
1:44
at(time)
2:10
Epoch & Unix Timestamp Conversion Tools
3:19
Components of a Time
5:07
Convert Time to an Array
5:54
to_a
6:08
Creating a New Time
6:48
Time.local
7:08
Year is required
7:22
Time.utc
8:12
What should be specified
9:30
More Methods of the Time Class
10:16
strftime(string)
11:26
RDoc
12:50
Date Library
16:46
Initializing a New Date
17:08
Parsing Dates
18:28
parse(string)
18:42
Today's Date
19:19
Date.today
19:22
Tomorrow's Date
20:22
Next
20:28
Next week
21:22
Count Down
21:26
Count Up
22:37
Components of a Date
23:20
Converting to Datetime
23:48
to_datetime
24:00
Initializing a Datetime
24:24
Converting to Time
25:23
self.to_time
25:32
Methods: Part 1

31m 24s

Intro
0:00
What is a Method?
0:12
Basic Method
0:58
Return Value
4:37
return
4:46
Factorial Example
6:18
Example
8:46
Return Two Values
10:06
Set the return keyword
10:14
Collected and returned as an array
10:28
Undefining Methods
11:22
undef method_to_undefine
11:44
Example
12:32
Method Names
13:02
Begin with lowercase letter
13:16
Separate longer words with underscores
13:26
Can end with equal sign, question mark, or exclamation point
14:03
Equal sign
14:26
Method Names with Question Mark
14:44
empty?
15:24
Method Names with Exclamation Point
16:01
mutators
16:12
! means use with caution
16:46
Method Aliases
18:05
alias new_method existing_method
18:42
Operator Methods
20:00
Operators
20:02
Array Operators
20:10
Unary Operators
20:32
Binary Operators
20:40
Example
21:28
Methods and Parentheses
25:00
Optional in most cases
25:20
Required in other cases
27:13
Methods and Blocks
27:54
Associated with blocks
28:18
block_given?
28:26
yield
28:36
Example
29:24
Methods: Part 2

20m 11s

Intro
0:00
Methods with the Unary Ampersand Operator
0:14
&
0:34
Block to a Proc
0:56
Example
2:02
Proc object
3:58
Example
5:04
Methods with Default Values
5:54
Example
7:12
Methods with variable-Length Arguments
8:05
How to create it
8:36
Example
11:06
Using Hashes with Arguments
13:02
Multiple arguments
13:08
Solution
13:30
Example
14:56
Rdoc
18:12
Classes: Part I

26m 51s

Intro
0:00
Classes
0:10
Definition of a class
0:14
Class represents a container
0:32
Can be reused
0:46
Creating our First Class
1:00
Keyword class will create new class
1:06
Name must begin with capital letter
1:30
Instantiating Our First Class
2:46
New will create a new instance of class
2:58
Initializing Values
3:58
Definition of def
4:14
Instance method
5:08
Example
7:02
Defining the to_s Method
8:24
Creating a string representation class
8:34
Example
10:54
Self in the Class
12:16
Definition of self
12:26
Example
13:54
Accessor Methods
15:52
getter methods
16:22
Example
17:00
Setter Methods
18:00
Mutator methods
18:02
Example
19:46
Automating Getter and Setter Methods
21:10
Defined in the module class
21:30
attr_reader
21:54
attr_writer
22:48
attr creates getter and setter methods
23:50
Example
24:28
Notes on Ruby's Accessor Methods
25:32
Classes: Part II

26m 42s

Intro
0:00
Defining Operators
0:10
You can define arithmetic operators
0:32
Unary Operators
0:46
Let's define operators in our class!
0:56
Example
2:52
Class Methods
6:24
Examples
6:56
Opening Up the Class
9:38
Adds an additional method
9:54
Examples
11:04
Array and Hash Access Method
15:40
Use square brackets
16:02
Define your own has access method
16:08
Example
16:56
Enumerating The Values
18:40
Define the each iterator
18:40
Testing for Equality
19:36
Class Triplex
19:50
Examples
20:54
Constants
25:00
Usually defined at the top of class
25:24
Classes: Part III

53m 36s

Intro
0:00
Class Variables
0:14
Example
2:16
Ruby Glass Jar Example
8:50
Class Instance Variables
10:20
Instance variables of class objects
10:46
Advantage of class instance variables
11:18
Examples
11:30
Method Visibility
16:16
Three types of method visibility
16:26
Public methods
17:34
Private methods
17:38
Protected methods
18:04
Invoking Method Visibility
19:21
Public , Protected, and Private Visibility
19:22
Invoking Method Visibility With Arguments
21:39
Example: Invoking Method Visibility
22:12
Class Visibility
23:31
Instance and Class Variables are Private
23:32
Constants are Public
24:00
Makes Existing Class Methods Private
24:27
Makes Existing Class Methods Public
25:08
Example: Class Visibility and class GlassJar
25:43
Subclassing
27:08
Subclassing: Subclass and Superclass
27:09
Example: Subclassing
29:43
Inheritance
30:05
Inheritance
30:06
Example: Inheritance
31:25
Subclassing and Inheritance
31:34
Descendants
31:41
Ancestors
31:56
More On Descendants and Ancestors
32:08
Extending a Class
33:27
Extending a Class
33:28
Coding Example: Extending a Class
34:24
Overriding a Method
36:41
Overriding a Method
36:42
Coding Example: Overriding a Method
37:18
Modifying Methods with Chaining
38:52
Modifying Methods with Chaining
38:53
Super
39:25
Coding Example: Modifying Methods with Chaining
39:51
The Singleton Pattern
44:52
Introduction to The Singleton Pattern
44:53
Setting Up Singleton
45:28
The Instance Method
45:58
Rdoc for Singleton: Usage
46:23
Rdoc for Singleton: Implementation
47:45
Coding Example: Singleton
49:38
Modules

24m 19s

Intro
0:00
Modules
0:04
What is Modules?
0:05
Modules Examples
0:40
Modules: Mix-Ins
3:31
What is a Mix-in?
3:32
Modules: Namespace
4:07
What is a Namespace?
4:08
Why Use a Namespace?
5:13
Example of a Namespace Module
5:59
Example of Mixing in The Module Into the Global Scope
6:00
Modules: Creation
7:04
How to Create a New Module?
7:05
Modules: Usage
8:19
How to Use It?
8:20
class Poker & class Bridge
9:13
Creating Our Module as a Mix-In
9:41
Example of a Module Using Instance Methods
9:42
Coding Example
10:20
Creating Our Module as a Namespace
12:11
Implement Class Methods for the Module
12:12
Coding Example
14:56
Loading Our Module
19:46
Loading Our Module Overview
19:47
Require & Load
20:15
Coding Example: Loading Module
20:48
Lesson Summary
23:36
Loading...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Introduction to Ruby
Bookmark & Share Embed

Share this knowledge with your friends!

Copy & Paste this embed code into your website’s HTML

Please ensure that your website editor is in text mode when you paste the code.
(In Wordpress, the mode button is on the top right corner.)
  ×
  • - Allow users to view the embedded video in full-size.
Since this lesson is not free, only the preview will appear on your website.
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Sign up for Educator.com

Membership Overview

  • Unlimited access to our entire library of courses.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lesson files for programming and software training practice.
  • Track your course viewing progress.
  • Download lecture slides for taking notes.
  • Learn at your own pace... anytime, anywhere!

Math Operations, Part 2

  • In this lesson, we will go over the Math Module, Rational numbers, Complex numbers, Prime numbers, and Matrices
  • The Math module contains methods for basic trignometric and logarithms
  • It also defines constants PI and E
  • Popular used Methods: cos, exp, log, log10, sin, sqrt, tan
  • RDoc: http://www.ruby-doc.org/core-1.9.3/Math.html
  • Rational Numbers are supported through the Rational class. They are numbers that can be expressed as a fraction of integers.
  • Mathematical Ruby Scripts (mathn) is used in conjunction with the Math module to make mathematical operations better
  • It pulls in other standard libraries and integrates them with the rest of Ruby's numeric class
  • Complex Numbers represent a paired real number with an imaginary unit
  • Prime Numbers are included in the mathn library. They generate prime numbers starting from 2.
  • Matrices are represented through the Matrix class and provide methods for creating Matrices
  • RDoc: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/matrix/rdoc/Matrix.html

Math Operations, Part 2

Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Math Operations 0:12
    • Math Module
    • Rational Numbers
    • Complex Numbers
    • Prime Numbers
    • Matrices
  • Math Module 1:12
    • PI and E
  • Math Module Methods 2:47
    • atan2(x,y)
    • cos(x)
    • exp(x)
    • Examples
    • log(x)
    • log(num, base)
    • log10(x)
    • sin(x)
    • sqrt(x)
    • tan(x)
  • Math Functions: Part 1 of 3 8:12
  • Math Functions: Part 2 of 3 9:32
  • Math Functions: Part 3 of 3 10:19
    • Math Module Rdoc
  • Rational Numbers 13:23
    • How to use
    • Example
  • Mathematical Ruby Scripts (Mathn) 16:25
    • Example
  • Complex Numbers 18:26
    • polar
    • rect
  • Complex Number Examples 19:18
  • Prime Numbers 20:14
    • each(ubound=nil)
    • prime?
    • Example
  • Matrices 23:15
    • build(row_size, column_size=row_size)
    • Example
    • Matrix Rdoc

Transcription: Math Operations, Part 2

Welcome back to Educator.com.0000

Today's lesson is on math operations; this is the second part.0002

For today's lesson, we are going to go over five pieces that are part of math operations.0010

The first one we are going to look at is the Math module.0019

This has quite a bit of operations; most of the operations are related to the Math module, so I would give this a star.0023

After that, we are going to look at some of the math types.0038

One is the rational numbers, and after we look at rational numbers, we're going to look at complex numbers.0045

Then, prime numbers, and the last one we're going to look at is matrices, since they do have an object to create and manipulate matrices in Ruby.0053

First, let's look at the Math module.0072

This is a module that you can include in other objects; you can also use it by itself.0077

It has two constants as part of it: one is pi, and e.0089

To call it, you just call the Math::pi function, and the same with the e: you can just call it with Math::e.0095

The M is uppercase, and the three letters after it are lowercase.0129

That will get those two constant values.0138

The Math module contains a lot of methods for trigonometry and logarithms.0143

It can be invoked through the Math name space or included into scope.0152

Let's look at some of the methods.0164

The first one is atan2; it takes two arguments--in this case, we're giving it an x and a y.0167

This calculates the arc tangent, given the y and the x, which are these two values.0178

The next one is cosine; it uses the method cos; it takes one argument; and it calculates the cosine of x.0188

For our example here, all you do is to call the Math module directly; then, do the period, and call the method cos.0199

In this case, our argument is 0, and that comes up with the cosine 0, and the value is 0.0211

The next method we'll look at is this exponential function.0219

It uses exp, and this is e raised to the power of x, so it is equivalent to ex0224

For example, we have here the exponential to 1; e to the power of 1 is 2.7182, and it just keeps going down--81828459045.0241

We do call Math here, but you don't have to; you can include the Math module, and it will be part of your scope, and you can just call the function.0262

Let me show you how to do that.0274

For example, first, I'm going to do include math; and now I'm already in the Math scope, so I just need to pass the function in.0279

For example, before, I did math, log(1) and it gives me the value for the logarithm 1; I can just call log(1) now, and it does the exact same thing--since I included that Math module into my scope.0292

Also, I can call the new function we learned, the exponential function, to the power of 1, and I can call cosine and pass in 0, and it gives me a value of 1.0.0306

Actually, if that is the case, this is the wrong one; this is 1.0, as we just saw in that terminal.0323

The next one, as we just saw--we just looked at the logarithm function--you call log, and you pass the parameter x; this calculates the natural logarithm of x.0338

As we did in the terminal, math.log(1); you get 0.0.0351

You can also call the constant; in this case, we will do the constant for the e, math.e, and we pass the logarithm of that.0357

What is the natural logarithm of that value?--we get 2.7182, and it goes all the way down.0369

This logarithm function--we can actually pass two arguments in it; by default, it's going to do it as a base 10, but you can specify a second argument.0379

You can tell it specifically what base you want it to do.0396

This is the same as log, but the second argument specifies the base.0401

They also have another function that, if you are doing log10, it's going to default to, and you can actually specify that as a function.0410

I think this is made because it is so commonly used.0419

So, there is a function called log10; it takes one argument, x, and this calculates the base 10 logarithm of x.0422

Here, we can just call math.log10, pass in a value 1, and we get our value 0.0, our base 10 logarithm of x.0430

Again, the base 10 logarithm of 10 is 1.0.0441

There is also a function to calculate the sine of x.0450

Type sin, and pass in the parameter x.0455

You can also do square root and tangent: square root is sqrt, and it takes one argument of x; this returns a square root, and the value x must be positive.0464

You can also calculate the tangent with tan, and it takes one parameter.0481

There are quite a bit of functions; I have gathered a table, a list of them.0491

You can go through it and see all the different functions that you can use in this Math module.0498

I do have the bang value here; this bang value means that it will update the object it currently is and save it.0506

You also have the option to do the method directly, without the bang, which will create a new object with that new calculation.0519

There is arc cosine--you add an h; you have the hyperbolic arc cosine.0529

We already went through sine: you have arc sine, hyperbolic arc sine; arc tangent--this atan takes an x argument; atan2 takes two arguments, an x and a y argument.0538

You have atanh; this is the hyperbolic arc tangent.0556

This is the first page; there are a couple more here.0565

We already went over cosine; you can use the bang method with your cosine; if you add h, it will get you the hyperbolic cosine.0569

If you add sin, that calculates your sine.0581

There is an error function in math; do math.erf, and you can get the error function.0587

There is also a complementary error function with erfc.0594

You can calculate the base x of eular using method exp.0601

You can also calculate the normalized fraction exponent using frexp.0609

We are almost there; we are on our last page of functions.0618

You can calculate the hypotenuse using hypot; you can calculate the floating-point value that corresponds to the mantissa exponent using ldexp.0622

You have your sine calculations with sinh--you can calculate the hyperbolic sine; next is square root--sqrt does that--and your tangents--tan and tanh will do your hyperbolic tangent, with the addition of that h value.0641

Let's go ahead and look at the Math module.0666

If you look at the RDoc, you will notice that it has more examples about all these functions, too.0670

This is the Math module; notice that it has the two constants e and pi.0681

As we just went through that whole list, they do have it on here, too, with the cosine, cosh, sin, sinh...you can see the source for that, too, how it calculates it...0692

Notice also, here they tell you the arguments: some take one argument; some take two.0703

For the arc tangent, given x, it gives you some examples here.0710

You can take a look at that and see how they calculate that.0717

Actually, we didn't go over this one: there is a method for cube root: that is cbrt; it takes a parameter of numeric.0726

It returns a Float.0738

We already went through error: it "calculates the error function of x," and takes x--one parameter.0743

exp--e to the power of x--we went over that, and they give you some examples there, also.0750

There is a gamma function, and a logarithm gamma function, too.0761

As you see here, it's all our log functions that we went over: they overload it, where one has one argument, one has two arguments, one with a base value, and then there is one for log10...0769

There is actually one for base 2--log2, so that might be useful to you math calculators.0778

That is everything for that Math module.0791

That is the Math module; let's move on now to rational numbers.0800

Rational numbers: these are numbers that can be expressed as a fraction of integers.0806

Just integers; remember that; we are not doing Floats or decimal values; they are all like fractions, essentially; these are all fractions.0813

This is supported through the Rational class--remember that Rational class?--it will be useful in this case.0826

You must use Integers, not Floats.0835

To use this Rational number, you have to load in a couple of libraries.0840

The first library you are going to load is this require rational, and then you have to load require mathn.0846

We will go deeper into what this mathn library does; it's not required for rational numbers, but it's recommended, so I'm just going to say require that mathn library.0854

After you require those two libraries, then you can start using this Rational object.0865

For example, here I'm calling rational, and I'm putting my fraction in.0872

I put my fraction in: 4 out of 10; after I do that, I press Return, and it's going to automatically reduce down to 2 out of 5.0877

I can also do the same thing with 5 out of 10; pass that in, press Return, and it's going to reduce it down to 1 over 2.0887

Let's look at some more examples.0896

Here, I'm just going to do require.rational, and then I'm going to require mathn, and let's show you the 10 out of 20, and it reduces it down straight to 1 out of 2.0901

Rational 3 out of 4 gets me 3 out of 4; rational 1 out of 10--and let's do times 5--so we have 5 out of 10, and it reduces it to 1 out of 2.0922

Also, I can go over a whole number, and it does do 3 out of 2.0939

You can also do other functions; I can also do exponent, so I can do 1 out of 2 to the power of 2, and it will get me 1 out of 4.0946

I can also convert to Strings and Floats.0957

If I do Rational (1,4), and convert that to a string, it takes that whole value and puts quotes around it.0960

I can do the same thing with Float, and--look there!--it actually gives me the decimal value, .25.0969

That is rational numbers.0984

Let's look over that mathn library very quickly.0985

Mathn is a standard library; it's used for a lot of math functionalities; when used in conjunction with the Math module, it makes mathematical operations better.0990

That is just the gist of it; you use it when you are doing math operations; just require it.1004

It pulls in other standard libraries, and it integrates them with the rest of Ruby's numeric classes, so it's very useful, so definitely use this library.1011

I just gave you a very simple example here, but if I don't include this library and I did 1 out of 2, it will return 0.1022

That is not going to work for me; I want specific values.1030

If I require this mathn, 1 out of 2 will return 1 out of 2, because it's including these other standard libraries to help do calculations.1035

I can show you some examples: let's go ahead and start over and call IRB again--clean slate, nothing is loaded.1043

All we do here is, I just pass 1 out of 2, and it returns 0.1053

But if I do require.mathn, then I do 1 out of 2, and it gets me the correct answer.1059

I can also do calculations with the different functions: 1 out of 2 times 3 over 10--I get 3 over 20.1071

I can do a calculation with sqrt, and I get my complex value, with 0 and one imaginary number.1079

Next, let's look at complex numbers.1103

Complex numbers use the Complex class.1106

This is represented as a real number with an imaginary number; I just showed you a terminal view with that...so an example would be 0+1i.1112

There are two different types of complex numbers we can use: we can call this polar method, and it will return a complex object denoted in polar form, and I can also call rect, and that will return a complex object denoted in rectangular form.1126

You have polar and rectangular.1148

Here are some examples of complex numbers.1156

You just pass the Complex object, and you pass a parameter in.1159

I do Complex(1), and it's going to return me 1+0i.1164

You can also pass in a second parameter for imaginary numbers; so, if I call Complex(2,3), it's going to get 2+3i.1171

I can pass in these arguments into the rectangular or the polar method.1180

If I do Complex.rect and pass (2,3), it's going to get me 2+3i.1187

In the polar form, I pass (3,0); it's going to get 3.0+0.0i.1195

Here, it passes it in with the decimals; so it has some Float values there.1201

Next, let's look at the prime numbers.1210

This uses the Prime class.1214

It's included in the mathn library, and it starts generating prime numbers, starting from the value 2.1218

What is a prime number? It's a value that is divisible by 1 and itself.1232

Let's look at some methods.1239

One is this method called each: it takes one parameter--if you don't pass anything, it will default that parameter to nil.1241

I'm going to call ubound, which is an arbitrary positive number.1251

This is known as the upper bound of the enumeration.1258

With this method, you can output all the prime numbers to a certain bound, so once it goes over that, it will stop.1262

I'll show you an example of that.1275

The next one is this value called prime?, and this returns if the value is prime.1279

You call itself here, so this would be prime, and then you call the method prime?, and whatever number value you want to check.1287

This will return true or false.1308

Let's go through an example with the prime values.1312

I believe we already have mathn loaded.1318

Let's do an example: let's get all the prime numbers up to 10.1324

I do each, pass in value 10, and do prime, and then I'm going to output each one, and it starts from the value 2; the next prime number is 3; 5; and 7; it ends at 7--that is where we hit our bound of 10, so it doesn't go over that.1332

We can also show you the prime?--let's check: Is 2 prime? It says it is prime; 1 is false; 3 is prime; if I pass the value 4, it says it's false.1360

5 and 7 are true; they are prime.1377

OK, so those are prime numbers.1387

The last thing we want to look at is matrices.1391

Matrices are represented through the Matrix class.1395

This provides methods for creating matrices, plus manipulating and updating.1400

It requires loading the class beforehand.1408

For example, I'm going to show you the build method.1413

The build method for matrices has two arguments: you need to specify the row size and the column size.1418

If you don't specify the column size, it will default to the row size.1427

This creates a matrix of row size by column size.1432

For example, I call the build method, and I'm doing a row size of 2, and then I'm specifying a column size of 3.1437

I'm also passing a block in here; this block says what I'm going to initialize it to.1459

In this case, I'm saying to initialize it to 1.1465

It makes this new matrix that has values of 1 in it, row size 2, and column--3.1469

Let's go through the RDoc.1482

This is very basic, but let's go through the RDoc for it.1490

Here is the Matrix RDoc; there is quite a bit on methods here, actually.1495

"The Matrix class represents a mathematical matrix...provides methods for creating matrices, operating on them arithmetically and algebraically, and determining their mathematical properties."1503

I showed you the build method, but you will notice that there are quite a bit of methods to build matrices, using different methods: rows, columns, build, diagonal, scalar, identity, zero...1517

You can also access the properties of it with quite a bit of functions here: row_size, column_size, row, column, collect, map...1530

Properties of a matrix: you can check that, too--you can say, "Hey, is this matrix diagonal? Is it lower_triangular? Regular? Singular? Square?"1541

You can check these properties.1551

You can also do mathematical arithmetic with it, using multiplication, addition, subtraction, division, inverse, the exponent function...1556

You should have quite a bit of functions here to do whatever process you need to do.1567

You can use the eigen, the eigensystem, conjugate, imaginary, rectangular, complex arithmetic for the matrices...1572

You can also convert it to other types: you can use coerce, to_a, row_vectors, column_vectors.1581

You can do string representations with to_s and inspect.1588

There are attributes: you have your column_size, your rows...1596

If you go through here, you can see a lot of the methods: we went through build, and there are quite a bit of methods here.1600

You can create an empty matrix, just with the row_size and the column_size.1607

We already went over build, but notice, with build here, I can also pass in what row and column it's working on, so I can initialize values using that.1612

I can give it a dynamic value, as they do here: they say, "The value I'm going to pass in is column minus row."1623

Then, you have a bunch of instance methods to do matrix calculation.1639

You also have this each method as an enumerator, so you can grab elements by what part of the matrix you want.1652

You can get all the elements, the ones that are diagonal, strict_lower, strict_upper...1660

There are quite a bit of properties there.1667

You can also get the Hash code for that matrix...that is interesting.1673

You can also get the inverse of the matrix, using the inverse method.1679

As I said before, you can check "Is it lower_triangular?", and just say to the matrix, "Hey, are you lower_triangular?"--just call this method, and will say yes, it is, or it isn't--it's false.1683

There are quite a bit of functions here, so definitely look at the RDoc.1699

That will definitely go over a lot of different methods in the matrix, and help you manipulate, create new matrices, and update existing ones.1705

So, definitely go over that, and otherwise, that is the end of this lesson at Educator.com.1718

Hope to see you next time, and good luck on your Math module searches and processes!1724

Educator®

Please sign in to participate in this lecture discussion.

Resetting Your Password?
OR

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Membership Overview

  • Available 24/7. Unlimited Access to Our Entire Library.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lecture slides for taking notes.
  • Track your course viewing progress.
  • Accessible anytime, anywhere with our Android and iOS apps.