代写代考 CSE 2231 Examples: C, C++, Objective-C, Ada…

1/3 / 1/2
-1/3 / 1/2
1/3r / 1/2r
(1/3r) / (1/2r)

Copyright By PowCoder代写 加微信 powcoder

Computer Science and Engineering  The Ohio State University

Introduction, Basics, Dynamic Types
Computer Science and Engineering  College of Engineering  The Ohio State University

Ruby vs Java: Similarities
Computer Science and Engineering  The Ohio State University
Imperative and object-oriented
Classes and instances (ie objects) Inheritance
Strongly typed
Classes determine valid operations
Some familiar operators
Arithmetic, bitwise, comparison, logical
Some familiar keywords
if, then, else, while, for, class, new…

But Ruby Looks Different
Computer Science and Engineering  The Ohio State University
Punctuation
Omits ;’s and often ()’s on function calls Includes function names ending in ? and !
New keywords and operators
def, do..end, yield, unless
** (exp), =~ (match), <=> (spaceship)
Rich core libraries
Collections: Hashes, Arrays Strings and regular expressions Enumerators for iteration

Deeper Differences As Well
Computer Science and Engineering  The Ohio State University
Interpreted (typically)
Run a program directly, without compiling
Dynamically typed
Objects have types, variables don’t
Everything is an object C.f. primitives in Java
Code can be passed in to a function as
a parameter
Added to Java in version 8 (“lambdas”)

Compiling Programs
Computer Science and Engineering  The Ohio State University
Program = Text file
Contains easy-to-understand statements like “print”, “if”, “while”, etc.
But a computer can only execute
machine instructions
Instruction set architecture of the CPU
Recall “Bugs World” from CSE 2231 Examples: C, C++, Objective-C, Ada…
A compiler translates the program
(source code) into an executable
(machine code)

Interpreting Programs
Computer Science and Engineering  The Ohio State University
An interpreter reads a program and executes it directly
Advantages
Platform independence Read-eval-print loop (aka REPL) Reflection
Disadvantages
Later error detection (i.e., at run time)
Examples: JavaScript, Python, Ruby

Combination of Both
Computer Science and Engineering  The Ohio State University
A language is not inherently compiled or interpreted
A property of its implementation Sometimes a combination is used:
Compile source code into an intermediate representation (byte code)
Interpret the byte code
Examples of combination: Java, C#

Ruby is (Usually) Interpreted
Computer Science and Engineering  The Ohio State University
REPL with Ruby interpreter, irb
>> puts “hello world”
hello world
>> def square(x) x**2 end
=> :square
>> square -4

Delimiters ” ” and ‘ ‘
Interpolation of #{…} occurs (only) inside ” ” “Sum 6+3 is #{6+3}” is “Sum 6+3 is 9”
Custom delimiter with %Q(…) or %q(…) Ranges
0..4 includes start and end value (0,1,2,3,4)
“cab”…”cat” does not include end value Arrays and hashes (later)
Computer Science and Engineering  The Ohio State University
Numbers (Integer, Float, Rational, Complex)
83, 0123, 0x53, 0b1010011, 0b101_0011
123.45, 1.2345e2, 12345E-2
2/3r, 4+3i

Comments and Statements
Computer Science and Engineering  The Ohio State University
Single-line comments start with # Don’t confuse it with string interpolation!
Multi-line comments bracketed by
=begin =end
Must appear at beginning of line
All statements have a value result
Convention: => to indicate result “Hi #{name}” + “!” #=> “Hi Liam!”

Arithmetic: + – * / % **
/ is either ÷ or div, depending on operands Integer / (div) rounds towards -∞, not 0
% is modulus, not remainder
1 / 3.0 #=> 0.3333333333333333
1 / 3 -1 / 3 -1 % 3 
#=> 0 (same as Java)
#=> -1 (not 0 as in Java)
#=> 2 (not -1 as in Java)
Bitwise: ~ | & ^ << >>
5|2 #=>7(ie0b101|0b10)
13 ^ 6 #=> 11 (ie 0b1101 ^ 0b0110) 5 << 2 #=> 20 (ie 0b101 << 2) Computer Science and Engineering  The Ohio State University 1/3 / 1/2 -1/3 / 1/2 1/3r / 1/2r (1/3r) / (1/2r) Computer Science and Engineering  The Ohio State University 1/3 / 1/2 #=> 0 -1/3 / 1/2 #=> -1
Computer Science and Engineering  The Ohio State University
1/3r / 1/2r #=> 1/6r (1/3r) / (1/2r) #=> 2/3r

