Chapter 1 Introduction
§本章重點
§1-1 程式與軟體
一、 電腦系統
二、 硬體:看的見摸的著
CPU
週邊設備
主 M
ALU __________
__________
L1 cache __________
__________
__________
RAM ROM
系統程式
應用程式
控制程式:OS 語言翻譯程式:
公用程式:連結、載入 __________
__________
__________
user 所寫的 program package:word、excel、
power point Hardware system
Software system Computer
system
1-1 程式與軟體
1-2 程式語言種類
1-3 程式硬體執行流程
1-4 程式設計技術
1-5 C 歷史簡介
1-6 C 執行平台說明
2
三、 軟體:看不見摸不著
1. 敘述:高階語言,使電腦執行某動作的一句話稱之,於低階語言中,稱之為_____________
2. 程式:為_______________或_______________集合,而可使 computer 完成使用者想完成
的工作
3. 其實程式就是軟體,軟體便是程式
4. 寫 program 主要由兩大 steps 所組成,一為_________________故創造者需視需要擇語
言學習之,以完成造句。二為_________________,其需多做、多看、多想,不要害怕,
以達最佳境界。
( ) 1. 下列何者不為週邊設備? (A)I/O device (B)OS (C)輔 M
(D)Communication device
( ) 2. 下列何者不為週邊設備? (A)KB (B)Printer (C)DVD (D)CPU
( ) 3. 下列何者不為 System program? (A)OS (B)組譯程式 (C)防毒軟體
(D)Linker or Loader
( ) 4. 下列何者為 Application program? (A)DBMS (B)package (C)防毒軟體
(D)以上皆是
( ) 5. 下列何者為硬體? (A)program (B)Data (C)Disk (D)以上皆非
§1-2 程式語言種類
一、 語言分類:
1. 粗分:Low Level 及 High Level
EX 1-1
2. 細分:
(1) Low Level:機械語言及___________________
(2) High Level:Basic、Cobol、Pascal etc...
(3) 中階語言:C、TC
(4) Package:word、excel、power point
(5) OO:VB、C++、BCB、Java、small Talk
(6) 網路語言:HTML、Java Script、VB Script、ASP、PHP、JSP
(7) AI 語言:________________、________________、small Talk
二、 Low Level Language:
1. 其分為________________及________________________
2. 其對機器有________________ i.e.使用 computer 不同其寫法不同
3. TYPE 說明:
(1) 機器語言:
○
1其完全由_____________or_____________所組成,為電腦直接能看懂之語言
○
2優點:
(i) __________________________
(ii) __________________________
(iii) __________________________
○
3缺點:__________________________,故目前已不被使用
(2) 組合語言:
○
1將 0,1 改由簡寫英文字代表運算符號,運算元(使用 Data)亦由自設英文字所替
4
代,以改良上者難懂、難寫缺點
○
2優、缺點類同機器語言
○
3例子:A=A+B 表達方式
○
4組合語言的每一指令(每一句子)被譯成機器碼會形成________________對應,但
高階語言則否
○
5處理流程:
○
6對電子系同學而言,Assembly Language 其可進入電腦硬體做一些直接控制,
高階語言無法。所以寫一些 driver(驅動程式)非常有用,如果您想成為一個實
力堅強的電子人有 chance 的話,不妨選修此門課。
三、 High Level Language:
1. 於__________________電腦期,便被發明。
2. 其對機器為__________________ i.e. 使用不同 computer 其寫法不必做太大改變
3. 處理流程:其分為___________________及_______________________
1. ex:
Assembly Source program
目地程式 (Object program)
可執行程式 (Executable program) (i) 機器:00110011
(ii) 組合:ADD AX,BX (iii) 高階:A=A+B
直譯程式 → 10010 (不保留) → 12
編譯程式 → 10010 (保留,經其它 steps 方才產生結果)
print 3*4
2. 直譯(或稱解譯)式 (Interpreter):
(1) steps:遇一行,翻一行,做一行立即產生結果,但不保留翻譯結果
(2) 流程圖:
(3) 優點:_______________________、_______________________
(4) 缺點:___________________________________
3. 編譯式(compiler):C++採用此方式
(1) steps:遇一行,翻一行,保留翻譯結果進一步處哩,方才產生結果。其不像直
譯程式立即產生結果。
(2) flowchart:
High Level Source program
object program (目地程式)
executable program (可執行程式)
產生結果 草稿
可用 word、記 事本 etc…
C 本身有提供(建 議使用)
a.cpp(user 所寫的程 式,尚未處理,其檔名是 假設值),要自己存回 disk
自動產生____________檔 自動回存 disk
非 100%的(0,1)機械 碼,因會使用庫存函數的 關係
自動產生____________檔 自動回存 disk
為 100%的(0,1)機械碼 High Level
Source program 執行結果
(其中過程 user 無法看到)
6
註:A.上述流程可謂 software bible,其為細部流程。
B.但為操作方便,C 開發了一套軟體 Dev-C++可輕易的完成程式的
______________、______________、______________及__________________。
安啦!!馬上就要教了,練習幾次,smart 的你(妳)沒問題的。
C.語言翻譯程式只能找出______________而無法找出_______________錯誤。
四、 比較表:
1. 語言比較表:
High Level Low Level Speed
Space easy or hard
2. 直譯、編譯比較表:
Interpreter Compiler 目地碼(機械碼;
0,1碼)保留否 翻譯次數
Speed Space easy or hard
( ) 1. 下列何者為低階語言? (A)C (B)Java (C)Lisp (D)Assembly
( ) 2. 承上題,何者為 AI 語言?
( ) 3. 承上題,何者為 OO 語言?
( ) 4. 承上題,何者為中階語言?
( ) 5. 承上題,何者與電腦廠牌有密切關係?
( ) 6. 承上題,何者需由組譯程式,形成目地程式?
EX 1-2
( ) 7. 承上題,何者一個句子,被譯成機械碼,將形成 1-1 對應?
( ) 8. 電腦能直接接收的語言為 (A)組合 (B)機器 (C)高階 (D)OO
( ) 9. 程式處理的 4 大 steps 為○
1編輯 ○
2編譯 ○
3連結 ○
4載入執行,其排列順序為何?
(A)○
1○
2○
3○
4(B)○
2○
1○
3○
4(C)○
1○
3○
2○
4(D)○
1○
2○
4○
3( ) 10. 下列敘述何者不正確?(A)高階語言速度較低階慢 (B)高階語言較低階語言易
學 (C)目前被使用的最低階語言為機器語言 (D)以上皆正確
( ) 11. 有關直譯及編譯的描述何者不正確?(A)兩者皆會產生機械碼 (B)直譯速度較
編譯快 (C)有的語言可使用直譯也可使用編譯 (D)直譯佔用空間較少
§1-3 程式執行所經硬體
一、 flowchart:
二、 注意事項:
1. 上課新建或修改程式完成後可直接放入原有設備 C 碟或同學自己的隨身碟
2. 必要程式請備份至隨身碟,因本電腦教室的 computer 有『再生卡』裝置
3. 避免不小心的停電,原始程式請在完成後先存入輔 M 中,以免產生『忿怒的吼聲!!』
輔 M 之 Dev-C++ 主 M 新建 or 修改程式 CPU run
顯示結果
離開 C 世界 若有修改或新建
方有必要存放程式
○
1○
2○
3○
4○
5○
68
§1-4 程式設計技術
一、 程式設計技術可分為非結構化、_______________、OO
二、 非結構化設計:
1. 程式中大量的使用_______________,使 program 的 debug、維護、了解非常的不便
2. 程式中對重複的工作沒有________________的解決能力,使 program 對類似工作要不
斷的重複書寫內容,而佔用了額外的空間
3. 例如早期的_________________便屬此種,其設計技術,因沒有______________故無法分
段,猶如寫作文從頭到尾只有一段,你(妳)覺得好嗎?更甚的大量使用 GOTO,形成
像______________或______________演藝人員,無厘頭的主持分格,想到什麼?就做什麼?
像話嗎?
三、 結構化設計:
1. 設計要求:
(1) 由__________________分段(模組)
(2) 每個模組採________________、________________及________________結構
(3) 避免使用__________________
(4) ____________________________
(5) 採用有代表性的變數名稱,例如和用 sum 表示,平均用 AVG 表示等
(6) 適當加________________,以利自己或他人閱讀
2. 特色:
(1) ______________________________________(不會亂跳)
(2) 創作程式 Time 縮短
(3) debug 容易
(4) 維護容易
3. 缺點:結構化程式設計較非結構化長
(1) _______________________________________
(2) _______________________________________
四、 OO 設計,除保留了結構化的優點外,尚引進,繼承、多型、包裝、抽象等一些觀念,再
此非能一筆帶過,本系另有選修課程討論 OO。且 OO 也將變成未來趨勢,希望同學好好
的選它。
( ) 1. 下列何者非『結構化程式』設計所用的結構? (A)循序 (B)選擇 (C)重覆
(D)樹狀
( ) 2. 結構化程式有幾個進口與出口? (A)1 進 1 出 (B)n 進 n 出 (C)n 進 1 出
(D)1 進 n 出
( ) 3. 結構化程式,要避免使用哪一種敘述? (A)循序 (B)GOTO (C)選擇 (D)重覆
( ) 4. 下列何者為結構化設計的缺點? (A)debug 不易 (B)速度較慢 (C)維護不易
(D)以上皆為缺點
( ) 5. 一個好程式條件為何? (A)愈短愈好 (B)變數名稱只要方便便可 (C)適當加註
解 (D)不必分段,以節省創作時間
EX 1-4
10
§1-5 C 歷史簡介
一、 簡史:
1. 參考教科書 1-14
2. 結論:B 語言 → C (1972,AT&T 公司貝爾實驗室,有列號) → K&R C (沒列號)
→ ANSI - C → C 99
3. C++為 OO 語言,與 C 無關。但可先寫 C 再學 C++
二、 特色:
1. 具有__________________及__________________的優點,稱為_____________
適用於__________________的設計
2. 將 I/O 敘述改成__________________方式處理。當用於不同廠牌 computer 執行已有的
C 程式將其寫成函數,只要修改此函數,而不必像其他語言將 I/O 寫成敘述,而要修
改整個 compiler 來的容易,故具有極強的_____________________
3. C 提供大量的___________________,方便程式的創作
4. 提供了新的資料型態_________________________。使 Data 處理的完整性加強了。
5. 提供令人又愛又恨的_________________________,使 C 可作________________的呼叫。及
對陣列具有更好的彈性處理
6. C 的執行檔小故______________________
當然以上優點,有一天您學了 C 以後,將慢慢的會感受。可是若沒學好,您是感受不出來,
甚至痛罵 tc(trouble c)
§1-6 C 執行平台說明
一、 IDE (Integrated Development Environment,整合開發環境):
1. 任何較新語言都有提供 IDE
2. IDE 的用途為方便程式的________________、________________、________________及
______________________________
二、 C 的 IDE TYPE:可參考教科書 P1-19
1. Turbo C/C++、Borlan C++ IDE:過時了
2. Microsoft Visual C++ IDE
3. Borland C++ Builder IDE
4. Dev-C++ IDE:上課使用
三、 安裝 Dev-C++
1. 參考教科書 P1-21~P1-24。運行安裝於自己電腦上
2. 本實習教室已安裝好,擺在程式集中,請將移至桌面變成捷徑以利使用
( ) 1. C 語言具有極好相容性原因為 (A)C compiler 強 (B)C 的函數多 (C)將 I/O 部分
寫成函數 (D)C 執行檔小
( ) 2. C 提供了哪一種資料型態,加強 Data 處理的完整性 (A)structure (B)Array
(C)pointer (D)Tree
( ) 3. 任何較新的語言為方便 user 設計,執行程式皆會提供 (A)Editor (B)Compiler
(C)Interpreter (D)IDE
EX 1-5、1-6
12
Chapter 2 建立 c 之 Application program
§本章重點
§2-1 建立 c 程式注意要項
一、 C 語言_________大小寫,其大部分用________;每個句子後要加____
二、 縮排:
1. Def:於每列的開始加上一些空白,使 source program 有層次感,以利觀看及
____________
2. 縮排一般產生在複合敘述(一指令含有一或一個以上之敘述),及其經常以________括起
來,例如 main()、函數、及 for、while、switch etc...
3. 例子:
2-1 建立 c 程式注意要項 2-2 實習
一、Dev-c++操作 二、Key in program 2-3 報告格式說明
#include <cstdlib>
#include <iostream>
using namespace std;
int main(void) {
int i;
i=5;
cout<<"i="<<i;
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
using namespace std;
int main(void) {
int i;
i=5;
cout<<"i="<<i;
system("PAUSE");
return 0;
}
(1)
(2)
4. 切記養成良好習慣不要忘記縮排!!
三、 適當的加註解:
1. 註解的用途為____________或____________其為____________而使的程式容易給自己或別
人看,其雖然不影響 program 的執行,但一個完美的程式不可缺少它
2. C 的註解種類:
(1) //:
○
1格式://文字內容
○
2注意事項:
(i) 其只能有________
#include <cstdlib>
#include <iostream>
using namespace std;
int main(void) {
int i,s;
i=5;
for(i=1;i<=5;i++) {
s=s+i;
s=s+2*i;
cout<<"s="<<s<<endl;
}
system("PAUSE");
return 0;
}
#include <cstdlib>
#include <iostream>
using namespace std;
int main(void) {
int i,s;
i=5;
for(i=1;i<=5;i++) {
s=s+i;
s=s+2*i;
cout<<"s="<<s<<endl;
}
system("PAUSE");
return 0;
} 更正
←其屬於 main()的,
所以和其它屬於
main()的前面空三格
空白便可
14
(ii) 而出現處為____________或其敘述後
○
3Ex:
//第一個程式練習
cout<<"i="<<i; //印出 i 的結果 (2) /*... */:
○
1格式:/*文字內容*/
○
2注意事項:
(i) 其可包含一或一個以上的說明
(ii) 一般寫在程式開端處,說明整個 program 的功用
○
3Ex:
/*--- 第一個練習程式 ---*/
四、 一般一個敘述使用一列比較好看
( ) 1. 在一列個開始加上一些空白稱之為 (A)留白 (B)縮排 (C)註解 (D)沒有定義
( ) 2. 縮排的發生一般發生在 (A)函數 (B)所有敘述 (C)不加限制 (D)不需注意
( ) 3. 說明某一敘述的用途,且加諸於後的說明,最好使用 (A)/*...*/ (B)// (C); (D)$
( ) 4. 承上題若說明列有多列最好使用哪一種?
( ) 5. C 每一敘述結尾要加上 (A)// (B). (C); (D)$
但注意________及________及複合敘述起點不可加
( ) 6. C 語言程式 (A)只可用大寫 (B)只可用小寫 (C)不分大小寫 (D)視情況用大小
寫
EX 2-1
§2-2 實習
一、 新建 C 程式:
1. 流程:
2. 細部說明:請參閱 2-7 及投影片說明
(1) step 1:進入 Dev-C++
(2) step 2:建立程式(編輯),以 p2-8 內容
○
1「檔案(F)」→「開新檔案(N)」→「 專案(P)」:選擇「 」
(3) step 3:存檔
○
1「檔案(F)」→「 儲存(S)」→
○
2「檔案(F)」→「 另存新檔(A)」→ 另取一檔名存
○
3或按 ctrl+s 或按 ctrl+F12
上述程式打好後請以 t1 存回自己想要的地方
(4) step 4:編譯
開機後進入 Dev-c++世界
編譯 存檔 編譯 執行 修改
Error? End
○
1○
2○
3○
4○
5產生.c 的 file
產生.obj 的 file 及.exe 的 file(自動回存 disk)
Yes No
第一次,會要求存放處及主檔名
第二次後 以第一次的名字存回
可更改其名
16
○
1「執行(Z)」→「 編譯(C)」(ctrl+F9)
○
2工具列第四列第一個
(5) step 5:執行
○
1「執行(Z)」→「 執行(R)」(ctrl+F10)
○
2工具列第四列第二個
註:強烈建議將 step4 及 5 一起做,其方法如下
○
1「執行(Z)」→「 編譯並執行(O)」(F9)
○
2工具列第四列第三個
3. 若沒錯誤將直接產生結果,若有錯誤將於下方「編譯器訊息」出現錯誤訊息,更正後
再執行 step 4 及 step 5
二、 處理已存在 C 程式:
1. 其類似新建,只是於「step 2 編譯」步驟 4 做以下處理:
○
1「檔案(F)」→「 開啟專案/一般檔案(O)」(ctrl+O)
○
2工具列第三列第二個圖示
2. 若有修改內容,且不想以新檔名存檔,其將以原來檔名存放,但內容已被更新
三、 實習開始:
1. page 3-8 及 page 4-17
2. 兩個做完後,若正確無誤方給老師檢查
3. 同學不必管程式意義,只要小心的打(列號不必打) 把大小寫分清楚,縮排做出來,不
要忘記『;』,一定可執行
4. 遇有小挫折,勇敢的先自己克服它
§2-3 報告格式說明
一、 封面:由班代統一製作
二、 變數及函數說明 (10%)
三、 程式本文 (40%)
四、 執行結果 (40%)
五、 心得 (10%)
六、 Ex:見 p3-13
1. 變數及函數說明:
A. 使用變數:
(1) area:表圖面積 (2) r:表半徑 (3) pi:表圓周率 B. 使用函數:無 2. 程式本文:
3. 執行結果:
4. 心得:
註:1. 若安裝 Dev-c++出現英文,請選「Tools」→「Environment Options」→「Interface」→
-Chinese(Tw)→Ok 便可進入中文版
2. 若經常需要的內容,請選「工具(T)」→「編譯器選項(E)」→「程式碼」→「預設程式碼」→
p3-13 之程式內容
結果
心得內容
18
輸入內容→確定
Chapter 3
程式架構,變數名稱,資料型態及
I/O 敘述
§本章重點
§3-1 C 程式架構
一、 敘述:
1. Def:組成 C 程式內容的每一句子
2. TYPE:
(1) 一般敘述:
○
1由一列句子完成
○
2Ex:cout<<”Hello How Are you?”;
(2) 複合敘述:
○
1由一列或以上句子所組成
○
2若包含一列以上要由____________括起
○
3Ex:for(i=0;i<=5;i++) {
s=s+i;
cout<<”i=”<<i;
3-1 程式與軟體
3-2 程式語言種類
3-3 程式硬體執行流程
3-4 程式設計技術
}
上述的 for 敘述由 2 列句子所構成,其以{ }括起以說明其所包含的句子
3. 每一個敘述的結尾要加上________但複合敘述的起始不可加『;』
例如上例 for( )後並不加『;』
二、 C 程式架構;
1. 架構圖:
前置區
主要區段 兩區之間要加入『using namespace std;』
函數區 2. 說明:
(1) 前置區:
○
1格式:
____________<標頭檔> 此處不可加____
○
2意義:
(i) C++為大量使用函數的語言,這些函數由 C 語言題共,故 suer 使用這些
.函數,必須用『include<標頭檔>』,方可使用這些函數(ii) 至於使用那些函數,須引進那些標頭檔,可參考課本 『附錄 B 常用的函數庫』
(iii) 創作程式時若由________進入,最常用的引進,將自動加入,若以其他方 式加入需由 user,字型 key in
(iv) 最基本的標頭檔:
A. #include<iostream>:
a. 引進檔案『iostream』以便作____________i.e.
就是要使用____________及____________函數
b. 由________進入創作原始程式,會自動加入此列,否則要由 user 自行 加入
B. #include<cstdlib>:
20
a. 引進檔案『cstdlib』以便使用函數________________,停下來看程式的 結果否則將無法看到 c 的執行結果
b. 同上 A 之 b 的說明
(2) using namespace std;
○
1用來設定『名稱空間』為____________
○
2其主要用途為較大程式設定時,方便____________及____________的辨識
○
3不要忘記有這句話,至於其較深意義,以後再述,由____________進入 ,其將自行加入此句敘述
(3) 主要區段:
○
1其實主要區段便是____________
○
2格式一:
(i) 格式:
int main(void) {
程式內容;
system(“pause”);
return 0;
}
(ii) 說明:
A. int main(void):
a. int 表示 main 段傳回的值為____________
b. void 表示 main 段不需由外部____________使用
B. system(“pause”);
a. 其主要用途為在執行時停下來看結果,沒有他執行雖然成功,
但無法直接看成果
b. “pause”,可為____________或____________
C. return 0;
a. 表示 main 段執行完畢,傳回值為________
b. 不可省略此列,否則不可執行
○
3格式二:
(i) 由『專案』進入的程式創作,其用詞或有不同但意義類似
(ii) 由『專案』進入,using 只要輸入『程式內容』便可,所以為什麼 要求同學們創作程式由『專案』進入,如此便可省略很多需要輸入 的句子,何樂不為呢?
1. 組合 C 語言程式的每一列句子稱之為____________
2. 複合敘述若內容超過一列以上需用____________括起
3. 引進標頭檔所使用的 keyword(關鍵字)為____________,其主要用途為允許 user 可使 用________________
4. #include<cstdlib>為允許使用____________函數
5. #include<iostream>為允許使用____________及____________函數
6. Using namespace std;為方便____________及____________的辨識
7. int main(void)其 int 表示 main( )段傳回值型態為____________,void 表示 main( )段 不需由外部送入____________
8. 在 C++中,執行後要直接看結果,應該加入________________函數
9. 在 C++中,表示執行完畢要加入哪一敘述________________
10. 在 C++的程式中,有一些不變固定的句子,若由________進入將可省去 key in 的不便
§3-2 常數與變數
一、 常數:
1. 執行時內容不變的稱之為____________i.e 常數就是____________
EX 3-1
22
2. Ex:6,123.5,’A’,”How Are You”
二、 變數:
1. Def:使用時內容會改變者,其實說白了它就是________或________用來存放 Data 用
2. 創作程式時,要使用變數來存放 Data,其為創作程式的最基本單位 3. 變數結構:
(1) 結構:期可分成兩部分如下圖示
(2) 注意事項
○
1C++將大小寫看成________的符號,故 AB 不同於 ab
○
2C++的變數可用________或________,但建議用小寫,習慣上大寫的變數名稱 表是值已____________的變數
○
3Keyword(關鍵字),為製作敘述用,不可當作變數名稱。
Ex:if,cout,for etc
○
4變數於使用前一定要________________(後述) 4. Ex:(1)正確例子: (2) 不正確例子
○
1SUM ○
13y
○
2sum
.○
2a-y
○
3a_1
.○
3$5
○
4_fg ○
4for
○
5x5
○
6y79
1. 執行時內容不變的稱之為____________,會變者稱之為____________
2. C++將大小寫看成____________的符號 可 用
符 號
可 用 符 號
姓(1) 名(0~多)
EX 3-2
3. 請自行寫出 3 個正確或錯誤的變數名稱
(1) 正確:(2) 錯誤:
§3-3 基本資料型態:
一、 C 語言的基本資料型態有:
1. ___________:整數
2. ___________:字元
3. ___________:單精度浮點數
4. ___________:雙倍精度浮點數
二、 變數使用前一定要宣告
1. 格式:(1) 型態△名稱;
(2) 型態△名稱=值;(順便定初值)
2. 若要同時宣告多個變數於變數間,以_________隔開
3. C 語言的每一個指令結尾符號為________________(切記!!don’t forget)
4. 例子:
(1) int a;
(2) int a=3;
(3) int a,b,c;
三、 整數(int)說明:
1. 整數的宣告實際上有九種,見課本。免驚啦!!先懂 int 便可,以後慢慢發揮吧!!
2. int 宣告後的變數,電腦提供______bytes 的存放空間,其 Area 為__________________。
int a;
int b;
int c;
同
24
3. 宣告為 int 的整數若給值為小數,將_______________取整數。
Ex:int a;
a=3.5; a 取得的值為___________。
四、 浮點數說明:其實浮點數就是小數
1. 三種浮點數說明:
浮點數型態宣告 長度 值的範圍
float(單精準) 32(4 bytes) 3.4 x 10
-38~3.4 x 10
38double(倍精準) 64(8 bytes) 1.7 x 10
-308~1.7 x 10
308long double 80(10 bytes) 3.4 x 10
-4932~1.1 x 10
49322. Ex:
(1) 宣告一單精度的浮點數 a _____________________________
(2) 宣告一倍精度的浮點數 b _____________________________
(3) 宣告一單精變數 c,並定初值為 12.3 ____________________________
五、 字元(char)說明:
1. 宣告為字元的變數,電腦提供的空間為_______bytes,其只能存放_______個符號。若
要存放一個以上的符號就變成了字串。
2. 字元定初值要以______________括起來。
3. 字串定初值要以______________括起來,從表面上看起來在雙引號內有 n 個符號,但存
放時,computer 會自動加上一個結尾符號,故實際長度為____________bytes。
4. Ex:
(1) 宣告一字元變數 a ____________________________
(2) 宣告一字元變數 a 內容設定為 x __________________________
(3) 佔用空間:
○
1“x”佔用_____________bytes 的存放空間
○
2’x’ 佔用_____________bytes 的存放空間
○
3“xy” 佔用_____________bytes 的存放空間
1. 下列何者為錯誤的常數?
(1) 1,234
(2) 1.234
(3) 12x
(4) “x”
(5) ’x’
(6) “123”
(7) ’xyz’
2. C++中宣告 int 佔___________Bytes,float 佔___________Bytes,double 佔
___________Bytes,char 佔___________Bytes。
3. 用一個 int 同時宣告兩整數變數 x 及 y,並將 y 的值設為 123
_________________________________________
§3-4 輸出函數(cout)
一、 功用:將結果顯示於___________________
二、 格式:cout<<變數或“文字內容”或運算式<<...<<endl(“\n”);
EX 3-3
int a;
a=12.6;
也可寫成 int a=12.6;結果 a 的實際內容為__________________
26
三、 說明:
1. 印變數非印其名稱,而是列印變數所代表之內容
Ex: Ex:
2. 印“文字內容”一般為_________________除“”不印_________________
Ex:cout<<“Welcome to C++!”;
_________________________________
3. 印出結果時,請適度的加上____________,以利觀看。承例 1 若改寫如下,不是更好嗎?
Ex: Ex:
4. 一個<<後只可接一個變數或標題,以下皆為錯誤例子。
Ex:(1) cout<<x y;同時印兩個變數 x 及 y ___________________
(2) cout<<“x=”x;同時印標題及變數,要修改如下
____________________________
5. 列印時若要換列,調整版面可加______________或______________
Ex:
(1) cout<<“Hello”;
cout<<“How are you?”;
(2) cout<<“Hello”<<endl;
cout<<“How are you?”;
(3) int i=5;
cout<<“i=”;
cout<<i;
(4) int i=5;
cout<<“i=”<<“\n”;
int x=3;
cout<<x;
_______________
int x=3,y=5;
cout<<x+y;
_______________
int x=3;
cout<<“x=”<<x;
_______________
int x=3,y=5;
cout<<“x+y=”<<x+y;
_______________
cout<<i;
四、 輕輕鬆鬆的創作岀下列 program(上機 exercise)
1. 再度提醒上機創作 C++注意事項:
(1) 最好由_________________進入 C++創作原始程式
(2) 注意_______________(層次感),以方便 debug 及觀看
(3) 每個指令結尾要為_____________________
(4) 大小寫______________________,一般皆使用______________________
(5) 適度的加上_____________________
(6) 變數一定_______________________
2. Ex:隨堂練習
(1) 宣告 i , j 為單精準浮點數,然後給值為 12.3 及 35.9 然後再印出
(2) 宣告整數變數 x 及 y 並定初值為 15,20 然後印出 x-y=結果
1. C++中將結果由 LCD 顯示要使用________________函數
2. cout 可配合________________及________________做換列
3. int x=3;
cout>>“x=”x;
上述 cout 應做___________________________________修正
§3-5 輸入函數(cin)
i=12.3 j=35.9
EX 3-4
28
一、 功用:由______________將值送入__________________中
二、 格式:cin>>『單一』變數; //輸入完後按『Enter』鍵,便可將值送入指定變數中
三、 說明:
1. 利用 cin 做輸入最好多一列提醒輸入的告示 Ex:floot x;
cout<<“請輸入 x=”;//提示輸入告示 cin>>x;//將值送入 x
請輸入 x=_______←待輸入
2. cin 一次只能對__________變數做輸入,且不可加上標題 Ex:(1) int x,y;
cin>>x,y;應修正如下
(2) int x;
cin>>“x=”x;應修正如下
3. 隨堂練習:宣告兩單精準變數 a 及 b,由 KB 分別輸入值給 a 及 b,最後求 a+b 之結 果印出
1. 由 KB 將值送入變數中,要使用________________函數 2. cin 一時只能對_______個變數做輸入
3. cin 及 cout 要引進的標頭檔為____________________
§Homework I:
一、 格式:見 P.17 頁及課堂說明
二、 Due day:_____________________
三、 題目:
1. 畫出下列圖形
EX 3-5
* ***
*****
***
2. 宣告兩整數變數 a 及 b 然後分別求其四則運算印出
Chapter 4 資料型態與運算子
§指定敘述:
一、 格式:變數 = 表示式 ;將表示式的值給左邊的變數,左變右不變
二、 例子:
1. a = 5;
a
前 3
後 2. a = x;
a x
前 3 5
後
3. a = x + y;
a x y
前 3 5 7
後
4. a = a + 5;
前 後
a
5. a = a + b;
已知數
變數
運算式
30
a b
前 3 5
後
上述例子請同學『務必了解!!』
§基本算術運算:
一、 運算符號及優先順序
二、 運算例子:
1. s = a * b % c;
假設執行前 s= 3,a = 5,b = 4,c = 3;
則執行後 s = _____,a = _____,b = _____,c = _____
2. _________________有最高優先順序,若想改變原優先順序可使用它。
s = a * b + c;
假設我們想先執行 b + c 運算,則在程式設計時,我們可以將上述運算式 改成:s = a * (b + c);
三、 算術式轉 C 運算式:
1. 方法:
(1) 符號更改 (乘 → * ,除→ / )
(2) 注意優先順序 i.e.加上__________________
2. 例子:
(1) x = y + c × d (2) x =
a+bc−d§型別的轉換
乘 ( * )、除 ( / )、餘數 ( % ) 負號 ( - )
加 ( + )、減 ( - )
←高優先順序
←中優先順序
←低優先順序
int a = 3;
int b = 2;
float s;
s = a / b;
結果
a =_______
b =_______
s =_______
2.
int a = 3;
int b = 2;
float s;
s = (float) a / (float) b;
結果
a =_______
b =_______
s =_______
3. int a = 2;
int b = 5;
float s;
s = (float) a / (float) b;
結果
a =_______
b =_______
s =_______
5.
int a = 2;
int b = 5;
float s;
s = a / b;
結果
a =_______
b =_______
s =_______
4.
一、 先看例子:
1. s = a + b;
假設 a 是整數 a = 3,b 是浮點數 b = 2.5,s 是浮點數 s = 2.01 則在運算完後 s = _______,a = _______,b = _______
2. s = a + b;
假設 a 是整數 a = 3,b 是浮點數 b = 2.5,s 是整數 s = 2,由於 s 是整數,所以儘管 a + b = 5.5,但 s 只能儲存整數,所以最後結果 s 是_____。
3. s = a / b;
假設執行前 a、b 皆是整數,s 則是浮點數,其中 a = 3,b = 2,s = 5.0,則執行時,
首先電腦會先執行整數相除,所以 a / b 的結果是 1,然後將 1 存入 s 值內,所以執行 結果 s 值是 1.0
二、 型態轉變:
1. 格式:(型態) 變數名
§C 語言的特殊運算式
一、 遞增和遞減運算式
1. ++ 會主動將某變數加 1 2. - - 會主動將某變數減 1
二、 運作方式:1. ++變數:運算_________將變數自動加 1 ex:i++;執行前 i = 2 後 i = _____
2. 變數++:運算_________將變數自動加 1 ex:++i;執行前 i = 2 後 i = _____
3. 上述例子看不出奧妙變化但請看下者:
32
(1) a = ++i + 3;執行前 i = 5,則執行後 a = _________,i = _________
(2) a = ( i++) + 3;執行前 i = 5,則執行後 a = _________,i = _________
4. - -運算同上說明,看下面例子:
(1) a = --i + 3;執行前 i = 5,則執行後 a = _________,i = _________
(2) a = ( i--) + 3;執行前 i = 5,則執行後 a = _________,i = _________
§設定的特殊運算式:
一、 表示方法:
特殊運算式 基本運算式 i += j i = i + j
i -= j i = i - j i *= j i = i * j i /= j i = i / j i %= j i = i % j
二、 Ex:1. a *= c;若執行前 a = 3、c = 2 則執行後 a 及 c 各為何?
[解]
2. a *= c – d;若執行前 a = 2、c = 3、d = 4,則執行後 a、c、d 各為何?
[解]
§家庭作業:
一、 試指出下列 5 種宣告資料哪幾個是錯誤的,及修正錯誤
a) int x, y ; a, b ; b) char a = ’3’ ; c) float i,
j, c ;
d) int a, b, c, d, e, f, g, h.
e)int i = 10.5 ;
二、 假設 a 是 10,b 是 18,c 是 5,請求下列運算結果
a) s = a + b ;
b) s = 2 * a + 3 – c ;
c) s = b * c + 20 / b ;
d) s = -a + c – 3 ;
三、 假設 s 是整數,b 是浮點數且值是 3.5,c 是整數且值是 4,請求下列運算結果
a) s = c + b ;
b) s = -b + c = 8 ;
c) s = c / s = 10 ;
d) s = b * c + 3.8 ;
e) s = ’B’ - ’R’ ;
四、 假設 a 和 b 和 c 皆是整數,且直都是 5,求下列運算 a,b 和 c 的結果
a) a += b + c++ ;
b) a -= ++b + c-- ;
c) a *= a – c-- ;
d) a /= 16 + b++ - c++ ;
34
Chapter 5 control statement
§本章講述重點
§5-1 關係運算子與邏輯運算子
一、 關係運算子
1. 種類:
(1) >,>=,<,<=(同一優先順序)
(2) ==(等於),________(不等於)(同一優先順序)但優先順序____________
2. 關係運算的結果為________(用1表示)及________(用0表示)
3. =,==,!=的說明
Ex:int x=3:
x = 5; ____________
x == 5; ____________
x != 5; ____________
5-1 關係運算子與邏輯運算子 5-2 if statement
5-3 if – else _____
5-4 else if _____
5-5 switch( )
1-6 C 執行平台說明
4. 故要做比較人類用法轉成 C 的用法如下:
x = 5 ____________
x ≠ 5 ____________
二、 邏輯運算子
1. 種類:____________,____________,____________(優先順序皆同)
2. 運算結果為____________及____________
3. 人類使用轉成 C 使用:
三、 control statement 之 Type:
1. if (單選)
2. if – else – (二選一)
3. else if – (多選一)
4. switch( ) (多選一)
§5-2 if statement
一、 敘述區段:
1. Def:將多條敘述寫在一起然後用____________括起來
2. 常用敘述區段的指令有___________,___________,___________,___________etc
3. Ex:if (A>B)
3 5
x
3 5
y y
x
● ●
(2)
(1)
36
但若敘述只有一列時{ }可省略見下列:
二、 if sttement:
1. 格式:
if(條件)
{ 敘述區段;
}
2. flow chart:
3. 說明:
(1) 條件成立執行{ }內之敘述區段,然後接{ }之下一列,若不成立直接執行{ }之下
一列敘述
(2) 單一 if 為成立做,不成立不做{ }內之敘述
4. Ex:
(1) 輸入一值給字元變數 c,若內容為„f‟則印出 famale 否則不印
if(x>y){ x=x+y;
}
if(x>y)
x=x+y;
{ A=A+B;
.B=A+B;
}
敘述區段
○
1若 c 之內容為„f‟則執行順序為________________
○
2若 c 之內容非„f‟則執行順序為________________
(2) 輸入一值給整數變數 a,求其絕對值印出
<sol>今先提出兩種 error 錯誤寫法,以供同學們徹底了解
if 的執行流程,爾後再由同學自己寫出正確方法,記住!!
您已進入中級班該要 thinking more & more , OK!!
○
1錯誤寫法 1 :
○
2錯誤寫法 2 :
int main(void) { int a;cout<<”please Input a : “;
cin>>a;
if(a<0) { a=-a;
cout<<”|a|=”<<a;
}
system(“pause”);
return 0;
}
a. 若 a=-3,則執行順序為____________
結果為____________
b. 若 a=3,則執行順序為____________
結果為____________
int main(void) { char c;
cout<<”please Input c : ”;
cin>>c;
if( ________ )
{ cout<<”female”;
}
system(“pause”);
return 0;
}
<sol>
38
○
3正確寫法:請同學們 think about it !!
<sol>
(3) 挑戰一下吧!由 KB 輸入三個數字給 a 及 b 及 c 然後印出最大者(20m)
<sol>設最後將最大值放入 a 中
int main(void){ int a;
cout<<”please Input a : “;
cin>>a;
if(a<0) { a=-a;
cout<<”|a|=”<<a;
}
cout<<”|a|”<<a;
system(“pause”);
return 0;
}
c. 若 a=-3,則執行順序為____________
結果為____________
d. 若 a=3,則執行順序為____________
結果為____________
§5-3 if – else – (若一則一;二選一)
一、 格式:
二、 流程圖:
if(條件) { 動作 1;
} else { 動作 2;
}
start
宣告變數
提示輸入
KB 輸入
a<b
a<c
a=b
a=c
印出 A 之內容 Y Y
N
N
end
int main(void) {
int ____,____,____;
於此做三次提示輸入分 別將 a,b,c 值輸入
用單一 if 將 b 的值給 a
用單一 if 將 c 的值給 a
因 a 已經存放最大值故 印出 a 之內容便可
}
40
三、 說明:
1. 條件成立做____________不成立____________
2. else 後面不必加條件
四、 Ex:
1. 由 KB 輸入一值給單精準變數 a,若 a>=0 則印出”a 為正數”否則印出”a 為負數”
2. 將 P36 求絕對值,用 if – else – 重寫一次
<sol>
int main(void) { ____ a;○1 if( ____ )
○2 { cout<<”a 為正數”;
○3 }
○4 else
○5 { cout<<”a 為負數”;
○6 }
○7 system(“pause”);
return 0;
}
○ 1 若輸入 a=3 則執行順序為
____________結果為____________
○ 2 若輸入 a=-3 則執行順序為
____________結果為____________
3. 由 KB 輸入一值給整數 a,判斷其是否能同時被 3 及 5 整除。
§5-4 else if(若一則如果一):多重選擇,多個選一個(二個以上條件)
<sol>
int main(void) { int a;
cout<<"a";
cin>>a;
if(____________ ____ ____________)
{ cout<<a<<"可以被 3 及 5 整除"<<endl;
} else
{ cout<<a<<"不能被 3 及 5 整除";
}
system("pause");
return0;
}
start
宣告變數
提示輸入
KB 輸入
a≧0
印出 a
end
a=-a 印出 a
42
一、 格式:
二、 流程圖:
三、 說明:
1. 在測試過程中若有某條適合,便做其中相對動作,其餘剩下的條件自動跳開不予測試。
2. 其實將 else 拿掉,改成單一個 if 亦可達成相同效果,只是「若某條件測出後」後面的
條件明知不可能符合,其亦加以測試而導致速度變慢,所以說 else if 是多個單一 if 的
改良。
3. 若有n個條件則基本上有
動作 1
動作 2
end
條件 n Y 動作 n Y Y
條件 2 條件 1
if(條件 1) { 動作 1:}
else if(條件 2) { 動作 2:
} : else if(條件 n) { 動作 n:
}
if(條件 n) 可有可無
有:固定條件之一
無:尚餘很多狀況,但為相同處理方式
(1) 1個 if(條件):開始處
(2) ____個 else if(條件):中間處
(3) ____個 else(記住不配 if):結尾處(除非最後條件為固定,則要加 if(條件))
四、 例子:
1. 由 KB 輸入一值給 a,若 a='m'則印出男人,若為'f'則印出女人,其它值印出 error
2. 若 KB 輸入一值(整數)給 a,若 a=1 則印 red,a=2 則印出 blue,若 a=3 則印出 white,
其它值印出"error"(上機 try try!!)
§5-5 switch():多選一
<sol> : if ( _________ )
{ ___________________________ ; }
else if ( _________ )
{ ___________________________ ; else if ( _________ )
{ ___________________________ ; else ( _________ )
{ ___________________________ ;
<sol>
if()
{ cout<<("男人");
}
else if (____________________) { cout<<("女人");
}
else 此處有很多狀況故不用測試 { cout<<("error!!");
}
44
一、 else - if 雖然可執行多重判斷,但最強的仍是____________
二、 格式:
三、 流程圖:
四、 說明:
動作 1
動作 2
條件 n 動作 n
Y Y
Y 條件 2 條件 1
:
end default switch 變數
switch(變數) { case 條件1:動作1;
break ;(別忘了否則將無條件做下一動作,直到 break) case 條件2:
動作2;
break ; case 條件 n:
動作 n;
break ; default : 動作;
}
條件皆不成立(其它)做此處。此處不必有 case 及
不必有 break,因 switch 非________________做完
此處自然往下。
1. 正確的 switch 了解 EX
(1) 若 a=1 執行順序為________________結果為____
(2) 若 a=2 執行順序為_________________結果為____
(3) 若 a=3 執行順序為_________________結果為____
(4) 若 a=4 執行順序為_________________結果為____
(5) 若 a=5 或 a=6 執行順序為_________________結果為____
int main( ) { int a;
cout<<"a=";
cin>>a;
○1 switch(a)
○2 {
○3 case 1:
○4 cout<<"A";
○5 break;
○6 case 2:
○7 cout<<"B";
○8 break;
○9 case 3: case 4:
○10 cout<<"C";
○11 break;
○12 default:
○13 cout<<"D";
○14 }
○15 system ("pause");
return 0;
}
此處不可加 ;
切記 case 與 1 間要有空格
(表示 a 值為 3 or 4 執行同一動作)
46
(1) 若 a=1 執行順序為__________________結果為____
(2) switch()本身可以不加上 default 這句話,做到最後其會自動脫離 switch
3. switch( )其( )間一定要為________且型態只能為________及________
4. case 後的值一定要為________的________或________________(用單引號括起者)
而不可為未知數,範圍或字串(用雙引號括起者)
ex:(1)float a;
switch(a) {
: }
________________________
(2)
switch(10) {
: }
__________________
ex:
int main(void) { int a;
cout<<”a=”;
cin>>a;
switch(a) {
case 1:
cout<<”A”;
case 2:
cout<<”B”
break;
}
system(“pause”);
return 0;
}
5. 條件為單一值不可有範圍,若條件不同做同一件事可將 case 寫在同一列
6. default 下的敘述不必加__________加上去也沒關係
Ex:case 1:case 2:
動作 break;
(2).
char c;
: switch(c) { case “f”:
: case „f‟
}
不可用____________需更正為______
忘記加了________
b 為______________
case 與 1 間忘了________
不可有多個條件其可修正為 __________________________
不可有________
ex:
(1).
int a,b;
: switch(a) { case1:
: case b:
:
case 1,2,3,4:
:
case 1 to 3:
: }
48
7. switch 可寫成巢狀(switch 中有 switch),善用之,成為高手之日子接近了
五、 將 P7、Ex 2 改成 switch <上機 try try>
: switch( ___ ) { case 1:
____________________________________________;
____________________________________________;
case 2:
____________________________________________;
____________________________________________;
case 3:
____________________________________________;
____________________________________________;
________:
____________________________________________;
____________________________________________;
switch(k) { case 1:
switch(j) { case 1:
動作 1:
break;
case 2:
動作 2:
break;
: default : 動作:
} case 2:
switch(j) {
: } default:
: } Ex:
§Program3:Control statement
一、 else-if- 條件如下:由 KB 輸入一分數<整數>
1. 若 90≦分≦100,印出「等第為 A」
2. 若 70≦分≦89,印出「等第為 B」
3. 若 60≦分≦69,印出「等第為 C」
4. 其它 ,印出「No pass」
二、 switch( ):將上列題目改或 switch 完成
三、 猜拳遊戲:
1. 雙方都以 1 表剪刀,2 表石頭,3 表布,其它值表錯誤
2. 規則:以自己為中心和人比
(1) 首先由 KB 輸入一位給 a 表示自己的出拳,在輸入一值給 b 表示此人的出拳。
(2) 以自己為中心若自己贏印出「我贏了!!」,自己輸了則印出「我輸了!!」相同則印
出「出拳一樣,沒輸贏!!」其它值則印出「出拳錯誤!!」
四、 due day : ____________________________
50
三、 架構參考:
switch(a) { case 1:
switch(b) { case 1:
case 2:
case 3:
default:
} }
<sol>:
一、 用巢狀 switch 完成,最漂亮 二、 流程圖:
start
宣告
提示輸入
輸入
a 值=?
b 值=? b 值=? b 值=? 印出”我出
拳錯誤”
印出”出 拳一樣,沒 輸贏!!”
印出”我 輸了!!”
印出”我 贏了!!”
印出”你 出拳錯 誤!!”
end
1 <剪刀> 2<石頭> 3<布>
其他值
1<剪刀> 2<石頭> 3<布> 其他
Chapter 6 Loop statement
§本章重點
§6-1 for statement
一、 基本概念:
1. Loop(迴圈):重複執行某敘述若干次稱之為 Loop
2. C++中提供的 loop Type:
(1) 前測 loop:
○
1for:為什麼而作。
○
2while:當成立則做。
(2) 後側 loop:
○
1do while:做一次後,當成立再做。
3. loop 處理的基本三原則:_______________、_______________、_______________
二、 format:
for(控制變數及初值;離開 for 的條件;更新控制變數的值)
{
敘述區段;→
} 離開(至 for 之下一列敘述) 一、for 敘述
二、Nested for 三、while statement 四、Do while statement
若只有一列敘述,{}
可省略,建議不要,
以便看清楚 for 要做 的動作
回頭