您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 物件导向虚拟程式设计
1物件導向虛擬程式設計鄭士康國立台灣大學電機工程學系/電信工程研究所/資訊網路與多媒體研究所計算機程式設計與作文•以程式語言指示計算機工作•說明文敘述事物內容•同樣以簡潔明確為目標23作文技巧與程式設計•構思立意(解法構想)•布局謀篇(模組規畫)•度句裁章(流程設計)•用字遣詞(變數運算)兒童作文缺失(1/2)•低年級小朋友...尚無法完整表達意念、掌握形式結構,內容常跳躍,不能聯貫主題。•低年級階段的寫作以「我手寫我口」為主要訓練方式...•剛升上中年級的小朋友,在遣詞造句上易流於口語化,甚至常重複出現相同的語詞、句型...*蘇國書、林瑋,國語日報兒童園地版兒童寫作觀察報告(九十七年一月到六月)三之二,國語日報,中華民國97年9月18日兒童作文缺失(2/2)•大部份的小朋友都是想到什麼就寫什麼,往往把主要內容全寫進某一個段落。這樣一來,不僅段落雜亂,整篇文章也缺乏分段的概念。•高年級學生...需要加強的,則是大多慣用條列式思考,缺少在每一條列下衍生細膩描述的能力*蘇國書、林瑋,國語日報兒童園地版兒童寫作觀察報告(九十七年一月到六月)三之二,國語日報,中華民國97年9月18日6虛擬程式設計•程式設計–二進位碼–組合語言–程式語言•就解決問題而言,高階程式語言仍是過細•必須先想好問題解法,才能轉成程式•問題解法先區分模組,寫成演算法,才容易寫成程式•模組區分與演算法構思:虛擬程式設計7範例:二十一點:Blackjack_game_example.JPG&variant=zh-tw維基百科8流程1.下注2.向各家派發一張明牌3.向各家派發一張暗牌4.莊家明牌是10或A,詢問閒家是否購買保險5.莊家打開暗牌6.閒家加註、分牌等動作7.莊家逐位詢問閒家是否加牌,直至閒家不加牌或報到,才詢問下一位閒家,輪流詢問閒家直至最後一位閒家加牌完成8.莊家如不足17點便需加牌直至超過或等於17點9.對未有爆煲或報到的玩家,比點數大小,大者勝,可得賠金;如莊家爆煲,未有爆煲或報到的閒家便可得賠金10.回收已使用的牌及打賞注:回收已使用的牌必須順序回收。如分開大牌和小牌個別回收等不正常收牌行為,便有出千的可能,並且可能會被請提出異議而被迫離開。•A作一點或十一點,2-10作該牌之點數,J、Q、K作十點。•首先由一位玩家作莊家負責發牌,其餘玩家為閒家。閒家會向莊家投下一定注碼,莊家會以順時鐘方向向眾閒家派發一張暗牌(即不掀開的牌),然後向自己派發一張暗,接著莊家會以順時鐘方向向眾閒家派發一張明牌(即掀開的牌),之後又向自己派發一張明牌。•當眾人手上各擁一張暗牌和一張明牌,莊家就以順時鐘方向逐位閒家詢問是否再要牌(以明牌方式派發),玩家此時要計算是否要牌,因為排牌局的最終目的,是要玩家手上擁有的牌總點數達到21點(或最接近又小於21點),然後和莊家比大小。當一位閒家決定不再要牌後,莊家才向下一位閒家詢問是否再要牌。(按:在一般賭場的賭局,莊家並不一定是發牌者。)(超過21點)•若果閒家要牌後,其手上擁有的牌的總點數超過21點,便要揭開手上所擁有的牌,俗稱爆煲,該閒家的注碼會歸莊家。•反之若其手上擁有的牌的總點數不超過21點,該閒家可決定是否繼續要牌。•當最後一位閒家決定不再要牌後,莊家就必須揭開自己所有手上的牌,若總點數少於17點,就必須繼續要牌;如果莊家爆煲的話,便向原來沒有爆煲的閒家,賠出該閒家所投住的同等的注碼。•如果莊家最終沒有爆煲的話,原來沒有爆煲的眾閒家便要揭開手上所有的牌,比較點數決定誰勝誰負,點數較大的取勝。(例牌例外,詳見下文閒家例牌先報到和特別規例)•若某閒家例牌,必須向立即莊家揭開手上所有的牌(即俗稱報到),莊家亦必須向該擁有例牌的閒家賠上一定注碼。、加註、分牌•當莊家面牌是10或A,閒家可以外加註碼的一半買保險,以賭莊家的二張牌總和是不是21點,如莊家不是21點便沒收保險金,如是21點便以注碼的一倍半賠償。•如閒家首兩張牌點數之和為11點,可以選擇加倍投注,但加註後僅獲發1張牌。有些賭局容許閒家在首兩張牌總和為10點(甚至任何點數)時加註。•如閒家首兩張牌點數相同,可以選擇分牌,並須加註。分出每門的下注金額須與原注相同。若閒家打兩張A分開,則每張A只獲發1張牌,不可再要牌。有些分牌後後不可再分牌。、同花順、五龍•如果閒家手中的一張暗牌和一張明牌分別是一張A牌(可作11點)和一張十點牌(K、Q、J、10),這副牌叫做二十一點(BlackJack)(屬例牌),該閒家可向莊家報到,莊家須向該閒家賠上1倍注碼。•有些賭場會加設這一賠彩規例,即玩家的牌面是同花的「6、7、8」便可即收3倍的彩金。•如果閒家要牌直至手上有5張牌而又沒有爆煲,這副牌叫做五龍(屬例牌),該閒家可向莊家報到,莊家須向該閒家賠上2倍注碼。•若莊家和眾閒家要以點數決勝(各方都沒有出現爆煲的情況),若該閒家和莊家手上所擁有的牌的總點數一樣的話,算莊家取勝,即俗稱莊家食夾棍,該閒家的注碼會歸莊家。•賭場規則,廿一點是沒有食夾棍這規例,如閒家和莊家手上牌總點數一樣的話,是「打和」,閒家可以拿回原先的注碼。•注意:莊家是五龍而閒家的點數比莊家大的話,仍算莊家取勝,不過莊家食夾棍的權利不適用於閒家例牌(BlackJack和五龍)的情況,因為閒家BlackJack和五龍屬於例牌先賠。•物有本末,事有始终,知所先後,則近道矣。–《大學》開宗明義•學而不思則罔,思而不學則殆–《荀子》勸學篇151680-20定律、要事第一、工程方法•80-20定律•要事第一(Firstthingsfirst)•工程方法(Engineeringapproach)–辨識問題核心(Core)–訂定優先順序(Priority)–快速原型製作(Fastprototyping)–逐步演化(Evolution)•定時定量研究法17釐清問題•核心關鍵•Nicetohave•優先順序•問題簡化•從實例簡化開始嘗試–做中學18工程方法v0.1v0.1v0.2v0.3v0.2v0.1v0.2工程方法•配合實作逐漸熟悉問題,而非開始即要求全面了解•避免過度分析(analysisparalysis),及早獲得可用程式•隨版本演進,有系統地完成程式•隨時有產出,增進信心•越重要的部份較早完成,經歷越多測試,較確實可靠穩定;避免後期發現錯誤,須全面改寫程式•越重要的部份越早完成,可依照環境時程的改變,修改後續版本需求,富有彈性20程式目的•使玩家可以與電腦玩二十一點遊戲21二十一點遊戲模擬v0.1流程1.產生牌疊2.電腦(莊家)向玩家(一人)及本身派發一張明牌3.電腦向玩家及本身派發一張明牌4.莊家詢問玩家是否加牌,直至玩家不加牌或報到5.莊家如不足17點便需加牌直至超過或等於17點6.對未有爆煲或報到的玩家,比點數大小,大者勝,如莊家爆煲,玩家勝22後續版本規劃•v0.2:區分明牌暗牌•v0.3:允許下注•v0.4:處理莊家食夾棍•v0.5:處理同花順與五龍•v0.6:處理保險、加註、分牌•v0.7:使用多付牌測試規劃•規劃程式須能處理的場景實例•增進對問題的確實了解•有助對程式架構與流程的思考•做為各版本程式紙筆測試、偵錯、驗證的依據•場景實例規畫由簡到繁•輸入錯誤資料等例外狀況可延後規劃•程式的功能與強健(robustness)程度,隨版本演進與通過的測試場景增加而成長24二十一點遊戲模擬原型之測試規劃:場景1玩家莊家♠A♥J♦10勝25二十一點遊戲模擬原型之測試規劃:場景2玩家莊家♣3♥J♠10♦A勝26二十一點遊戲模擬原型之測試規劃:場景3玩家莊家♠8♥J♦7♠2♣6勝27二十一點遊戲模擬原型之測試規劃:場景4玩家莊家♠8♥5♦8♠9♣6爆28二十一點遊戲模擬原型之測試規劃:場景5玩家莊家♠8♥5♦8停♠9♣6勝29二十一點遊戲模擬原型之測試規劃:場景6玩家莊家♠8♥5♦8停♠9♣8爆30物件與類別•物件(Object)–狀態與功能:例如,某台特定電視機•類別(Class)–藍圖:例如,泛稱電視機–狀態:變數(Variables)[資料成員,Datamember,Field,Attribute]–功能:函式(Function)[方法成員,Memberfunction,Method,Operation,Responsibilities]31物件導向思維•什麼是程式要完成的功能?•需要那些物件/類別才能完成程式功能?•物件/類別需要那些行為才能合作完成程式功能?•例:MissionImpossible,RPG32參考書籍•N.M.Wilkinson,UsingCRCCards:AnInformalApproachtoObject-OrientedDevelopment,NewYork:SIGSBooks,1995.33練習•實際演練二十一點遊戲模擬原型的CRC卡會議34CRC卡會議•定義問題•產生類別•演練場景•整理卡片35產生類別•腦力激盪•過濾類別•分配卡片•初步建立繼承關係•描述類別•初步寫出方法成員(Responsibilities)•初步寫出資料成員(Attributes)36物件/類別之識別•流程敘述中的名詞、代名詞、名詞片語可能需要轉換為物件/類別(CRC卡)•流程敘述中的動詞、動詞片語可能需要轉換為物件/類別的方法(CRC卡)•需要相同方法的物件可以歸納出一個類別(CRC卡)•類別之間的關係可以畫UML類別圖表示•主程式及類別的方法可以用虛擬碼進一步描述37必也正名乎•物件、類別、狀態、功能之名稱力求精準•使用一致命名規範–物件、類別、狀態:名詞片語–功能:動詞片語–條件判斷:形
本文标题:物件导向虚拟程式设计
链接地址:https://www.777doc.com/doc-29072 .html