freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

word版可編輯-c程序設計教案精心整理(編輯修改稿)

2025-06-07 22:26 本頁面
 

【文章內容簡介】 數必須列后。在調用該函數時,一般不允許部分缺省,即要么省去全部缺省參數,要么一個也不省。函數值調用和引用調用 C++語言在進行函數調用時,對參數的處理有兩種方式,賦值型和引用型,即值調用方式和引用調用方式。前者是普通的形式,在C 語言中只有這種方式;C++語言中增加了引用調用形式,這種形式與pascal 語言中的變量參數調用方式相似。1. 賦值調用方式在執(zhí)行函數調用時,在檢查函數名及參數表之后,首先為值參數分配內存,然后計算各對應的實參表達式,并把計算的值賦給剛剛創(chuàng)建的參數變量,進而開始函數體的運行。賦值形參:在函數定義的參數中,除了被說明為引用(amp。)的參數之外,其余所有類型的形參都屬于賦值形參。凡是賦值形參,在函數的每次調用時,都必須為每一個賦值形參創(chuàng)建一個新的參數變量。實參表達式:另一方面,函數調用語句中,與賦值形參相對應的實參可以是指定類型的常量、變量或表達式。在執(zhí)行函數調用時應把該表達式的值計算出來,作為初值賦給剛剛為賦值形參創(chuàng)建的參數變量。這是賦值調用方式名稱的由來。2.引用調用方式引用形參:函數定義的參數表中,名字前加上符號&的參數為引用形參。例如:void swap(int& a,int& b){int temp=a;a=b;b=temp;}形參a,b 為引用形參,這時其函數原型可寫為:void swap(int&,int&);引用形參在調用過程中的參數傳遞機制不同于賦值形參。其要點是:(1)函數的調用語句中對應于引用形參的實參必須是同一類型的變量,非變量的表達式則不允許。(2)參數傳遞的內容不是實參的值,而是地址,其實際的效果是令對應的引用形參在調用過程中,作為一個變量名指向作為實參的這個變量,與賦值形參的不同在這里體現出來,在引用調用過程中并不創(chuàng)建新的參數變量?。?)在函數體程序塊的運行中,引用形參的每次出現,由于它現在已經是指向實參變量,因此相當于全用實參變量所代替。即起到了所謂的“換名”的作用。(4)在函數體程序運行結束,控制轉回調用點時,該引用形參與實參變量的對應關系也就終止了。但是在調用過程中對于這個實參變量的所有處理和操作的結果,卻保留下來。這一點也是區(qū)別于賦值調用的。課題07:內聯(lián)函數與遞歸函數 一、教學目標: 二、教學重點: 1.函數嵌套 2.內聯(lián)函數三、教學難點: 1.函數的遞歸調用四、課時安排: 2節(jié)課五、教具準備: 多媒體教室六、教學方法: 講授七、教學過程: (一)、復習導入 (二)、講授新課內聯(lián)函數 內聯(lián)(inline)函數的設置是C++不同于C 的特征之一。(1)在C++程序中符合下列條件的函數:①函數說明前冠以“inline”關鍵字的函數;②類內定義的函數成員,將在第七章介紹。(2)在編譯過程中,凡內聯(lián)函數,系統(tǒng)把它的執(zhí)行代碼插入到該函數的每個調用點,從而使程序執(zhí)行過程中,每次該函數調用時不需控制轉移,但該函數代碼可能有多個拷貝出現在目標程序中。也就是說,把多次調用的函數說明為內聯(lián)函數,會使目標程序占用的空間加大,而運行時間得到節(jié)省。(3)為了優(yōu)化程序、提高程序的運行效率,一般把函數體短小而又頻繁調用的函數說明為內聯(lián)函數較好。(4)利用編譯預處理的宏定義方式,也可以實現類似于內聯(lián)函數的功能。不過,內聯(lián)函數的方式更為方便和可靠。例如,下面幾個內聯(lián)函數定義可以用帶參數的宏定義方式實現:inline int MAX (int a, int b) {if (ab) return a。 return b。}inline float ABS (float a) { return ( a=0)? a: 0a。 }inline float PERCENT (float a, float b) {return * a / b。}inline void SWAP (int a, int b) {int t。 t=a。 a=b。 b=t。 return。}inline bool ISODD (int x) {return (x %2 = = 1)?1: 0。 }對應的宏定義為: define MAX (a,b) ((ab)? a: b) // 求較大者 define ABS (a) (( a = 0 )? a: 0a ) // 求絕對值 define PERCENT (a,b) ( * a / b ) // 求百分比 define SWAP (t, a, b) {int t=a。 a=b。 b=t。} // 交換a,b 的值 define ISODD (x) ((x %2 = = 1) 1: 0 ) // 判斷x 是否為奇數雖然這些帶參數的宏定義的功能與對應的內聯(lián)函數基本一致,但仍然是有差別的,宏定義中的參數和計算結果沒有類型說明,編譯時不可能進行類型檢查,是不安全的,更無法區(qū)分賦值參數和引用參數,很容易出錯。因此,C++語言的編程中,當某段計算短小而又經常被重復時,建議采用內聯(lián)函數,少用宏定義實現。函數嵌套 一個函數的函數體中包含一個或多個函數調用語句,即稱為函數嵌套。嵌套的含義是,如果函數A 要調用函數B,也就是說,函數A 的定義要依賴于函數B 的定義。因此函數B 的定義或函數B 的原型必須出現在函數A 的定義語句之前。 為了保證返回后繼續(xù)正常運行,函數調用過程開始時需要做更多的事情:1) 建立被調用函數的??臻g;2) 保存調用函數的運行狀態(tài)和返回地址;3) 傳遞參數;4) 把程序控制轉交給被調用函數。函數的遞歸遞歸函數的設計在程序設計中占有重要的地位。函數A 在其函數體中直接包含它自己的調用語句,這種調用稱為直接遞歸調用,函數A 稱為(直接)遞歸函數。函數A 在其函數體中間接地包含對它自己的調用,例如A 調用函數B,但函數B 又調用函數A,則函數A 稱為(間接)遞歸函數。下面是一個(直接)遞歸函數的例子:float fac(int n){if (n<2=return 1;return fac(n-1)*n;}遞歸函數的實際計算過程與遞歸次序相反,例如,設n=4,計算fac(4)的遞歸次序是:fac(4)-fac(3)-fac(2)-fac(1),而實際計算過程則正好相反:fac(1)=1, fac(2)=fac(1)*2=2,fac(3)=fac(2)*3=6,fac(4)=fac(3)*4=24. 在一般情況下,應注意:(1) 無論是直接遞歸還是間接遞歸都必須保證在有限次調用之后能夠結束。例如函數fac 中的參數n 在遞歸調用中每次減1,總可達到2 的狀態(tài)而結束。(2) 函數調用時系統(tǒng)要付出時間和空間代價,在環(huán)境條件相同的情形下,總是非遞歸程序效率較高。課題08:函數重載一、教學目標: 二、教學重點: 1.函數重載的條件三、教學難點: 1.函數重載的使用四、課時安排: 2節(jié)課五、教具準備: 多媒體教室六、教學方法: 講授七、教學過程: (一)、復習導入 (二)、講授新課函數重載實際上是函數名重載,即支持多個不同的函數采用同一名字。例如:int abs(int n){return(n<0?n:n;}float abs(float f){if(f<0)f=f; return f;}double abs(double d){if(d<0)returnd;return d;)三個函數都是求絕對值,采用同一個函數名,更符合人們的習慣(這一點在C 語言和其它語言中是不允許的。它們規(guī)定,在同一個程序塊中一個名字只允許有一種含義)。在程序中經常出現這樣的情況:對若干種不同的數據類型求和,雖然數據本身差別很大(例如整數求和,向量求和,矩陣求和),具體的求和操作差別也很大,但完成不同求和操作的函數卻可以取相同的名字(例如sum,add 等)。許多差別很大的打印函數可以都用名print,顯示函數可以都用display,從鍵盤或文件獲取信息都稱作get,發(fā)送稱為send,接收稱為receive 等等。函數名的重載并不是為了節(jié)省標識符(標識符的數量是足夠的),而是為了方便程序員的使用,這一點很重要。實現函數的重載必須滿足下列條件之一:(1)參數表中對應的參數類型不同;(2)參數表中參數個數不同;(3)參數表中不同類型參數的次序不同。例如:void print(int); //整型void print(point); //類point 的對象int sum(int ,int);int sum(int ,int ,int);int get(int n,float a[ ]);int get(int n,float a[ ],int n);在定義同名函數時應注意:(1)返回類型不能區(qū)分函數,例如:float add(int float);int add(int float); //錯誤在調用時系統(tǒng)無法區(qū)分選擇對應函數。(2)采用引用參數不能區(qū)分函數,例如:void print(double);void print(double&)。 //錯誤void print(const double&); //錯誤(3)有些派生基本類型的參數雖然可以區(qū)分同名函數,但在使用中必須注意,例如:int abs(int);unsigned int abs(unsigned int);對這種函數的調用必須注意:int a=3,b;unsigned int c=5,d;調用語句b=abs(a);d=abs(c);b=abs(3);b=abs(3);d=abs(3*a);其中abs(3)因實參3 既可以是int 型,也可以unsigned int 型,故這里可能出現二義性。(4)包含可缺省參數時,可能造成二義性,例如:int sum(int a,int b,int c=0);int sum(int a,int b);程序設計中應避免這種情形出現。上面的二義性的情形是指系統(tǒng)面對某一函數調用語句,有兩個或兩個以上同名函數與之匹配;而另一種情況下,由于數據類型之間的復雜轉換關系也可能造成找不到與之匹配的函數定義。遇到無準確匹配的函數定義時,C++系統(tǒng)并不馬上按出錯處理,它按下面的方式處理:(1)通過數組名與指針變量,函數名與函數指針,某類型變量與const 常量之間的轉換,再查是否可實現匹配;(2)把實參類型從低到高(按字長由短到長)進行基本類型及其派生類型的轉換,再檢查是否可匹配;(3)查有無已定義的可變個數參數的函數,如有把它歸為該函數。在進行上述嘗試性的處理之后可能出現仍無匹配或匹配不唯一的情況,這時可能輸出出錯信息或錯誤地運行。課題09: 指針一、教學目標: 二、教學重點: 1.選擇排序算法 2.指針變量的定義三、教學難點: 1.指針變量的基本運算四、課時安排: 2節(jié)課五、教具準備: 多媒體教室六、教學方法: 講授七、教學過程: (一)、復習導入 在前面的學習中,我們曾引入數組類型,它與本章介紹的指針和引用類型是C++語言提供的三種導出類型,正確靈活地使用數組,指針和引用類型,是設計高質量的C++程序所必經掌握的技術。結構在只有數據成員時,也是一種導出數據類型,不過,C++語言允許用戶為結構設計函數成員,實際上是用戶為該結構類型設計的運算,因此,結構也是用戶定義的類或類型。C++程序中所處理的數據主要以變量(和對象)的形式出現。每個變量有兩個最主要的屬性,那就是變量的內容和地址。下面我們將舉例說明指針的概念及應用。 (二)、講授新課選擇排序算法 首先我們來看看一個選擇排序算法。排序的任務是把已經存在一個數組里的n 個數按從大到小的順序排列,可以采用多種不同的方法實現,選擇排序算法的思路簡單,容易理解,每次總是從無序的序列中選出最大者,交換到序列的左端,于是,無序的序列越來越短,經過n1 步,達到排序的目的。演示工程SelectSort。主函數做了三件事:1)為長度為n 的數組list[n]輸入n 個隨機數,作為排序算法處理的對象,程序中取n=20,是為了顯示輸出結果方便,也可取n=1000 或更大,實際輸入的值是整數也是為了顯示清楚。利用庫函數rand()產生偽隨機數形成無序數組,由用戶輸入一個隨機數(例如6523)作為“seed”可使無序數組的20 個數的隨機性較好。2)調用函數ssort()進行排序。3)把經過排序的數組list[20]的值輸出。在上面的例子中我們用到了指針,下面我們就來看看指針類型的語法規(guī)則。指針類型 指針變量說明指針類型的變量說明格式為:〈類型名〉*〈指針變量名〉=〈初值〉;類型名:任一基本類型名,基本類型的派生類型名,用戶定義的類﹑枚舉類型﹑結構及聯(lián)合類型名。類型名為void 時,稱為不確定類型的指針類型。類型名也可以是由〈類型名〉*表示的指針類型名,這時稱為多級指針(指針類型的指針)。符號*:表示其后說明的變量為指針變量(這里的”*”不是運算符)。指針變量名:標識符。初值:可缺省。它可以是該類型的某一變量的地址。eg,int *ptr。float a=, b, c[4]。 float * pa=amp。a。float *p[2]={amp。a, amp。b}。float *pn=NULL。float *pc=c。float *pf=new float。point *pp。 指針變量的操作1.取地址運算amp。和取內容運算*取地址運算為一單目運算,運算符為amp。,例如:int a=3,*pa=amp。a。其中amp。a 表示變量a 的地址。它可
點擊復制文檔內容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1