程序設計方法專題實驗報告_第1頁
程序設計方法專題實驗報告_第2頁
程序設計方法專題實驗報告_第3頁
程序設計方法專題實驗報告_第4頁
程序設計方法專題實驗報告_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設計方法專題實驗報告 班級:電信(碩)81班 姓名:尹鑫 學號:實驗指導教師 : 徐宏喆 唐亞哲 吳茜媛 實驗地點:計算機教學中心 實驗結(jié)束日期:2009年7月23日聯(lián)系電話: 程序設計方法專題實驗一 實驗任務題目一:模擬圖形界面的計算器 要求:(1) 利用圖形函數(shù)模擬一個計算器界面;(2) 實現(xiàn) + , - , * , / , C , CE 等數(shù)學計算功能;(3) 輸入格式為yyyy/mm/dd的數(shù)據(jù),然后按-運算按鈕,再輸入一個yyyy/mm/dd的數(shù)據(jù),緊接著按=按鈕即可得到兩個日期之間相差的天數(shù)。例如2009/03/20-2009/03/19=12009/03/20-2009/03

2、/21=-1題目二:尋找基數(shù) 問題描述: 同一個數(shù)會由于采用不同的基數(shù),而使得其表現(xiàn)形式完全不一樣。我們熟悉的基數(shù)有10進制,12進制,60進制,2進制,8進制和16進制。比如數(shù)據(jù)12,如果我們用2進制表示,則它就是1100;如果用3進制表示就是110;如果用8進制表示則是14。本題目的任務就是與數(shù)的進制(也就是基數(shù))有關(guān)。 本題目會給大家很多個數(shù)對(假設每個數(shù)對的數(shù)用X和Y表示),程序需要解決的問題就是為X和Y各選擇一個最小的基數(shù),以使得這兩個數(shù)在其選擇的基數(shù)上是一對相等的數(shù)。例如,12和5這個數(shù)對,我們可以為12選擇基數(shù)3,為5選擇基數(shù)6,這樣一來12(base 3)=5(base 6),

3、因為12(base 3)就是10進制數(shù)5,而5(base 6)也是10進制數(shù)中的5。要求:輸入:程序輸入通過文件完成。文件中的每一行都包含一個數(shù)對X和Y,兩個數(shù)通過一個或多個空格符分割,與X和Y相關(guān)聯(lián)的有效基數(shù)范圍為236。X和Y的合理數(shù)值表示字符包括09和AZ(表示數(shù)值1035)。文件的最后一行用一個數(shù)字0表示輸入結(jié)束。輸入樣例文件(base.in):12 5 10 A12 34123 456 1 2 10 2 0 輸出:結(jié)果存放在一個文件中。該文件中的每一行對應為輸入文件中相應的那行數(shù)對,輸出的格式按照下面的樣例文件即可。 輸出樣例文件(base.out):12(base 3)=5(bas

4、e 6)10(base 10)=A(base 11)12(base 17)=34(base 5)123 is not equal to 456 in any base 2361 is not equal to 2 in any base 23610(base 2)=2(base 3)題目三:“貪吃蛇”游戲要求:(1) 一條蛇在一個密閉的圍墻內(nèi),食物在墻內(nèi)隨機出現(xiàn);(2) 通過鍵盤的光標鍵控制蛇的移動,可以在上、下、左、右四個方向移動;(3) 蛇頭撞到食物,則表示蛇吃掉了食物,得10分,并且蛇的身體長長1節(jié),接著食物再隨機出現(xiàn);(4) 蛇移動過程中,若撞到墻或者自己的身體,則游戲結(jié)束。二 實驗內(nèi)

5、容題目一所涉及的知識點:由于題目要求利用圖形函數(shù)制作計算機界面,因此,該題目所涉及的主要知識點為圖形函數(shù)的調(diào)用,其次是定義一系列加減乘除等運算函數(shù)并調(diào)用.在計算日期時,采用計算所給日期到公元0年0月0日之間的天數(shù)然后將所得天數(shù)相減的方法,所以在計算天數(shù)時要考慮平年閏年的情況,還要考慮每個月的天數(shù)不同.最后,所有的計算結(jié)果都存入一個字符型數(shù)組中,并在計算器的顯示框內(nèi)輸出.題目二所涉及的知識點:首先讀取文件,將讀取的數(shù)以字符串的形式存入兩個數(shù)組中,并比較兩個數(shù)的大小,找出兩個數(shù)中最大的字符,然后在從最大字符的下一個字符到Z等一系列的基下,將這兩個數(shù)分別表示為十進制的數(shù),并比較大小,最后將比較結(jié)果以

