Ruby語言程序設(shè)計-第2章-基本語法_第1頁
Ruby語言程序設(shè)計-第2章-基本語法_第2頁
Ruby語言程序設(shè)計-第2章-基本語法_第3頁
Ruby語言程序設(shè)計-第2章-基本語法_第4頁
Ruby語言程序設(shè)計-第2章-基本語法_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Ruby語言程序設(shè)計

第二章:基本語法沃天宇<woty@>2014-9-24課程基本教學(xué)大綱第一部分:Ruby語言基礎(chǔ)第一章:Ruby語言概述(2學(xué)時)程序設(shè)計語言分類回顧、面向?qū)ο蟪绦蛟O(shè)計語言、腳本式程序設(shè)計語言Ruby語言出現(xiàn)歷史,基本特征概述,程序設(shè)計實例,應(yīng)用情況舉例,基本開發(fā)環(huán)境配置第二章:Ruby語言基本語法與面向?qū)ο筇卣鳎?學(xué)時)基本控制結(jié)構(gòu)、基本語句、字符串和數(shù)字等基本數(shù)據(jù)類型、表達式類、模塊和命名空間;多態(tài)與重載;變量及方法的作用域第三章:高級特征(2學(xué)時)集合類數(shù)據(jù)結(jié)構(gòu),數(shù)組和哈希表,基本類庫應(yīng)用函數(shù)式語言特征,程序塊;反射機制和元編程(metaprogramming)第二部分:基于RubyonRails的Web2.0應(yīng)用開發(fā)第四章:Web概述與RubyonRails開發(fā)基礎(chǔ)(2學(xué)時)RoR基本原理,RoR工程結(jié)構(gòu),數(shù)據(jù)庫O-RMapping基本概念和技術(shù);基于絞手架的編程第五章:RubyonRails敏捷開發(fā)實踐1——基本CRUD(2學(xué)時)重點掌握活動記錄集;數(shù)據(jù)模型、控制器、視圖;數(shù)據(jù)增刪改查操作;表單處理;數(shù)據(jù)驗證;

第六章:RubyonRails敏捷開發(fā)實踐2——對象關(guān)系(2學(xué)時)以一個典型blog網(wǎng)站RoR項目為例,介紹基于MVC的RubyonRails開發(fā)全過程;常用功能實現(xiàn)技巧(如用戶管理等);代碼管理系統(tǒng)應(yīng)用第七章:RubyonRails敏捷開發(fā)實踐3——AJAX(2學(xué)時)XML處理;AJAX;Web服務(wù);電子郵件第八章:Web安全與新興技術(shù)研究與應(yīng)用熱點(2學(xué)時)云計算編程、Web與Ruby

on

Rails安全實踐Ruby語言基本語法基本語句注釋賦值基本控制結(jié)構(gòu)條件判斷選擇循環(huán)基本數(shù)據(jù)結(jié)構(gòu)表達式常量/變量字符串集合類數(shù)據(jù)結(jié)構(gòu)數(shù)組和哈希表正則表達式Ruby

Essentials/index.php/Ruby_Essentials注釋單行注釋多行注釋#Output"IloveRuby"say="IloveRuby" #Output"IloveRuby"putssay=beginThisisacommentlineitexplainsthatthenextlineofcodedisplaysawelcomemessage=end賦值#Output"IloveRuby"say="IloveRuby"putssay

#

Everystatementhasareturnvaluex=y=1#

Everything

is

an

Objecta=b #ERROR:bisnotdefineda=nila.nil? #=>truenil.nil? #=>true賦值并行賦值irb(main):100:0>a,b,c=10,20,30=>[10,20,30]irb(main):101:0>條件判斷x=5if

x>5thenputs“x>5”elseputs“x<=5”endx=5if

x>5thenputs“x>5”elsifx>0puts“0<x<=5”elseputs“x<=0”end條件判斷什么是false?x=falseif

