C語言



Similar documents
6-1-1極限的概念

所 3 學 分 課 程, 及 兩 門 跨 領 域 課 程 共 6 學 分 以 上 課 程 學 生 在 修 課 前, 必 須 填 寫 課 程 修 課 認 定 表, 經 班 主 任 或 指 導 教 授 簽 名 後 始 認 定 此 課 程 學 分 ) 10. 本 規 章 未 盡 事 宜, 悉 依 學 位

Microsoft Word doc

Microsoft Word - 第四章.doc

第 6. 節 不 定 積 分 的 基 本 公 式 我 們 可 以 把 已 經 知 道 反 導 函 數 之 所 有 函 數 都 視 為 不 定 積 分 的 基 本 公 式 基 本 公 式 涵 蓋 的 範 圍 愈 大, 我 們 求 解 積 分 就 愈 容 易, 但 有 記 憶 不 易 的 情 事 研 讀

證 券 簡 易 下 單 :2121 證 券 簡 易 下 單 1. 主 工 具 列 的 視 窗 搜 尋 器 直 接 輸 入 點 擊 主 選 單 證 券 專 區 下 單 特 殊 下 單 2121 證 券 簡 易 下 單 畫 面 說 明 1. 下 單 區 2. 個 股 行 情 資 訊 與

授 課 老 師 章 節 第 一 章 教 學 教 具 間 3 分 鐘 粉 筆 CNC 銑 床 教 學 內 容 CNC 銑 床 之 基 本 操 作 教 材 來 源 數 值 控 制 機 械 實 習 Ⅰ 1. 了 解 CNC 銑 床 的 發 展 2. 了 解 CNC 銑 床 刀 具 的 選 用 3. 了 解

章節

實德證券網上交易系統示範

目 錄 項 目 內 容 頁 數 1 手 機 要 求 3 2 登 記 程 序 3 3 登 入 程 序 4 4 輸 入 買 賣 指 示 6 5 更 改 指 示 14 6 取 消 指 示 18 7 查 詢 股 票 結 存 21 8 查 詢 買 賣 指 示 23 9 更 改 密 碼 查 詢 股

寫 作 背 景 導 讀 [98] L Lyman Frank Baum

<4D F736F F D20B3E6A4B830312D2D2DBCC6BD75BB50BEE3BCC6AABAA55BB4EEB942BAE22E646F6378>

研究一:n人以『剪刀、石頭、布』猜拳法猜拳一次,決定一人勝

Microsoft PowerPoint - 資料庫正規化(ccchen).ppt

Microsoft Word - ch07

e-Submission System Quick Reference Guide for Publication Related Matters (Chinese version)

(Microsoft Word - MOODLE990201\266i\266\245\244\342\245U )

目 錄 壹 題 目 1: 新 增 商 品 ( 商 品 名 稱 為 玉 井 芒 果 乾 禮 盒 )... 3 貳 題 目 2: 新 增 商 品 ( 商 品 名 稱 為 紅 磚 布 丁 精 選 禮 盒 )... 5 參 題 目 3: 新 增 商 品 ( 商 品 名 稱 為 晶 鑽 XO 醬 禮 盒 ).

NCKU elearning Manual


CONTENTS 訓 練 內 容 設 計 法 056 淡 季 期 的 訓 練 058 旺 季 期 的 訓 練 060 針 對 爬 坡 賽 的 訓 練 內 容 062 賽 後 的 資 料 分 析 PART4/ 鏑 木 毅 先 生 的 建 言 活 用 於 越 野 路 跑 的 心 跳 訓

內 政 統 計 通 報

目 錄 一 系 統 登 入... 2 ( 一 ) 系 統 登 入 畫 面... 2 ( 二 ) 首 次 登 入 請 先 註 冊... 3 ( 三 ) 忘 記 單 位 帳 號... 8 ( 四 ) 忘 記 密 碼 ( 五 ) 健 保 卡 更 換 ( 六 ) 重 寄 確 認 信.

四 修 正 幼 兒 園 師 資 類 科 應 修 學 分 數 為 四 十 八 學 分, 並 明 定 學 分 數 抵 免 之 相 關 規 定 及 規 範 修 習 幼 兒 園 教 育 專 業 課 程 之 最 低 年 限 ( 修 正 條 文 第 五 條 ) 五 發 給 修 畢 師 資 職 前 教 育 證 明

投影片 1

二 兒 歌 選 用 情 形 ( ) 2 ( ) ( )

Microsoft Word - Draft circular on Sub Leg Apr (chi)_Traditional

Microsoft Word - 雲林區_免試平台_國中模擬選填_操作手冊.doc


16

PowerPoint 簡報

肆 研 究 方 法 進 行 本 研 究 前, 我 們 首 先 對 研 究 中 所 用 到 名 詞 作 定 義 定 義 : 牌 數 : 玩 牌 時 所 使 用 到 撲 克 牌 數 次 數 : 進 行 猜 心 術 遊 戲 時, 重 複 分 牌 次 數 數 : 進 行 猜 心 術 遊 戲 時, 每 次 分

55202-er-ch03.doc

格 成 績 證 明 第 六 條 第 七 條 本 系 大 四 課 程 中 規 劃 日 本 韓 國 越 南 專 題 研 究, 學 生 需 於 大 四 時 修 習 該 課 程, 並 於 規 定 期 間 內 提 出 專 題 報 告, 取 得 合 格 成 績 證 明 本 系 規 定 學 生 畢 業 時 需 取

前 項 第 三 款 所 定 有 機 農 產 品 及 有 機 農 產 加 工 品 驗 證 基 準, 如 附 件 一 第 七 條 驗 證 機 構 受 理 有 機 農 產 品 及 有 機 農 產 加 工 品 之 驗 證, 應 辦 理 書 面 審 查 實 地 查 驗 產 品 檢 驗 及 驗 證 決 定 之

BSP 烤箱 - 封面-2


101年度社會福利方案 網路線上操作手冊

校 長 遴 選 者 就 相 關 遴 選 事 項, 有 程 序 外 之 接 觸 遴 選 會 委 員 在 任 期 間 因 故 無 法 執 行 任 務 或 有 不 適 當 之 行 為 者, 由 各 該 主 管 機 關 解 聘 之 ; 其 缺 額, 依 第 一 項 至 第 五 項 規 定 聘 ( 派 ) 委


(Microsoft Word - \246\250\301Z\272\336\262z.doc)

