版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗二 單回路控制系統(tǒng)參數(shù)整定一、實驗?zāi)康?、了解被控對象的特性對控制系統(tǒng)控制品質(zhì)的影響。2、掌握不同調(diào)節(jié)規(guī)律的調(diào)節(jié)器(P、PI、PID)對控制系統(tǒng)控制品質(zhì)的影響。3、熟悉MATLAB軟件中Simulink工具箱的使用方法及在控制系統(tǒng)設(shè)計仿真中的應(yīng)用。4、掌握單回路控制系統(tǒng)中不同調(diào)節(jié)規(guī)律的調(diào)節(jié)器的參數(shù)整定方法。二、Simulink工具箱簡介1、Simulink工具箱的啟動與主要模塊介紹啟動MATLAB軟件,在主程序窗口中點擊“Simulink按鈕”,可以打開Simulink工具箱的主窗口,如下圖所示:Simulink按鈕圖11 MATLAB主程序窗口新建按鈕功能模塊組列表功能模塊圖12 Sim
2、ulink工具箱主窗口在Simulink工具箱的主窗口中點擊“新建按鈕”,可以打開一個未命名的Simulink控制系統(tǒng)仿真界面,在界面中可以如圖13所示:圖13 未命名的Simulink控制系統(tǒng)仿真界面在上圖所示的界面中可以根據(jù)需要,使用Simulink工具箱中的各功能模塊組成控制系統(tǒng)方框圖,對控制系統(tǒng)進行仿真研究。本次實驗中用到的主要功能模塊如下:增益模塊(Gain)在圖12所示的Simulink工具箱主窗口的功能模塊組列表中點擊Math Operations功能模塊組,會在窗口右邊出現(xiàn)對應(yīng)的各功能模塊,用鼠標(biāo)選擇其中的增益模塊(Gain)并按住左鍵將其拖到圖13所示的Simulink控制系
3、統(tǒng)仿真界面中,即可以得到一個增益模塊(Gain)。單擊增益模塊(Gain)下方的模塊名稱“Gain”,可以對其名稱進行修改,雙擊增益模塊(Gain),可以打開增益模塊(Gain)的參數(shù)設(shè)置對話框如下圖所示:增益值圖14 增益模塊(Gain)參數(shù)設(shè)置對話框增益模塊(Gain)的功能為將輸入值與增益值相乘,并將乘積輸出,在對話框中可以對增益值Gain進行修改。加(減)法模塊(Sum)在圖12所示的Simulink工具箱主窗口的功能模塊組列表中點擊Math Operations功能模塊組,會在窗口右邊出現(xiàn)對應(yīng)的各功能模塊,用鼠標(biāo)選擇其中的加(減)法模塊(Sum)并按住左鍵將其拖到圖13所示的Simu
4、link控制系統(tǒng)仿真界面中,即可以得到一個加(減)法模塊(Sum)。雙擊加(減)法模塊(Sum),可以打開加(減)法模塊(Sum)的參數(shù)設(shè)置對話框如下圖所示:模塊形狀下拉菜單運算符號圖15 加(減)法模塊(Sum)參數(shù)設(shè)置對話框加(減)法模塊(Sum)的功能為對兩個輸入數(shù)值進行加(減)法運算,并將計算結(jié)果輸出。此模塊在初始狀態(tài)下對兩個輸入值進行加法運算,在參數(shù)設(shè)置對話框中把第二個“+”改為“”,可以把模塊切換到減法運算。在運算符號框中增加新的“+”或“”,可以使加(減)法模塊(Sum)對多個輸入值進行運算。通過參數(shù)設(shè)置對話框中的模塊形狀下拉菜單,可以將加(減)法模塊(Sum)的形狀由默認(rèn)的圓形
5、改為矩形。積分運算模塊(Integrator)在圖12所示的Simulink工具箱主窗口的功能模塊組列表中點擊Continuous功能模塊組,會在窗口右邊出現(xiàn)對應(yīng)的各功能模塊,用鼠標(biāo)選擇其中的積分運算模塊(Integrator)并按住左鍵將其拖到圖13所示的Simulink控制系統(tǒng)仿真界面中,即可以得到一個積分運算模塊(Integrator),其功能為對輸入值進行積分運算,并將計算結(jié)果輸出。微分運算模塊(Derivative)在圖12所示的Simulink工具箱主窗口的功能模塊組列表中點擊Continuous功能模塊組,會在窗口右邊出現(xiàn)對應(yīng)的各功能模塊,用鼠標(biāo)選擇其中的微分運算模塊(Deriv
6、ative)并按住左鍵將其拖到圖13所示的Simulink控制系統(tǒng)仿真界面中,即可以得到一個微分運算模塊(Derivative),其功能為對輸入值進行微分運算,并將計算結(jié)果輸出。一階慣性環(huán)節(jié)仿真模塊(Transfer Fcn)在圖12所示的Simulink工具箱主窗口的功能模塊組列表中點擊Continuous功能模塊組,會在窗口右邊出現(xiàn)對應(yīng)的各功能模塊,用鼠標(biāo)選擇其中的一階慣性環(huán)節(jié)仿真模塊(Transfer Fcn)并按住左鍵將其拖到圖13所示的Simulink控制系統(tǒng)仿真界面中,即可以得到一個一階慣性環(huán)節(jié)仿真模塊(Transfer Fcn)。雙擊一階慣性環(huán)節(jié)仿真模塊(Transfer Fcn
7、),可以打開其參數(shù)設(shè)置對話框如下圖所示:分母多項式系數(shù)矩陣放大系數(shù)矩陣圖16 一階慣性環(huán)節(jié)仿真模塊(Transfer Fcn)參數(shù)設(shè)置對話框在參數(shù)設(shè)置對話框中,放大系數(shù)矩陣中的數(shù)值代表模塊傳遞函數(shù)分子項的放大系數(shù);分母多項式系數(shù)矩陣中第一個元素代表模塊傳遞函數(shù)分母中s項的系數(shù),第二個元素代表分母中的常數(shù)項,如將放大系數(shù)矩陣改為0.5,將分母多項式系數(shù)矩陣改為20 3,則修改后的一階慣性環(huán)節(jié)仿真模塊(Transfer Fcn)如下:階躍信號輸出模塊(Step)在圖12所示的Simulink工具箱主窗口的功能模塊組列表中點擊Sources功能模塊組,會在窗口右邊出現(xiàn)對應(yīng)的各功能模塊,用鼠標(biāo)選擇其中
8、的階躍信號輸出模塊(Step)并按住左鍵將其拖到圖13所示的Simulink控制系統(tǒng)仿真界面中,即可得到階躍信號輸出模塊(Step)。雙擊階躍信號輸出模塊(Step),可以打開其參數(shù)設(shè)置對話框如下圖所示:階躍信號最終值階躍信號初始值階躍信號發(fā)生時間圖17 階躍信號輸出模塊(Step)參數(shù)設(shè)置對話框在參數(shù)設(shè)置對話框中,可以通過修改相應(yīng)的數(shù)值,改變階躍信號產(chǎn)生的時間、信號的初始值和最終值。響應(yīng)曲線顯示模塊(Scope)在圖12所示的Simulink工具箱主窗口的功能模塊組列表中點擊Sinks功能模塊組,放大鏡按鈕會在窗口右邊出現(xiàn)對應(yīng)的各功能模塊,用鼠標(biāo)選擇其中的響應(yīng)曲線顯示模塊(Scope)并按住
9、左鍵將其拖到圖13所示的Simulink控制系統(tǒng)仿真界面中,即可得到一個響應(yīng)曲線顯示模塊(Scope)。雙擊響應(yīng)曲線顯示模塊(Scope),可以打開其響應(yīng)曲線顯示器如下圖所示:圖18 響應(yīng)曲線顯示器在響應(yīng)曲線顯示器中,橫坐標(biāo)為仿真時間(默認(rèn)的時間長度為10s),縱坐標(biāo)為響應(yīng)曲線的幅值,完成仿真后,在響應(yīng)曲線顯示器中將顯示出控制系統(tǒng)的響應(yīng)曲線,點擊“放大鏡按鈕”可以自動以最佳比例顯示響應(yīng)曲線。2、控制系統(tǒng)方框圖的建立進行仿真實驗前,需要將已經(jīng)拖到圖13所示的Simulink控制系統(tǒng)仿真界面中的各功能模塊按一定順序用信號線連接在一起,以建立控制系統(tǒng)的方框圖。功能模塊的連接任何一個功能模塊均有一個或
10、多個信號輸入端或信號輸出端,以一階慣性環(huán)節(jié)仿真模塊(Transfer Fcn)為例:信號輸入端信號輸出端將鼠標(biāo)指針放在功能模塊的信號輸出端,此時鼠標(biāo)指針變?yōu)槭中危▓D19),按住左鍵拖動鼠標(biāo)指針到另一個模塊的信號輸入端,當(dāng)鼠標(biāo)指針變?yōu)槭中螘r松開左鍵,即可以建立連接兩個功能模塊的信號線(圖110),連接過程如下圖所示: 圖19 圖110信號分支線在建立反饋回路或一個信號需要同時送往多個功能模塊時,需要在信號線上引出分支。將鼠標(biāo)指針放在信號線的合適位置(即分支引出點)點擊右鍵,按住右鍵拖動鼠標(biāo)指針,在需要轉(zhuǎn)彎出松開右鍵,即出現(xiàn)一條帶箭頭的虛線(圖111),鼠標(biāo)指針放在虛線箭頭處,此時鼠標(biāo)指針變?yōu)?/p>
11、十字形(圖112),按住左鍵拖動鼠標(biāo)指針到所需功能模塊的信號輸入端松開左鍵即可(圖113),過程如下圖所示: 圖111 圖112 圖1133、控制系統(tǒng)的仿真在圖13所示的Simulink控制系統(tǒng)仿真界面中建立了控制系統(tǒng)的方框圖后,即可以對控制系統(tǒng)進行仿真。以一個簡單的單回路比例控制系統(tǒng)為例,首先在Simulink控制系統(tǒng)仿真界面中建立控制系統(tǒng)的方框圖如下:仿真啟動按鈕圖114 單回路比例控制系統(tǒng)方框圖點擊Simulink控制系統(tǒng)仿真界面中的Simulation下拉菜單,在下拉菜單中點擊Configuration Parameters,出現(xiàn)下圖所示的仿真參數(shù)設(shè)置對話框:仿真結(jié)束時間仿真開始時間圖
12、115 仿真參數(shù)設(shè)置對話框在仿真參數(shù)設(shè)置對話框中,通過修改仿真結(jié)束時間,可以設(shè)置仿真時間長度,本例中將結(jié)束時間設(shè)置為100s。完成以上設(shè)置后,點擊圖114所示的Simulink控制系統(tǒng)仿真界面中的“仿真啟動按鈕”,開始對控制系統(tǒng)進行仿真,仿真結(jié)束后,雙擊方框圖中的響應(yīng)曲線顯示模塊(Scope),可以在打開的響應(yīng)曲線顯示器中顯示出響應(yīng)曲線,點擊響應(yīng)曲線顯示器中的“放大鏡按鈕”得到如下圖所示的響應(yīng)曲線:圖116 響應(yīng)曲線三、實驗原理 本實驗利用MATLAB軟件中Simulink工具箱中的功能模塊組成具有不同調(diào)節(jié)規(guī)律的單回路控制系統(tǒng),并對其進行仿真研究,控制系統(tǒng)方框圖如下圖所示:調(diào)節(jié)器外擾通道111
13、被控對象內(nèi)擾外擾圖117 單回路控制系統(tǒng)方框圖調(diào)節(jié)器(1)比例調(diào)節(jié)器(P):將虛線框內(nèi)積分系數(shù)Ki增益模塊和微分系數(shù)Kd增益模塊中的增益值Gain均設(shè)為0,此時調(diào)節(jié)器為比例調(diào)節(jié)規(guī)律,其傳遞函數(shù)為:式中: 比例帶; 比例系數(shù)()。(2)比例積分調(diào)節(jié)器(PI):將虛線框內(nèi)微分系數(shù)Kd增益模塊中的增益值Gain設(shè)為0,此時調(diào)節(jié)器為比例積分調(diào)節(jié)規(guī)律,其傳遞函數(shù)為: 式中: 積分時間; 積分系數(shù)()。(3)比例積分微分調(diào)節(jié)器(PID):保留虛線框內(nèi)的三個增益模塊,此時調(diào)節(jié)器為比例積分微分調(diào)節(jié)規(guī)律,其傳遞函數(shù)為:式中: 微分時間; 微分系數(shù)()。被控對象在圖117所示的單回路控制系統(tǒng)中,由三個一階慣性環(huán)節(jié)
14、仿真模塊(Transfer Fcn1Transfer Fcn3)串聯(lián)組成一個三階慣性被控對象,其傳遞函數(shù)為:內(nèi)擾在圖117所示的單回路控制系統(tǒng)中,采用階躍信號輸出模塊作為內(nèi)擾的擾動源,在階躍信號輸出模塊(Step)的參數(shù)設(shè)置對話框中,可以設(shè)置內(nèi)擾發(fā)生的時間和幅值。外擾 在圖117所示的單回路控制系統(tǒng)中,采用階躍信號輸出模塊作為外擾的擾動源,并采用三個一階慣性環(huán)節(jié)仿真模塊串聯(lián)組成具有三階慣性的外擾通道,其傳遞函數(shù)為:四、實驗要求1、在MATLAB軟件的Simulink工具箱中,打開一個Simulink控制系統(tǒng)仿真界面,在其中建立如圖117所示的單回路控制系統(tǒng)方框圖。2、在圖117所示的單回路控制
15、系統(tǒng)中,采用理論計算法對比例調(diào)節(jié)器(P)的比例帶和比例系數(shù)進行計算。3、在圖17所示的單回路控制系統(tǒng)中,采用書中介紹的試驗整定方法對比例積分調(diào)節(jié)器(PI)和比例積分微分調(diào)節(jié)器(PID)的各參數(shù)進行整定,并通過仿真曲線分析調(diào)節(jié)器參數(shù)對控制系統(tǒng)控制品質(zhì)的影響。4、通過仿真曲線分析內(nèi)、外擾動對控制系統(tǒng)控制品質(zhì)和調(diào)節(jié)過程的影響。附錄資料:不需要的可以自行刪除Pascal/C/C+語句對比(補充版)一、Hello world 先看三種語言的樣例:Pascalbegin writeln(Hello world);end.C#include int main() printf(Hello world!n);
16、 return 0;C+#include using namespace std;int main()cout Hello world! endl; return 0; 從這三個程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C+里就是;Pascal主程序沒有返回值,而C/C+返回0(好像在C中可以為NULL)。在C/C+中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C+除了iostream還有第二行的using namespace std,這個是打開命名空間的,NOIP不會考這個,可以不管,只要知道就行了。 此外說明 注釋單行用/,段落的話Pascal為
17、,C/C+為/* */。* 常用頭文件(模板)#include #include #include #include #include #include using namespace std;int main() system(“pause”);return 0;二、數(shù)據(jù)類型及定義 這里只列出常用的類型。1、整型PascalC/C+范圍shortint-128 127integershort-32768 32767longintInt -2147483648 2147483647int64long long-9223372036854775808 9223372036854775807byt
18、e-0 255wordunsigned short0 65535longwordunsigned int0 4294967295qwordunsigned long long0 18446744073709551615 * 當(dāng)對long long 變量賦值時,后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I64dn”,x);2、實型PascalC/C+范圍realfloat2.9E-39 1.7E38single-1.5E-45 3.4E38doub
19、ledouble5.0E-324 1.7E3083、字符即字符串 字符在三種語言中都為char,C里沒有字符串,只有用字符數(shù)組來代替字符串,Pascal和C+均為string。Pascal中字符串長度有限制,為255,C+則沒有。 字符串和字符在Pascal中均用單引號注明,在C/C+中字符用單引號,字符串用雙引號。4、布爾類型 Pascal 中為 boolean,C/C+ 為 bool。值均為True 或 False。C/C+中除0外bool都為真。5、定義 常量的定義均為 const,只是在C/C+中必須要注明常量的類型。在C/C+中還可以用宏來定義常量,此時不注明類型。PascalC/C
20、+const a = 60; b = -a + 30; d = ;const int a = 60;const int b = - a + 30;const string d = “”;define MAXN 501 /這個是宏 * 宏定義其實就是直接在程序相應(yīng)的位置替換: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a endl;特別說明C+中cin一個字符的話會自動跳過空格和回車,Pascal和C則會讀入空格和回車。在Pascal中writeln(a:n:m) 表示
21、在n個字符寬的輸出域上輸出a保留m位小數(shù)。例如:pascal write(a:6) c/c+ printf(“%6d”,a) Pascal write(a:6:2) c/c+ printf(“%6.2f”,a) C+ 如果用 cout ? (繁瑣!) 需要加頭文件 #inlude cout setprecision(2)a; /作用永久 cout setw(6)a; /作用臨時 以下三個進制設(shè)定都是永久作用: cout deca; 相當(dāng) printf(“%d”,a); /十進制 cout hexa; 相當(dāng) printf(“%X”,a); /十六進制 cout octa; 相當(dāng) printf(“
22、%o”,a); /八進制例如:cout 12hex12oct1212endl;輸出:12c1414 C 的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:%hd1個short型整數(shù)%d1個int型整數(shù)%u1個unsigned int型整數(shù)%I64d1個long long型整數(shù)%c1個字符%s1個C字符串%f1個float型實數(shù)%lf1個double型實數(shù)%10.4f輸出1個總寬度為10,保留4位小數(shù)的實數(shù) 文件輸入輸出:Pascalassign(input, test.in);assign(output, test.out);reset(input);rewrite(
23、output);read(a, b);writeln(a, b);close(input);close(output);CFILE *fin = fopen(“test.in”, “r”);FILE *fout = fopen(“test.out”, “w”);fscanf(fin, “%d%d”, &a, &b);fprintf(fout, “%d%d”, a, b);fclose(fin); fclose(fout);C+#include using namespace std;ifstream fin(“test.in”);ofstream fout(“test.out”);fin a
24、b;fout a b endl;fin.close(); fout.close();因為C+的讀入較慢,個人建議C+的話使用C的輸入方式。當(dāng)然也有人用C的讀入,C+的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。*中國計算機學(xué)會競賽須知發(fā)布的C讀寫程序:(C+ 也能用,cin,cout,scanf,printf 可混用)#include int main() int a,b; freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout); scanf(“%d%d”,&a,&b); printf(“%dn”,a+b); return 0; 或者:fre
25、open(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout);ios:sync_with_stdio(false); 取消同步,cin,cout的速度就不慢了! cinab;couta+bendl; return 0;以下擴充c/c+混用是可行的:#include #include using namespace std;int main() int a,b,c,d; freopen(sum.in,r,stdin); freopen(sum.out,w,stdout); scanf(%d%d,&a,&b); cincd; printf(%dn,a
26、+b); couta+b+c+dsn).Cwhile(scanf(%s%d,s,&n)!=EOF).四、賦值語句及運算符號 一一對應(yīng)的關(guān)系PascalC/C+賦值運算賦值:=基本運算加+減-乘*除(實數(shù))/ (double)除法取整div(int) / (int)取余mod%比較等于=不等于!=大于大于等于=小于小于等于=邏輯且and&或or|非not!位運算左移(*2)shl且and&或or|非not異或xor其他增一inc(x)x+減一dec(x)x- 在C/C+中對某個變量自身進行運算可以簡寫為 變量名 運算符號= 改變量 如 x += 8 就表示 x = x + 8, 即 inc(x,
27、 8)。 在 C/C+里還存在一種三目運算 變量名 = 條件 ? 值A(chǔ) : 值B 如 x = x 0 ? x : -x; /表示若x 0 則取 x, 否則取 x, 同 if x 0 then x := x else x := -x;五、條件語句1、if C/C+中if 語句的條件必須要用括號括起來,后面不使用then。PascalC/C+if a b then flag := true else flag := false;if (a b) flag = true;else flag = false;2、多種分支 C/C+中為switch,Pascal為case:PascalC/C+case
28、x of 1: inc(x); 2: dec(x); else x := x * x;end;switch (x) case 1: x +; break; case 2: x -; break; default: x *= x; 切記C/C+中一定要寫break,后果你可以去掉break,運行看看就知道了。六、循環(huán)語句1、forPascalC/C+for 變量名 := 初始值 to(downto) 終止值 dofor (變量名=初始值;條件;改變方式)for i := 5 to 10 do dec(a);/終止值大于初始值用 tofor i := 5 downto 1 do dec(a);/終
29、止值小于于初始值用 downtofor (i = 5; i = 1; i-) a-;/*只要i 滿足條件就會一直循環(huán)。C/C+中i是實數(shù)、指針都可以*/C/C+中for的特殊用法:/變量為實數(shù)for (double i = 1; i 符號為間接引用,后面會提到。for (type1 *p = head - next; p; p = p - next) printf(“%d”, p - k);2、whilePascalC/C+while 條件 dowhile (條件)while i 0 do dec(i);while (i != 0) i-;/也可寫作 while (i) i-;/在C/C+中非
30、0即為真。3、repeat-until & do-whilePascalC/C+repeat 語句 until 結(jié)束條件;do while (運行條件)repeat int(i) until i 100;do i+; while (i = 100);七、數(shù)組 Pascal中數(shù)組的下標(biāo)可以隨意定義,而C/C+下標(biāo)始終為從0開始到(數(shù)組大小1)。PascalC/C+定義a : array 1.100 of integer;b :array 1.10,1.10 of int64;int a100;int b1010;含義a 為大小為100的integer數(shù)組,合法下標(biāo)為1到100b 為大小為10*1
31、0的int64數(shù)組,合法下標(biāo)為1,1到10,10a 為大小為100的int數(shù)組,合法下標(biāo)為0到99b 為大小為10*10的int數(shù)組,合法下標(biāo)為0,0到9,9;使用inc(a21);b2,2:=b1,1+b1,2+b2,1;a21+;b11=b01+b00+b10; 數(shù)組清零PascalC/C+Fillchar(a, sizeof(a), 0);memset(a, 0, sizeof(a);/頭文件包含 string.h*如果要填最大: memset(a,127,sizeof(a) (但達不到 INT_MAX) 如果要填最?。?memset(a,128,sizeof(a) (但達不到 INT_
32、MIN) 如果填0: memset(a,0,sizeof(a) 如果填-1: memset(a,-1,sizeof(a)八、字符串 C風(fēng)格的字符串就是字符數(shù)組。 C+和Pascal的字符串使用基本相同,只是C+中字符串下標(biāo)以0開始,Pascal以1開始。字符串處理很多這里不一一列舉,只寫最常用的幾個。PascalC (包含)定義用:char sC+(包含)定義用:string s輸入輸出Readln(s);Writeln(s);Scanf(“%s”,s);Printf(“%sn”,s);注:不能輸入輸出c+的字符串Cins;Couts = s 的區(qū)別: getline(cin,s)cins一次
33、性整行讀入,直至行末尾。只讀入一個“單詞”,遇空格和行末停止。例如輸入;How are you?s=” How are you?”讀入整串含空格例如輸入;How are you?s=”How”如果三個都讀:cins1s2s3*C+ 數(shù)字與數(shù)值之間的轉(zhuǎn)換:#include #include #include /必須加入using namespace std;int main() string text = 152; int number; stringstream ss;ss number; /string - int coutnumber+100endl; ss string string s
34、tr = ss.str(); return 0;九、過程和函數(shù)1、過程 在C/C+中沒有過程,但可以把返回值為“空”的函數(shù)理解為過程。PascalC/C+無參過程procedure 過程名;說明部分begin 語句部分 end;/說明部分、begin、end語句部分統(tǒng)稱為過程體void 函數(shù)名(); 主體部分; return ;帶參過程procedure 過程名(形參表)過程體void 函數(shù)名(形參表)過程體 值傳和址傳:當(dāng)一個參數(shù)是值傳時,形參在子過程中相當(dāng)于一個局部變量,對它的改變不影響實在的參數(shù)值。址傳則會影響。下例中a為值傳,b為址傳。初始a = 5,b = 5,運行后a = 5,b
35、= 10;PascalC/C+var a, b:integer;procedure doit(a:integer; var b:integer);begin b := a + b; a := a + b;end;begina := 5;b := 5;doit(a, b);writeln(a, , b);end.void doit(int a, int &b) HYPERLINK a a認(rèn)為值參,b認(rèn)為變量傳參 b += a; a += b; return ;int main()int a = 5, b = 5;doit(a, b);cout a b;return 0;* 用若干地址傳參可以給調(diào)
36、用者傳回若干值 Void tryit(int &x,int &y,int &z) 調(diào)用時: tryit(a,b,c) ,可以傳回 a,b,c的值。* 用數(shù)組名(也是地址)傳參可以傳回整組的數(shù)據(jù) Void tryit( int a) 調(diào)用時: tryit(x),可以傳回整個數(shù)組。例如:void tryit(int a) for(int i=0;i=10;i+) ai=i*2; return; int main() int x10; tryit(x); for(int i=0;i=10;i+) coutxiendl; system(pause); return 0;*用指向函數(shù)的指針作為參數(shù),可以
37、執(zhí)行指定的函數(shù)。(略)STL 的兩個應(yīng)用:* C+ 快排函數(shù)#include Bool com(int a,int b) Return ab;Int main() Int a10=5,7,3,2,6,8,4,3,5,7;Sort(a,a+10,com); /如果升序可以省略com.For(int i=0;i10;i+) Coutai” “;* 優(yōu)先隊列(以堆排為例)#include #include using namespace std;priority_queue Q;int main() int n,a; cinn; while (n-) cina; Q.push(a); while (
38、!Q.empty() cout Q.top() ; Q.pop(); return 0;* 隊列、棧、優(yōu)先隊列 三種數(shù)據(jù)結(jié)構(gòu)匯總:#include #include priority_queue Q;queue Q1;stack S;int main()Q.push(5); x = Q.top(); Q.pop();Q.empty();Q.size()Q1.push(5); Q1.size(); Q1.front(); Q1.empty(); Q1.pop();S.push(5); S.size(); S.top(); S.emtpy(); S.pop();2、函數(shù) . PascalC/C+funtion 函數(shù)名(形參表):返回值類型;函數(shù)體返回值類型 函數(shù)名(形參表) 主體; return 返回值; 注意在Pascal中: 在函數(shù)體的語句部分中,必須有對應(yīng)的函數(shù)標(biāo)識符賦值的語句,并且這些語句在函數(shù)被引用時至少要有一句被執(zhí)行,最后賦給函數(shù)標(biāo)識符的值就是函數(shù)值?;蛘遝xit(返回值);下面為求n階
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游行業(yè)智慧導(dǎo)覽與線路規(guī)劃方案
- 企業(yè)級人工智能平臺服務(wù)合同
- 企業(yè)并購重組合作框架協(xié)議
- 健身房加盟經(jīng)營協(xié)議
- 日化行業(yè)個人護理方案
- 三農(nóng)村居民生活成本控制方案
- 初三其期中數(shù)學(xué)試卷
- 教育行業(yè)教育金融服務(wù)方案
- 高科技智能家居安裝合作協(xié)議
- 軟件代碼評審與測試作業(yè)指導(dǎo)書
- 證券公司合規(guī)管理有效性評估參考表
- 消防維保流程
- 華東師大版科學(xué)七年級上冊期末測試卷2
- 危機管理與應(yīng)急響應(yīng)
- 《安全生產(chǎn)法》宣傳周活動宣貫課件
- 2024年度廢鋼再生資源買賣合同樣本3篇
- 2024年綜合實踐活動課程實施計劃(4篇)
- 陸軍第七十五集團軍醫(yī)院招聘筆試真題2023
- 2024年度鍋爐安全檢驗與保養(yǎng)服務(wù)合同3篇
- 《政府經(jīng)濟學(xué)》期末考試復(fù)習(xí)題及答案
- 中南大學(xué)《大學(xué)物理C(一)》2023-2024學(xué)年第一學(xué)期期末試卷
評論
0/150
提交評論