6、文件的形式輸出. 所以,所涉及的知識有文件的讀取,字符的比較,數(shù)在不同基下的轉(zhuǎn)換,結(jié)果以文件形式輸出等等.題目三所涉及的知識點:貪吃蛇在運動過程中,靠方向鍵控制,只在墻內(nèi)運動,并且蛇每吃到食物則蛇身增長一節(jié),當蛇頭撞到墻上或自己的身體上時,游戲結(jié)束.所以,該程序所涉及的知識有,利用函數(shù)生成圍墻,并將圍墻內(nèi)的空間劃分為一系列的小方塊,利用ShowSnake()函數(shù)將蛇顯示在界面內(nèi),利用SetFood()函數(shù)設置食物,設置方向鍵以控制蛇的運行,定義函數(shù)以判斷蛇頭是否撞墻,或者撞到自己的身體,如果撞到,則游戲結(jié)束.三 程序的算法描述 題目一 程序的算法的N-S圖:為簡單起見,將日期計算與一般計算分開

7、表述: (1)一般計算的N-S圖:(2)日期計算的N-S圖:題目二 程序的算法的N-S圖:題目三 程序的算法描述:首先,構(gòu)建圍墻,設置圍墻大小,并將圍墻內(nèi)的空間劃分為一系列的小方塊,為每個方塊設置坐標,坐標與數(shù)組的下標相同.void CSnakeDlg:MakeMap() /設置窗口大小int cxWnd=GetSystemMetrics(SM_CXFRAME)*2+MAX_X*PANE_LEN-GetSystemMetrics(SM_CXEDGE);int cyWnd=GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYFRAME)*2+

8、MAX_Y*PANE_LEN-GetSystemMetrics(SM_CYEDGE);SetWindowPos(NULL,0,0,cxWnd,cyWnd,SWP_NOZORDER|SWP_NOMOVE); m_img.LoadBitmap(IDB_PANE); for(int i=0;iMAX_X;i+)for(int j=0;jMAX_Y;j+)m_mapij.Create(,WS_CHILD|SS_BITMAP|WS_DISABLED , /創(chuàng)建方塊CRect(PANE_LEN*i,PANE_LEN*j,PANE_LEN*(i+1),PANE_LEN*(j+1),this);m_mapij

9、.SetBitmap(HBITMAP)m_img); m_mapij.SetPoint(i,j); /為每個方塊設置坐標,坐標與數(shù)組下標相同 蛇在運行過程中,以方向鍵控制蛇的運動.具體程序如下:void CSnakeDlg:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: Add your message handler code here and/or call default/游戲的控制switch(nChar)case W:case VK_UP:m_snake.MoveUp(); break;case S:case VK_D

10、OWN:m_snake.MoveDown();break;case A:case VK_LEFT:m_snake.MoveLeft();break;case D:case VK_RIGHT:m_snake.MoveRight();break;case VK_ESCAPE:EndDialog(1); /退出程序break;default:;CDialog:OnKeyDown(nChar, nRepCnt, nFlags);通過以下程序?qū)⑸唢@示出來:void CSnakeDlg:ShowSnake()int len=m_snake.GetBodyLen();for(int i=0;ilen;i+)

11、 m_mapm_snake.m_bodyi.xm_snake.m_bodyi.y.ShowWindow(SW_SHOW); m_mapm_snake.m_preEnd.xm_snake.m_preEnd.y.ShowWindow(SW_HIDE);蛇在運動過程中,吃到食物,則蛇身增加一節(jié),這時,食物從新設置,蛇也以新的形態(tài)顯示出來,在設置食物時,食物不能與蛇身重合,如果運動時撞墻或者撞到自己的身體,則游戲結(jié)束.void CSnakeDlg:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call

