"課程:程式設計" 修訂間的差異
(新頁面: =課程資源=<br>*成績冊<br>*課程投影片<br>*原課程網址(參考)<br>*程式設計課程臉書社團<br> 電腦被廣泛地應用在各行各業,從科學、商業、個...) |
|||
行 1: | 行 1: | ||
− | =課程資源= | + | =課程資源= |
+ | *成績冊 | ||
+ | *課程投影片 | ||
+ | *原課程網址(參考) | ||
+ | *程式設計課程臉書社團 | ||
+ | 電腦被廣泛地應用在各行各業,從科學、商業、個人、學習等都可看到各式各樣的程式(在行動裝置上程式被稱作App),學習程式撰寫在於學習程式語言工具如何被用來解決各領域的問題,本章列出所有的問題,分析問題,並且告知可用何種程式語言元素來解決,透過連結來存取解決問題所需程式元素的說明,建立起該程式元素的應用技巧與知識。 | ||
− | + | =課程大綱= | |
− | + | ==課程簡介== | |
− | + | 使學生熟悉結構化之程式語言並學習設計C++程式之過程以建立C++程式設計之能力。 | |
− | + | ==教學目標== | |
− | + | 1. 熟悉結構化之程式語言。 | |
− | + | 2. 學習設計程式之過程。 | |
− | + | 3. 建立程式設計之能力。 | |
− | + | 4. 培養學生操作電腦之能力。 | |
− | + | 5. 利於學生獲得相關證照之取得。 | |
− | + | 6. 增加學生對程式設計之興趣。 | |
− | + | 7. 激發學生利用程式設計之能力輔助日後相關課程之學習。 | |
+ | ==指定書目== | ||
+ | 快速掌握C++程式設計, 文淵閣工作室編著, 文魁行銷股份有限公司, ISBN-13:978-986-620-612-2 。 | ||
+ | ==參考書目/資料== | ||
+ | 程式設計電腦輔助學習教材(上網學習) | ||
+ | ==教學進度== | ||
+ | 第 1週 | ||
+ | (02/19-02/24) | ||
+ | 學期進度說明、評分方式,前學期課程回顧 | ||
+ | 第 2週 | ||
+ | (02/25-03/03) | ||
+ | 變數型態及範圍 | ||
+ | 第 3週 | ||
+ | (03/04-03/10) | ||
+ | 指標變數與傳址呼叫 | ||
+ | 第 4週 | ||
+ | (03/11-03/17) | ||
+ | 遞迴 | ||
+ | 第 5週 | ||
+ | (03/18-03/24) | ||
+ | 結構與同位-1 | ||
+ | 第 6週 | ||
+ | (03/25-03/31) | ||
+ | 結構與同位-2 | ||
+ | 第 7週 | ||
+ | (04/01-04/07) | ||
+ | 檔案輸入與輸出-1 | ||
+ | 第 8週 | ||
+ | (04/08-04/14) | ||
+ | 檔案輸入與輸出-2 | ||
+ | 第 9週 | ||
+ | (04/15-04/21) | ||
+ | 期中考試(筆試與上機考試) | ||
+ | 第 10週 | ||
+ | (04/22-04/28) | ||
+ | 檔案輸入與輸出-3 | ||
+ | 第 11週 | ||
+ | (04/29-05/05) | ||
+ | 檔案輸入與輸出-4 | ||
+ | 第 12週 | ||
+ | (05/06-05/12) | ||
+ | 應用程式設計-成績檔輸入、統計、報表、成績檔輸出 | ||
+ | 第 13週 | ||
+ | (05/13-05/19) | ||
+ | 應用程式設計-成績檔輸入、統計、報表、成績檔輸出 | ||
+ | 第 14週 | ||
+ | (05/20-05/26) | ||
+ | 物件導向程式設計基礎-類別與物件 | ||
+ | 第 15週 | ||
+ | (05/27-06/02) | ||
+ | 物件導向程式設計基礎-類別與物件 | ||
+ | 第 16週 | ||
+ | (06/03-06/09) | ||
+ | 物件導向程式設計基礎-繼承 | ||
+ | 第 17週 | ||
+ | (06/10-06/16) | ||
+ | 物件導向程式設計基礎-多重繼承 | ||
+ | 第 18週 | ||
+ | (06/17-06/23) | ||
+ | 包括筆試與上機考試 | ||
+ | 評分方法 | ||
+ | ‧ 平常成績 30% (到課率、作業、小考等) | ||
+ | ‧ 期中考 30% | ||
+ | ‧ 期末考 40% | ||
+ | =程式問題解決中心 (Problem Solving Center)= | ||
+ | =基本與數學問題== | ||
+ | ==因數的判斷(易)== | ||
+ | 問題:求一數f是否為某數N的因數,也就是說,f是否能整除N。 | ||
+ | 做法:整除的判斷即檢查N被f除後,餘數是否為0。在C/C++中,求餘數的運算子為%。 | ||
+ | 程式範例解答 | ||
+ | #include <iostream> | ||
+ | using namespace std; | ||
+ | void main(){ | ||
+ | float f, N; | ||
+ | cout<<"請輸入N(被除數)與f(除數)" | ||
+ | cin>>f >> n; | ||
+ | if(N%f == 0){ | ||
+ | cout<< cout << f << "可整除" << N << endl; | ||
+ | } | ||
+ | system("pause"); | ||
+ | } | ||
+ | ==閏年的判斷(易)== | ||
+ | 問題:公元年哪時候二月會閏月? | ||
+ | 做法:判斷y是否被400整除,可以被4整除不被100整除。 | ||
+ | 程式範例解答 | ||
+ | #include <iostream> | ||
+ | using namespace std; | ||
+ | void main(){ | ||
+ | int year; | ||
+ | cout<<"請輸入年份" | ||
+ | cin>>year; | ||
+ | if(year%=400==0)||(year%4==0&&year%100!=0){ | ||
+ | cout<< "西元" << year << "年是閏年" << endl; | ||
+ | } | ||
+ | else{ | ||
+ | cout<< "西元" << year << "年是閏年" << endl; | ||
+ | } | ||
+ | system("pause"); | ||
+ | } | ||
+ | ==質數的判斷(中)== | ||
+ | 問題:一數N若為質數,N的因數僅有1與本身數N,也就是說若2~(N-1)中有N之因數(可整除N),那麼N即不是質數。 | ||
+ | 做法: | ||
+ | 1.使用一個布林變數isPrime,初值為true(此布林變數表示N是否為質數,程式一開始先認定N為質數) | ||
+ | (迴圈開始) | ||
+ | 2.使用一迴圈敘述,使用迭代變數i,下限值為2,上限值為N-1,若i可整除N,設定isPrime為false,跳出迴圈 | ||
+ | (迴圈結束) | ||
+ | 3.判斷isPrime為true輸出N為"質數",否則,輸出輸出N為"不是質數"。 | ||
+ | 程式範例解答 | ||
+ | #include <iostream> | ||
+ | using namespace std; | ||
void main(){ | void main(){ | ||
− | + | int N = 11; | |
− | int N = 11; | + | int i = 2; |
− | + | bool isPrime = true; | |
− | while (i | + | while (i <= N-1 && isPrime){ |
− | + | if (N % i == 0) { | |
− | if (isPrime){< | + | isPrime = false; |
− | + | break; | |
− | system("pause"); | + | } |
− | + | i++; | |
+ | } | ||
+ | if (isPrime){ | ||
+ | cout << "是質數"; | ||
+ | } else { | ||
+ | cout << "不是質數"; | ||
+ | } | ||
+ | system("pause"); | ||
+ | } | ||
+ | ==質因數(中+)== | ||
+ | 問題:印出一數N的質因數 | ||
+ | 做法: | ||
+ | 判斷2~(N-1)是否為N的因數,並且是否為質數 | ||
+ | (i迴圈開始) | ||
+ | 1.使用一迴圈敘述,使用迭代變數i,下限值為2,上限值為N-1,i若能整除N,則 | ||
+ | (j迴圈開始) | ||
+ | 1.1 使用一個布林變數isPrime,初值為true(此布林變數表示N是否為質數,程式一開始先認定N為質數) | ||
+ | 1.2 使用一迴圈敘述,使用迭代變數j,下限值為2,上限值為i-1,若j可整除i,設定isPrime為false,跳出j迴圈 | ||
+ | (j迴圈結束) | ||
+ | 1.3 若isPrime為tru則輸出j | ||
+ | (i迴圈結束) | ||
+ | 2.結束 | ||
+ | 程式範例解答 | ||
+ | #include <iostream> | ||
+ | using namespace std; | ||
+ | void main(void){ | ||
+ | int n; | ||
+ | cout<<"請輸入"; | ||
+ | cin>>n; | ||
+ | for(int i=2;i<= n-1;i++ ){ | ||
+ | if(n%i==0){ | ||
+ | bool Isprime=true; | ||
+ | for(int j=2;j<=i-1&& Isprime;j++){ | ||
+ | if(i%j==0){ | ||
+ | Isprime=false; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | if (Isprime){ | ||
+ | cout<<i<<endl; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | system("pause"); | ||
+ | } | ||
+ | 求一數的次方(易/中) | ||
+ | 問題:n的p次方 = 將n自乘p次。 | ||
+ | 迴圈解步驟: | ||
+ | 1. 宣告一浮點數 powerOfn = 1 | ||
+ | 2. 使用一個迴圈跑p次,powerOfn = powerOfn*n; (若p為負數,取其絕對值,也就是將p乘-1,可用stdlib裏的abs函式) | ||
+ | 3. 若p是負數,則powerOfn = 1/powerOfn; | ||
+ | 4. 印出powerOfn | ||
+ | 遞迴解 | ||
+ | ‧ 請看下面程式範例解答,追蹤一次。(請參考用遞迴做到迴圈效果的說明。) | ||
+ | 程式範例解答 | ||
+ | #include <cstdlib> | ||
+ | #include <iostream> | ||
+ | #include <stdlib.h> //為了使用abs取絕對值函式 | ||
using namespace std; | using namespace std; | ||
+ | float base_power(float b,int p) | ||
+ | { | ||
− | + | if(p==0) | |
− | + | return 1; | |
− | + | else if (p>0) | |
− | + | return base_power(b,p-1)*b; | |
− | + | else | |
− | + | return base_power(b,p+1)/b; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | 07 08 09 10 11 12 | + | } |
+ | float bp(float b, int p) | ||
+ | { | ||
+ | float r=1.0; | ||
+ | for (int i = 1; i <= abs(p); i++) r *= b; | ||
+ | if (p < 0) | ||
+ | r = 1/r; | ||
+ | return r; | ||
+ | } | ||
+ | void main(int argc, char *argv[]) | ||
+ | { | ||
+ | int base,power,result; | ||
+ | cout<<"請輸入base值"; | ||
+ | cin>>base; | ||
+ | cout<<"請輸入power值"; | ||
+ | cin>>power; | ||
+ | cout << base_power(base, power); | ||
+ | system("PAUSE"); | ||
+ | } | ||
+ | 完全數(中) | ||
+ | 公因數(中) | ||
+ | 公倍數(中) | ||
+ | 費式級數(中) | ||
+ | 九九乘法表(中) | ||
+ | 魔方陣(中++) | ||
+ | 巴斯卡三角形(中++) | ||
+ | 河內塔(難) | ||
+ | 字串操作 | ||
+ | 長度計算 | ||
+ | 尋找字元 | ||
+ | 字串串接 | ||
+ | 取子字串 | ||
+ | 字串反轉 | ||
+ | 字元出現次數統計 | ||
+ | 資料分級 | ||
+ | 考試分數 | ||
+ | 溫度 | ||
+ | 風速 | ||
+ | 資料排序 | ||
+ | 氣泡排序法 | ||
+ | 插入排序法 | ||
+ | 資料統計 | ||
+ | 成績總分 | ||
+ | 成績報表 | ||
+ | 銷售/生產統計 | ||
+ | 銷售/生產報表 | ||
+ | 商業應用 | ||
+ | 找零程式 | ||
+ | 各式時刻表 | ||
+ | 月曆 | ||
+ | 檢查碼的計算與驗證-身份證為例 | ||
+ | 成績報表 | ||
+ | 程式設計概念 | ||
+ | 電腦與程式 | ||
+ | 程式語言 | ||
+ | 程式執行環境 | ||
+ | 程式整合開發工具 | ||
+ | 程式基礎 | ||
+ | 輸出入敘述 | ||
+ | 變數與資料型態 | ||
+ | 程式敘述與運算子 | ||
+ | 選擇與判斷敘述 | ||
+ | 重覆敘述 | ||
+ | 格式化輸出敘述 | ||
+ | 陣列 | ||
+ | 字元與字串 | ||
+ | 函式與公用函式(一) | ||
+ | 程式進階 | ||
+ | 函式-遞迴呼叫與公用函式(二) | ||
+ | 指標與位址 | ||
+ | 指標與字串 | ||
+ | 指標與二維陣列 | ||
+ | 結構 | ||
+ | 物件導向程式設計基礎 | ||
+ | 物件與類別 | ||
+ | 方法多載 | ||
+ | 繼承與覆寫 | ||
+ | 程式觀念考題破解中心 | ||
+ | c++考題清單 | ||
+ | 基本程式語法 | ||
+ | 決策程式語法 | ||
+ | 迴圈 | ||
+ | 呼叫/遞迴 | ||
+ | 01 02 03 04 05 06 | ||
+ | 07 08 09 10 11 12 | ||
+ | 01 02 03 04 05 06 | ||
+ | 07 08 09 10 11 12 | ||
+ | 01 02 03 04 05 06 | ||
+ | 07 08 09 10 11 12 | ||
+ | 01 02 03 04 05 06 | ||
+ | 07 08 09 10 11 12 |
於 2013年3月15日 (五) 23:56 的修訂
目錄
課程資源
- 成績冊
- 課程投影片
- 原課程網址(參考)
- 程式設計課程臉書社團
電腦被廣泛地應用在各行各業,從科學、商業、個人、學習等都可看到各式各樣的程式(在行動裝置上程式被稱作App),學習程式撰寫在於學習程式語言工具如何被用來解決各領域的問題,本章列出所有的問題,分析問題,並且告知可用何種程式語言元素來解決,透過連結來存取解決問題所需程式元素的說明,建立起該程式元素的應用技巧與知識。
課程大綱
課程簡介
使學生熟悉結構化之程式語言並學習設計C++程式之過程以建立C++程式設計之能力。
教學目標
1. 熟悉結構化之程式語言。 2. 學習設計程式之過程。 3. 建立程式設計之能力。 4. 培養學生操作電腦之能力。 5. 利於學生獲得相關證照之取得。 6. 增加學生對程式設計之興趣。 7. 激發學生利用程式設計之能力輔助日後相關課程之學習。
指定書目
快速掌握C++程式設計, 文淵閣工作室編著, 文魁行銷股份有限公司, ISBN-13:978-986-620-612-2 。
參考書目/資料
程式設計電腦輔助學習教材(上網學習)
教學進度
第 1週 (02/19-02/24) 學期進度說明、評分方式,前學期課程回顧 第 2週 (02/25-03/03) 變數型態及範圍 第 3週 (03/04-03/10) 指標變數與傳址呼叫 第 4週 (03/11-03/17) 遞迴 第 5週 (03/18-03/24) 結構與同位-1 第 6週 (03/25-03/31) 結構與同位-2 第 7週 (04/01-04/07) 檔案輸入與輸出-1 第 8週 (04/08-04/14) 檔案輸入與輸出-2 第 9週 (04/15-04/21) 期中考試(筆試與上機考試) 第 10週 (04/22-04/28) 檔案輸入與輸出-3 第 11週 (04/29-05/05) 檔案輸入與輸出-4 第 12週 (05/06-05/12) 應用程式設計-成績檔輸入、統計、報表、成績檔輸出 第 13週 (05/13-05/19) 應用程式設計-成績檔輸入、統計、報表、成績檔輸出 第 14週 (05/20-05/26) 物件導向程式設計基礎-類別與物件 第 15週 (05/27-06/02) 物件導向程式設計基礎-類別與物件 第 16週 (06/03-06/09) 物件導向程式設計基礎-繼承 第 17週 (06/10-06/16) 物件導向程式設計基礎-多重繼承 第 18週 (06/17-06/23) 包括筆試與上機考試 評分方法 ‧ 平常成績 30% (到課率、作業、小考等) ‧ 期中考 30% ‧ 期末考 40%
程式問題解決中心 (Problem Solving Center)
基本與數學問題=
因數的判斷(易)
問題:求一數f是否為某數N的因數,也就是說,f是否能整除N。 做法:整除的判斷即檢查N被f除後,餘數是否為0。在C/C++中,求餘數的運算子為%。 程式範例解答
- include <iostream>
using namespace std; void main(){ float f, N; cout<<"請輸入N(被除數)與f(除數)" cin>>f >> n; if(N%f == 0){ cout<< cout << f << "可整除" << N << endl; } system("pause"); }
閏年的判斷(易)
問題:公元年哪時候二月會閏月? 做法:判斷y是否被400整除,可以被4整除不被100整除。 程式範例解答
- include <iostream>
using namespace std; void main(){ int year; cout<<"請輸入年份" cin>>year; if(year%=400==0)||(year%4==0&&year%100!=0){ cout<< "西元" << year << "年是閏年" << endl; } else{ cout<< "西元" << year << "年是閏年" << endl; } system("pause"); }
質數的判斷(中)
問題:一數N若為質數,N的因數僅有1與本身數N,也就是說若2~(N-1)中有N之因數(可整除N),那麼N即不是質數。 做法: 1.使用一個布林變數isPrime,初值為true(此布林變數表示N是否為質數,程式一開始先認定N為質數) (迴圈開始) 2.使用一迴圈敘述,使用迭代變數i,下限值為2,上限值為N-1,若i可整除N,設定isPrime為false,跳出迴圈 (迴圈結束) 3.判斷isPrime為true輸出N為"質數",否則,輸出輸出N為"不是質數"。 程式範例解答
- include <iostream>
using namespace std; void main(){ int N = 11; int i = 2; bool isPrime = true; while (i <= N-1 && isPrime){ if (N % i == 0) { isPrime = false; break; } i++; } if (isPrime){ cout << "是質數"; } else { cout << "不是質數"; } system("pause"); }
質因數(中+)
問題:印出一數N的質因數 做法: 判斷2~(N-1)是否為N的因數,並且是否為質數 (i迴圈開始) 1.使用一迴圈敘述,使用迭代變數i,下限值為2,上限值為N-1,i若能整除N,則 (j迴圈開始) 1.1 使用一個布林變數isPrime,初值為true(此布林變數表示N是否為質數,程式一開始先認定N為質數) 1.2 使用一迴圈敘述,使用迭代變數j,下限值為2,上限值為i-1,若j可整除i,設定isPrime為false,跳出j迴圈 (j迴圈結束) 1.3 若isPrime為tru則輸出j (i迴圈結束) 2.結束 程式範例解答
- include <iostream>
using namespace std; void main(void){ int n; cout<<"請輸入"; cin>>n; for(int i=2;i<= n-1;i++ ){ if(n%i==0){ bool Isprime=true; for(int j=2;j<=i-1&& Isprime;j++){ if(i%j==0){ Isprime=false; break; } } if (Isprime){ cout<<i<<endl; } } } system("pause"); } 求一數的次方(易/中) 問題:n的p次方 = 將n自乘p次。 迴圈解步驟: 1. 宣告一浮點數 powerOfn = 1 2. 使用一個迴圈跑p次,powerOfn = powerOfn*n; (若p為負數,取其絕對值,也就是將p乘-1,可用stdlib裏的abs函式) 3. 若p是負數,則powerOfn = 1/powerOfn; 4. 印出powerOfn 遞迴解 ‧ 請看下面程式範例解答,追蹤一次。(請參考用遞迴做到迴圈效果的說明。) 程式範例解答
- include <cstdlib>
- include <iostream>
- include <stdlib.h> //為了使用abs取絕對值函式
using namespace std; float base_power(float b,int p) {
if(p==0) return 1; else if (p>0) return base_power(b,p-1)*b; else return base_power(b,p+1)/b;
} float bp(float b, int p) { float r=1.0; for (int i = 1; i <= abs(p); i++) r *= b; if (p < 0) r = 1/r; return r; } void main(int argc, char *argv[]) { int base,power,result; cout<<"請輸入base值"; cin>>base; cout<<"請輸入power值"; cin>>power; cout << base_power(base, power); system("PAUSE"); } 完全數(中) 公因數(中) 公倍數(中) 費式級數(中) 九九乘法表(中) 魔方陣(中++) 巴斯卡三角形(中++) 河內塔(難) 字串操作 長度計算 尋找字元 字串串接 取子字串 字串反轉 字元出現次數統計 資料分級 考試分數 溫度 風速 資料排序 氣泡排序法 插入排序法 資料統計 成績總分 成績報表 銷售/生產統計 銷售/生產報表 商業應用 找零程式 各式時刻表 月曆 檢查碼的計算與驗證-身份證為例 成績報表 程式設計概念 電腦與程式 程式語言 程式執行環境 程式整合開發工具 程式基礎 輸出入敘述 變數與資料型態 程式敘述與運算子 選擇與判斷敘述 重覆敘述 格式化輸出敘述 陣列 字元與字串 函式與公用函式(一) 程式進階 函式-遞迴呼叫與公用函式(二) 指標與位址 指標與字串 指標與二維陣列 結構 物件導向程式設計基礎 物件與類別 方法多載 繼承與覆寫 程式觀念考題破解中心 c++考題清單 基本程式語法 決策程式語法 迴圈 呼叫/遞迴 01 02 03 04 05 06 07 08 09 10 11 12 01 02 03 04 05 06 07 08 09 10 11 12 01 02 03 04 05 06 07 08 09 10 11 12 01 02 03 04 05 06 07 08 09 10 11 12