星期一, 9月 30, 2013

2013IT鐵人賽-15-ruby04-練習Learn Ruby The Hard Way網站範例Part 2

2013IT鐵人賽-15-ruby04-練習Learn Ruby The Hard Way網站範例Part 2




這次我們的讀書會選用的是Oreilly 的Ruby程式設計這本書, 然後建議的練習是採用”笨方法學 Ruby” http://lrthw.github.io/ 上面的範例.


今天就來繼續練習網站上面的範例吧 :-)
本次練習還是使用 EasyCloud 的 VM 來練習, 並連接終端機來操作.


首先先切換到工作目錄吧(我的 git 工作目錄在 /root 目錄下面, 請依造自己的設定來調整)
# cd  /root


接下來練習 習題 4: 變數(variable)和命名


建立一個檔案 ex4.rb 於我們建立好的Lab-LRTHW目錄下, 內容如下



# cat   ruby/Lab-LRTHW/ex4.rb
cars = 100 #在 11行被引用
space_in_a_car = 4.0 #於第7行運算被引用
drivers = 30 #在12行被引用
passengers =90 #在15行被引用, 於第8行運算被引用
cars_not_driven = cars - drivers #在13行被引用 => 70 (100 - 30)
cars_driven = drivers #於第7行運算被引用, 於第8行運算被引用 => 30
carpool_capacity = cars_driven * space_in_a_car #在14行被引用 => 120 (30 * 4.0)
average_passengers_per_car = passengers / cars_driven #於16行被引用 => 3 (90 / 30)


# 使用 #{cars} 將 cars 變數帶進來
puts "There are #{cars} cars available."
puts "There are only #{drivers} drivers available."
puts "There will be #{cars_not_driven} empty cars today."
puts "We can transport #{carpool_capacity} people today."
puts "We have #{passengers} passengers to carpool today."
puts "We need to put about #{average_passengers_per_car} in each car."



並使用 ruby 指令執行該程式
# ruby   ruby/Lab-LRTHW/ex4.rb
There are 100 cars available.
There are only 30 drivers available.
There will be 70 empty cars today.
We can transport 120.0 people today.
We have 90 passengers to carpool today.
We need to put about 3 in each car.



接下來練習 習題 5: 更多的變數和印出


建立一個檔案 ex5.rb 於我們建立好的Lab-LRTHW目錄下, 內容如下


# cat   ruby/Lab-LRTHW/ex5.rb
my_name = 'Zed A. Shaw'
my_age = 35  # not a lie
my_height = 74  # inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'
# 使用 % 的方式帶入變數
puts "Let's talk about %s." % my_name
puts "He's %d inches tall." % my_height
puts "He's %d pounds heavy." % my_weight
puts "Actually that's not too heavy."
puts "He's got %s eyes and %s hair." % [my_eyes, my_hair]
puts "His teech are usually %s depending on the coffee." % my_teeth


# this line is tricky, try to get it exactly right
puts "If I add %d, %d, and %d I get %d." % [my_age, my_height, my_weight, my_age + my_height + my_weight]



並使用 ruby 指令執行該程式
# ruby ruby/Lab-LRTHW/ex5.rb
Let's talk about Zed A. Shaw.
He's 74 inches tall.
He's 180 pounds heavy.
Actually that's not too heavy.
He's got Blue eyes and Brown hair.
His teech are usually White depending on the coffee.
If I add 35, 74, and 180 I get 289.



接下來練習 習題 6: 字串(string)和文字


建立一個檔案 ex6.rb 於我們建立好的Lab-LRTHW目錄下, 內容如下


# cat   ruby/Lab-LRTHW/ex6.rb
x = "There are #{10} types of people."
binary = "binary"
do_not = "don't"
y = "Those who know #{binary} and those who #{do_not}"


#列印出 x => There are 10 types of people.
puts x
#列印出 y => Those who know binary and those who don't
puts y


#
puts "I said #{x}."
#雙引號裏面是可以執行變數呼叫的,裏面那兩個單引號會被視為符號
puts "I also said: '#{y}'."


hilarious = false
joke_evaluation = "Isn't that joke so funny?! #{hilarious}"


puts joke_evaluation


w = "This is the left side of ..."
e = "a string with a right side."
# 使用 + 符號串接文字
puts w + e


並使用 ruby 指令執行該程式
# ruby   ruby/Lab-LRTHW/ex6.rb
There are 10 types of people.
Those who know binary and those who don't
I said There are 10 types of people..
I also said: 'Those who know binary and those who don't'.
Isn't that joke so funny?! false
This is the left side of ...a string with a right side.


