Justin Mui

Justin Mui

Math Operations, Part 1

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 1

  • Numeric is the base class for numbers
  • It gives you many methods to describe different numbers
  • RDoc: http://www.ruby-doc.org/core-1.9.3/Numeric.html
  • Float class holds real or floating-point numbers
  • Fixnum holds integer values represented by native machine word (minus 1)
  • Bignum holds a class of integers outside the range of Fixnum
  • Rational is a paired integer number
  • The Math module holds math related functions for trignometric and transcedental functions
  • There is a operator precedence that is followed to which specific operators will be processed before others can processed

Math Operations, Part 1

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 Objects 0:12
    • Numeric
    • Integer
    • Float
    • Fixnum
    • Bignum
    • Rational
    • Math
  • Math Operations 2:36
    • Example
    • div(numeric)
    • divmod(numeric)
    • modulo(numeric)
    • quo(numeric)
    • remainder(numeric)
  • 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
  • Numbers 16:36
    • Numeric Class
  • Numeric Methods 18:41
    • ceil
    • floor
    • round
  • Example with Numbers 20:20
  • Numeric Methods (Cont.) 22:20
    • truncate
    • num.step(limit, step)
    • Numeric Rdoc

Transcription: Math Operations, Part 1

Welcome back to Educator.com.0000

Today's lesson is on math operations, part 1.0002

First, let's go over a review of some of the math objects--first, the Numeric class, and then some of the math modules.0009

First, you have your Numeric class: this is the base class for all of your numbers.0023

There are quite a bit of numbers: first, you have your Integer class--this is the basis for Fixnum and your Bignum class: it's the basic Integer values for that.0034

Then, you have your Float: Float is a class for real or floating-point numbers.0057

You then have your Fixnum, which is the most common one--which is your Integers.0065

There is a max bound it holds: it holds integer values represented by your native machine word -1; this is based on your local environment that you are coding in.0071

This is the bound--max bound.0090

If it flows outside of that bound, it's going to be automatically upcased to a Bignum.0098

You have your Fixnum, your Bignum...and Bignum is a class of integers outside the range of Fixnum.0107

Then, we have our class called Rational, which is a paired Integer number.0118

The last thing we want to do is--we have this Math module; the Math module holds math-related functions.0128

Mostly, it holds more basic ones that are for trigonometry and transcendental functions.0137

First, let's go over some of the basic operations.0153

You have your normal add, subtract, multiply, divide; you have the modulo, which gets the remainder of the division.0158

That is with the percentage; your caret gets you the exponent; so this is equivalent to a to the power of b: it performs exponential calculations.0169

We can go ahead and go through some basic ones in the IRB.0185

I can show you the addition 10+2; it's 12; 2+10...it got 12, too; 10-5...2-7...does it not like my comma?0191

10-5; 2-7...it allows negative numbers or positive, no issue...10 times 10, 100...5 times -10, 50...I can still do division--20 divided by 4, 100, 10, 12, 10...0210

Notice, for 12 divided by 10, it is not a floating number; it's just a 1: there is a remainder, and it cuts that off.0231

Let's go ahead and look at the modulo: I can do 12 modulo(10), and then you see, there I get my remainder, 2.0242

If I do 15 modulo(5), since there is nothing, it's going to return 0...so 15modulo (5) returns 0; there is no remainder.0252

If I want to do 2 to the power of 3, I just do 2^3, and the value is 8; and I can do 3^3, and the output is 27.0264

That is basic operations.0284

Next, not only do you have these operators you can use; you can still use the methods--like the divide.0292

We have this method called div: it takes an argument--you pass in a numeric value to divide by.0302

It will perform division, and then it is going to convert the result to an integer.0310

This is defined by the subclass of Numeric, so in this case, since we are used to doing Integer values, it's going to be defined in the Fixnum class or the Bignum class, depending on where it's being set; this would be the Integer class.0317

So out of the 24, I called the .div(2), and I'm going to return the result 12.0331

13.div(4)--it's going to return 3.0340

We do have that remainder, 1, and notice it doesn't worry about that.0346

This method says, "I'm just dividing and returning you what I'm able to divide by."0353

25.0--this is a Float--so notice, for these first two ones, we had Integers; for this one, we're doing a Float.0358

It's going to be 25.0 divided by 2.0, and it still returns an integer--it returns 12 still.0373

Next, we're looking at this method called divmod; this one gets us more specific to what we want.0387

Not only do we want what it divides by--we want the remainder, too.0391

This will return an Array that contains the quotient and the modulus.0395

Again, we go ahead with our 13 divided by 4, but this time, we call divmod; it's going to return an Array.0403

Here is our value 3, which is our quotient, and then we have our remainder, our modulus, which is 1.0413

15.divmod(5)--we have 3 and 0; 17.5.divmod(5)--we get 3 and 2.5.0425

Next, we are going to look at the method modulo.0440

This returns the modulus obtained by dividing the num by the Numeric.0444

This is where...we've talked about the quotient, we've talked about both, and now this will just return the modulus remainder.0453