骨 折 別 日 數 表 1. 鼻 骨 眶 骨 ( 含 顴 骨 ) 14 天 11. 骨 盤 ( 包 括 腸 骨 恥 骨 坐 骨 薦 骨 ) 40 天 2. 掌 骨 指 骨 14 天 12. 臂 骨 40 天 3. 蹠 骨 趾 骨 14 天 13. 橈 骨 與 尺 骨 40 天 4. 下 顎 ( 齒

(DP_MFP_Training

五 四 五 說 ( 代 序 ) 李 澤 厚 劉 再 復 I I II IV V VII 第 一 篇 五 四 新 文 化 運 動 批 評 提 綱 附 論 一 中 國 貴 族 精 神 的 命 運 ( 提 綱 )

關 於 教 育 部 學 習 拍 立 得 教 育 部 於 (103) 年 度 整 合 各 縣 市 政 府 部 屬 機 構 大 學 及 民 間 的 數 位 資 源 與 服 務, 依 不 同 類 型, 分 別 匯 集 於 教 育 大 市 集 教 育 百 科 教 育 媒 體 影 音 教 育 部 學 習 拍

長跨距暨挑高建築特殊結構系統之調查分析

目 錄 頁 1. 歡 迎 使 用 網 上 預 約 面 談 訪 問 系 統 新 用 戶 新 用 戶 登 入 帳 戶 程 序 啟 動 網 上 預 約 面 談 訪 問 帳 戶 核 對 帳 戶 的 地 址 資 料

Microsoft Word - 立法會十四題附件.doc

二零零六至零七年施政報告

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

奇 妙 的 24 摘 要 從 撲 克 牌 中 隨 機 抽 取 4 張 牌 可 以 有 1820 種 牌 組, 在 這 1820 種 牌 組 中, 有 1362 組 可 經 由 四 則 運 算 的 方 式, 算 出 24 點, 有 458 組 無 解 快 速 求 解 的 方 法 有 相 加 法 因 數

128 提 示 樞 紐 分 析 表 的 用 途 樞 紐 分 析 表 是 指 可 以 用 來 快 速 合 併 和 比 較 大 量 資 料 的 互 動 式 表 格, 透 過 它 可 以 詳 細 分 析 數 值 資 料, 特 別 適 用 於 下 列 情 況 : 需 要 從 含 有 大 量 資 料 的 清

簽 呈

本 題 各 點 彼 此 均 有 相 互 關 聯, 作 答 不 完 整, 將 影 響 各 評 分 點 之 得 分, 請 注 意 檔 名 儲 存 錯 誤, 該 題 一 律 0 分 計 算 深 淺 圖 表.xlsx 請 依 下 方 題 目 敘 述 操 作 ( 佔 總 分 :) 儲 存 格 範

壹、組織編制 代碼:C0101意見反映

瑞興銀行

sle cover 1

題組一 文書排版

連江縣政府所屬學校兼任代課及代理教師聘任實施要點(草案)

C CH4.tpf

第二組掃描器規範書

《數學奠基活動模組示例》

行政院金融監督管理委員會全球資訊網-行政院金融監督管理委員會

1

Microsoft Word - 全華Ch2-05.doc

教育實習問與答:

<4D F736F F D20B0EAA5C1A470BEC7BB50B0EAA5C1A4A4BEC7AF5AAFC5BD73A8EEA4CEB1D0C2BEADFBADFBC342BD73A8EEB1F8A4E5B9EFB7D3AAED A14B>

<4D F736F F D20B2C433B3B92020B971B8F4A4C0AA52A7DEA5A9>

第一章 緒論

xls

一、 資格條件:

Layout 1

PART 2 系 統 篇 仔 細 檢 查 記 憶 體 和 顯 示 卡 AIDA64 Everest 操 作 : 使 用 AIDA64 檢 測 主 機 溫 度 AIDA64 DirectX AIDA

預測練習題.doc

2 飲 料 調 製 丙 級 技 術 士 技 能 檢 定 必 勝 寶 典 Beverage Modulation Preparation 應 考 綜 合 注 意 事 項 A1 A2 A3 A4 A5 A6 B7 B8 B9 B10 B11 B12 C13

玄奘大學 應用心理學系

<4D F736F F D D313032A7DEC075BAC2BC66B56EB04FB44EC5AAA7D3C440A7C7A874B2CEBEDEA740A4E2A5552E646F63>

目 錄

支 持 機 構 : 社 會 文 化 司 主 辦 機 構 : 澳 門 學 聯 澳 門 青 年 研 究 協 會 電 話 : 傳 真 : 網 址 : 報 告 主 筆 : 李 略 博 士 數 據 錄

修 課 特 殊 規 定 : 一 法 律 系 學 生 最 低 畢 業 學 分 128;101 學 年 度 修 讀 法 律 系 雙 主 修 學 生 應 修 畢 法 律 專 業 目 64 學 分 ( 限 修 習 本 校 法 律 系 開 設 課 程, 不 得 以 原 學 系 或 外 校 課 程 抵 免 -

桃園市104年國民中學新進教師甄選各校複試方式及需求表

課 程 簡 介 第 一 章 基 本 電 路 理 論 第 二 章 半 導 體 物 理 與 pn 接 面 二 極 體 元 件 分 析 第 三 章 二 極 體 電 路 分 析

如何正確使用自己所擁有的正版音樂光碟?

1. 安 裝 1.1 手 機 端 安 裝 檔 (cab 檔 ) 請 您 將 下 載 的 cab 檔 案 複 製 到 手 機 內 任 一 資 料 夾, 在 手 機 上 點 擊 cab 檔 案 後 即 可 開 始 安 裝 點 擊 本 檔 案 即 可 開 始 安 裝 請 於 您 的 手 機 上 繼 續 安

???T????????

答客問

( 三 ) 走 道 與 建 築 物 結 構 空 間 不 符 規 定 者, 得 降 低 走 道 設 置 位 置 或 空 間 不 足 處 之 部 分 走 道 高 度, 並 視 需 要 採 階 梯 式 設 計, 使 建 築 物 與 其 走 道 間 保 持 1.8 公 尺 以 上, 確 保 人 員 走 行

( 二 ) 輔 導 員 除 有 特 殊 情 形 外, 同 時 間 以 輔 導 一 人 為 原 則, 至 多 不 得 超 過 二 人 ( 三 ) 實 務 訓 練 機 關 ( 構 ) 學 校 於 實 務 訓 練 期 間 對 由 資 深 人 員 擔 任 之 輔 導 員 得 酌 減 業 務 五 輔 導 重

Microsoft PowerPoint - chap5

PROSPECT EXPLORATION 壹 前 言 第 9 卷 第 2 期 中 華 民 國 100 年 2 月

包 裝 維 生 素 礦 物 質 類 之 錠 狀 膠 囊 狀 食 品 營 養 標 示 應 遵 行 事 項 一 本 規 定 依 食 品 安 全 衛 生 管 理 法 第 二 十 二 條 第 三 項 規 定 訂 定 之 二 本 規 定 所 稱 維 生 素 礦 物 質 類 之 錠 狀 膠 囊 狀 食 品, 指

1 CH1 環 境 介 面 及 面 板 設 定 1-1 Word 2010 環 境 介 面 與 功 能 區 1-2 環 境 介 面 色 調 處 理 1-3 自 訂 快 速 存 取 工 具 列 1-4 Word 選 項 控 制 CH2 文 字 資 料 2-1 建 立 文 字 2-2 貼 入 網 頁 文

(Microsoft Word \245\277\244\361\273P\244\317\244\361.doc)

<4D F736F F D20AA41B9A2BCD0B7C7A7D6B374A44AAAF92E646F63>

十 三. 服 務 學 習 十 四. 座 位 表 管 理 十 五. 班 導 師 通 訊 錄 小 工 具 十 六. 電 子 報 表 十 七. 評 量 成 績 十 八. 學 期 成 績 ( 國 中 ) 十 九. 學 期 成 績 ( 高

進 入 系 統 1. 請 於 首 頁 右 側 使 用 者 登 入 輸 入 帳 號 密 碼 驗 證 碼 後, 點 選 登 入 進 入 系 統 2. 直 接 點 選 右 側 的 進 入 系 統, 直 接 進 入 題 目 檢 索 頁 面 直 接 進 入 系 統 後, 您 仍 可 瀏 覽 選 擇 您 所 需

CP70D0026D61ETW0R01-01-印刷

虛擬交易所97年GVE3簡易版.doc

大學甄選入學委員會

Transcription:

Chapter 1 Introduction 本 章 重 點 1-1 程 式 與 軟 體 1-2 程 式 語 言 種 類 1-3 程 式 硬 體 執 行 流 程 1-4 程 式 設 計 技 術 1-5 C 歷 史 簡 介 1-6 C 執 行 平 台 說 明 1-1 程 式 與 軟 體 一 電 腦 系 統 ALU CPU L1 cache Hardware system 週 邊 設 備 Computer system Software system 主 M RAM ROM 控 制 程 式 :OS 系 統 程 式 語 言 翻 譯 程 式 : 公 用 程 式 : 連 結 載 入 user 所 寫 的 program 應 用 程 式 package:word excel power point 二 硬 體 : 看 的 見 摸 的 著 1

三 軟 體 : 看 不 見 摸 不 著 1. 敘 述 : 高 階 語 言, 使 電 腦 執 行 某 動 作 的 一 句 話 稱 之, 於 低 階 語 言 中, 稱 之 為 2. 程 式 : 為 或 集 合, 而 可 使 computer 完 成 使 用 者 想 完 成 的 工 作 3. 其 實 程 式 就 是 軟 體, 軟 體 便 是 程 式 4. 寫 program 主 要 由 兩 大 steps 所 組 成, 一 為 故 創 造 者 需 視 需 要 擇 語 言 學 習 之, 以 完 成 造 句 二 為, 其 需 多 做 多 看 多 想, 不 要 害 怕, 以 達 最 佳 境 界 EX 1-1 ( ) 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 2

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) 亦 由 自 設 英 文 字 所 替 3

代, 以 改 良 上 者 難 懂 難 寫 缺 點 2 優 缺 點 類 同 機 器 語 言 3 例 子 :A=A+B 表 達 方 式 (i) 機 器 :00110011 (ii) 組 合 :ADD AX,BX (iii) 高 階 :A=A+B 4 組 合 語 言 的 每 一 指 令 ( 每 一 句 子 ) 被 譯 成 機 器 碼 會 形 成 對 應, 但 高 階 語 言 則 否 5 處 理 流 程 : Assembly Source program 目 地 程 式 (Object program) 可 執 行 程 式 (Executable program) 6 對 電 子 系 同 學 而 言,Assembly Language 其 可 進 入 電 腦 硬 體 做 一 些 直 接 控 制, 高 階 語 言 無 法 所 以 寫 一 些 driver( 驅 動 程 式 ) 非 常 有 用, 如 果 您 想 成 為 一 個 實 力 堅 強 的 電 子 人 有 chance 的 話, 不 妨 選 修 此 門 課 三 High Level Language: 1. 於 電 腦 期, 便 被 發 明 2. 其 對 機 器 為 i.e. 使 用 不 同 computer 其 寫 法 不 必 做 太 大 改 變 3. 處 理 流 程 : 其 分 為 及 1. ex: print 3*4 直 譯 程 式 10010 ( 不 保 留 ) 12 編 譯 程 式 10010 ( 保 留, 經 其 它 steps 方 才 產 生 結 果 ) 4

2. 直 譯 ( 或 稱 解 譯 ) 式 (Interpreter): (1) steps: 遇 一 行, 翻 一 行, 做 一 行 立 即 產 生 結 果, 但 不 保 留 翻 譯 結 果 (2) 流 程 圖 : High Level Source program 執 行 結 果 ( 其 中 過 程 user 無 法 看 到 ) (3) 優 點 : (4) 缺 點 : 3. 編 譯 式 (compiler):c++ 採 用 此 方 式 (1) steps: 遇 一 行, 翻 一 行, 保 留 翻 譯 結 果 進 一 步 處 哩, 方 才 產 生 結 果 其 不 像 直 譯 程 式 立 即 產 生 結 果 (2) flowchart: 草 稿 可 用 word 記 事 本 etc High Level Source program a.cpp(user 所 寫 的 程 式, 尚 未 處 理, 其 檔 名 是 假 設 值 ), 要 自 己 存 回 disk C 本 身 有 提 供 ( 建 議 使 用 ) object program ( 目 地 程 式 ) 自 動 產 生 檔 自 動 回 存 disk 非 100% 的 (0,1) 機 械 碼, 因 會 使 用 庫 存 函 數 的 關 係 executable program ( 可 執 行 程 式 ) 自 動 產 生 檔 自 動 回 存 disk 為 100% 的 (0,1) 機 械 碼 產 生 結 果 5

註 :A. 上 述 流 程 可 謂 software bible, 其 為 細 部 流 程 B. 但 為 操 作 方 便,C 開 發 了 一 套 軟 體 Dev-C++ 可 輕 易 的 完 成 程 式 的 及 安 啦!! 馬 上 就 要 教 了, 練 習 幾 次,smart 的 你 ( 妳 ) 沒 問 題 的 C. 語 言 翻 譯 程 式 只 能 找 出 而 無 法 找 出 錯 誤 四 比 較 表 : 1. 語 言 比 較 表 : Speed Space easy or hard High Level Low Level 2. 直 譯 編 譯 比 較 表 : 目 地 碼 ( 機 械 碼 ; 0,1 碼 ) 保 留 否 翻 譯 次 數 Speed Space easy or hard Interpreter Compiler EX 1-2 ( ) 1. 下 列 何 者 為 低 階 語 言? (A)C (B)Java (C)Lisp (D)Assembly ( ) 2. 承 上 題, 何 者 為 AI 語 言? ( ) 3. 承 上 題, 何 者 為 OO 語 言? ( ) 4. 承 上 題, 何 者 為 中 階 語 言? ( ) 5. 承 上 題, 何 者 與 電 腦 廠 牌 有 密 切 關 係? ( ) 6. 承 上 題, 何 者 需 由 組 譯 程 式, 形 成 目 地 程 式? 6

( ) 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 2 輔 M 之 Dev-C++ 主 M 新 建 or 修 改 程 式 CPU run 5 4 6 3 離 開 C 世 界 若 有 修 改 或 新 建 方 有 必 要 存 放 程 式 顯 示 結 果 二 注 意 事 項 : 1. 上 課 新 建 或 修 改 程 式 完 成 後 可 直 接 放 入 原 有 設 備 C 碟 或 同 學 自 己 的 隨 身 碟 2. 必 要 程 式 請 備 份 至 隨 身 碟, 因 本 電 腦 教 室 的 computer 有 再 生 卡 裝 置 3. 避 免 不 小 心 的 停 電, 原 始 程 式 請 在 完 成 後 先 存 入 輔 M 中, 以 免 產 生 忿 怒 的 吼 聲!! 7

1-4 程 式 設 計 技 術 一 程 式 設 計 技 術 可 分 為 非 結 構 化 OO 二 非 結 構 化 設 計 : 1. 程 式 中 大 量 的 使 用, 使 program 的 debug 維 護 了 解 非 常 的 不 便 2. 程 式 中 對 重 複 的 工 作 沒 有 的 解 決 能 力, 使 program 對 類 似 工 作 要 不 斷 的 重 複 書 寫 內 容, 而 佔 用 了 額 外 的 空 間 3. 例 如 早 期 的 便 屬 此 種, 其 設 計 技 術, 因 沒 有 故 無 法 分 段, 猶 如 寫 作 文 從 頭 到 尾 只 有 一 段, 你 ( 妳 ) 覺 得 好 嗎? 更 甚 的 大 量 使 用 GOTO, 形 成 像 或 演 藝 人 員, 無 厘 頭 的 主 持 分 格, 想 到 什 麼? 就 做 什 麼? 像 話 嗎? 三 結 構 化 設 計 : 1. 設 計 要 求 : (1) 由 分 段 ( 模 組 ) (2) 每 個 模 組 採 及 結 構 (3) 避 免 使 用 (4) (5) 採 用 有 代 表 性 的 變 數 名 稱, 例 如 和 用 sum 表 示, 平 均 用 AVG 表 示 等 (6) 適 當 加, 以 利 自 己 或 他 人 閱 讀 2. 特 色 : (1) ( 不 會 亂 跳 ) (2) 創 作 程 式 Time 縮 短 8

(3) debug 容 易 (4) 維 護 容 易 3. 缺 點 : 結 構 化 程 式 設 計 較 非 結 構 化 長 (1) (2) 四 OO 設 計, 除 保 留 了 結 構 化 的 優 點 外, 尚 引 進, 繼 承 多 型 包 裝 抽 象 等 一 些 觀 念, 再 此 非 能 一 筆 帶 過, 本 系 另 有 選 修 課 程 討 論 OO 且 OO 也 將 變 成 未 來 趨 勢, 希 望 同 學 好 好 的 選 它 EX 1-4 ( ) 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) 不 必 分 段, 以 節 省 創 作 時 間 9

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

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. 本 實 習 教 室 已 安 裝 好, 擺 在 程 式 集 中, 請 將 移 至 桌 面 變 成 捷 徑 以 利 使 用 EX 1-5 1-6 ( ) 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 11

Chapter 2 建 立 c 之 Application program 本 章 重 點 2-1 建 立 c 程 式 注 意 要 項 2-2 實 習 一 Dev-c++ 操 作 二 Key in program 2-3 報 告 格 式 說 明 2-1 建 立 c 程 式 注 意 要 項 一 C 語 言 大 小 寫, 其 大 部 分 用 ; 每 個 句 子 後 要 加 二 縮 排 : 1. Def: 於 每 列 的 開 始 加 上 一 些 空 白, 使 source program 有 層 次 感, 以 利 觀 看 及 2. 縮 排 一 般 產 生 在 複 合 敘 述 ( 一 指 令 含 有 一 或 一 個 以 上 之 敘 述 ), 及 其 經 常 以 括 起 來, 例 如 main() 函 數 及 for while switch etc... 3. 例 子 : (1) #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; 12

(2) #include <cstdlib> #include <cstdlib> #include <iostream> #include <iostream> using namespace std; using namespace std; int main(void) int main(void) int i,s; int i,s; i=5; i=5; for(i=1;i<=5;i++) 更 正 for(i=1;i<=5;i++) s=s+i; s=s+i; s=s+2*i; s=s+2*i; cout<<"s="<<s<<endl; cout<<"s="<<s<<endl; system("pause"); system("pause"); return 0; return 0; 其 屬 於 main() 的, 所 以 和 其 它 屬 於 main() 的 前 面 空 三 格 空 白 便 可 4. 切 記 養 成 良 好 習 慣 不 要 忘 記 縮 排!! 三 適 當 的 加 註 解 : 1. 註 解 的 用 途 為 或 其 為 而 使 的 程 式 容 易 給 自 己 或 別 人 看, 其 雖 然 不 影 響 program 的 執 行, 但 一 個 完 美 的 程 式 不 可 缺 少 它 2. C 的 註 解 種 類 : (1) //: 1 格 式 :// 文 字 內 容 2 注 意 事 項 : (i) 其 只 能 有 13

(ii) 而 出 現 處 為 或 其 敘 述 後 3 Ex: // 第 一 個 程 式 練 習 cout<<"i="<<i; // 印 出 i 的 結 果 (2) /*... */: 1 格 式 :/* 文 字 內 容 */ 2 注 意 事 項 : (i) 其 可 包 含 一 或 一 個 以 上 的 說 明 (ii) 一 般 寫 在 程 式 開 端 處, 說 明 整 個 program 的 功 用 3 Ex: /*--------------- 第 一 個 練 習 程 式 ---------------*/ 四 一 般 一 個 敘 述 使 用 一 列 比 較 好 看 EX 2-1 ( ) 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) 視 情 況 用 大 小 寫 14

2-2 實 習 一 新 建 C 程 式 : 1. 流 程 : 修 改 開 機 後 進 入 Dev-c++ 世 界 1 編 譯 產 生.c 的 file 2 存 檔 3 編 譯 產 生.obj 的 file 及.exe 的 file( 自 動 回 存 disk) 4 執 行 5 Yes No Error? End 2. 細 部 說 明 : 請 參 閱 2-7 及 投 影 片 說 明 (1) step 1: 進 入 Dev-C++ (2) step 2: 建 立 程 式 ( 編 輯 ), 以 p2-8 內 容 1 檔 案 (F) 開 新 檔 案 (N) 專 案 (P) : 選 擇 (3) step 3: 存 檔 1 檔 案 (F) 2 檔 案 (F) 第 一 次, 會 要 求 存 放 處 及 主 檔 名 儲 存 (S) 第 二 次 後 以 第 一 次 的 名 字 存 回 可 更 改 其 名 另 存 新 檔 (A) 另 取 一 檔 名 存 3 或 按 ctrl+s 或 按 ctrl+f12 上 述 程 式 打 好 後 請 以 t1 存 回 自 己 想 要 的 地 方 (4) step 4: 編 譯 15

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

2-3 報 告 格 式 說 明 一 封 面 : 由 班 代 統 一 製 作 二 變 數 及 函 數 說 明 (10%) 三 程 式 本 文 (40%) 四 執 行 結 果 (40%) 五 心 得 (10%) 六 Ex: 見 p3-13 1. 變 數 及 函 數 說 明 : A. 使 用 變 數 : (1) area: 表 圖 面 積 (2) r: 表 半 徑 (3) pi: 表 圓 周 率 B. 使 用 函 數 : 無 2. 程 式 本 文 : p3-13 之 程 式 內 容 3. 執 行 結 果 : 結 果 4. 心 得 : 心 得 內 容 註 :1. 若 安 裝 Dev-c++ 出 現 英 文, 請 選 Tools Environment Options Interface -Chinese(Tw) Ok 便 可 進 入 中 文 版 2. 若 經 常 需 要 的 內 容, 請 選 工 具 (T) 編 譯 器 選 項 (E) 程 式 碼 預 設 程 式 碼 17

輸 入 內 容 確 定 Chapter 3 程 式 架 構, 變 數 名 稱, 資 料 型 態 及 I/O 敘 述 本 章 重 點 3-1 程 式 與 軟 體 3-2 程 式 語 言 種 類 3-3 程 式 硬 體 執 行 流 程 3-4 程 式 設 計 技 術 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; 18

上 述 的 for 敘 述 由 2 列 句 子 所 構 成, 其 以 括 起 以 說 明 其 所 包 含 的 句 子 3. 每 一 個 敘 述 的 結 尾 要 加 上 但 複 合 敘 述 的 起 始 不 可 加 ; 二 C 程 式 架 構 ; 例 如 上 例 for( ) 後 並 不 加 ; 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>: 19

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; 20

a. 表 示 main 段 執 行 完 畢, 傳 回 值 為 b. 不 可 省 略 此 列, 否 則 不 可 執 行 3 格 式 二 : (i) 由 專 案 進 入 的 程 式 創 作, 其 用 詞 或 有 不 同 但 意 義 類 似 (ii) 由 專 案 進 入,using 只 要 輸 入 程 式 內 容 便 可, 所 以 為 什 麼 要 求 同 學 們 創 作 程 式 由 專 案 進 入, 如 此 便 可 省 略 很 多 需 要 輸 入 的 句 子, 何 樂 不 為 呢? EX 3-1 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 常 數 就 是 21

2. Ex:6,123.5, A, How Are You 二 變 數 : 1. Def: 使 用 時 內 容 會 改 變 者, 其 實 說 白 了 它 就 是 或 用 來 存 放 Data 用 2. 創 作 程 式 時, 要 使 用 變 數 來 存 放 Data, 其 為 創 作 程 式 的 最 基 本 單 位 3. 變 數 結 構 : (1) 結 構 : 期 可 分 成 兩 部 分 如 下 圖 示 姓 (1) 名 (0~ 多 ) 可 用 符 號 可 用 符 號 (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 EX 3-2 1. 執 行 時 內 容 不 變 的 稱 之 為, 會 變 者 稱 之 為 2. C++ 將 大 小 寫 看 成 的 符 號 22

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 a; int b; int c; 三 整 數 (int) 說 明 : 1. 整 數 的 宣 告 實 際 上 有 九 種, 見 課 本 免 驚 啦!! 先 懂 int 便 可, 以 後 慢 慢 發 揮 吧!! 2. int 宣 告 後 的 變 數, 電 腦 提 供 bytes 的 存 放 空 間, 其 Area 為 23

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 24

(3) 佔 用 空 間 : 1 x 佔 用 bytes 的 存 放 空 間 2 x 佔 用 bytes 的 存 放 空 間 3 xy 佔 用 bytes 的 存 放 空 間 EX 3-3 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 int a; 也 可 寫 成 int a=12.6; 結 果 a 的 實 際 內 容 為 a=12.6; 3-4 輸 出 函 數 (cout) 一 功 用 : 將 結 果 顯 示 於 二 格 式 :cout<< 變 數 或 文 字 內 容 或 運 算 式 <<...<<endl( \n ); 25

三 說 明 : 1. 印 變 數 非 印 其 名 稱, 而 是 列 印 變 數 所 代 表 之 內 容 Ex: int x=3; Ex: int x=3,y=5; cout<<x; cout<<x+y; 2. 印 文 字 內 容 一 般 為 除 不 印 Ex:cout<< Welcome to C++! ; 3. 印 出 結 果 時, 請 適 度 的 加 上, 以 利 觀 看 承 例 1 若 改 寫 如 下, 不 是 更 好 嗎? Ex: int x=3; cout<< x= <<x; Ex: 4. 一 個 << 後 只 可 接 一 個 變 數 或 標 題, 以 下 皆 為 錯 誤 例 子 int x=3,y=5; cout<< x+y= <<x+y; 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 ; 26

cout<<i; 四 輕 輕 鬆 鬆 的 創 作 岀 下 列 program( 上 機 exercise) 1. 再 度 提 醒 上 機 創 作 C++ 注 意 事 項 : (1) 最 好 由 進 入 C++ 創 作 原 始 程 式 (2) 注 意 ( 層 次 感 ), 以 方 便 debug 及 觀 看 (3) 每 個 指 令 結 尾 要 為 (4) 大 小 寫, 一 般 皆 使 用 (5) 適 度 的 加 上 (6) 變 數 一 定 2. Ex: 隨 堂 練 習 i=12.3 (1) 宣 告 i, j 為 單 精 準 浮 點 數, 然 後 給 值 為 12.3 及 35.9 然 後 再 印 出 j=35.9 (2) 宣 告 整 數 變 數 x 及 y 並 定 初 值 為 15,20 然 後 印 出 x-y= 結 果 EX 3-4 1. C++ 中 將 結 果 由 LCD 顯 示 要 使 用 函 數 2. cout 可 配 合 及 做 換 列 3. int x=3; cout>> x= x; 上 述 cout 應 做 修 正 3-5 輸 入 函 數 (cin) 27

一 功 用 : 由 將 值 送 入 中 二 格 式 :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 之 結 果 印 出 EX 3-5 1. 由 KB 將 值 送 入 變 數 中, 要 使 用 函 數 2. cin 一 時 只 能 對 個 變 數 做 輸 入 3. cin 及 cout 要 引 進 的 標 頭 檔 為 Homework I: 一 格 式 : 見 P.17 頁 及 課 堂 說 明 二 Due day: 三 題 目 : 1. 畫 出 下 列 圖 形 * *** ***** *** 28

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; 29

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+b c d 型 別 的 轉 換 30

一 先 看 例 子 : 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. 格 式 :( 型 態 ) 變 數 名 2. int a = 3; int b = 2; float s; s = a / b; 結 果 a = b = s = 4. int a = 2; int b = 5; float s; s = a / b; 結 果 a = b = s = 3. int a = 3; a = 5. int a = 2; a = int b = 2; b = int b = 5; b = 結 果 結 果 float s; s = float s; s = s = (float) a / (float) b; s = (float) a / (float) b; C 語 言 的 特 殊 運 算 式 一 遞 增 和 遞 減 運 算 式 1. ++ 會 主 動 將 某 變 數 加 1 2. - - 會 主 動 將 某 變 數 減 1 二 運 作 方 式 : 1. ++ 變 數 : 運 算 將 變 數 自 動 加 1 ex:i++; 執 行 前 i = 2 後 i = 2. 變 數 ++: 運 算 將 變 數 自 動 加 1 ex:++i; 執 行 前 i = 2 後 i = 3. 上 述 例 子 看 不 出 奧 妙 變 化 但 請 看 下 者 : 31

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

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++ ; 33

Chapter 5 control statement 本 章 講 述 重 點 5-1 關 係 運 算 子 與 邏 輯 運 算 子 5-2 if statement 5-3 if else 5-4 else if 5-5 switch( ) 1-6 C 執 行 平 台 說 明 5-1 關 係 運 算 子 與 邏 輯 運 算 子 一 關 係 運 算 子 1. 種 類 : (1) >,>=,<,<=( 同 一 優 先 順 序 ) (2) ==( 等 於 ), ( 不 等 於 )( 同 一 優 先 順 序 ) 但 優 先 順 序 2. 關 係 運 算 的 結 果 為 ( 用 1 表 示 ) 及 ( 用 0 表 示 ) 3. =,==,!= 的 說 明 Ex:int x=3: x = 5; x == 5; x!= 5; 34

4. 故 要 做 比 較 人 類 用 法 轉 成 C 的 用 法 如 下 : x = 5 x 5 二 邏 輯 運 算 子 1. 種 類 :,, ( 優 先 順 序 皆 同 ) 2. 運 算 結 果 為 及 3. 人 類 使 用 轉 成 C 使 用 : (1) (2) y x 3 5 3 5 y x 三 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) 35

A=A+B;.B=A+B; 敘 述 區 段 但 若 敘 述 只 有 一 列 時 可 省 略 見 下 列 : if(x>y) if(x>y) x=x+y; x=x+y; 二 if sttement: 1. 格 式 : if( 條 件 ) 敘 述 區 段 ; 2. flow chart: 3. 說 明 : (1) 條 件 成 立 執 行 內 之 敘 述 區 段, 然 後 接 之 下 一 列, 若 不 成 立 直 接 執 行 之 下 一 列 敘 述 (2) 單 一 if 為 成 立 做, 不 成 立 不 做 內 之 敘 述 4. Ex: (1) 輸 入 一 值 給 字 元 變 數 c, 若 內 容 為 f 則 印 出 famale 否 則 不 印 36

<sol> int main(void) char c; cout<< please Input c : ; cin>>c; if( ) cout<< female ; system( pause ); return 0; 1 若 c 之 內 容 為 f 則 執 行 順 序 為 2 若 c 之 內 容 非 f 則 執 行 順 序 為 (2) 輸 入 一 值 給 整 數 變 數 a, 求 其 絕 對 值 印 出 <sol> 今 先 提 出 兩 種 error 錯 誤 寫 法, 以 供 同 學 們 徹 底 了 解 if 的 執 行 流 程, 爾 後 再 由 同 學 自 己 寫 出 正 確 方 法, 記 住!! 您 已 進 入 中 級 班 該 要 thinking more & more, OK!! 1 錯 誤 寫 法 1 : 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, 則 執 行 順 序 為 結 果 為 2 錯 誤 寫 法 2 : 37

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, 則 執 行 順 序 為 結 果 為 3 正 確 寫 法 : 請 同 學 們 think about it!! <sol> (3) 挑 戰 一 下 吧! 由 KB 輸 入 三 個 數 字 給 a 及 b 及 c 然 後 印 出 最 大 者 (20m) <sol> 設 最 後 將 最 大 值 放 入 a 中 38

start 宣 告 變 數 提 示 輸 入 int main(void) int,, ; 於 此 做 三 次 提 示 輸 入 分 別 將 a,b,c 值 輸 入 KB 輸 入 a<b Y N a=b 用 單 一 if 將 b 的 值 給 a a<c Y N 印 出 A 之 內 容 a=c 用 單 一 if 將 c 的 值 給 a 因 a 已 經 存 放 最 大 值 故 印 出 a 之 內 容 便 可 end 5-3 if else ( 若 一 則 一 ; 二 選 一 ) 一 格 式 : if( 條 件 ) 動 作 1; else 動 作 2; 二 流 程 圖 : 39

三 說 明 : 1. 條 件 成 立 做 不 成 立 2. else 後 面 不 必 加 條 件 四 Ex: 1. 由 KB 輸 入 一 值 給 單 精 準 變 數 a, 若 a>=0 則 印 出 a 為 正 數 否 則 印 出 a 為 負 數 <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 則 執 行 順 序 為 結 果 為 2. 將 P36 求 絕 對 值, 用 if else 重 寫 一 次 40

start 宣 告 變 數 提 示 輸 入 KB 輸 入 a 0 印 出 a a=-a 印 出 a end 3. 由 KB 輸 入 一 值 給 整 數 a, 判 斷 其 是 否 能 同 時 被 3 及 5 整 除 <sol> int main(void) int a; cout<<"a"; cin>>a; if( ) cout<<a<<" 可 以 被 3 及 5 整 除 "<<endl; else cout<<a<<" 不 能 被 3 及 5 整 除 "; system("pause"); return0; 5-4 else if( 若 一 則 如 果 一 ): 多 重 選 擇, 多 個 選 一 個 ( 二 個 以 上 條 件 ) 41

一 格 式 : if( 條 件 1) 動 作 1: else if( 條 件 2) 動 作 2: : else if( 條 件 n) 動 作 n: if( 條 件 n) 可 有 可 無 有 : 固 定 條 件 之 一 無 : 尚 餘 很 多 狀 況, 但 為 相 同 處 理 方 式 二 流 程 圖 : 條 件 1 條 件 2 Y Y 動 作 2 動 作 1 條 件 n Y 動 作 n end 三 說 明 : 1. 在 測 試 過 程 中 若 有 某 條 適 合, 便 做 其 中 相 對 動 作, 其 餘 剩 下 的 條 件 自 動 跳 開 不 予 測 試 2. 其 實 將 else 拿 掉, 改 成 單 一 個 if 亦 可 達 成 相 同 效 果, 只 是 若 某 條 件 測 出 後 後 面 的 條 件 明 知 不 可 能 符 合, 其 亦 加 以 測 試 而 導 致 速 度 變 慢, 所 以 說 else if 是 多 個 單 一 if 的 改 良 3. 若 有 n 個 條 件 則 基 本 上 有 42

(1) 1 個 if( 條 件 ): 開 始 處 (2) 個 else if( 條 件 ): 中 間 處 (3) 個 else( 記 住 不 配 if): 結 尾 處 ( 除 非 最 後 條 件 為 固 定, 則 要 加 if( 條 件 )) 四 例 子 : 1. 由 KB 輸 入 一 值 給 a, 若 a='m' 則 印 出 男 人, 若 為 'f' 則 印 出 女 人, 其 它 值 印 出 error <sol> if() cout<<(" 男 人 "); else if ( ) cout<<(" 女 人 "); else 此 處 有 很 多 狀 況 故 不 用 測 試 cout<<("error!!"); 2. 若 KB 輸 入 一 值 ( 整 數 ) 給 a, 若 a=1 則 印 red,a=2 則 印 出 blue, 若 a=3 則 印 出 white, 其 它 值 印 出 "error"( 上 機 try try!!) <sol> : if ( ) ; else if ( ) ; else if ( ) ; else ( ) ; 5-5 switch(): 多 選 一 43

一 else - if 雖 然 可 執 行 多 重 判 斷, 但 最 強 的 仍 是 二 格 式 : switch( 變 數 ) case 條 件 1: 動 作 1; break ;( 別 忘 了 否 則 將 無 條 件 做 下 一 動 作, 直 到 break) case 條 件 2: 動 作 2; break ; case 條 件 n: 動 作 n; break ; default : 動 作 ; 條 件 皆 不 成 立 ( 其 它 ) 做 此 處 此 處 不 必 有 case 及 不 必 有 break, 因 switch 非 做 完 此 處 自 然 往 下 三 流 程 圖 : switch 變 數 條 件 1 Y 動 作 1 條 件 2 Y 動 作 2 : 條 件 n Y 動 作 n default end 四 說 明 : 44

1. 正 確 的 switch 了 解 EX int main( ) int a; cout<<"a="; cin>>a; 1 switch(a) 2 3 case 1: 4 5 6 case 2: 7 8 cout<<"a"; break; cout<<"b"; break; 9 case 3: case 4: 10 11 12 13 cout<<"c"; break; default: cout<<"d"; 此 處 不 可 加 ; 切 記 case 與 1 間 要 有 空 格 ( 表 示 a 值 為 3 or 4 執 行 同 一 動 作 ) 14 15 system ("pause"); return 0; (1) 若 a=1 執 行 順 序 為 結 果 為 (2) 若 a=2 執 行 順 序 為 結 果 為 (3) 若 a=3 執 行 順 序 為 結 果 為 (4) 若 a=4 執 行 順 序 為 結 果 為 (5) 若 a=5 或 a=6 執 行 順 序 為 結 果 為 2. 忘 記 寫 break 的 後 果 45

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; (1) 若 a=1 執 行 順 序 為 結 果 為 (2) switch() 本 身 可 以 不 加 上 default 這 句 話, 做 到 最 後 其 會 自 動 脫 離 switch 3. switch( ) 其 ( ) 間 一 定 要 為 且 型 態 只 能 為 及 ex:(1) float a; switch(a) : (2) switch(10) : 4. case 後 的 值 一 定 要 為 的 或 ( 用 單 引 號 括 起 者 ) 而 不 可 為 未 知 數, 範 圍 或 字 串 ( 用 雙 引 號 括 起 者 ) 46

ex: (1). int a,b; : switch(a) case1: : case b: : case 1,2,3,4: : case 1 to 3: : case 與 1 間 忘 了 b 為 不 可 有 多 個 條 件 其 可 修 正 為 不 可 有 (2). char c; : switch(c) case f : : case f 不 可 用 需 更 正 為 忘 記 加 了 5. 條 件 為 單 一 值 不 可 有 範 圍, 若 條 件 不 同 做 同 一 件 事 可 將 case 寫 在 同 一 列 Ex: case 1:case 2: 動 作 break; 6. default 下 的 敘 述 不 必 加 加 上 去 也 沒 關 係 47

7. switch 可 寫 成 巢 狀 (switch 中 有 switch), 善 用 之, 成 為 高 手 之 日 子 接 近 了 Ex: switch(k) case 1: switch(j) case 1: 動 作 1: break; case 2: 動 作 2: break; : default : 動 作 : case 2: switch(j) : default: : 五 將 P7 Ex 2 改 成 switch < 上 機 try try> : switch( ) case 1: ; ; case 2: ; ; case 3: ; ; : ; ; 48

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 : 49

<sol>: 一 用 巢 狀 switch 完 成, 最 漂 亮 二 流 程 圖 : start 宣 告 提 示 輸 入 輸 入 a 值 =? 其 他 值 1 < 剪 刀 > 2< 石 頭 > 3< 布 > b 值 =? b 值 =? b 值 =? 印 出 我 出 拳 錯 誤 1< 剪 刀 > 2< 石 頭 > 3< 布 > 其 他 印 出 出 拳 一 樣, 沒 輸 贏!! 印 出 我 輸 了!! 印 出 我 贏 了!! 印 出 你 出 拳 錯 誤!! end 三 架 構 參 考 : switch(a) case 1: switch(b) case 1: case 2: case 3: default: 50

Chapter 6 Loop statement 本 章 重 點 一 for 敘 述 二 Nested for 三 while statement 四 Do while 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 要 做 則 loop 下 的 敘 述 區 的 動 作 段 不 經 測 試, 只 做 一 離 開 ( 至 for 之 下 一 列 敘 述 ) 次,for 敘 述 毫 無 作 用, 其 亦 不 會 出 現 錯 不 可 加 ; 號 誤 訊 息 51

三 說 明 : 1. 運 作 方 式 : 滿 足 for 設 定 的 條 件, 執 行 迴 路, 每 執 行 一 次, 控 制 變 數 值 自 動 依 第 3 部 分 的 指 示 給 予 更 給 當 條 件 不 合, 至 for loop 下 一 列 執 行 2. 1 2 3 部 分 皆 可 省 略, 但 ; 不 可 省 其 要 寫 成 for (;;) 若 省 略 第 二 部 分 將 成 ( 做 不 完 ) 3. 運 作 例 子 說 明 : int i; 1 for(i = 1;i <= 3;i++) 不 可 加 ; 號 2 回 頭 4 3 cout << * << endl; 不 可 加 ; 號 5 system("pause"); 離 開 (1) 先 設 i 的 初 值 為 1, 當 i<=3 做 ( 1 2 3 4 ), 然 後 做 i++(i = I + 1) 再 回 到 1 test, 若 成 立 則 重 覆 動 作, 若 不 成 立 到 for 之 下 一 列 敘 述 5 (2) 圖 示 : i 之 值 (i <= 3)test cout << * << endl i = i++ 四 流 程 圖 : 做 1 定 初 值 滿 足 2 條 件? T 敘 述 區 段 F 跳 離 For 做 3 改 變 控 制 變 數 值 52

五 例 子 : 1. 印 出 1 到 10 之 數 字 <sol> 回 頭 int i; for(i= ;i ; ) cout<<i<<endl; 離 開 system("pause"); 2. 印 出 1 到 10 中 的 奇 數 項 <sol> int i; for(i= ;i ; ) cout<<i<<endl; 3. 印 出 5 到 1 之 數 字 <sol> A. Program: int k; for(k= ;k ; ) cout<<k<<endl; <sol> B. 說 明 : k 值 (k 1 ) test cout << k <<endl k = k - 1 53

六 製 作 program 三 大 重 要 敘 述, 切 記!! 切 記!! 1. 累 計 次 數 : (1) 格 式 : 變 數 1 = 變 數 1 + 1; 其 為 計 算 loop 做 幾 次 將 之 放 入 變 數 1 中 ( 變 數 1 的 起 始 值 要 設 為 0) (2) ex: 1 s = s + 1; 計 算 loop 做 幾 次 將 值 放 入 s 中 (s 起 始 設 為 0) ex: 2 p = p + 1; 計 算 loop 做 幾 次 將 值 放 入 p 中 (p 起 始 設 為 0) (3) program 實 測 : 1 main() int s, i; Don t forget 使 用 的 變 數 除 了 宣 告 外 還 要 定 初 值 s = 0; 否 則 於 c 中 將 自 動 給 予 值 導 致 結 果 error 了! for(i = 1; i <= 5; i++) s = s + 1; ( 計 算 loop 做 幾 次 放 入 s 中 ) cout << Loop 做 << s << 次 ; system( pause ); return (0); [ 註 ]A. 上 述 的 program 經 執 行 後 可 知 做 了 5 次, 但 實 際 上 除 了 自 己 能 寫 程 式 外, 也 要 能 看 已 存 在 的 程 式, 未 經 執 行 前, 自 己 已 知 道 結 果 那 才 是 真 正 的 高 手, 至 於 如 何 預 知 結 果, 因 各 敘 述 而 異 但 loop 敘 述 預 測 結 果 的 法 寶 如 下 : 熟 用 之, 您 沒 有 解 不 出 的 題 目 控 制 變 數 test 大 括 號 內 動 作 改 變 控 制 變 數 值 54

[ 註 ]B. 故 上 列 程 式 執 行 值 可 由 下 圖 預 知 : i (I <= 5) test s = s + i 1= i + 1 2 test 執 行 後 c 之 值 為 何? int main() int i, c; c = 0; for(i = 1; i <= 5; i += 2) 預 知 圖 c = c + 1; cout << c = << c; 2. 累 加 : 表 示 相 加 多 次 (1) 格 式 : 袋 子 投 入 值 變 數 1 = 變 數 1 + 變 數 2; 結 果 變 數 1 之 值 = 變 數 1 的 起 始 值 + 變 數 2 的 投 入 值 (2) ex: 袋 子 投 入 值 s = s + k; s = s 起 始 值 +k 的 投 入 值 p = p + r; p = p 起 始 值 +r 的 投 入 值 55

(3) program: 1 求 1 加 到 5 之 和 放 入 s 中 main() int s = 0, i = 1; for(i; i <= 5; i ++) cout << s = << s << endl; 預 知 圖 2 求 1 加 到 5 的 奇 數 和, 放 入 s 中 main() int s = 0, i = 1; for(i; i <= 5; ) s = cout << s = << s << endl; s 值 56

3 完 成 下 列 的 預 測 結 果 : a. b. int s = 0, i; for(i = 2; i <= 5; i++) s = s + i; int s = 0, i; for(i = 1; i <= 5; i++) s = s + i; i++; s 值 s 值 c. d. int p = 1, i; for(i = 5; i >= 1; i--) p = p * i; int s = 0, i; for(i = 5; i <= 3; i++) s = s + i; p 值 s 值 舉 一 反 三 看 程 式 測 結 果 應 是 輕 而 易 舉 了!! 帥 吧!! 3. 累 乘 : 表 示 相 乘 多 次, 其 和 累 加 相 似, 只 是 把 加 改 為 乘 而 已 (1) 格 式 : 變 數 1 = 變 數 1 * 變 數 2; 結 果 變 數 1 之 值 = 變 數 1 的 起 始 值 * 變 數 2 的 投 入 值 (2) ex: p = p * i; p = p 起 始 值 * i 的 投 入 值 ( 記 住 要 設 定 p 的 初 值, 一 般 為 1) 57

(3) program: 1 求 5!, 結 果 放 入 p 中 <sol> 5! = 1 * 2 * 3 * 4 * 5, 為 累 乘 故 可 設 定 為 p = p * i P = (p 的 起 始 值 ) * (i 的 變 數 值 ) = (1) * (1 * 2 * 3 * 4 * 5) int main() int i = 1, p = 1; for( ; ; ) ; 2 求 1 到 10 的 奇 數 項 相 乘 58

6-2 程 式 的 跳 離 敘 述 break & continue 一 break statement: 1. break 功 能 : 強 迫 跳 離 某 敘 述, 而 不 管 工 作 結 束 否 2. ex: int main(void) int i, s = 0; for(i = 1; i <= 7; i++) if(i % 3 == 0) //i 為 3 的 倍 數 回 頭 break; s += i; 強 迫 跳 離 cout << s << s; 正 常 離 開 i (i <= 7) test i % 3 == 0 s = s + i i = i + 1 圖 示 說 明 59

二 continue 敘 述 : 1. 其 功 能 為 當 執 行 到 它 時, 只 是 不 做 continue 與 迴 路 終 止 之 間 的 指 令, 但 loop 該 執 行 次 數 仍 要 做 完 2. 同 上 例 for(i = 1; i <= 7; i++) if(i % 3 == 0) 回 頭 continue; s += i; 迴 路 終 止 點 cout << s = << s; end i (i <= 7) test i % 3 == 0 s = s + i i = i + 1 圖 示 說 明 6-3 Nested for ( 巢 狀 for) 一 Def:for 中 有 for 稱 之 為 巢 狀 for 二 雙 層 for 之 運 作 方 式 1. 運 作 :logical: 外 圈 動 一 次, 內 圈 全 動 外 圈 再 動 一 次, 內 圈 重 新 全 動 2. 生 活 實 例 : (1) 外 圈 可 視 為 時 針, 內 圈 可 視 為 分 針 60

(2) 外 圈 可 視 為 打 工 天 數, 內 圈 可 視 為 每 天 工 作 時 數 3. 雙 Loop 只 要 了 解 內 外 圈 控 制 變 數 的 變 化, 當 可 迎 刃 而 解 同 學 們 看 看 下 列 例 子 且 務 必 可 以 執 行 無 誤 (1) 3 換 天 for(i = 1; i <= 2; i++) 1 工 作 for(j = 1; j <= 3; j++) 2 下 班 4 end i j (1~3) (2) 自 行 練 習 例 : for(i = 1; i <= 3; i += 2) for(j = 1; j <= 2; j++) (3) for(i = 1; i <= 2; i++) for(j = 1; j <= i; j++) (4) 自 行 練 習 例 : for(i = 1; i <= 3; i +=2) for(j = 1; j <= i; j++) i j (1~2) i j (1~i) i j (1~i) 61

三 雙 for 看 程 式 預 知 結 果 方 法 1. 方 法 : (1) 計 算 雙 for 執 行 幾 次 ( 次 數 題 ): 留 控 變, 求 Area, 相 加 (2) 其 它 : 留 控 變, 留 動 作 2. ex: 1 次 數 題 : 有 變 = 變 + 1 的 便 是 次 數 題 A. 求 k 之 結 果 為 何? int i, j, k = 0; for(i = 1; i <= 3; i ++) i j for(j = 1; j <= 2; j++) 3 1 k = k + 1; 2 end cout << k = << k; 上 列 例 子 可 視 為 打 工 天 ( 外 圈 執 行 次 數 ), 每 天 做 了 小 時 ( 內 圈 每 次 執 行 次 數 ), 所 以 共 工 作 了 小 時 B. 求 下 列 k 之 結 果 為 何? int i, j, k = 0; for(i = 1; i <= 3; i ++) for(j = 1; j <= i; j++) k = k + 1; cout << k = << k; i j (1~i) 62

2 其 它 題 : A. 求 s 之 結 果 為 何? int i, j, s = 0; for(i = 1; i <= 3; i ++) for(j = 1; j <= 2; j++) s = s + j; cout << s = << s; B. 求 s 之 結 果 為 何? int i, j, s = 0; for(i = 1; i <= 3; i ++) for(j = 1; j <= i; j++) s = s + j; cout << s = << s; i j (1~2) s = s + j i j (1~i) s = s + j 6-4 while statement( 當 成 立 則 做 ) 一 基 本 概 念 : 1. 若 重 複 次 數 已 知 將 使 用, 重 複 次 數 未 知 將 使 用 2. while 之 功 能 為 條 件 成 立 執 行 Loop 中 的 敘 述, 否 則 至 其 下 一 列 執 行 二 格 式 : 回 頭 while( 條 件 ) 成 立 敘 述 區 段 ; 不 成 立 63

三 流 程 圖 : 設 定 控 變 初 值 test 條 件 成 立 不 成 立 while 下 一 列 敘 述 迴 圈 本 體 改 變 控 變 四 說 明 & ex: 1. 基 本 例 子 : int i = 1, s = 0; while(i <= 3) 回 頭 成 立 s = s + i; i = i + 1; 不 成 立 cout << s = << s; i (i <= 3) test s = s + i i = i + 1 2. 注 意 while 中 必 須 要 有 改 變 判 斷 條 件 之 敘 述 ( 如 上 述 之 i = i + 1) 否 則 將 形 成 3. 預 知 結 果 的 方 法 : 控 制 Test loop 內 敘 述,ex 如 下 : (1) int s = 0, r = 15; while(r > 8) s = s + r; r = r 2; // 改 控 變 值 cout << s = << s << endl; cout << r = << r << endl; (2) int s = 0, a = 1; while(a < 10) s = s + a; a = s; cout << s = << s; 64

6-5 do-while statement 一 格 式 : do 成 立 敘 述 區 段 ; while( 條 件 ) ; 不 成 立 不 要 忘 記 加 分 號 二 流 程 圖 : 設 定 控 變 初 值 迴 圈 本 體 改 變 控 變 成 立 test 條 件 不 成 立 while 下 一 列 敘 述 三 說 明 : 1. do while 為 loop i.e. 先 做 一 次 再 判 斷 條 件, 若 成 立 回 頭 再 作, 若 不 成 立 做 loop 下 一 列 2. 如 同 while 要 否 則 會 形 成 loop 四 ex: int i = 6, j = 1; do j = j * i; i = i + 1; // 改 控 變 值 while(i <= 10); 其 預 知 結 果 方 法 如 下 loop 動 作 1 test 如 上 題 解 題 可 如 下 : j = j * i i = i + 1 test j = 1 * 6 = 6 i = 6 + 1 = 7 v 65

6-6 program 5 Loop Statement 一 利 用 for while 兩 敘 述 分 別 求 出 1 到 100 間 能 整 除 3 及 5 之 數 字 和 二 利 用 雙 for 繪 出 下 列 圖 形 : 1. * 2. ***** ** **** *** *** **** ** ***** * 三 由 KB 輸 入 兩 整 數 給 a 及 b 再 利 用 while 求 其 g.c.d. 印 出 四 Due day: 66

Chapter 7 function 本 章 重 點 : 7-1 Function 簡 述 7-2 Function 之 使 用 7-3 Program 6 7-1 Fuction 簡 述 一 Def: 為 一 事 先 寫 好 的 程 式 片 段, 供 使 用 者 叫 用 二 用 途 : 1. 2. 3. 三 TYPE: fuction 1. 2. 四 參 數 ( 引 數 ): 1. Def: 作 為 使 用 函 數 時, 資 料 傳 遞 的 橋 梁 ( 送 出, 送 回 ) 2. 若 將 參 數 寫 成 內 部, 則 格 式 複 雜, 不 易 傳 遞 一 般 將 其 寫 成 外 部 i e 將 代 表 參 數 的 變 數, 宣 告 在 main( ) 之 前 67

7-2 有 fuction 後 C++ 之 程 式 架 構 : 一 架 構 : 前 置 宣 告 include< > 函 數 宣 告 變 數 宣 告 main( ) : 函 數 呼 叫 : 函 數 區 二 函 數 使 用 的 3steps 為,, 1. 宣 告 : 在 main( ) 之 前, 格 式 如 下 : void 函 數 (void), 函 數 名 (void), ; void 函 數 名 ( ), 函 數 名 ( ), ; void 函 數 名 ( ); void 函 數 名 ( ); 表 示 不 傳 回 值 表 示 不 接 收 外 部 傳 來 的 資 料 ( 上 述 原 因 皆 為, 函 數 及 變 數 均 宣 告 成 外 部 已 經 變 成 大 家 共 用, 不 必 傳 來 傳 去 ) 2. 呼 叫 : (1) 在 main( ) 中 (2) 格 式 : 函 數 名 ( ) (3) 呼 叫 函 數 將 跳 到 函 數 處 執 行, 執 行 完 後 回 到 ( 切 記!!) 3. 函 數 本 體 : void 函 數 名 (void) 內 容 68

三 上 機 實 習 : 呼 叫 函 數 s1( ) 由 KB 輸 入 兩 值, 在 呼 叫 函 數 s2( ) 將 兩 值 印 出, 使 用 外 部 函 數, 變 數 宣 告, 宣 告 在 using 與 main( ) 之 間 1. 用 函 數 寫 program, 首 先 把 架 構 寫 好, 包 含 前 置, 宣 告,main( ) 含 呼 叫 及 函 數 區 ( 不 必 有 內 容 ), 然 後 run 一 次 然 後 再 得 函 數 填 入 適 當 內 容 2. s1( ); s2( ); 函 數 宣 告 區 int a; int b; 存 放 輸 入 值 用 變 數 宣 告 區 <sol> main( ) ; s2( ); 函 數 呼 叫 s1( ) 內 容 s2( ) 內 容 四 Ex: 自 行 完 成 1. 呼 叫 函 數 s1 ( ) 由 KB 輸 入 三 整 數 給 a,b 及 c 2. 呼 叫 函 數 s2( ), 求 a*b*c 之 積 印 出 69

7-3 Program6: 一 工 作 要 求 : 1. 呼 叫 副 程 式 s1( ) 出 現 下 列 畫 面 (1) Add (2) Sub (3) Mul (4) Div (5) End Please Input Choice: 2. 呼 叫 函 數 s2( ) 做 float a,b 的 輸 入 3. 在 完 成 下 列 工 作 (1) 選 1 呼 叫 s3( ) 求 a+b 印 出 (2) 選 2 呼 叫 s4( ) 求 a-b 印 出 (3) 選 3 呼 叫 s5( ) 求 a*b 印 出 (4) 選 1 呼 叫 s6( ) 求 a/b 印 出 (5) 選 5 結 束 二 程 式 outlay: void s1(void),s2(void),,,, ; float a,b; 存 放 輸 入 值 int k; 存 放 選 項 值 70

main( ) s1( ); switch( ) case 1: ; ; ; case 2: ; ; ; case 3: ; ; ; case 4: ; ; ; case 5: ; default : ; system( pause ); return 0; void s1(void) 畫 面 void s2(void) 輸 入 void s3(void) a+b void s4(void) a-b void s5(void) a*b void s6(void) a/b 注 意 先 打 好 上 述 內 容 函 數, 內 容 暫 不 打, 然 後 去 執 行 如 果 沒 出 現 錯 誤 訊 息 便 可, 然 後 再 完 成 每 個 函 數 的 創 作 71

Chapter 8 Array 本 章 重 點 一 基 本 概 念 二 1-D Array 三 Sort 四 2-D Array 8-1 Array 基 本 概 念 一 使 用 時 機 : 1. 大 量 型 態 相 同 的 資 料 需 要 處 理, 便 可 宣 告 完 成 它 2. 其 實 Array 非 常 類 似 3. 公 寓 中 的 每 一 房 間 = Array 的 就 是 等 於 二 Array 以 維 數 分 有 下 : 1. 一 維 (1-D): 直 線 類 似 只 有 一 棟 公 寓, 註 標 一 個 2. 二 維 (2-D): 平 面 類 似 有 很 多 公 寓, 每 棟 公 寓 有 幾 樓, 註 標 兩 個 3. 多 維 :3 維 以 上 註 標 : 取 存 陣 列 用, 類 似 公 寓 的 某 層 三 Array 處 理 4 steps: 宣 告 輸 入 8-2 1-D Array 一 宣 告 : 1. 格 式 : 型 態 陣 列 名 [ 大 小 ] 72

2. 說 明 : (1) 型 態 不 外 乎 有 :int,,double,char (2) 大 小 表 示 有 幾 個 元 素 ( 房 間 ) (3) C 的 註 標 從 0 開 始, 若 大 小 為 10, 註 標 值 為 切 記 不 要 忘 記!! 3. Ex: (1) int a[5] a. 宣 告 一 大 小 為 5 的 一 維 整 數 陣 列 b. 圖 示 : a[0] a[1] a[2] a[3] a[4] 有 5 個 元 素, 註 標 為 0~4 c. 取 存 動 作 : (A) a[1] = 5 ; 將 5 存 入 a[1] 中 ( 存 ) (B) x = a[2] ; 將 a[2] 放 入 變 數 x 中 ( 取 ) (2) 試 試 看!! 宣 告 一 大 小 為 5 的 一 維 單 精 準 陣 列, 名 為 b a. 宣 告 b. 圖 示 : 二 輸 入 : 1. 直 接 定 初 值 : 較 無 彈 性 (1) 格 式 : 型 態 陣 列 名 [ 大 小 ] = 值 1, 值 2, 可 有 可 無 73

(2) Ex: 可 寫 成 a. int a[5] = 5, 6, 1, 2, 3 a[ ] b. 圖 示 : a[0] a[1] a[2] a[3] a[4] 2. 一 般 輸 入 : 一 維 陣 列 的 IPO 皆 須 配 合 完 成 (1) 基 本 例 子 : : : : int a[5]; int i = 0; for(i = 0; i <= 4; i++) cout << Please input : ; cin >> ; 三 處 理 : 配 合 單 Loop 完 成, 視 題 意 需 要 四 輸 出 : 配 合 單 Loop 由 下 例 子 觀 察 之 五 例 子 : 宣 告 一 大 小 為 5 的 一 為 整 數 陣 列, 然 後 由 KB 輸 入 值 然 後 完 成 下 列 動 作 : 1. 印 出 輸 入 結 果 2. 倒 印 輸 入 結 果 3. 將 陣 列 中 的 每 個 元 素 加 1 後 印 出, 請 以 適 當 的 函 數 完 成 並 請 上 機 試 試 看!!Time:50 分 74

<sol>: #include <cstdlib> #include <iostream> using namespace std; void in1(void), p1(void), p2(void), p3(void); a[] ; 宣 告 陣 列 int i ; Loop 用 int main(int argc, char *argv[]) ; 輸 入 ; 直 接 印 ; 倒 印 ; 加 1 印 出 system("pause"); return EXIT_SUCCESS; 先 完 成 上 述 的 內 容, 下 列 函 數 只 要 先 寫 出 頭 尾, 內 容 以 後 才 一 個 一 個 完 成 void in1(void) void p2(void) for(i = 0; i <= ; ) cout << \nplease input : ; cin >> ; void p1(void) for(i = 0; i <= 4; i++) cout << a[ << << ] = << ; void p3(void) 75

六 Program:Array & Function 1. 題 目 : (1) 首 先 出 現 下 列 畫 面 : a. Array print odd item b. Print Array great 5 c. Print The biggest item d. Bubble sort e. Binary Search f. End Please input choice: (2) 需 要 條 件 : a. int a[5] = 8, 5, 9, 6, 4; b. int i; Loop 用 c. int k; 選 項 用 B. 變 數 群 慢 慢 聽 自 然 會 懂 Don t Worry! d. int t; 交 換 用 解 Bubble sort e. int y; key 用 解 Binary Search f. int m; 存 放 最 大 值 解 Biggest item A. 函 數 群 a. sc1(); 做 裏 面 b. P1(); 印 奇 數 項 c. P2(); 印 出 大 於 5 的 元 素 d. P3(); 印 出 陣 列 中 最 大 的 元 素 值 e. B1(); 做 氣 泡 排 序 由 小 到 大 印 出 f. B2(); 搜 尋 陣 列 中 元 素, 找 到 印 出 found, 找 不 到 印 出 Not found 2. 重 點 提 示 : (1) 宣 告 變 數, 若 不 夠 事 後 補 上, 未 用 到 的 先 宣 告 無 妨 (2) 先 把 大 架 構 完 成, 然 後 函 數 一 個 個 的 填 入 內 容 (3) 函 數 放 在 main() 段 後, 順 序 沒 關 係 76

#include<stdio.h> #include<conio.h> #include< > =>exit(0) 用 void sc1( ), p1( ), p2( ), p3( ), b1( ), b2( ); int a[5] = 8, 5, 9, 6, 4; int i, k, t, m, y; void sc1(void) 請 參 考 之 前 所 教, 自 行 完 成! void p1(void) void main(void) clrscr( ); switch(k) case 1: p1( ); break; case 1: p1( ); break; case 1: p1( ); break; case 1: p1( ); break; case 1: p1( ); break; case 1: p1( ); break; getche( ); ; void p2(void) void p3(void) void b1(void) void b2(void) 77

8-4 排 序 一 定 義 : 將 資 料 由 大 到 小 ( 降 幕 ) 或 小 到 大 ( 升 幕 ) 排 列 二 種 類 : 1. 內 部 排 序 : 所 有 資 料 均 送 入 主 記 憶 體 中 進 行 排 序 2. 外 部 排 序 : 部 分 資 料 在 主 記 憶 體 中, 部 分 在 輔 助 記 憶 體 中 進 行 三 操 作 方 式 : 1. 需 使 用 雙 層 迴 圈 外, 外 圈 表 次 數, 內 圈 表 比 較 及 交 換 2. 氣 泡 或 選 擇 排 序 若 資 料 有 n 筆 至 少 多 做 次, 共 比 較 次 四 實 例 操 作 : 1. 選 擇 排 序 : (1) 方 法 : i. (0,1),(0,2),(0,3),(0,4) 完 成 後 第 筆 正 確 ii. (1,2),(1,3),(1,4). 完 成 後 第 筆 正 確 iii. (2,3),(2,4) 完 成 後 第 筆 正 確 iv. (3,4). 完 成 後 第 筆 正 確 (2) 例 子 : a[0]=8 a[1]=5 a[2]=9 a[3]=6 a[4]=4 一 二 三 四 78

2. 氣 泡 排 序 : 相 鄰 相 比 (1) 方 法 : a. (0,1),(1,2),(2,3),(3,4) 完 成 後 第 筆 正 確 b. (0,1),(1,2),(2,3). 完 成 後 第 筆 正 確 c. (0,1),(1,2) 完 成 後 第 筆 正 確 d. (0,1). 完 成 後 第 筆 正 確 (2) 例 子 : a[0]=8 a[1]=5 a[2]=9 a[3]=6 a[4]=4 一 二 三 四 五 程 式 創 作 : 1. 交 換 二 數 內 部 的 做 法 (1) (2) int a=5,b=3; a=b; b=a; int t,a=5,b=3; t=a; a=b; b=t; 切 記 交 換 兩 數 內 容 為 常 用 技 巧, 記 住 別 忘 了 (3) 交 換 兩 陣 列 元 素 內 容 做 法 : a[i] t=a[i] a[j] a[i]=a[j] a[j]=t 79

2. 思 考 選 擇 排 序 : (1) int a[ ]=8,5,9,6,4; a[0] a[1] a[2] a[3] a[4] 8 5 9 6 4 (2) 5 筆 Date 至 多 做 次 (3) 外 圈 表 示 內 圈 表 示 (4) i( 外 ) j( 內 ) 1 (0,1) 2 (0,2) 0 3 (0,3) 4 (0,4) 2 (1,2) 1 3 (1,3) 4 (1,4) 3 (2,3) 2 4 (2,4) 3 4 (3,4) (5) 程 式 : 請 上 機 練 習 main( ) int i,j; int t; int a[ ]=8,5,9,6,4; for(i=0;i<=3;i++) for(j= j<= ;j++) if(a[i]>a[j] t=a[i]; a[i]=a[j]; 交 換 兩 陣 列 元 素 a[i]=a[j]; 排 序 for(i=0;i<=4;i++) ; 印 出 結 果 80

3. 再 思 考 bubble sort (1) i( 外 ) j( 內 ) 0 (0,1) 1 (1,2) 3 2 (2,3) 3 (3,4) 0 (0,1) 2 1 (1,2) 2 (2,3) 0 (0,1) 1 1 (1,2) 0 0 (0,1) (2) program 重 要 段 : for( i= ; ; for(j= ; ; ) if(a[ j ]>a[ j+1 ]) ; ; ; 挑 戰 看 看 吧!! 雖 然 有 點 難, 但 很 有 意 思 8-5 2-D ARRAY( 由 多 個 一 維 陣 列 組 成, 可 看 成 有 幾 棟 樓, 每 棟 有 多 少 房 間 ) 一 二 維 陣 列, 便 是 其 由 及 組 成, 可 表 示 兩 件 事, 例 子 如 下 : 二 EX: 一 二 三 甲 10 5 20 乙 6 7 9 此 表 可 想 像 成 甲 於 星 期 一 行 銷 量 為 10 乙 於 星 期 三 行 銷 量 為 9 三 使 用 2-D Array 要 用 兩 個 註 標, 先 表 列 ( 看 左 ), 再 表 行 ( 看 上 ) 四 2-D ARRAY 的 宣 告 : 1. 格 式 : 型 態 陣 列 名 [ 列 大 小 ][ 行 大 小 ]; 2. 0~2 EX:int a[3][2]; 0~1 0 1 0 a[ ][ ] a[ ][ ] 1 a[ ][ ] a[ ][ ] 2 a[ ][ ] a[ ][ ] 列 行 註 標 : 看 左 看 上 81

3. EX: 宣 告 一 單 精 二 維 陣 列 名 為 b 列 及 行 大 小 皆 為 3, 並 圖 示 之 (1) (2) 圖 示 : 五 2-D ARRAY 定 值 : 1. 直 接 給 : (1) 格 式 : 型 態 名 稱 [ 列 大 小 ][ 行 大 小 ] = 值 1, 值 2,, 值, 值,, : 值, 值, ; 同 列 個 數 (2) EX:int a[2][2]=1,2, 2,3 0~1 0~1 ; int a[3][2]= 0 1 0 a[0][0] a[0][1] 1 a[1][0] a[1][1] 請 隨 意 給 值 ; 82

2. 配 合 雙 for 做 輸 入 : 列 輸 入 ( 行 輸 入 亦 可 ) EX:int a[3][2]; i j 0 0 1 1 0 1 2 0 1 0 1 0 a[0][0] a[0][1] 1 a[1][0] a[1][1] 2 a[2][0] a[2][1] (1) a[0][0],a[0][1] (2) a[1][0],a[1][1] (3) a[2][0],a[2][1] for(i=0;i<=2;i++) for(j=0;j<=1;j++) ; ; 只 要 輸 入 6 次 值,a[0][0],a[0][1],...a[2][0],a[2][1] 便 依 序 得 到 所 要 值 for(i=0;i<=2;i++) for(j=0;j<=1;j++) cout<<endl; 83

Chapter 9 結 構 (Structure) 本 章 重 點 一 Structure Introduction 二 Structure 之 處 理 三 ex 練 習 四 Structure 陣 列 五 program 8 9-1 Structure Introduction 一 一 般 型 態 相 同 的 大 量 Data 可 由 來 完 成, 但 型 態 不 同 的 Data 可 由 來 完 成 二 結 構 的 advantage: 1. 2. 9-2 結 構 的 處 理 一 處 理 steps: 宣 告 結 構 ( 成 立 公 司 ) ( 找 代 理 人 ) 取 用 結 構 ( 含 IPO) 二 結 構 的 宣 告 : 1. 方 法 1: (1) 進 行 方 式 : 分 成 下 二 steps 1 宣 告 結 構 : struct 結 構 名 稱 ( 名 稱 由 user 自 訂 ) 內 縮 -----> 各 欄 位 ; ; don t forget 84

2 定 義 結 構 變 數 : struct 結 構 名 稱 結 變 1, 結 變 2,. ; (2) ex: 若 一 學 生 資 料 結 構 含 姓 名 (string 型 態, 使 用 時 要 #include ) 及 國 文 分 數 及 英 文 分 數 ( 型 態 為 float) 等 各 欄 位 請 完 成 下 列 工 作 : 1 宣 告 結 構 名 為 student 2 定 義 結 變 數 名 為 S (1) <sol> A. 宣 告 及 定 義 : struct ; string n ; //n 表 姓 名 float c ; //c 表 國 文 分 數 e ; // e 表 英 文 分 數 ; 結 構 名 結 構 變 數 名 (1) <sol> B. 圖 示 : n c e ( 結 構 student) 2. 方 法 2:( 建 議 使 用 ) (1) 進 行 方 式 : 將 宣 告 結 構 名 及 定 義 結 構 變 數 一 次 完 成 struct 結 構 名 稱 各 欄 位 ; 結 構 變 數 1, 結 變 2, ; 85

(2) ex: 同 上 例 struct string n ; float c ; float e ; s; 3. 請 依 下 列 要 求 完 成 結 構 的 宣 告 : 用 方 法 2 (1) 結 構 名 為 employ (2) 其 含 有 欄 位 為 : 1 姓 名 n (string) 2 代 號 s (int) 3 工 資 p (float) (3) 宣 告 兩 結 構 變 數 為 e1 及 e2 <sol> A. 宣 告 <sol> B. 圖 示 結 構 86

三 結 構 的 取 用 : 1. 格 式 : 結 構 變 數 名. 某 欄 名 ; 2. ex: (1) 承 P.76 例 s.n s.c s.e (2) 承 P.77 例 e1.n e1.s e1.p e2.n e2.s e2.p 例 子 練 習 : 一 將 P.76 之 結 構 依 下 列 要 求 完 成 program 設 計 : 1. 呼 叫 pa( ) 函 數, 將 結 構 各 欄 位 輸 出 2. 呼 叫 pb( ) 函 數, 依 照 下 列 格 式 將 各 欄 位 輸 出 Name:Wang Chinese:100 English:80 Average:90 (: 右 之 Data 為 假 設 性 ) 3. Program outlay: : : using namespace std; ; // 宣 告 pa( ) 函 數 ; // 宣 告 pb( ) 函 數 87

; // 宣 告 pb( ) 函 數 struct student // 結 構 宣 告 string n; float c; float e; s; main ( ) pa( ); pb( ); : : void pa(void) // 將 值 輸 入 給 結 構 cout << Please Input Name : ; cin >> ; cout << Please Input English : ; cin >> ; cout << Please Input Chinese : ; cin >> ; void pb(void) cout << Name : << ; // 印 出 姓 名 ; // 印 出 Chinese 分 數 ; // 印 出 English 分 數 ; // 印 出 平 均 分 數 88

二 將 P.77 頁 之 結 構 依 下 列 要 求 完 成 program 設 計 : 1. pa( ) 函 數, 將 e1 結 構 值 輸 入 並 印 出 下 列 格 式 員 工 1 資 料 : 姓 名 :Wang 代 號 :123 工 資 :10000 2. pb( ) 函 數, 將 e2 結 構 值 輸 入 並 印 出 下 列 格 式 員 工 2 資 料 : 姓 名 :Lee 代 號 :150 工 資 :20000 3. program 重 點 提 示 : 函 數 宣 告 ; 結 構 宣 告 ; main ( ) pa( ); pb( ); : 1 2 3 4 void pa(void) void pb(void) 89

9-3 結 構 陣 列 一 當 有 大 量 欄 位 相 同 的 結 構 要 處 理 時, 可 使 用 例 如 : 班 上 同 學 的 事 務 處 理 EX:struct student struct student int score; char grade; = int score; char grade; ; name[50]; Struct student name[50]; name[0] name[1] name[49] score grade score grade score grade 二 Ex: 輸 入 5 個 學 生 成 績, 並 將 等 第 印 出 (>90 為 A,>80 為 B, 其 餘 為 C) <sol>:1. 學 生 結 構 有 兩 個 欄 位, 一 為 分 數 欄 名 為 score(int), 一 為 等 第 欄 名 為 grade(char) 2. 結 構 陣 列 為 name[5] 3. 利 用 下 列 函 數, 完 成 題 意 創 作 (1)pa(): 輸 入 5 個 學 生 個 別 分 數 分 別 設 為 91 87 84 76 93 (2)pb(): 依 分 數 的 輸 入, 將 等 第 欄 填 入 (3)pc(): 印 出 每 個 學 生 的 等 第 4.program outlay: void pa() void pb() void pc() int i; // 控 制 loop 用 90

struct student name[0] name[1] name[2] name[3] name[4] int score; score grade char grade; name[50]; int main( ) pa(); pb(); pc(); // 將 每 個 結 構 變 數 的 score 欄 輸 入 的 函 數 pa() void pa() for(i = 0; i <= 4; i++) cout << Please Input << i+1 << student score : ; cin >> ; // 依 輸 入 判 斷 等 第 為 何 之 函 數 pb() void pb() for(i = 0; i <= 4; i++) if( >90) ; else if( >80) ; else ; 91

// 印 出 等 第 之 函 數 pc() void pb() cout << Print the student final grade <<endl; for(i = 0; i <= 4; i++) cout << Student << i+1 << final score is : << <<endl; 9-4 Homework 一 題 目 : 若 有 5 個 學 生, 其 每 人 資 料 欄 位 如 下 所 述, 請 使 用 陣 列 結 構 處 理 方 式, 按 名 次 的 優 先 順 序 排 列, 且 以 下 列 方 式 輸 出 1. 輸 出 格 式 姓 名 國 文 英 文 平 均 名 次 LEE 100 100 100 1 WANG 100 90 99 2 2. 學 生 原 始 資 料 項 目 含 : (1) 姓 名 string (n) (2) 國 文 分 數 int (c) (3) 英 文 分 數 int (e) 處 理 時 先 由 鍵 盤 輸 入 姓 名 國 文 英 文 分 數 於 建 好 的 結 構 中, 再 計 算 平 均 分 數 及 名 次 以 備 輸 出, 平 均 分 數 也 以 int 之 方 式 處 理 以 避 免 C 產 生 的 bug 92

二 <sol>: 1. 題 目 本 意 n c e a n c e a s[0] Wang 100 100 100 Wang 100 100 100 s[0] s[1] Lee 70 70 70 Sy 95 95 95 s[1] => s[2] Chang 80 80 80 Wu 90 90 90 s[2] 處 理 完 後 s[3] Wu 90 90 90 Chang 80 80 80 s[3] s[4] Sy 95 95 95 Lee 70 70 70 s[4] 姓 名 國 文 英 文 平 均 2. 依 上 題 意, 每 個 學 生 資 料 欄 只 要 4 個 其 宣 告 如 下 : struct student string n; int c; int e; int a; s[5]; 但 輸 入 後, 未 做 排 序 前 如 上 左 圖, 但 以 平 均 分 數 做 排 序 後 可 求 得 上 右 圖 的 排 列, 所 以 我 們 只 要 依 序 印 出 便 有 名 次 的 產 生, 所 以 於 書 寫 program 時 名 次 欄 位 不 必 包 含 進 去 3. 我 們 將 以 三 個 函 數 來 完 成 上 列 工 作, 茲 說 明 如 下 : (1) pa(): 輸 入 結 構 的 n c e, 並 求 出 平 均 分 數 送 入 a 欄 (2) pb(): 依 平 均 分 數, 以 選 擇 排 序 由 大 而 小, 將 結 構 陣 列 重 排, 但 進 行 中 會 涉 及 到 兩 個 結 構 變 數 內 容 之 互 換, 其 做 法 類 似 兩 變 數 的 互 換, 所 以 首 先 要 假 設 單 一 個 結 構 變 數, 其 欄 位 同 原 來 之 結 構 陣 列, 其 處 理 方 式 如 下 : struct stu string n1; int c1; int e1; int a1; t; 互 換 s[i] 及 s[j] 結 構 變 數 之 方 法 : t= s[i]; s[i] = s[j]; s[j] = t; ( 不 必 說 出 每 個 欄 位, 只 要 整 個 結 構 變 數 交 換 便 可 ) 93

(3) pc(): 依 題 意 要 求 印 出 結 果 之 函 數 4. program outlay: : void pa() void pb() void pc() // 宣 告 結 構 陣 列 變 數 struct student string n; int c; int e; int a; s[5]; // 交 換 用 結 構 s[0] s[1] s[2] s[3] s[4] n c e a struct stu string n1; t n1 c1 e1 a1 int c1, e1, a1; t; int i, j; //loop use int main( ) pa(); pb(); pc(); : void pa() for(i = 0; i <= 4; i++) cout << Please Input << i + 1 << student name : ; cin >> ; 94

cout << Please Input << i + 1 << student chinese score : ; cin >> ; cout << Please Input << i + 1 << student english score : ; cin >> ; s[i].a = ; // 填 入 每 個 學 生 的 平 均 分 數 void pb() // 選 擇 排 序, 重 排 原 結 構 陣 列 之 內 容 for(i = ; i <= ; i++) for(j = ; j <= ; j++) if(s[i].a < s[j].a) t = s[i]; s[i] = s[j]; s[j] =t; void pc() cout << 姓 名 << 國 分 << 英 分 << 平 均 << 名 次 << endl; for(i = 0; i <= 4; i++) cout << s[i].n << s[i].c <<s[i].e <<s[i].a <<i+1 <<endl; 印 出 名 次 95

9-5 Test III Information 一 Time:1/9/2008,PM 2:00~3:20 二 Class:6408 三 Area:Array & struct & function 四 題 型 : 簡 答 程 式 填 充 程 式 設 計 五 重 點 : 1. 函 數 定 義 2. 使 用 函 數 的 好 處 3. 參 數 的 意 義 4. 何 時 為 使 用 陣 列 的 時 機 5. 何 謂 註 標 6. 排 序 基 本 觀 念 7. 選 擇 及 氣 泡 排 序 的 創 作 8. 2-D Array 的 操 作 9. 何 謂 結 構, 其 使 用 時 機 為 何? 10. 使 用 結 構 的 好 處 11. 講 義 上 的 程 式 ~Good Luck~ 96

Chapter10 File Basic Concept 一 從 KB 輸 入 Data 直 接 給 program 使 用, 其 缺 點 為, 若 Data 由 輸 入, 其 可 再 次 的 使 用, 並 可 或 內 容, 再 度 回 存 file 及 使 用 file 二 檔 案 的 TYPE: 1. 可 供 寫 入 Data 的 file, 分 成 及 ( 輸 出 檔 )( 接 收 Data 之 file) 2. 可 供 讀 取 Data 的 file, 分 成 及 ( 輸 入 檔 )( 提 供 Data 之 file) 3. 可 供 寫 入 與 讀 取 Data 的 file 三 檔 案 處 理 3steps 1. 開 檔 2. 3. 四 建 立 檔 案 開 檔 時 使 用 的 類 別 宣 告 1. ifstream (input file stream) 檔 案 物 件 : 建 立 可 供 讀 取 Data 的 file 2. ofstream (output file stream) 檔 案 物 件 : 建 立 可 供 Data 的 file 3. fstream ( 注 意 沒 有 i/o) 檔 案 物 件 : 建 立 可 供 Data 的 file program ofstream ifstream file file in out computer 97

五 開 檔 格 式 : 1. 方 法 1: ifstream ofstream 檔 案 物 件 ; 三 選 一 fstream 檔 名.open( 檔 案 名 稱,ios:: 開 啟 模 式 ); 2. 方 法 2: 方 法 1 要 寫 兩 列 可 濃 縮 為 方 法 2 ( 建 議 使 用 ) ifstream ofstream 檔 名 ( 檔 案 名 稱,ios:: 開 啟 模 式 ); fstream 3. 開 啟 模 式 說 明 : (1) ios::app (2) ios::binary 可 供 二 進 位 的 I/O file( 其 允 許 I/O 一 般 Data 及 結 構 物 件 ) (3) ios::in (4) ios::out (5) ios::trunc 若 開 啟 的 file 已 存 在, 則 先 刪 除 它, 再 開 啟 它 4. 例 子 : ifstream inf; // 建 立 一 個 可 供 讀 取 Data 的 file 物 件 ( 輸 入 檔 )inf inf,open( C:\\test.txt,ios::in); // 開 啟 一 個 輸 入 檔 為 text.txt 註 : 在 windows 的 作 業 系 統 環 境 中, 目 錄 請 用 隔 開, 其 原 因 \ 英 文 字 母 可 能 有 特 殊 的 意 義 (\n 表 換 列 ) 利 用 可 避 免 發 生 一 些 錯 誤 98

六 檢 查 file 是 否 開 啟 成 功 : 1. 開 檔 失 敗 常 見 原 因 : (1) (2) 因 此 於 開 檔 時, 最 好 做 test 2. 使 用 方 法 : 檔 案 物 件 名.is_open(): 若 成 功 傳 回 true, 否 則 傳 回 false 3. Ex: 承 上 例 ifstream inf( C:\\test.txt,ios::in); // 建 立 檔 案 物 件 inf 及 檔 案 test.txt if(.is_open()) 開 檔 成 功 動 作 ; else 開 檔 不 成 功 動 作 ; 註 : 開 啟 一 個 file 包 含 了 開 啟 及 其 實 主 角 為 文 字 檔 的 處 理 : 一 所 謂 文 字 檔 (text file) 就 是 由 所 構 成 的 file 二 於 C++ 中 以 將 Data 寫 入 檔 案, 以 將 Data 由 檔 案 中 讀 出 99

將 資 料 寫 入 文 字 檔 ( 新 建 一 文 字 檔 ) 一 Ex: 1. 建 立 一 輸 出 檔 名 為 Donky.txt, 檔 案 物 件 名 為 ofile program ofstream Ofile 之 donky.txt 輸 出 檔 ( 接 收 Data 者 ) 2. 寫 入 內 容 為 : aaaaa bbbbb 註 :1. 關 檔 格 式 為 檔 案 物 件 名.close(); 2. 使 用 file 時 於 #include 中 要 加 入 <fstream> 3. 內 容 : #include<iostream> #include<cstdlib> #include // 開 檔 專 用 using namespace std; int main(void) 處 理 ofile( C: ios:: ); // 開 檔 if(.is_open()) // 測 試 開 檔 成 功 否 else aaaaa endl; // 將 內 容 寫 入 file bbbbb endl; // 將 內 容 寫 入 file cout << 開 檔 成 功, 並 建 檔 完 成 <<endl; // 提 示 處 理 成 功 cout << 哦!! 我 失 敗 了 <<endl; ; // 關 檔 100

system( pause ); return 0; 註 :1. 正 常 情 形 執 行 上 program 2. 然 後 可 到 C 碟 之 根 目 錄 下 找 到 donky.txt 這 個 file, 打 開 它 可 見 到 下 列 內 容 : Aaaaa Bbbbb 4. 將 上 述 檔 案 內 容 再 加 上 一 列 ccccc, 注 意 事 項 : 1. 檔 案 名 稱 Donky.txt 不 可 改 變, 但 檔 案 物 件 名 ofile 可 改 變, 並 改 為 afile i.e. 建 檔 只 要 記 不 必 記 2. 在 開 檔 模 式 中 改 為 (ios::out ios:: ) 表 示 原 file 中 的 最 後 再 加 上 一 些 內 容 3.Please 上 機 try try!! 從 file 中 讀 入 Data( 建 立 輸 入 檔 ) 一 Ex: 將 上 例 建 好 之 file Donky.txt 內 容 讀 出, 並 由 cout 印 出 來 看 1. ifile.eof(): 表 示 file 以 被 讀 完 2. : 表 示 file 未 被 讀 完 3. 創 作 此 program 注 意 事 項 : (1) 需 使 用 建 立 檔 案 物 件 ( 設 檔 案 物 件 名 為 ifile) (2) 檔 案 模 式 為 101

4. 內 容 : int main(void) char a[40]; // 建 立 字 元 陣 列 a, 接 收 由 file 送 出 之 Data ; // 開 檔 while( ) // 檔 未 讀 完 繼 續 讀 檔 ifile ; // 將 file 內 容 寫 入 陣 列 a cout << 檔 案 內 容 : << a << endl; // 用 一 般 指 令 印 出 file 內 容 ; // 關 檔 system( pause ); return 0; 102

Program 7 File 一 此 program 的 用 意 為 熟 悉 file 的 新 建 增 加 內 容 於 後, 再 讀 出 內 容 印 出, 困 難 指 數 為 高 級 但 不 難 創 作 寫 此 program 時 將 上 列 三 動 作 寫 在 同 一 程 式 內 二 題 目 需 求 : 1. 動 作 1: 建 立 輸 出 檔 (Data File) (1) 開 啟 一 檔 案 物 件 名 為 ofile, 檔 名 為 gfile.txt (2) 寫 入 下 列 內 容 : Compile 課 程 已 近 尾 聲! 謝 謝!! 各 位 的 選 修 (3) 建 完 後 關 閉 此 file 2. 動 作 2: 增 加 內 容 (1) 開 啟 一 檔 案 物 件 名 為 afile, 檔 名 為 gfile.txt (2) 將 原 內 容 再 加 上 以 下 內 容 : 期 待 下 次 再 見 並 祝 高 分 通 過!! (3) 關 檔 3. 動 作 3: 建 立 輸 入 檔 (File Computer) (1) 開 啟 一 檔 案 物 件 名 為 ifile, 檔 名 為 gfile.txt (2) 讀 出 此 file 內 容, 並 將 其 內 容 顯 示 在 LCD 上 (3) 關 檔 三 Due Day: 103