




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、成都理工大學課 程 實 驗 指 導 書課程名稱:算法語言與程序設計課程性質:專業基礎課實驗學時:24適用專業:信息與計算科學編 寫 者:王玉蘭審 查 者:范安東編寫日期:2007年 8月信息管理學院 編目 錄1 課程實驗目的12 課程實驗要求13 課程實驗內容2項目一 熟悉VC+開發環境2項目二 C+簡單程序設計實現5項目三 函數的實現與應用8項目四 類與對象操作練習8項目五 數組、指針與字符串操作練習10項目六 繼承和派生的實現11項目七 虛函數與多態性驗證12項目八 流類庫與輸入/輸出練習13項目九 異常處理練習(示例)14附錄1 課程實驗報告格式16附錄2 算法語言與程序設計課程實驗教學
2、大綱191 課程實驗目的算法語言與程序設計是一門實踐性很強的課程,實踐是最重要的環節,本實驗課程的內容與理論課聯系緊密,學生在理論課上獲取的知識,需要在實驗課上加深理解,融會貫通,同時實驗課是培養學生動手能力和創新思維的重要教學環節。通過完成本實驗課的實驗,學生應能初步掌握常用算法分析和程序設計的基本技能、常用編程技術和面向對象程序設計技術。2 課程實驗要求2.1 課程實驗準備要求(1)要求學生在實驗前學好教材或者相關的參考資料,復習實驗所用的預備知識。這需要學生有自主的學習意識和整理知識的能力。(2)根據實驗項目要求,完成實驗前的相關算法分析和程序預設計工作,以便高效利用機時確保在有限上機時
3、間內完成實驗項目內容。2.2 課程實驗過程要求實驗過程主要包括:1使用Visual C+6.0開發環境,從創建VC+項目開始,按算法要求在VC+環境中編輯C+源程序,并完成編譯運行調試過程;2分析程序運行結果的正確性,對錯誤原因進行分析并修正程序;3試使用不同的程序結構實現算法,比較不同實現程序的特點。2.3 課程實驗報告要求在每一次實驗后要求根據實驗內容及實驗報告的格式要求編寫實驗報告。報告格式見附錄。2.4 課程實驗考核要求實驗成績占總成績的20%(實驗成績中實驗態度、紀律占20%,預習及操作占60%,實驗結果20%)。實習課無故缺席兩次,扣除其全部實驗成績,缺席三次取消其考試資格。實習成
4、績采用五級記分制。3 課程實驗內容項目一 熟悉VC+開發環境實驗目的了解VC+的特點;熟悉VC+開發環境;學習使用VC+編輯、編譯和運行C+控制臺程序的過程。實驗學時2學時實驗準備1安裝Visual C+6.0或以上版本的編譯環境; 2掌握C+完整程序 概念;實驗內容及步驟#include using namespace std;int main()cout Hello!n;cout Welcome to c+!n;使用VC+建立一個非圖形化的標準C+程序Sam1_1.cpp,編譯并運行。程序Sam1_1.cpp:1啟動VC+6.0開發環境從“開始”菜單中選擇“程序”Microsoft Vis
5、ual Studio 6.0Microsoft Visual C+ 6.0,即可顯示如圖1-1所示的VC+6.0開發環境主窗口。圖1-1 VC+啟動界面2創建一個新工程項目(Project)單擊文件(File)菜單中的新建(New)選項,彈出如圖1-2所示對話框,按提示創建一個空的名為Sam1_1控制臺工程。注意系統為自動創建工程文件夾,請查看相應文件夾下內容如圖1-3所示。圖1-2 VC+創建新的控制臺工程界面圖1-3 空控制臺工程Sam1_1文件夾內的內容3在工程Sam1_1中創建C+源程序文件Sam1_1.cpp在菜單“工程”(Project)添加工程(Add to Project)新建
6、(New),彈出新建對話框,如圖1-4所示。按提示將程序Sam1_1.cpp內容編輯到工程中,如圖1-5所示。圖1-4 在工程Sam1_1中添加源程序文件圖1-5 含C+源程序Sam1_1.cpp的工程4創建并運行可執行程序選擇菜單命令 “編譯”(Compiling)構建(Build) Sam1_1.exe 創建可執行程序;選擇菜單命令“編譯”執行(Execute) Sam1_1.exe ,觀察屏幕顯示內容。5關閉工作空間選擇菜單命令“文件”關閉工作區(Close Workspace)項目二 C+簡單程序設計實現實驗目的學會編寫簡單C+程序;練習數據類型、變量、常量、運算符、表達式等的應用;練
7、習結構化程序設計基本控制結構的運用、自定義數據類型的應用;簡單的輸入輸出;了解包含頭文件的作用;學習使用debug調試程序實驗學時4學時實驗準備1熟練掌握項目一的工作2.掌握數據類型、變量、常量、運算符、表達式等的概念和表示;3.掌握結構化程序設計基本控制結構及使用、自定義數據類型的使用;4 掌握簡單的輸入輸出語句及格式。實驗內容及步驟1C+數據和運算的表述方法及輸入輸出建立一個空的控制臺應用工程Sam2-1,并輸入下列程序Sam2_1.cpp練習不同類型常量、變量的表示,運算符的使用,表達式的構造,輸入輸出語句的使用。源程序Sam2_1.cpp:#include using namespac
8、e std;void main()/測試不同類型數據及表達式占用的內存空間int i_a=10;float f_b=20.30;double d_c=30.70;coutsizeof(int)=sizeof(int)endl;coutsizeof(short int)=sizeof(short int)endl;coutsizeof(long int)=sizeof(long int)endl;coutsizeof(unsigned int)=sizeof(unsigned int)endl;coutsizeof(unsigned short int)=sizeof(unsigned shor
9、t int)endl;coutsizeof(char)=sizeof(char)endl;coutsizeof(unsigned char)=sizeof(unsigned char)endl;coutsizeof(float)=sizeof(float)endl;coutsizeof(double)=sizeof(double)endl;coutsizeof(long double)=sizeof(long double)endl;coutsizeof(int *)=sizeof(int *)endl;coutsizeof(int &)=sizeof(int &)endl;coutsizeo
10、f(int3)=sizeof(int3)endl;coutsizeof(6.2)=sizeof(6.2)endl;coutsizeof 2+6.2 =sizeof 2+6.2 endl;coutsizeof 2.0+6.2 =sizeof 2.0+6.2 endl;coutsizeof f+4.3 =sizeof f+4.3 endl;cout int(i_a+f_b+d_c)= int(i_a+f_b+d_c)endl;cout (int)f_b+d_c+i_a=(int)f_b+d_c+i_aendl;cout sizeof(int)f_b+d_c+i_a)=sizeof(int)f_b+
11、d_c+i_a)endl;/測試+,-等算術運算符及運算賦值表達式 int a,b,c,d,m,n;a=5;b=5;c=5;a+=b+c+;cout1 a b cendl;a=5;b=5;c=5;a-=+b+c-;cout2 a b cendl;a=5;b=5;c=5;a*=b-c-;cout3 a b cendl;a=5;b=5;c=5;a/=5+b+-c+;cout4 a b cendl;/測試邏輯類型數據及相關運算a=5;b=6;c=7;d=8;m=2;n=2;cout0 b)&(n=cd)n= nendl;cout00 n= nendl;bool x=true,y=false,z=fa
12、lse;x=x|y&z;y=x&y|z;z=!(x!=y)|(y=z);cout5a xendl;cout5a yendl;cout5a z n;/測試位運算符unsigned int b_a=0x1234;unsigned int b_b=b_a2;unsigned int b_d=b_b&b_c;unsigned int b_e=b_b|b_c;unsigned int b_f=b_bb_c;unsigned int b_g=b_a;cout b_a=hexb_aendl;cout b_b=hexb_bendl;cout b_c=hexb_cendl;cout b_d=hexb_dendl
13、;cout b_e=hexb_eendl;cout b_f=hexb_fendl;cout b_g=hexb_gendl;2基本控制結構程序設計建立一個空的控制臺應用工程Sam2-2,輸入例2-7并運行。(1)去掉源程序中的#include語句,重新編譯,觀察出現的問題。理解包含文件的作用。(2)改寫程序,用for循環替換程序中的dowhile循環,完成相同功能,將程序另存為Sam2_2.cpp。3 VC+的debug調試功能建立一個空的控制臺應用工程Sam2-3,輸入源程序Sam2_3.cpp,編譯并執行。源程序Sam2-3.cpp:#include using namespace std;
14、const float PI = 3.1416;int main()int iType;float radius, a, b, area;cout iType;switch(iType)case 1:cout radius;area = PI * radius * radius;cout面積為:areaendl;break;case 2:cout a;cout b;area = a * b;cout面積為:areaendl;break;case 3:cout a;area = a * a;cout面積為:areaendl;break;default:cout 不是合法的輸入值!2;(1)將程序
15、編寫完成并編譯通過,使用快捷鍵F11或選擇菜單命令“debug”Step Into進入調試狀態。(2)利用觀察窗口觀察n值的變化。項目四 類與對象操作練習實驗目的掌握類的定義和使用;掌握類對象的聲明和使用;學習不同訪問控制方式下成員的訪問;觀察構造函數和析構函數的執行過程;使用VC+的debug調試功能觀察程序流程:跟蹤觀察類的構造函數、析構函數和成員函數的執行順序。實驗學時4學時實驗準備1熟悉類定義,特別是類成員的訪問控制形式;2熟悉類對象聲明和使用方式;3熟悉構造函數和析構函數的功能。實驗內容及步驟1聲明一個CPU類該類中包含等級(rank)、頻率(frequency)、電壓(voltag
16、e)等屬性,含run和stop兩個公有成員函數,另有構造函數和析構函數。1)rank為枚舉類型CPU_rank,可能的取值為P1,P2,P3,P4,P5,P6,P7;2)frequency單位為MHz,整型數;3)voltage是浮點類型值;4)run 函數和stop函數僅用于輸出運行過程提示信息;以便了解程序執行過程。5)構造函數和析構函數中也要求寫輸出信息,以便了解構造函數和析構函數的調用順序和時刻;6)在主程序中聲明一個CPU對象,調用其成員函數,觀察類對象構造函數和析構函數的調用順序,以及成員函數的調用。7)使用VC+的debug調試功能觀察程序流程:跟蹤觀察類的構造函數、析構函數和成
17、員函數的執行順序。2聲明一個簡單的Computer類該類中包含有芯片(cpu)、內存(ram)、光驅(cdrom)等數據成員,含run和stop兩個公有成員函數,另有構造函數和析構函數。1)cpu為類CPU對象;2)ram和cdrom為兩個布爾型變量;用于說明計算機是否配置了相應部件。3)run 函數和stop函數僅用于輸出運行過程提示信息;以便了解程序執行過程。4)構造函數和析構函數中也要求寫輸出信息,以便了解構造函數和析構函數的調用順序和時刻;5)在主程序中聲明一個Computer對象,調用其成員函數,觀察類對象構造函數和析構函數的調用順序,以及成員函數的調用。3設計一個用于人事管理的Pe
18、ople類該在包含編號(number)、姓名(name)、性別(sex)、出生年月(birth)、身份證號(id)等屬性,以及用于輸入及顯示人員信息的成員函數input和display。1) birth為日期類(CTime)的對象;2) 要求包括不同的構造函數、拷貝構造函數和析構函數及內聯成員函數。3) 在主程序中聲明中People對象,并跟蹤執行。項目五 數組、指針與字符串操作練習實驗目的學習使用數組數據、字符串數據的組織和處理;掌握指針的使用、通過debug觀察指針的內容及其所指的對象的內容;練習通過動態內存分配實現動態數組,體會指針在其中的作用;分別使用字符數組和標準C+庫練習處理字符串
19、的方法。實驗學時4學時實驗準備1熟悉數組的聲明、初始化和使用;2熟悉指針的聲明、初始化和使用,以及指針與數組的關系;3熟悉字符串的聲明、初始化及與字符數組的關系; 實驗內容及步驟1編寫一個程序用于計算4*4整數矩陣的轉置。要求:1)用二維數組保存矩陣;2)定義轉置函數實現轉置功能;3)注意使用不同的參數傳遞形式,實現函數調用。2修改上述程序,使用動態內存分配生成動態數組,用指針實現函數功能;3編寫程序實現將兩字符串連接的功能。要求:1)使用字符數組保存字符串;2)自定義連接函數而不使用系統函數。4使用CString類聲明字符串對象,調用類成員函數實現兩字符串連接功能;5利用項目四中定義的Peo
20、ple類,在主程序中創建包含5個元素的對象數組,并調用相應成員函數對每個元素的數據信息并一次顯示5個對象的數據。項目六 繼承和派生的實現實驗目的學習定義和使用類的繼承關系,聲明派生類;掌握不同繼承訪問控制方式下對基類成員的訪問控制;學習利用虛基類解決重復繼承產生的二義性問題。 實驗學時4學時實驗準備1熟悉類繼承和派生的概念;2熟悉不同繼承訪問控制方式下派生類對象可以訪問的基類成員;3熟悉單繼承、多繼承、重復繼承的概念及產生二義性問題的原因。實驗內容及步驟1測試不同繼承訪問控制方式下的訪問限制聲明一個基類Animal,包含私有整型數據成員age,公有成員函數Set(int n)用于為其成員Age
21、賦值;構造Animal的派生類Dog,包含一個公有成員函數SetAge(int n)用于直接為Age賦值。要求:1)編寫一程序,在主程序中聲明一個Dog類對象,并調用其成員函數SetAge;編譯該程序,觀察編譯結果;2)修改上述程序將Animal類中的成員Age改為公有,重新編譯,觀察編譯結果;3)修改上述程序在主程序中調用Set函數為Age賦值,重新編譯,觀察編譯結果;4)修改程序將Dog類的繼承訪問控制方式改為私有,在主程序中調用Set函數為Age賦值,重新編譯,觀察編譯結果;2測試存在派生繼承時構造函數和析構函數的調用順序1)聲明一個基類BaseClass,包含一個整型數據成員numbe
22、r和一個用于顯示number值公有成員函數display,以及帶輸出信息的構造函數(對number初始化)和析構函數;2)構造其派生類DerivedClass,同樣包含帶輸出信息的構造函數(間接對number初始化)和析構函數;3)編寫一主程序,聲明一個DerivedClass對象,調用display顯示number值,觀察構造函數和析構函數的調用順序。3測試重復繼承時二義性問題1)聲明一個車類(Vehicle),包含Maxspeed、Weight等受保護的數據成員和公有display函數用于顯示數據成員值,另有Run、Stop等公有成員函數;2)由此類派生出Bicycle類(含Height等
23、屬性)和Car類(含Seats等屬性);3)由Bicycle類和Car類派生出Motorcycle類;4)編寫一主程序,在其中聲明一Motorcycle類對象,調用display函數,觀察編譯結果。5)在Bicycle類和Car類定義中將Vehicle改為虛基類,重新觀察編譯結果。項目七 虛函數與多態性驗證實驗目的掌握運算符重載的方法;學習使用虛函數實現動態多態性。 實驗學時2學時實驗準備1熟悉運算符重載的方法(成員函數或友元函數)2熟悉虛函數的概念及虛函數重定義的方法。 實驗內容及步驟1向量類的設計(運算符重載) 聲明一個向量類Vecter,要求:1)包含三個私有數據成員_x,_y,_z;2
24、)可實現向量加減運算(利用運算符重載實現對+和-和重載)3)使用不同方式的運算符重載;4)使用主函數測試設計效果。2摩托車類的設計(動態多態性的實現)1)聲明一個車類(Vehicle),包含Maxspeed、Weight等受保護的數據成員和公有虛函數display函數用于顯示數據成員值,另有Run、Stop等公有成員函數;2)由此類派生出Bicycle類(含Height等屬性)和Car類(含Seats等屬性),都包含對虛函數display函數的重定義;3)由Bicycle類和Car類派生出Motorcycle類;包含對虛函數display函數的重定義;4)編寫一主程序,在其中聲明各類對象及Ve
25、hicle類指針,讓Vehicle類指針指向其派生類對象,調用display函數,觀察編譯和運行結果。項目八 流類庫與輸入/輸出練習實驗目的熟悉流類庫中常用的類及其成員函數的用法;學習標準輸入輸出及格式控制;學習文件的操作方式。實驗學時2學時實驗準備1熟悉流類庫的概念和基本使用;2熟悉標準輸入輸出的概念和格式控制;3了解文件的操作的概念。 實驗內容及步驟1通過給定程序學習流類庫的使用及輸入輸出格式的控制運行下列程序,觀察運行結果。/Sam11_1.cpp#include using namespace std;#define D(a) T #a endl; aofstream T(output
26、.out);int main() D(int i = 53;) D(float f = 4700113.141593;) char* s = Is there any more?; D(T.setf(ios:unitbuf);) D(T.setf(ios:showbase);) D(T.setf(ios:uppercase);) D(T.setf(ios:showpos);) D(T i endl;) D(T.setf(ios:hex, ios:basefield);) D(T i endl;) D(T.unsetf(ios:uppercase);) D(T.setf(ios:oct, ios
27、:basefield);) D(T i endl;) D(T.unsetf(ios:showbase);) D(T.setf(ios:dec, ios:basefield);) D(T.setf(ios:left, ios:adjustfield);) D(T.fill(0);) D(T fill char: T.fill() endl;) D(T.width(8);) T i endl; D(T.setf(ios:right, ios:adjustfield);) D(T.width(8);) T i endl; D(T.setf(ios:internal, ios:adjustfield)
28、;) D(T.width(8);) T i endl; D(T i endl;) / Without width(10) D(T.unsetf(ios:showpos);) D(T.setf(ios:showpoint);) D(T prec = T.precision() endl;) D(T.setf(ios:scientific, ios:floatfield);) D(T endl f endl;) D(T.setf(ios:fixed, ios:floatfield);) D(T f endl;) D(T.setf(0, ios:floatfield);) / Automatic D
29、(T f endl;) D(T.precision(16);) D(T prec = T.precision() endl;) D(T endl f endl;) D(T.setf(ios:scientific, ios:floatfield);) D(T endl f endl;) D(T.setf(ios:fixed, ios:floatfield);) D(T f endl;) D(T.setf(0, ios:floatfield);) / Automatic D(T f endl;) D(T.width(8);) T s endl; D(T.width(36);) T s endl;
30、D(T.setf(ios:left, ios:adjustfield);) D(T.width(36);) T s endl; D(T.unsetf(ios:showpoint);) D(T.unsetf(ios:unitbuf);)2編寫一個文件輸入輸出操作程序,打開指定數據文件。有數據文件test.dat,要求使用C+程序讀出并在每行前加行標號,輸出到文件result.dat中。 項目九 異常處理練習(示例)實驗目的正確理解C+的異常處理機制;學習異常處理的聲明和執行過程。 實驗學時2學時實驗準備1熟悉異常處理的概念;2熟悉異常處理中三個關鍵字try,throw,catch的作用。 實驗內
31、容及步驟聲明一個異常類CExpection,包含用來顯示異常類型的成員函數Reason(),在子函數中觸發異常,在主程序中處理異常,觀察程序執行流程。參考程序如下:#include using namespace std;class CExceptionpublic: CException(); CException(); const char *Reason() const return Cexception類型的異常。; ;void fn1()cout 在子函數中觸發CException類異常 endl; throw CException();int main() cout 進入主函數 e
32、ndl; try cout 在try模塊中,調用子函數 endl; fn1(); catch( CException E ) cout 在catch模塊中,捕獲到CException類型異常:; cout E.Reason() endl; catch( char *str ) cout 捕獲到其它類型異常: str endl; cout 回到主函數,異常已被處理 endl;附錄1 課程實驗報告格式算法語言與程序設計課 程 實 驗 報 告 項目名稱:異常處理練習學生姓名:王 羽學生學號:200707020518指導教師:王玉蘭完成日期:2007年5月18日1 實驗內容 聲明一個異常類CExpec
33、tion,包含用來顯示異常類型的成員函數Reason(),在子函數中觸發異常,在主程序中處理異常,觀察程序執行流程。2 程序設計根據要求完成程序如下#include using namespace std;class CExceptionpublic: CException(); CException(); const char *Reason() const return Cexception類型的異常。; ;void fn1()cout 在子函數中觸發CException類異常 endl; throw CException();int main() cout 進入主函數 endl; try
34、 cout 在try模塊中,調用子函數 endl; fn1(); catch( CException E ) cout 在catch模塊中,捕獲到CException類型異常:; cout E.Reason() endl; catch( char *str ) cout 捕獲到其它類型異常: str endl; cout 回到主函數,異常已被處理 endl;3 程序運行結果及分析經過編譯修改程序運行結果如下:4 實驗體會該程序僅僅是用于演示異常的處理過程,要真正在實用系統中使用還需要做很多工作。要學習的知識還很多。5 實驗考核成績表上課紀律(20%)實驗過程及結果(40%)實驗報告質量(40%
35、)教師評語:總分:教師簽字:附錄2 算法語言與程序設計課程實驗教學大綱算法語言與程序設計課程實驗大綱Algorithm Language and Programming課程類別:專業基礎課課程學時:72課時實驗學時:24課時(驗證性實驗14課時,綜合、設計性實驗10課時)適用專業:信息與計算科學,計算機科學與技術,信息工程,數學與應用數學編寫人員:王茂芝負責審查:信管學院信息與計算科學專業課程實驗大綱審查組編寫年月:2006年12月修訂年月:2006年12月一、課程實驗的地位、作用和目的本課程是一門實踐性很強的課程,實踐是最重要的環節,本實驗課程的內容與理論課聯系緊密,學生在理論課上獲取的知識,需要在實驗課上加深理解,融會貫通,同時實驗課是培養學生動手能力和創新思維的重要教學環節。通過完成本實驗課的實驗,學生應能初步掌握程序設計的基本技能、常用編程技術和面向對象程序設計技術。二、課程實驗成績評定1考核方式:考查。2評分標準
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業園區的水質監測與管理研究
- 工程機械的動載荷特性研究
- 40人公司管理制度
- ab公司管理制度
- 標準公司內部管理制度
- 校區裝修現場管理制度
- 校園學生安全管理制度
- 校園廣播學生管理制度
- 校園疫情輿論管理制度
- 校園防控交通管理制度
- 廣西河池市三新學術聯盟2022-2023學年高二下學期期中聯考政治試題
- 公路損壞分類和識別專題培訓課件
- 國家開放大學應用寫作(漢語)形考任務1-6答案(全)
- (更新版)國家開放大學電大《計算機繪圖(本)》網考形考作業試題及答案
- 擴頻通信中直接擴頻系統的同步技術
- 幼兒園食育環境創設的實踐研究 論文
- 電機學知到章節答案智慧樹2023年東北電力大學
- 氣候變化科學概論試題及答案
- 湖南省郴州市2016年中考數學試卷(解析版)
- 項目部內審檢查表
- 森林計測學(測樹學)智慧樹知到答案章節測試2023年浙江農林大學
評論
0/150
提交評論