最後加入到 git  並傳送到 GitHub


# git  add  ruby/*
# git  commit  -m  "Lab and exercise Learn Ruby The Hard Way ex4.rb to ex6.rb"
[master 16f1565] Lab and exercise Learn Ruby The Hard Way ex4.rb to ex6.rb
3 files changed, 57 insertions(+)
create mode 100644 ruby/Lab-LRTHW/ex4.rb
create mode 100644 ruby/Lab-LRTHW/ex5.rb
create mode 100644 ruby/Lab-LRTHW/ex6.rb


# git   push   origin   master
Username for 'https://github.com': 您的帳號
Password for 'https://sakanamax@github.com': 您的密碼
Counting objects: 10, done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 1.69 KiB, done.
Total 7 (delta 1), reused 0 (delta 0)
To https://github.com/sakanamax/2013ironman.git
  f8c8ad6..16f1565  master -> master





Fun with Day 15 ~

星期日, 9月 29, 2013

2013IT鐵人賽-14-Java04-Java命名規則與變數

2013IT鐵人賽-14-Java04-Java命名規則與變數



在前一篇的文章 ”2013IT鐵人賽-11-Java03-Java檔案的基本結構” 有提到
java 的類別名稱
  • 英文, 數字, 以及底線( _ ) 來構成
  • 開頭一定要是英文字開頭, 不可以是數字或是底線開頭.  (不然本來編碼上面想要直接用數字來開頭編碼)
  • 如果是類別名稱, 建議首字英文字要大寫


所以Java 的第四篇我們就來聊聊Java 的命名規則與變數吧.


識別字命名規則
  • 常數
    • 全部使用大寫,如果有兩個單字, 可以加上底線
    • 例如: MAX_LEN
  • 變數
    • 全部使用小寫, 如果有兩個單字以上, 第2個單字開頭大寫
    • 例如: rectWidth
  • 方法
    • 全部使用小寫, 如果有兩個單字以上, 第2個單字開頭大寫
    • 例如: calArea
  • 類別
    • 第1個字母大寫, 後面由一個以上的單字組成
    • 例如: Cperson, CStack
      • 可以用C代表Class  


命名規則最好就跟著大家的方式來進行, 以免之後不好理解.


接下來談談變數吧 :-)
變數
  • Java的資料處理基本單位稱為變數
    • 變數代表程式在執行過程中可能會被改變的某個數值
    • 變數宣告
      • 使用變數前必須先宣告, 一般會將區域變數放在方法(method)的開始處
      • 變數宣告範例
        • //語法:
        • //資料型態  變數名稱
        • //方式1 先定義型態
        • int x;
        • //接下來定義初始值
        • x = 100
        • //方式2 宣告同時初始化變數
        • int y = 200;
    • 在類別(class)內的變數視為該類別的欄位(fields)
    • 在方法(method)內宣告的變數則為該方法的區域變數(Local Variables)
  • 參數 (Parameters)
    • 用於method呼叫時接受傳遞資料
  • 區域變數 (Local Variables)
    • 儘限於某個method之內的變數
  • 實體變數 (Instance Variables)
    • 隸屬於某個物件的變數, 必須透過物件才能存取
  • 類別變數 (Class Variables)
    • 隸屬於某個類別的變數, 該類別的物件都共用此變數
    • 必須使用 static 關鍵字宣告
      • 如果沒有加上static修飾字, 則該變數存在於該類別的每一個物件中, 且彼此獨立, 稱為實體變數 (Instance Variables)
      • 若使用static宣告, 則每一個物件都共用該變數, 稱為類別變數(Class Variables)  


在使用變數的時候, 我們必須要宣告變數的型態, 所以在實作之前, 我們也來把型態整理一下.