13.modulo(5)--this allows us to divide by 2, and we have this modulus of 3, so that is the end result of 13.modulo(5).0461

Notice, if we do a Float--I do 11.0, a Float, and I do a modulo 5.0, which is another Float, it's going to return 1.0.0476

Let's look at some more methods that you might possibly use.0495

The next one: we have this method called quo, and again, it takes a Numeric value.0503

This returns a Rational or a Float, and it performs division.0510

This one--you can get a much more specific value, since we're getting Float types or Rational types with it.0517

If I do 10.quo(5.1), we get this huge number--very specific.0527

If I do 10.quo(2), it's going to return me a Rational value, which is 5 over 1, and then here we have our Float.0534

It will return whatever it finds best to get you the value you need it to be--Rational is more specific, but if it needs to be, it will return you that Float.0550

The next method we will look at is remainder: very similar to the modulus, but it does have a different way to calculate the remainder.0563

It returns a remainder, and how it does it is...let's say x is your self, that's the number--you call your remainder...Numeric value...to do that, it actually does a calculation using truncate.0571

It does the same thing as this here.0592

What it's doing is x-y times x/y; and it's doing the .truncate.0597

If you call this method--you know now the innerlyings--this 10.remainder(2), it will return 0; 10.remainder(3.3), it will return 0.1 and a bunch of zeros and 53.0609

Next, let's look at some of the operator-operation precedence; you've been looking at a lot of different code piece examples, but if you have this huge line that is all this code of math, there is a precedence it follows--some steps, some operators, versus equality pointing to references--they all have a scale of how the compiler is using it.0633

It looks at this line of code, and it says, "This piece has precedence over this piece in this line, so I'm going to do this action first, before I do any of the other pieces."0660

It is very important that you look at the operator precedence; you can also control it using parentheses to scope out which one you want to give higher priority.0669

But, it's always good to look at the precedence so you know what the compiler is doing and how it thinks to break down your code.0677

We are going to go through three slides of it, from the highest precedence to the lowest.0688

The first one that has precedence is just element reference; notice that you can get the element reference using just square brackets, equal.0693

The next one that, surprisingly, has second precedence is the exponential--the raised to a power with the ^.0707

Third is the unary plus and minus--you have your +, -, your !, and your ~.0718

Then, the operations--math operations are next: your multiply, divide, modulo...and right below that is addition and subtraction, so your plus and minus...0727

After those, your next precedence is the right and left bitwise shift, with the > > < <, and then you have your bitwise operations: bitwise and, bitwise or, and regular or.0744

After that, your next precedence is the comparison operators: you have your less than/equals, less than, greater, and greater than/equals signs.0763

Then equality and pattern match operators come next: notice our Enumerable sort method is here; we have our equality, equality by types, our not equal, approximately like for regular expressions...0771

We have gotten through our first slide.0794

Next, logical 'and' and 'or' come next on our list of precedence.0797

Then it's your range, your inclusive and exclusive, two dots and three dots, and then your ternary if...then...else: we haven't actually done any code with this, but it's kind of a shortcut that allows you to do if...else statements all on one line.0804

It would be like if I have a condition; I can do this and say, "If this condition holds true, do a; if it doesn't hold true, do b."--that is a ternary if...then...else.0823

The next precedence is assignment: you see you have your assignments here, with add things together...subtract...divide...do bitshifts...0844

Next is logical negation--not--and now we have gotten to our last three: logical composition--our or and our and; then, it's our expression modifiers--if, unless, while, until; and then the last one on our operation precedence is the block expression, which is begin and end.0856

Next, let's look at the abbreviated math operations.0890

A lot of times, when you code, you are going to see yourself calmly doing some things over and over again, so Ruby does allow some shortcuts.0897

One of these is...you don't have to repeat yourself and keep trying...so, in this case, with the addition/subtraction/multiplication/division, you can actually shorten it.0906

So, if I wanted to add 6 to this value, x, I can just do x+=6, and this is equivalent to x=x+6.0920

It's going to add the value in, and it's going to set it back to itself.0935

I can do that same thing with -=6, so it's x=x-6; same with multiplication and division.0940

The only thing you need to do to do this is, you just move the operator in front of the equals sign.0950

It would be x, operator, equals sign, and then whatever numeric value we have.0959

This can be taken for plus, minus, multiplication, division...and now, we just shorten our code a few characters to save us a little typing.0978

Next, let's look at numbers.0994

First, to do this, we will look at the Numeric class.0997

The Numeric class is the basis parent class for Bignum, Fixnum...all these classes...they all have an ancestral link, and they all are part of the Numeric class.1006

This Numeric class gives you many methods to describe different numbers.1022

We're going to look at five of them: I have this num--I've set it to value 100--and the first method we're looking at is, "Is this zero?"1029

And zero? is false; it isn't zero; it would return true if it were.1045

Also, there is this next method called nonzero?; nonzero says that if it is nonzero, it's to return self--in this case it would return 100--or else it's going to return nil, so if it is 0, it's going to return nil.1052

Notice, it returns 100 in this case.1068

The next method is real?--"Is it real?"--it returns true; 100 is real.1074

