自 我 學 習 評 量 問 卷
你知道什麼是程式嗎?
你知道在電腦裡程式佔什麼地位嗎?
你知道 C 語言在諸多電腦裡地位為何嗎?
你知道學 C 語言和學 FORTRAN 語言或是 PASCAL 語言有何不同嗎?
你知道 MS WINDOWS 95 是什麼語言寫成的? WINDOWS/NT 呢? UNIX 呢?
-------------------------------
你知道程式語言除了可以控制電腦裡所有元件 (實體或是抽象) 外還可以建構運算模型 (例如: 3D 模擬飛行,人嘴巴講話,耳朵聽話,水流 / 氣流作用,工程應力...) 嗎?
你知道一個程式都有一個進入點 / 開始執行的地方嗎?
你知道
int main() {}
是一個函式嗎? 其中 int 是型態? {} 標明函式的範圍嗎?
你知道 1.5 + 1 在程式裡會做資料形態的轉換嗎?
你知道 int variable; 代表有一個變數它的型態是整數?
-------------------------------
在 C 程式中若使用 float variable; 代表有一個變數它可以儲存有小數點的實數 (在程式語言中我們稱它為浮點數)? 整數為實數的部分集合,有實數就夠了為什麼要有整數呢?
你知道變數的意義嗎? 變數和代數中的未知數有什麼關係嗎? 你知道 x=x+1 是什麼意思嗎, 你知道 x==x+1 是什麼意思嗎?
你知道
if(a==5) printf("a is 5/n"); else printf("a is not 5\n");
這段程式意義嗎? 你會使用 printf(), scanf(), getc(), getchar(), putc(), putchar(), gets(), puts() 這些函式嗎?
你知道
factorial=1; for (i=2; i<10; i=i+1) factorial = factorial * i;
做什麼事嗎?
你知道
#include <math.h> ... long factorial; factorial = 1; for (i=2; i<20; i=i+1) { factorial = factorial * i; if (factorial < 0) break; }
做了什麼事嗎?
-------------------------------
你知道 i++ 與 ++i 的差異嗎?
你知道
factorial = 1; i = 2; while (i <= 10) { factorial = factorial * i; i = i + 1; }
做了什麼事嗎? 和前一題的 for 迴圈敘述有什麼不一樣嗎?
你知道 20 * a * b + 1.5 - d / a 依何種順序運算嗎?
你知道上面的運算除了 +, -, *, / 之外,還有格式的轉換嗎?
你知道 int x[10]; 的意義嗎? 為何要有這種東西?
-------------------------------
你知道
int square(int x) { return x * x; }
是一個函式嗎?
你知道函式中最主要的兩個功能是 a.節省重複的程式碼 b.隔絕操作的細節(模組化,封裝)嗎?
你知道 C 是一個程序式 (procedural) 的程式語言嗎?
你知道 C 程式基本上處理資料的程序和被處理的資料是程式的兩面嗎?
你知道程序可以用流程圖表示? 資料可以用資料流程圖表示? 你知道我們在意的是資料處理的結果, 因此資料流程圖其實清楚地表達程式運作的狀態? 你知道撰寫程式時會發生兩種型式的錯誤 (編譯和執行的錯誤) 嗎?
-------------------------------
你知道函式呼叫時傳值 (call by value) 和傳址 (call by address) 的差別嗎?
你知道定義一個變數以後有一定的使用範圍嗎? 你知道內層同名的變數會遮蓋住外層同名的變數嗎?
你知道常數變數 (const) 和常數 (literal) 的差別嗎?
你知道 static variable 的意義嗎?
你知道下列程式碼是 recursive 嗎?
int fact(int n) { if (n <= 1) return 1; else return n * fact(n-1); }
設計一個 recursive 函式最需要注意的是什麼呢?
-------------------------------
你知道 #include <xxx> 和 #include "xxx" 的差異嗎?
你知道 #define sqr(x) x*x 是一個 (MACRO) 巨集嗎? 你知道這個巨集在處理 sqr(a+1) 時會有什麼問題嗎?
你知道什麼是 top-down design 嗎? 你知道什麼是模組結構圖嗎 (structural chart)?
你會用 assert() 嗎?
你知道 typedef int INT; 和 #define INT int 間的差異嗎?
-------------------------------
你知道 typedef int (*FP)(int, float*); 的意義嗎?
你知道 parallel array 嗎?
你知道 struct 取代 parallel array 有什麼最大好處嗎?
你知道 int *ptr; 是什麼意思嗎?
你知道動態配置記憶體 malloc(), calloc() 與 free() 嗎?
-------------------------------
你知道為什麼要動態配置記憶體嗎? 否則 1.程式需要事先知道資料的個數, 2.變數的生命週期由程式設計者掌握?
你知道什麼叫 wild pointer 嗎? 那麼什麼是 dangling reference 呢? 那麼什麼又是 memory leakage 呢?
你知道函式可以當作是資料來處理嗎?
你知道 int *x[10]; 與 int (*x)[10]; 的差異嗎?
你知道 const int * ptrConstInt; 與 int const * ptrConstInt; 與 int * const constPtrToInt = &x; 三者的差異嗎?
-------------------------------
你知道在函式參數宣告時使用 int anyFunction(int *ary) 和 使用 int anyFunction(int ary[]) 有什麼差異嗎?
你知道 double **x; 的宣告裡變數 x 的型態和 double *y[5]; 的宣告裡變數 y 的型態 (除了 y 是常數之外) 是完全一樣嗎? 另外 double (*r)[5]; 的宣告裡變數 r 的型態和 double s[50][5]; 的宣告裡變數 s 的型態 (除了 s 是常數之外) 也是完全一樣的嗎? 更重要的是這兩組是不一樣的, 不能混在一起使用。
你知道如何使用 stdio.h 內的 FILE, fopen(), fclose() 嗎?
你知道如何使用 stdio.h 內的 fprintf(), fscanf(), fwrite(), fread() 嗎?
你知道什麼是 packed structure 嗎?
-------------------------------
你知道如何使用 stdio.h 內的 sprintf(), sscanf() 嗎?
你知道如何使用 stdlib.h 內的 srand() 及 rand() 函式嗎?
你知道什麼是狀態圖嗎?
你知道 static 這個保留字在 C 有兩種完全不一樣的用法嗎?
-------------------------------
回
程式設計課程
首頁
製作日期: 09/13/2008 by 丁培毅 (Pei-yih Ting)
E-mail:
pyting@mail.ntou.edu.tw
TEL: 02 24622192x6615
海洋大學
電機資訊學院
資訊工程學系
Lagoon