程式設計實習第十三次上課 傅榮勝.

Slides:



Advertisements
Similar presentations
變數與函數 大綱 : 對應關係 函數 函數值 顧震宇 台灣數位學習科技股份有限公司. 對應關係 蛋餅飯糰土司漢堡咖啡奶茶 25 元 30 元 25 元 35 元 25 元 20 元 顧震宇 老師 台灣數位學習科技股份有限公司 變數與函數 下表是早餐店價格表的一部分: 蛋餅 飯糰 土司 漢堡 咖啡 奶茶.
Advertisements

第一單元 建立java 程式.
Introduction to C Programming
計算機程式語言實習課.
“八皇后”问题 崔萌萌 吕金华.
陣列與字串 Java陣列特性 一維陣列 多維陣列 字串 字串的相關函數 字串緩衝器類別.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
Views ,Stored Procedures, User-defined Function, Triggers
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
C語言中可變参數的用法——va_list、va_start、va_arg、va_end参數定義
Chapter 5 遞迴 資料結構導論 - C語言實作.
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
101北一女中 資訊選手培訓營 快速排序函式qsort() Nan.
快速排序法 (Quick Sort).
String C語言-字串.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
C語言簡介 日期 : 2018/12/2.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
CLASS 5 指標.
Chapter 7 指標.
指標 林錦財.
(Circular Linked Lists)
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
程式設計實習第六次上課 傅榮勝.
程式設計實習 傅榮勝.
第3章 指標與字串 (Pointers and Strings)
Java 程式設計 講師:FrankLin.
程式設計實習第九次上課 傅榮勝.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
程式設計實習課(四) ----C 函數運用----
Topic Introduction—RMI
第一單元 建立java 程式.
陣列(Array).
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
程式設計實習第十四次上課 傅榮勝.
C++ 程式初探 III.
|07 函數.
第十章 指標.
函數的進階應用 10 戰勢不過奇正,奇正之變,不可勝窮也。 奇正相生,如循環之無端,孰能窮之哉! 《孫子兵法﹒勢篇》
第7章 指標 7-1 指標的基礎 7-2 指標變數的使用 7-3 指標運算 7-4 指標與陣列 7-5 指向函數的指標.
挑戰C++程式語言 ──第8章 進一步談字元與字串
向量 (vector) 就是典型的一維陣列,而更高維的矩陣,例如矩陣 (matrix) 和張量 (tensor) 則分別是二維和三維的陣列。
函數 博碩文化出版發行.
C qsort.
MiRanda Java Interface v1.0的使用方法
函數應用(二)與自定函數.
陣列與結構.
指標、串列 (Linked List).
指標 (pointer) 是一種特別的資料型態,用來儲存某一資料在記憶體內的位址。
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
實習八 函式指標.
1757: Secret Chamber at Mount Rushmore
程式設計--Quick Sort 通訊一甲 B 楊穎穆.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
第十三章 彩色影像處理.
程式設計實習第十二次上課 傅榮勝.
作業系統實習課(二) -Scheduler-Related System Calls-
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
Chapter 4 Multi-Threads (多執行緒).
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
隨機函數.
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

程式設計實習第十三次上課 傅榮勝

Jung-Sheng Fu, DEE, NUU, ROC 再次提醒下週小考 下個禮拜6/10上機小考 考試分兩個時段: 4:10~5:00 U9822118曾樺陽(含)之前 5:10~6:00 U9822120 王裕意(含)之後 Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 範例: 請寫一個函式,其參數如下: 一陣列 此陣列的長度 函式的傳回值為此陣列長度的最大值之駐標,如陣列A為{1,2,6,3,2},則會傳回2,因為A[2] = 6 在main function中,先用用亂數產生一個100個元素值為0~100的值之陣列,再呼叫本題的函式找出最大值元素的駐標。 Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 範例 如果上題中除了要傳回最大元素的index之外,也要傳回最大值,該如何做? 請注意,我們只能有一個傳回值。 所以,只能使用參數來接收,但此參數的使用必須使用參考引用或傳址引用,在此我們用較簡單的參考引用。 問題:為什麼陣列不用&就可以用參數來接收或改變值? Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 講解上次作業 有些同學上傳的相似度極高,請說明 P(n, r) = n (n  1)  … (n  r +1)表示從n個人中選取r個來排隊的方法數。 請寫一個遞迴函式會傳回P(n, r)之值 使用二分法的遞迴函式解出aq % n。 Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 一維陣列的排序處理 (Sorting) 使用一維陣列時,常常會有需要將陣列的資料依序排列的問題,如:由小到大排序或由大到小排序。 在此,若時間允許,我們介紹一種常見的最影單的排序方法(但效能較差): 汽泡排序法 叫用標準函式庫的函式可以省去自己重新寫程式的麻煩。 Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 汽泡排序法 汽泡排序法是一種最容易了解的排序方法,這個方法的運作邏輯為將兩個相臨的汽泡(元素)做比較,比較大的汽泡(元素)就往上浮(右移)。 Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 汽泡排序法 資料交換 (例:bubble.cpp ) Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 叫用函式庫內建的排序函式qsort Qsort的排序效能遠高於汽泡排序法,但稍複雜,有興趣的同學可選修資料結構作進一步的了解。 在此我們要學著使用呼叫標準函式庫的qsort。 函式庫中的qsort可以 支援所有的資料型別(double,int,…等等), 而且可以定義比較大小的規則,而此規則必須是一個函數,也就是說要用另一個函數當成是它的參數 但怎麼可以另函數當參數呢?替代方法是用函數指標當參數 因此使用qsort的概念有些複雜,但很重要,請仔細認真聆聽。今天沒有習題,只要照著老師一步步完成並存檔, Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 函數指標 指標不一定要指向資料,它也可以指向函數,稱為函數指標(function pointer)。 對於一個函數而言,其名稱即是一個函數指標,永遠指向函數的開頭處。 宣告函數指標的語法如下: 資料型態 (*函數指標)(參數串列); Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 快速排序法 qsort()函數的雛型如下: #include <stdlib.h> void qsort( void *base, size_t nelem, size_t width, int (*fcmp)(const void *e1, const void *e2) ); 其中base指向欲被排序的陣列之開頭處,nelem為陣列的大小, width為每個陣列元素所佔的記憶體空間。 而fcmp則為函數的指標,指向一個使用者自定的比較函數,而該函數的參數為指標,分別指向陣列中的兩個元素,假如 e1>e2 則傳回一正整數,若e1=e2則傳回0,若e1<e2則傳回一個負數。 Jung-Sheng Fu, DEE, NUU, ROC

定義快速排序法的比較函數 – 以整數元素為例 int compare(const void *a, const void *b) { int x, y; x = *((int*)a); //先將指標轉換為正確的指標(整數指標) y = *((int*)b); if( x > y ) return( 1 ); //較大時傳回 +1 if( x < y ) return( -1 ); //較小時傳回 -1 return( 0 ); //相等時傳回0 } 雛型:int (*fcmp)(const void *e1, const void *e2); Jung-Sheng Fu, DEE, NUU, ROC

Jung-Sheng Fu, DEE, NUU, ROC 使用快速排序法 – 以整數陣列為例 #include <stdlib.h> … int compare(const void*a, const void *b); int main() { int i, j, n, temp; int num[10]; qsort(num, 10, sizeof(int), compare ); //呼叫快速排序法 } Jung-Sheng Fu, DEE, NUU, ROC