自 我 學 習 評 量 問 卷

  1. 你知道什麼是程式嗎?
  2. 你知道在電腦裡程式佔什麼地位嗎?
  3. 你知道 C 語言在諸多電腦裡地位為何嗎?
  4. 你知道學 C 語言和學 FORTRAN 語言或是 PASCAL 語言有何不同嗎?
  5. 你知道 MS WINDOWS 95 是什麼語言寫成的? WINDOWS/NT 呢? UNIX 呢?
  6. -------------------------------

  7. 你知道程式語言除了可以控制電腦裡所有元件 (實體或是抽象) 外還可以建構運算模型 (例如: 3D 模擬飛行,人嘴巴講話,耳朵聽話,水流 / 氣流作用,工程應力...) 嗎?
  8. 你知道一個程式都有一個進入點 / 開始執行的地方嗎?
  9. 你知道 int main() {} 是一個函式嗎? 其中 int 是型態? {} 標明函式的範圍嗎?
  10. 你知道 1.5 + 1 在程式裡會做資料形態的轉換嗎?
  11. 你知道 int variable; 代表有一個變數它的型態是整數?
  12. -------------------------------

  13. 在 C 程式中若使用 float variable; 代表有一個變數它可以儲存有小數點的實數 (在程式語言中我們稱它為浮點數)? 整數為實數的部分集合,有實數就夠了為什麼要有整數呢?
  14. 你知道變數的意義嗎? 變數和代數中的未知數有什麼關係嗎? 你知道 x=x+1 是什麼意思嗎, 你知道 x==x+1 是什麼意思嗎?
  15. 你知道 if(a==5) printf("a is 5/n"); else printf("a is not 5\n");

    這段程式意義嗎? 你會使用 printf(), scanf(), getc(), getchar(), putc(), putchar(), gets(), puts() 這些函式嗎?

  16. 你知道 factorial=1; for (i=2; i<10; i=i+1) factorial = factorial * i; 做什麼事嗎?
  17. 你知道 #include <math.h> ... long factorial; factorial = 1; for (i=2; i<20; i=i+1) { factorial = factorial * i; if (factorial < 0) break; } 做了什麼事嗎?
  18. -------------------------------

  19. 你知道 i++ 與 ++i 的差異嗎?
  20. 你知道 factorial = 1; i = 2; while (i <= 10) { factorial = factorial * i; i = i + 1; } 做了什麼事嗎? 和前一題的 for 迴圈敘述有什麼不一樣嗎?
  21. 你知道 20 * a * b + 1.5 - d / a 依何種順序運算嗎?
  22. 你知道上面的運算除了 +, -, *, / 之外,還有格式的轉換嗎?

  23. 你知道 int x[10]; 的意義嗎? 為何要有這種東西?
  24. -------------------------------

  25. 你知道 int square(int x) { return x * x; } 是一個函式嗎?
  26. 你知道函式中最主要的兩個功能是 a.節省重複的程式碼 b.隔絕操作的細節(模組化,封裝)嗎?
  27. 你知道 C 是一個程序式 (procedural) 的程式語言嗎?
  28. 你知道 C 程式基本上處理資料的程序和被處理的資料是程式的兩面嗎?
  29. 你知道程序可以用流程圖表示? 資料可以用資料流程圖表示? 你知道我們在意的是資料處理的結果, 因此資料流程圖其實清楚地表達程式運作的狀態? 你知道撰寫程式時會發生兩種型式的錯誤 (編譯和執行的錯誤) 嗎?
  30. -------------------------------

  31. 你知道函式呼叫時傳值 (call by value) 和傳址 (call by address) 的差別嗎?
  32. 你知道定義一個變數以後有一定的使用範圍嗎? 你知道內層同名的變數會遮蓋住外層同名的變數嗎?
  33. 你知道常數變數 (const) 和常數 (literal) 的差別嗎?
  34. 你知道 static variable 的意義嗎?
  35. 你知道下列程式碼是 recursive 嗎?
  36. int fact(int n) { if (n <= 1) return 1; else return n * fact(n-1); } 設計一個 recursive 函式最需要注意的是什麼呢?

    -------------------------------

  37. 你知道 #include <xxx> 和 #include "xxx" 的差異嗎?
  38. 你知道 #define sqr(x) x*x 是一個 (MACRO) 巨集嗎? 你知道這個巨集在處理 sqr(a+1) 時會有什麼問題嗎?
  39. 你知道什麼是 top-down design 嗎? 你知道什麼是模組結構圖嗎 (structural chart)?
  40. 你會用 assert() 嗎?
  41. 你知道 typedef int INT; 和 #define INT int 間的差異嗎?
  42. -------------------------------

  43. 你知道 typedef int (*FP)(int, float*); 的意義嗎?
  44. 你知道 parallel array 嗎?
  45. 你知道 struct 取代 parallel array 有什麼最大好處嗎?
  46. 你知道 int *ptr; 是什麼意思嗎?
  47. 你知道動態配置記憶體 malloc(), calloc() 與 free() 嗎?
  48. -------------------------------

  49. 你知道為什麼要動態配置記憶體嗎? 否則 1.程式需要事先知道資料的個數, 2.變數的生命週期由程式設計者掌握?
  50. 你知道什麼叫 wild pointer 嗎? 那麼什麼是 dangling reference 呢? 那麼什麼又是 memory leakage 呢?
  51. 你知道函式可以當作是資料來處理嗎?
  52. 你知道 int *x[10]; 與 int (*x)[10]; 的差異嗎?
  53. 你知道 const int * ptrConstInt; 與 int const * ptrConstInt; 與 int * const constPtrToInt = &x; 三者的差異嗎?

    -------------------------------

  54. 你知道在函式參數宣告時使用 int anyFunction(int *ary) 和 使用 int anyFunction(int ary[]) 有什麼差異嗎?

  55. 你知道 double **x; 的宣告裡變數 x 的型態和 double *y[5]; 的宣告裡變數 y 的型態 (除了 y 是常數之外) 是完全一樣嗎? 另外 double (*r)[5]; 的宣告裡變數 r 的型態和 double s[50][5]; 的宣告裡變數 s 的型態 (除了 s 是常數之外) 也是完全一樣的嗎? 更重要的是這兩組是不一樣的, 不能混在一起使用。

  56. 你知道如何使用 stdio.h 內的 FILE, fopen(), fclose() 嗎?
  57. 你知道如何使用 stdio.h 內的 fprintf(), fscanf(), fwrite(), fread() 嗎?
  58. 你知道什麼是 packed structure 嗎?
  59. -------------------------------

  60. 你知道如何使用 stdio.h 內的 sprintf(), sscanf() 嗎?
  61. 你知道如何使用 stdlib.h 內的 srand() 及 rand() 函式嗎?
  62. 你知道什麼是狀態圖嗎?
  63. 你知道 static 這個保留字在 C 有兩種完全不一樣的用法嗎?

-------------------------------

程式設計課程 首頁

製作日期: 09/13/2008 by 丁培毅 (Pei-yih Ting)
E-mail: pyting@mail.ntou.edu.tw TEL: 02 24622192x6615
海洋大學 電機資訊學院 資訊工程學系 Lagoon