xthenputs“a”elseputs“b”endx=""if

xthenputs“a”elseputs“b”endx=0if

xthenputs“a”elseputs“b”endx=nilif

xthenputs“a”elseputs“b”endbaab條件判斷my_status="happy"puts"helloworld"ifmy_status=="happy"條件判斷后置my_status="happy"puts“helloworld”unlessmy_status!="happy"選擇絕對值選擇result=casevalue

whenmatch1thenresult1

whenmatch2thenresult2

whenmatch3thenresult3

whenmatch4thenresult4

whenmatch5thenresult5

whenmatch6thenresult6

elseresult7

end選擇car="Patriot"manufacturer=casecar when"Focus"then"Ford" when"Navigator"then"Lincoln" when"Camry"then"Toyota" when"Civic"then"Honda" when"Patriot"then"Jeep" when"Jetta"then"VW" when"Ceyene"then"Porsche" when"Outback"then"Subaru" when"520i"then"BMW" when"Tundra"then"Nissan" else"Unknown"endputs"The"+car+"ismadeby"+manufacturer選擇區(qū)間選擇score=70result=casescore when0..40then"Fail" when41..60then"Pass" when61..70then"PasswithMerit" when71..100then"PasswithDistinction" else"InvalidScore“endputsresult循環(huán)基本for循環(huán)foriin1..10

doputs"helloworld"endforiin1..10

doputs“helloworld”

enddo不可以省略foriin1..10puts"helloworld"enddo可以省略循環(huán)區(qū)間1..10 #1,2,3,4,5,6,7,8,9,101…10foriin1…10

doputsiend123456789foriin1…10.1

doputsiend循環(huán)while

/

untili=0whilei<5do putsi i+=1endi=0putsi+=1untili==5i=10untili<5do putsi i-=1endi=10putsi-=1whilei>5運行結(jié)果?if/unless,while/untilifnot<==>unlesswhilenot<==>until使用原則:減少not的使用循環(huán)其它循環(huán)方式10.times{puts"helloworld"}(1..10).each{puts"helloworld"}1.upto(10){puts"helloworld"}10.downto(1){puts"helloworld"}循環(huán)循環(huán)變量10.times{

|x|putsx}1.upto(10){|x|putsx}(1..10).each{|x|putsx}10.downto(1){|x|putsx}breakbreak

from

for/while

/

unitli=0whilei<5 putsi i+=1

breakifi==2endforiin1..12doputsi;breakifi>3endbreakbreak

times/upto/downto/each?10.times{

|x|putsxbreakifx>2}1.upto(10){|x|putsxbreakifx>2}(1..10).each{|x|putsxbreakifx>2}10.downto(1){|x|putsxbreakifx>2}區(qū)間1..100'a'..'z'用最少的語句,打印右圖aababcabcdabcdeabcdefabcdefgabcdefghabcdefghiabcdefghijabcdefghijkabcdefghijklabcdefghijklmabcdefghijklmnabcdefghijklmnoabcdefghijklmnopabcdefghijklmnopqabcdefghijklmnopqrabcdefghijklmnopqrsabcdefghijklmnopqrstabcdefghijklmnopqrstuabcdefghijklmnopqrstuvabcdefghijklmnopqrstuvwabcdefghijklmnopqrstuvwxabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz('a'..'z').each{|x|('a'..x).each{|x|printx};puts}puts('a'..'z').map{|x|('a'..x).to_a.join}.join("\n")表達式基本操作符OperatorDescription+Addition-Addsvaluesoneithersideoftheoperator-Subtraction-Subtractsrighthandoperandfromlefthandoperand*Multiplication-Multipliesvaluesoneithersideoftheoperator/Division-Divideslefthandoperandbyrighthandoperand%Modulus-Divideslefthandoperandbyrighthandoperandandreturnsremainder**Exponent-Performsexponential(power)calculationonoperators表達式復(fù)合賦值CombinedOperatorEquivalentx+=yx=x+yx-=yx=x-yx/=yx=x/yx*=yx=x*yx%=yx=x%yx**=yx=x**y表達式irb(main):013:0>val=17