Operators (Continued)
Computer Science and Engineering  The Ohio State University
Comparison: < > <= >= <=>
Last is so-called “spaceship operator” Returns -1/0/1 iff LHS is smaller/equal/larger than RHS
“cab” <=> “da” #=> -1 “cab” <=> “ba” #=> 1
Logical: && || ! and or not
Words have low precedence (below =)
“do_this or die” idiom needs low-binding
x = crazy or raise “problem”

Pseudo Variables
self, the receiver of the current method (recall this)
nil, nothingness (recall null)
__FILE__, the current source file name __LINE__, the current line number
true, false
nil also evaluates to false
0 is not false, it is true just like 1 or -4!
Computer Science and Engineering  The Ohio State University

Significance in Names
Computer Science and Engineering  The Ohio State University
A variable’s name affects semantics!
Variable name determines its scope
Local: start with lowercase letter (or _)
Global: start with $
$; is the default field separator (space) Instance: start with @
Class: start with @@
Variable name determines mutability
Constant: start with uppercase (Size)
but idiom is all upper case (SIZE)
Many pre-defined global variables exist, e.g.: $/ is the input record separator (newline)

Basic Statements: Conditionals
Computer Science and Engineering  The Ohio State University
Classic structure
if (boolean_condition) [then] …
But usually omit ( )’s and “then” keyword
puts “small”
“if” keyword is also a statement modifier x = x + 1 if x < LIMIT Good for single-line body Good when statement execution is common case Good for positive conditions Variations on Conditionals Computer Science and Engineering  The Ohio State University Unless: equivalent to "if not..." unless size >= 100
puts “small”
Do not use “else” with “unless” Do not use negative condition (“unless !…”)
Can also be a statement modifier
x = x + 1 unless x >= LIMIT
Good for: single-line body, positive condition
Used for: Guard clause at start of method
raise “unpaid” unless invoice.pending?

Pitfalls with Conditionals
Computer Science and Engineering  The Ohio State University
Keyword “elsif” instead of “else if”
puts “small”
elsif x < 20 puts "medium" puts "large" If's do not create nested lexical scope if x < 10 puts y #y is defined, but could be nil puts z #NameError: undefined local var z Case Statements are General Computer Science and Engineering  The Ohio State University [variable = ] case expression when nil statements execute if the expr was nil when value # e.g. 0, 'start' statements execute if expr equals value when type # e.g. String statements execute if expr resulted in Type when /regexp/ # e.g. /[aeiou]/ statements execute if expr matches regexp when min..max statements execute if the expr is in range statements Basic Iteration: While and Until Classic structure while boolean_condition [do] ... Can also be used as a statement modifier work while awake Until: equivalent to "while not..." until i > count
Can also be a used as a statement modifier Pitfall: Modified block executes at least once
sleep while dark # may not sleep at all begin i = i + 1 end while i < MAX #always increments i at least once Computer Science and Engineering  The Ohio State University Computer Science and Engineering  The Ohio State University Definition: keyword def def foo(x, y) return x + y Notice: no types in signature No types for parameters No type for return value All functions return something Value of last statement implicitly returned Convention: Omit explicit return statement def foo(x, y) x + y # last statement executed Function Calls Dot notation for method call Computer Science and Engineering  The Ohio State University Math::PI.rationalize() # recvr Math::PI Convention: Omit ( )’s in definition of functions with no parameters def launch() ... end # bad def launch ... end # good Paren's can be omitted in calls too! Math::PI.rationalize puts "hello world" Convention: Omit for "keyword-like" calls attr_reader :name, :age Note: needed when chaining foo(13).equal? value Sample Code Snippet Computer Science and Engineering  The Ohio State University class UsersController < ApplicationController before_action :logged_in_user, only: [:edit, :update] def update if @user.update_attributes(user_params) flash[:success] = "Profile updated" redirect_to @user render 'edit' def user_params params.require(:user).permit(:name, :email, :password) Computer Science and Engineering  The Ohio State University Ruby is a general-purpose, imperative, object-oriented language Ruby is (usually) interpreted Familiar flow-of-control and syntax Some new constructs (e.g., unless, until) Terse (e.g., optional parentheses, optional semicolons, statement modifiers) 程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com