• 沒有找到結果。

Chapter 1 Introduction

N/A
N/A
Protected

Academic year: 2021

Share "Chapter 1 Introduction "

Copied!
103
0
0

加載中.... (立即查看全文)

全文

(1)

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)

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

(3)

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)

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

(5)

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)

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)

( ) 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

6

(8)

8

§1-4 程式設計技術

一、 程式設計技術可分為非結構化、_______________、OO

二、 非結構化設計:

1. 程式中大量的使用_______________,使 program 的 debug、維護、了解非常的不便

2. 程式中對重複的工作沒有________________的解決能力,使 program 對類似工作要不

斷的重複書寫內容,而佔用了額外的空間

3. 例如早期的_________________便屬此種,其設計技術,因沒有______________故無法分

段,猶如寫作文從頭到尾只有一段,你(妳)覺得好嗎?更甚的大量使用 GOTO,形成

像______________或______________演藝人員,無厘頭的主持分格,想到什麼?就做什麼?

像話嗎?

三、 結構化設計:

1. 設計要求:

(1) 由__________________分段(模組)

(2) 每個模組採________________、________________及________________結構

(3) 避免使用__________________

(4) ____________________________

(5) 採用有代表性的變數名稱,例如和用 sum 表示,平均用 AVG 表示等

(6) 適當加________________,以利自己或他人閱讀

2. 特色:

(1) ______________________________________(不會亂跳)

(2) 創作程式 Time 縮短

(9)

(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)

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)

(11)

§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)

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)

(13)

(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)

14

(ii) 而出現處為____________或其敘述後

3

Ex:

//第一個程式練習

cout<<"i="<<i; //印出 i 的結果 (2) /*... */:

1

格式:/*文字內容*/

2

注意事項:

(i) 其可包含一或一個以上的說明

(ii) 一般寫在程式開端處,說明整個 program 的功用

3

Ex:

/*--- 第一個練習程式 ---*/

四、 一般一個敘述使用一列比較好看

( ) 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

(15)

§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)

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. 遇有小挫折,勇敢的先自己克服它

(17)

§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)

18

輸入內容→確定

Chapter 3

程式架構,變數名稱,資料型態及

I/O 敘述

§本章重點

§3-1 C 程式架構

一、 敘述:

1. Def:組成 C 程式內容的每一句子

2. TYPE:

(1) 一般敘述:

1

由一列句子完成

2

Ex:cout<<”Hello How Are you?”;

(2) 複合敘述:

1

由一列或以上句子所組成

2

若包含一列以上要由____________括起

3

Ex:for(i=0;i<=5;i++) {

s=s+i;

cout<<”i=”<<i;

3-1 程式與軟體

3-2 程式語言種類

3-3 程式硬體執行流程

3-4 程式設計技術

(19)

}

上述的 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)

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;

(21)

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)

22

2. Ex:6,123.5,’A’,”How Are You”

二、 變數:

1. Def:使用時內容會改變者,其實說白了它就是________或________用來存放 Data 用

2. 創作程式時,要使用變數來存放 Data,其為創作程式的最基本單位 3. 變數結構:

(1) 結構:期可分成兩部分如下圖示

(2) 注意事項

1

C++將大小寫看成________的符號,故 AB 不同於 ab

2

C++的變數可用________或________,但建議用小寫,習慣上大寫的變數名稱 表是值已____________的變數

3

Keyword(關鍵字),為製作敘述用,不可當作變數名稱。

Ex:if,cout,for etc

4

變數於使用前一定要________________(後述) 4. Ex:(1)正確例子: (2) 不正確例子

1

SUM ○

1

3y

2

sum

.

2

a-y

3

a_1

.

3

$5

4

_fg ○

4

for

5

x5

6

y79

1. 執行時內容不變的稱之為____________,會變者稱之為____________

2. C++將大小寫看成____________的符號 可 用

符 號

可 用 符 號

姓(1) 名(0~多)

EX 3-2

(23)

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)

24

3. 宣告為 int 的整數若給值為小數,將_______________取整數。

Ex:int a;

a=3.5; a 取得的值為___________。

四、 浮點數說明:其實浮點數就是小數

1. 三種浮點數說明:

浮點數型態宣告 長度 值的範圍