=>17irb(main):014:0>val==17.0=>trueirb(main):015:0>val.eql?(17.0)=>falseirb(main):016:0>val.eql?(17)=>trueirb(main):017:0>val.equal?(17)=>true表達式比較操作符ComparisonOperatorDescription==Testsforequality.Returnstrueorfalse.eql?Sameas==.

(with

same

type)!=Testsforinequality.Returnstrueforinequalityorfalseforequality<Lessthan.Returnstrueiffirstoperandislessthansecondoperand.Otherwisereturnsfalse>Greaterthan.Returnstrueiffirstoperandisgreaterthansecondoperand.Otherwisereturnsfalse.>=Greaterthanorequalto.Returnstrueiffirstoperandisgreaterthanorequaltosecondoperand.Otherwisereturnsfalse.<=Lessthanorequalto.Returnstrueiffirstoperandislessthanorequaltosecondoperand.Otherwisereturnsfalse.<=>Combinedcomparisonoperator.Returns0iffirstoperandequalssecond,1iffirstoperandisgreaterthanthesecondand-1iffirstoperandislessthanthesecond.表達式按位操作符BitwiseOperatorEquivalent~BitwiseNOT(Complement)|BitwiseOR&BitwiseAND^BitwiseExclusiveOR<<BitwiseShiftLeft>>BitwiseShiftRight表達式邏輯操作符LogicOperatorDescriptionandCalledLogicalANDoperator.Ifboththeoperandsaretruethenthenconditionbecomestrue.orCalledLogicalOROperator.Ifanyofthetwooperandsarenonzerothenthenconditionbecomestrue.&&CalledLogicalANDoperator.Ifboththeoperandsarenonzerothenthenconditionbecomestrue.||CalledLogicalOROperator.Ifanyofthetwooperandsarenonzerothenthenconditionbecomestrue.!CalledLogicalNOTOperator.Usetoreversesthelogicalstateofitsoperand.IfaconditionistruethenLogicalNOToperatorwillmakefalse.notCalledLogicalNOTOperator.Usetoreversesthelogicalstateofitsoperand.IfaconditionistruethenLogicalNOToperatorwillmakefalse.操作符的優(yōu)先級邏輯操作符MethodOperatorYes[][]=Yes**Yes!~+-Yes*/%Yes+-Yes>><<Yes&Yes^|Yes<=<>>=Yes<=>=====!==~!~MethodOperator&&||.....?