"Is 100 an integer?"--it returns true.1079

Next, we have this method called absolute value, abs; this will get you your absolute value.1085

Notice, I have my minus sign, -12, and I just call .abs, which will call that method, and it will return me the absolute value, which is 12.1101

Let's look at a few more Numeric methods.1121

Here, we have...first, we will look at ceil: it returns the smallest integer greater than or equal to num.1125

It does kind of a round up; so, for example, I have 1.5, and I call .ceil; it's going to go to the next highest integer--in this case, it's 2--the next highest integer, the smallest one.1139

Next, let's look at floor: floor returns the largest integer less than or equal to num.1167

So, if I call 1.5.floor, what's the lowest one from 1.5? That's 1, so that is what it is going to return to me.1174

Then, you have this method called round; round will round a number to the nearest integer.1185

For example, 1.5.round will round up, so it rounds up to 2, and if I call 1.4.round, it's going to round down to 1.1197

Let's look at another example with the numbers--bring all of these concepts in together.1218

First, I'm going to set x to a Float, 100.5.1225

Next, I'm going to say on my next line, "If this is not an integer, I want you to round that number."1231

So, what I'm doing is I'm saying, "I want to make this an integer if it isn't already."1241

100.5 is not an integer, so this statement is going to return true, total, because it's not an integer, and I'm using the exclamation point to negate it, so it's going to return true.1246

It says, "OK, if this is true, I want to round this number."1268

It's going to round that number, and it's going to get 101.1273

My next statement says, "Is it real?"--so, is 101 real?1277

It will return true for that, and so it's going to say, for this statement...remember to break it down; this is an abbreviated statement--this is doing x=x/10, and this is actually 101 divided by 10, and the end result is just going to be 10, which is this here.1286

x is real; it's going to divide this; and the end result is 10.1317

At the end of this code, it's going to do puts x, and that is going to output this value, 10.1325

Let's look at one more method, truncate: truncate returns num truncated to an integer.1339

We are not doing any rounding; we're not doing ceil or floor; it's just going to cut off whatever is at the end of that decimal point, and make it an integer.1349

If I do 1.1.truncate, it's going to truncate all of that out, so it's going to just be 1.1359

If I do math.PI, which is a constant, and do .truncate, it's just going to return 3.1369

The last one is this step method: it will take whatever integer you give it, and it will increment it one by one, depending on what step you want to do.1380

You can also pass in a limit, which says, "Continue incrementing until it hits this limit."1398

For example, we have our num and our method step; here is our limit: pass that first, then pass the step--how much is it incrementing it by each time?--then, you pass in your code block.1406

First, it's going to invoke the block, starting at the number, and then it's going to increment it by the step value.1424

Then, the loop is complete when the value is greater than the limit; once it goes over that limit, then it's going to stop.1434

An example is if I call 3.step, and I do...here is my limit: 10 is my limit...and then 3 is my step, and in my block, I just say, "Print which value I'm at now; what is my current step value?" and then add a space.1442

When I do that, it's going to start with the initial value 3, so it's going to print 3, 6, and then 9.1473

Afterwards, it stops, because then the value would go over the limit.1486

If I do that again, this time starting with the value 1, the limit is 10 and the step is 2 (again, we are doing the same with printing it out), it's going to be 1, 3, 5, 7, and 9.1493

That is all for the step method; let's go ahead and look at the RDoc for the Numeric class.1516

You will see that a lot of the methods here, we have covered.1527

Let's look at some of the methods: we talked about modulo...there is a unary plus and minus..."Returns the receiver's value"; "Returns the receiver's value, negated."1534

Abs: absolute value of num; if you run abs2, it returns a square of itself.1555

There are some other methods: phase, angle; we talked about ceil; we talked about coerce in an earlier Integer lesson.1565

Conjugate; denominator; here is our div--you can see it even has our same reference here--it "uses the / to perform division, then converts the result to an integer."1578

"This is left to subclasses."1596

Also, notice that it tells you the result: it returns an integer, which is interesting: when we cast a Float in, it will return an Integer, too--that is the reason it's defined here in the RDoc.1601

divmod returns an Array; it has a nice chart of how it does it, too, with the divmod, the modulo, and the remainder.1613

It has the eql? method--"returns true if num and numeric are the same type and have equal values"1630

It looks at the type and the value: don't let that throw you off--if you look at two different types, it's going to throw false at you.1639

There are floor; complex values; imaginary; integer...1649

Magnitude also does the absolute value; polar returns an Array.1659

Real "returns true if num is a Real" number--non-complex.1666

Remainder..."singleton_method_added" traps "attempts to add methods to Numeric objects"--you could add your own method to the Numeric class.1672

Step: we already talked about it: they have a very specific definition to how it works.1682

You can look at it there, if you want to dig into it.1687

They have methods to convert to a complex value, integer...and we already talked about truncate and zero?.1693

That is the Numeric RDoc.1702

That concludes our first part of our Math Operations.1706

We have had quite a bit of Numeric methods that we have gone over, and we will go over some more in the next lesson.1712

Thank you for watching Educator.com, and see you next time!1721

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.