12、defaultm_snake.KeepMoving(); /保持原方向移動一步if(!m_snake.IsTouch(MAX_X,MAX_Y) /撞墻處理KillTimer(1); InitGame(); else /不撞墻處理/吃到食物處理if(m_snake.IsEat(m_food) /蛇變長m_snake.Grow(); /放置新食物m_food=SetFood();/顯示蛇ShowSnake(); 蛇吃掉食物后,按照如下方式重新設置食物:CPoint CSnakeDlg:SetFood() int x=0; int y=0;CPoint food;bool flag=true;/隨機

13、產(chǎn)生,合適的坐標while(flag) srand(time(NULL);x=rand()%MAX_X;y=rand()%MAX_Y;food.x=x;food.y=y;for(int i=0;im_snake.GetBodyLen();i+)if(food!=m_snake.m_bodyi) /坐標不能與蛇身重合 flag=false;m_mapxy.ShowWindow(SW_SHOW); return food;在編寫程序的過程中,還應考慮在游戲開始時,蛇頭隨機出現(xiàn),但不能出現(xiàn)在食物上,蛇身上和墻上,這樣,所編寫的程序才能正常運行.四 程序運行結(jié)果 題目一程序運行結(jié)果: 題目二程序運行結(jié)

14、果:題目三程序運行結(jié)果:五 實驗總結(jié)通過這次實驗,我感覺收獲很多.首先,由于我只是在大一上學期學過程序設計與C語言,并且未學其中有關(guān)于文件的知識,所以,半年后從新拾起編程的題目,倍感吃力.于是就到圖書館借了幾本有關(guān)Visual C+程序設計的書,再加上自己大一時的課本,弄到這些資料后,就在寢室研究起來,在上機之前的那幾天里,終于把編這三個程序所需要的知識弄明白了.由于在之前的兩節(jié)課里,老師已經(jīng)把這三個題目大致講了,所以在看完資料后,對這三個題目的處理方法已經(jīng)有所了解,再也不像剛開始接觸題目時那樣一頭霧水了.從這三個程序編寫過程中,我感覺自己的自學能力得到了提高,并且眼界得以擴展,學到了很多新的

15、很有用的東西.其次,這次實驗,培養(yǎng)了自己勇于面對困難的優(yōu)良品質(zhì),使自己明白,在面對困難時應該勇敢的迎上去而不應該選擇逃避,這樣才能解決問題.在剛拿到實驗題目時,便是一頭霧水,感覺實驗難度極大,于是便萌生退意,于是在上第一節(jié)課時,就和幾個同學一起去找老師,看看能不能把課退掉.后來看到不行,就只能硬著頭皮去研究這幾個題目,最終在自己的努力,同學的幫助和老師的指導下完成了這幾個程序的編寫.世上無難事,只要肯攀登,這句話的含義在這一刻顯得如此刻骨銘心.再次,通過這次實驗,自己的思維方式發(fā)生了很大的變化.眾所周知,C+面向?qū)ο蟪绦蛟O計與C語言的面向過程程序設計相比,是一種全新的思維方式,這種思維方式使得

16、我得以以一種全新的方式看待問題,從而以一種科學的方式來處理問題.這將是我一生都受益無窮的.最后,就程序設計方法專題實驗課提一點拙見.(1) 程序設計方法專題實驗課最好不要放在一個學期的學期末開課,因為此時學校放假,大部分學生都回家了,并且夏天天氣很熱,這時學生無法靜下心來好好分析實驗題目,更無從談起做題,這樣很多人就會產(chǎn)生應付了事的想法,甚至抄襲他人的程序,以求完成任務,達不到該課程培養(yǎng)學生編程興趣的目的.因此,對于這門課,最好能放在學期內(nèi)和其他課程一樣開課.(2) 對于實驗題目,我想,最好能設置一系列難度系數(shù)的題目,學生可以在這些題目里面隨意選取三個適合自己的題目,提交后按照所選題目的難度系

17、數(shù)折算分數(shù),這樣,既可以使每個同學的能力得到充分的發(fā)揮,提高學生的編程興趣,又可以防止學生因題目太難而抄襲.可以有效地達到開設該門課程的目的.六 致謝詞通過這次程序設計方法專題實驗課,我學到了很多有用的東西,比如說面對困難要迎難而上不應害怕逃避,比如說新的面向?qū)ο蟮乃季S方式等等.當然,所有的這些東西都離不開老師的教導和同學的幫助的.首先,各位老師的諄諄教導是我各種優(yōu)良品質(zhì)得以形成的主要因素,在我做這三個編程題目時,但凡遇到困難,各位老師都不厭其煩的給我講解,教會了我很多知識,并且在提交程序的過程中給我點出錯誤,告訴我解決的方法,讓我受益匪淺.其次,在課下編寫程序的過程中,我遇到了很多不懂的地方,比如,在編寫計算器的程序時如何對鼠標消息進行響應,又如,在編寫貪吃蛇程序過程中,蛇吃食物后如何增加長度等,這時無法向老師請教,很多同學給予了我很大的幫助,使得我可以順利編寫出程序,順利完成任務.所以,在這里,我要感謝幫助我的各位老師,正是你們的教導,讓我學到了很多有用的東西,使得我受益匪淺.同時我也要感謝幫助我的同學,正是有了他們的幫助,我才能順利寫出程序,才

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論