:=%={/=-=+=|=&=>>=<<=*=&&=||=**=defined?notorandifunlesswhileuntilbeginend關(guān)于邏輯運算的幾個常見問題什么是falseif

0;putstrue;endiffalse;putstrue;endifnil;putstrue;endifObject.new;putstrue;end關(guān)于邏輯運算符not,

and,or!,&&,||x=trueandfalsex=true&&falsey=falseortruey=false||truez=!falsez=notfalsetrueorfalseandfalsetrue||false&&false常量/變量NameBeginsWithVariableScope$Aglobalvariable@Aninstancevariable[a-z]or_Alocalvariable[A-Z]Aconstant@@Aclassvariable討論全局變量:$開頭,程序任何位置可訪問對象實例屬性(成員變量):用@開頭,e.g.@asdf類屬性:@@開頭,e.g.@@asdf本地變量:小寫字母開頭,作用域為定義所在程序塊常量:大寫字母開頭,e.g.Abcd,ABCD字符串myString=String.new創(chuàng)建myString=String.new("Thisismystring.Getyourownstring")myString=String("Thisisalsomystring")myString="Thisisalsomystring"字符串單引號和雙引號str="Thisisabook.\nThatisapen."str='Thisisabook.\nThatisapen.'轉(zhuǎn)義myString=%&ThisismyString&表達式替換var=1/100.0asdf="asdf#{var}"數(shù)組(Array)定義數(shù)組添加元素讀取數(shù)據(jù)元素a=[]a=[1,2,3]a=%w{123} #=>["1","2","3"]a<<4.0a[10]=1a[0]a[-1]a[1..2]a[1000] #超過數(shù)組實際元素數(shù)量?nila[-1000] #

nila[1.1] #

2a=[1,2,3]a.size #=>3數(shù)組討論:a=[1,2,3]a<<aa[-1] #=>?a[-1][-1] #=>?遍歷數(shù)組each方法:依次遍歷每個元素collect方法:依次遍歷每個元素,將代碼塊的結(jié)果收集成一個新的數(shù)組collect!和collecta=[1,2,3]a.each{|x|putsx}a=[1,2,3]a.collect{|x|x**2} #=>[1,4,9]a=[1,2,3]a.collect!{|x|x**2} #=>a=[1,4,9]遍歷數(shù)組each_with_index反向邊歷:reverse_each部分、間隔遍歷:a=%w{abc}a.each_with_indexdo

|item,index| puts"#{item}isatposition#{index}"enda=[1,2,3]a[1..2] #=>[2,3]2.upto(a.size-1){|x|putsx}(1..4).step(2){|x|putsx}3.step(10,3){|x|putsx}讀取數(shù)組內(nèi)容交換變量拆分數(shù)組去除重復(fù)元素:uniq

/

uniq!/delete/compact逆轉(zhuǎn)數(shù)組:reverse/reverse!a=1b=2a,b=b,aa=[1,2,3]b,c=a #=>b=1,c=2b,*c=a #=>b=1,c=[2,3]a=[1,2,3,1,1,nil,nil]a.uniq #=>[1,2,3,nil]pact #=>[1,2,3,1,1]a.delete(1) #=>[2,3,nil,nil]a=[1,2,3]a.reverse #=>[3,2,1]數(shù)組排序sort

/

sort_by元素累計:injecta=[32,1,5,2,6,8]a.sort #=>[1,2,5,6,8,32]a.sort{|x,y|y<=>x} #=>[32,8,6,5,2,1]a=%w{AppleorangebananaBanboo}a.sort_by{|x|x.upcase} #=>大小寫無關(guān)a.sort_by{|x|rand} #=>打亂順序a=[1,2,3]a.inject(0){|sum,i|sum+i}a=[1,2,3]sum=0a.each{|x|sum+=x}a.inject(1){|sum,i|sum*i}集合運算[1,2,3]|[1,4,5] #=>[1,2,3,4,5][1,2,3]&[1,4,5] #=>[1][1,2,3]-[1,4,5] #=>[2,3][1,2,3,1]|[] #=>?[1,2,3]+[4,5,6] #=>?[1,2,3]&&[4,5,6] #=>?[1,2,3]||[4,5,6] #=>?散列(Hash)創(chuàng)建散列empty=Hash.newempty={}empty=Hash.new(0)numbers=Hash['One',1,'two',2]numbers={'one'=>1,'two'=>2}鍵(key)和值(value)numbers['two']

#=>2numbers['ten']=10numbers.keys #=>[’one’,‘two’,’ten’]numbers.values #=>[1,2,10]numbers.delete('One')符號:id:nameitem=Hash.newitem[:name]=“wty”item[:tel]=“82339274”字符串與符號的區(qū)別?:asdf'asdf'.intern"asdf".equal?"asdf""asdf".eql?"asdf":asdf.equal?:asdf:asdf.equal?"asdf":asdf.equal?"asdf".intern散列迭代each/each_paireach_key/each_valueh={1=>2,2=>3,4=>5}h.each{|k,v|printk,"=>",v,"\n"}h={1=>2,2=>3,4=>5}h.each_key{|k|putsk}h.each_value{

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論