版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 手術(shù)室的護患溝通
- 改善睡眠課程設(shè)計
- 學(xué)校教師網(wǎng)絡(luò)安全培訓(xùn)
- 提升學(xué)生就業(yè)素養(yǎng)的策略
- 【7歷期末】安徽省宣城市2023-2024學(xué)年七年級上學(xué)期期末考試歷史試題
- 鋁行業(yè)趨勢分析與市場前景預(yù)測報告
- 【9道期末】安徽省淮北市2023-2024學(xué)年九年級上學(xué)期期末道德與法治試題(含解析)
- xx市區(qū)域性養(yǎng)老服務(wù)中心項目可行性研究報告
- 如何規(guī)劃菜譜課程設(shè)計
- 物業(yè)安全管理與風險控制
- 肱骨近端骨折護理查房課件整理-002
- 進入答辯環(huán)節(jié)的高職應(yīng)用技術(shù)推廣中心申報書(最終版)
- 高等數(shù)學(xué)(理工)Ι知到章節(jié)答案智慧樹2023年重慶科技學(xué)院
- 2023學(xué)年完整公開課版瑤族
- 高考模擬作文“同舟共濟渡難關(guān)團結(jié)合作創(chuàng)未來”導(dǎo)寫及范文
- 翻譯技術(shù)實踐知到章節(jié)答案智慧樹2023年山東師范大學(xué)
- 尾礦庫基本知識
- 三年級體質(zhì)健康數(shù)據(jù)
- 礦山企業(yè)新員工入職公司三級安全教育培訓(xùn)必備教材(全套)
- 感染性休克指南
- GB/T 32891.2-2019旋轉(zhuǎn)電機效率分級(IE代碼)第2部分:變速交流電動機
評論
0/150
提交評論