程式設計經驗分享 以C++期中考試題為例 Hello World 別看貓沒點

Download Report

Transcript 程式設計經驗分享 以C++期中考試題為例 Hello World 別看貓沒點

程式設計經驗分享
以C++期中考試題為例
Hello World
別看貓沒點
After Hello World!!!
卡關????
破關方法
Ctrl + C
Ctrl + V
語言學習階段
1. 語法
2. 風格
3. 演算法
跟語言本身有關
跟人有關
跟運算效能有關
語法
1. 千萬不要背語法
2. 考試 Open Book!!!
3. 實務上 Open Book!
演算法
1. 除非你打算做這行
2. 成為一個好的程式設計員:
1. 花10年每天寫程式
2. 學好演算法花兩年每天寫
風格 Style
1.
2.
養成好的習慣,習慣會跟著你一輩子
課本和老師通常不教
Style
Simple and Elegant
Simple
Short and Easy
Short
Neat 乾淨簡潔
Easy
Easy to write
*** Easy to read ***
Hard to Read
Bad
int temp;
for(int i = 0; i < size; i++){
for(int j = size - 1; j > i; j--){
if(arr[ j - 1] > arr[ j]){temp = arr[ j-1];
arr[ j-1] = arr[ j];
arr[ j] = temp;}}}
//WTF????
Easy to Read
good
int temp;
for(int i = 0; i < size; i++){
for(int j = size - 1; j > i; j--){
if(arr[ j - 1] > arr[ j]){
temp = arr[ j-1];
arr[ j-1] = arr[ j];
arr[ j] = temp;
}
}
}
如何提高程式的可讀性
1. 縮排
2. 命名
3. 註解
命名
如果你不會命名你的
變數,常數,函示。
就代表你不會寫程式
命名
good
bad
double PI=3.14159;
double area, r;
double a=3.14159;
double b, c;
100 行之後
100 行之後
area = PI * r * r;
b= a * c * c; //wtf?????
註解
1.
2.
3.
4.
註解跟調味料一樣
別加太多調味料浪費高貴的食材
過多的註解讓程式更難閱讀
適當的命名, 可減少註解
註解的其他妙用
註解可以用來暫時停止某些執行命令句
// area = PI * r * r;
area = PI * r ** 2;
註解的其他妙用
記錄待辦事項:
//下面的函式, 等看完布袋戲再說
void BubbleSort(int arr[], int size){}
程式可讀性
Debug(time) = coding(time) * 2
Maintain(time) = debug(time) * 10
Style 不好,請至少在上面的時間乘兩倍
再爛的話,砍掉重練
程式可讀性
出來混,欠人家
的總有一天要還
Elegant
Right tools
Right place
Right time
Elegant
1. 計次用 for loop
2. 不計次用 while
當你只會用鐵鎚,全世界的東西你
都會看成是釘子
題目
1.
2.
3.
4.
自選或電腦選六個1~49的號碼
排序顯示所選及電腦開獎號碼
顯示抽中多少個號碼
結束後讓使用者選擇繼續或退出
After Hello World!!!
卡關????
柿子挑軟的吃
什麼樣的柿子是軟的
1. 你會的
2. 常用的
史丹佛 while 迴圈
while(true){
// Do something
if(結束條件==true) break;
// Do something
}
do while 迴圈
do{
// Do something
// 超級複雜的運算
}while(結束條件!=true);
史丹佛 while 迴圈
while(true){
// Do something
if(結束條件==true) break;
//超級複雜的運算
}
史丹佛 while 迴圈
別再使用Do while 迴圈
解決複雜問題的策略
Divide and Conquer
How to eat an elephant?
How to eat an elephant?
One bite at a time.
function
愛你的函式
許函式一個美好的未來
function
1. 切割工作用的(給main呼叫的)
2. 常常會使用到的
function
1. 養成好習慣, 別省略掉函式的宣告
2. 宣告放在 main()之前
3. 定義放在 main()之後
Function的設計
1. 貪多嚼不爛 :
function 只作一件事,
單純簡單的事
2. 名實相符 :
function的名字=它所做的事
3. 越短越好 :
初學者不應超過10行程式碼