float(單精準) 32(4 bytes) 3.4 x 10

-38

~3.4 x 10

38

double(倍精準) 64(8 bytes) 1.7 x 10

-308

~1.7 x 10

308

long double 80(10 bytes) 3.4 x 10

-4932

~1.1 x 10

4932

2. Ex:

(1) 宣告一單精度的浮點數 a _____________________________

(2) 宣告一倍精度的浮點數 b _____________________________

(3) 宣告一單精變數 c,並定初值為 12.3 ____________________________

五、 字元(char)說明:

1. 宣告為字元的變數,電腦提供的空間為_______bytes,其只能存放_______個符號。若

要存放一個以上的符號就變成了字串。

2. 字元定初值要以______________括起來。

3. 字串定初值要以______________括起來,從表面上看起來在雙引號內有 n 個符號,但存

放時,computer 會自動加上一個結尾符號,故實際長度為____________bytes。

4. Ex:

(1) 宣告一字元變數 a ____________________________

(2) 宣告一字元變數 a 內容設定為 x __________________________

(25)

(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)

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;

_______________

(27)

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)

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

***

*****

***

(29)

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)

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

§型別的轉換

乘 ( * )、除 ( / )、餘數 ( % ) 負號 ( - )

加 ( + )、減 ( - )

←高優先順序

←中優先順序

←低優先順序

(31)

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)

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 種宣告資料哪幾個是錯誤的,及修正錯誤

(33)

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)

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 執行平台說明

(35)

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)

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;

}

敘述區段

(37)

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)

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,則執行順序為____________

結果為____________

(39)

§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)

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 則執行順序為

____________結果為____________

(41)

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)

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) 可有可無

有:固定條件之一

無:尚餘很多狀況,但為相同處理方式

(43)

(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)

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 非________________做完

此處自然往下。

(45)

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)

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;

}

(47)

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)

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:

(49)

§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)

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<布> 其他

(51)

Chapter 6 Loop statement

§本章重點

§6-1 for statement

一、 基本概念:

1. Loop(迴圈):重複執行某敘述若干次稱之為 Loop

2. C++中提供的 loop Type:

(1) 前測 loop:

1

for:為什麼而作。

2

while:當成立則做。

(2) 後側 loop:

1

do while:做一次後,當成立再做。

3. loop 處理的基本三原則:_______________、_______________、_______________

二、 format:

for(控制變數及初值;離開 for 的條件;更新控制變數的值)

{

敘述區段;→

} 離開(至 for 之下一列敘述) 一、for 敘述

二、Nested for 三、while statement 四、Do while statement

若只有一列敘述,{}

可省略,建議不要,

以便看清楚 for 要做 的動作

回頭

此處不可加______否

則 loop 下的敘述區

段不經測試,只做一

次,for 敘述毫無作

用,其亦不會出現「錯

參考文獻

相關文件

以及高三數學甲Ⅰ、Ⅱ,與數學乙Ⅰ、Ⅱ的選修課程,其中數學 IV 分為 A、B 兩版,B 版 擴充了 A 版的內容,所增加的題材在課程綱要中以◎

一 寫作評講(詩歌) 運用三至五個評講重點賞析同儕創作的詩歌 二 寫作評講(短文) 運用寫作評量表評鑑同儕創作的文章. 三

(一) 所有必修部分和延伸部分的課節都納入時間表內,所有班級的數學課節畫 一為七堂,全班修讀相同的課題內容(見圖

 把有着相同符號的圖畫書編 成小單元,歸類施教,引導 學生認識符號的共通點,辨 別其中的細微差異,建構文 學鑑賞能力.

5.派發作文時,宜嘉許同學的優秀表現,印發 佳作,於課堂上分析讚賞,鼓勵同學互相 觀摩,並將佳作上載學校網頁,加強學生

5.派發作文時,宜嘉許同學的優秀表現,印發 佳作,於課堂上分析讚賞,鼓勵同學互相 觀摩,並將佳作上載學校網頁,加強學生

級別 與九一八事變和抗日戰爭相關的學習內容 初中級[中三級] 中華民國的建立及面對的困難1.

一定量之氣體在容器內,將其體積壓縮為一半,又使其絕對溫度增為 2 倍,則每