資料的型態
又稱為純量,以便與物件區別
  • 原始資料型態 / 基本型態 primitive type
    • 整數型
      • byte
        • 1位元組的整數
      • short
        • 2位元組的整數
      • int
        • 3位元組的整數
          • int 是預設的整數型別
      • long
        • 4位元組的整數
          • 使用long的時候會在後面加上大寫或是小寫的L
    • 布林型
      • boolean
        • 真或是假
    • 實數型
      • float
        • 4位元組單精數浮點數
          • Java 碰到 float 要特別小心. 一定要在數字的右方加上大寫的F.
          • (有可能喪失數值的精確度, 沒有加上F 預設浮點的大小會給 64 bits, 但是前面宣告 float 就會被截斷,放到 32 bits 內)
      • double
        • 8位元組單精數浮點數
          • double 是預設的實數型別
    • 字元型
      • char
        • 2 位元組的文字資料
        • 需使用 ' ' 來包裝
          • 例如
          • char c = 'Test'
        • 可使用數值的方式指定字元的Unicode,除了10進位以外, 還可以使用2進位, 8進位, 16進位. 2進位表達整數是JDK7才支援的功能.     
    • 預設值
      • 如果宣告變數時沒有給定變數的預設值,
      • 那java會將預設值設定為0 或是false
  • 非基本型態 / 參考型態 Reference type
    • 非以上的基本型態就列為Reference type
      • 例如是物件參考  


好吧, 說了這麼多, 接下來開始練習一下吧.


一樣連接到 EasyCloud 的VM並取得終端機.(使用 VNC 或是 SSH 皆可)
由於我練習的時候 git 目錄是放在 /root 目錄, 所以才在這邊操作.


切換到 java 練習目錄
# cd   /root/java


建立一個 java 原始檔如下
#vi  Basic_003_variablesAnnounce.java


class Basic_003_variablesAnnounce {


public static void main(String arg[]){
//宣告integer整數i, 並給予初值
int i;
i =100;
//宣告boolean布林b, 並給予初值
boolean b;
b = false;
//宣告float單精準度浮點數f, 並給予初值
double d;
d = 1.23;
//宣告char字元 c, 並給予初值
char c;
c = 'c';
//列出變數的值
System.out.println("integer i="+i);
System.out.println("boolean b="+b);
System.out.println("double d="+d);
System.out.println("char c="+c);
System.out.println("=====我是分隔線=====");
//觀察最大值,最小值, 長度
//這個部份可以練習查詢API
//可以到http://docs.oracle.com/javase/7/docs/api/ 進行查詢
//以這邊的範例來說可以點選左上角 package 區內的 java.lang
//然後點選畫面左邊 Class 內的 Integer 類別
//就可以在Field Summary 內看到有 MAX_VALUE 可以使用
System.out.println("Integer Max="+Integer.MAX_VALUE);
System.out.println("Integer Min="+Integer.MIN_VALUE);
System.out.println("Integer bits="+Integer.SIZE);
System.out.println("=====我是分隔線=====");
//Boolean 並沒有 MAX_VALUE
System.out.println("Boolean Type="+Boolean.TYPE);
System.out.println("=====我是分隔線=====");
//Double 的相關資訊
System.out.println("Double Max="+Double.MAX_VALUE);
System.out.println("Double Min="+Double.MIN_VALUE);
System.out.println("Double bits="+Double.SIZE);
System.out.println("=====我是分隔線=====");
//Char 的相關資訊
System.out.println("Char bits="+Character.SIZE);
}


}



編譯 Basic_003_variablesAnnounce.java 原始檔案
# javac   Basic_003_variablesAnnounce.java


執行程式
# java   Basic_003_variablesAnnounce
integer i=100
boolean b=false
double d=1.23
char c=c
=====我是分隔線=====
Integer Max=2147483647
Integer Min=-2147483648
Integer bits=32
=====我是分隔線=====
Boolean Type=boolean
=====我是分隔線=====
Double Max=1.7976931348623157E308
Double Min=4.9E-324
Double bits=64
=====我是分隔線=====
Char bits=16



準備將相關檔案傳送到 GitHub 上面
# cd   /root/
# git  add   java/*
# git  commit  -m  "Add java Basic exercise file variablesAnnouce to git"
[master f8c8ad6] Add java Basic exercise file variablesAnnouce to git
2 files changed, 44 insertions(+)
create mode 100644 java/Basic_003_variablesAnnounce.class
create mode 100644 java/Basic_003_variablesAnnounce.java


# git  push  origin  master
Username for 'https://github.com': 您的帳號
Password for 'https://sakanamax@github.com': 您的密碼
Counting objects: 7, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 1.95 KiB, done.
Total 5 (delta 1), reused 0 (delta 0)
To https://github.com/sakanamax/2013ironman.git
  e510744..f8c8ad6  master -> master




結束今天變數宣告的任務, 但是今天最大的收穫有可能是讓我們這樣的入門者有機會練習查詢java 的API 喔  :-)

Fun with Day 14 ~