Microsoft PowerPoint - ch02_AEL0080.ppt

Similar documents
新版 明解C++入門編

FY.DOC

CC213

untitled

2.1 n ~á CPU q ˆ ~ µƒã î ˆ C++ à nù eô 1. (edit) 2. Í (preprocess) 3. (compile) 4. (link) 5. (load) 6. ˆ (execute) µl ô Ãs nù (editor) Í (preprocessor

c_cpp

Microsoft Word - 01.DOC

CC213

C/C++语言 - C/C++数据

新・明解C言語入門編『索引』

Microsoft PowerPoint - ch11.ppt

Microsoft PowerPoint - ch04_AEL0080.ppt

ebook39-5

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

51 C 51 isp 10 C PCB C C C C KEIL

untitled

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

untitled

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

Microsoft PowerPoint - Class5.pptx

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C 1

untitled

概述

Microsoft PowerPoint - ch09_AEL0080.ppt

epub83-1

第3章.doc

提问袁小兵:

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

全国计算机技术与软件专业技术资格(水平)考试

nooog

_汪_文前新ok[3.1].doc

untitled

ebook39-6

The golden pins of the PCI card can be oxidized after months or years

Microsoft PowerPoint - ch03_AEL0080.ppt

Microsoft Word - CPE考生使用手冊 docx

Strings

Microsoft Word - 11.doc

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

投影片 1

C语言的应用.PDF

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

EK-STM32F

Microsoft PowerPoint - C-Ch11.ppt

Microsoft Word - ch04三校.doc

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

Java

Microsoft PowerPoint - 11_Templates.ppt

C/C++语言 - 分支结构

PowerPoint Presentation

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

C/C++ 语言 - 循环

untitled

untitled

Microsoft PowerPoint - string_kruse [兼容模式]

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

Microsoft PowerPoint - Chap03.ppt [相容模式]

3.1 num = 3 ch = 'C' 2

概述

Ps22Pdf

Microsoft Word - PHP7Ch01.docx

Microsoft PowerPoint - STU_C_Lang_CH01.ppt

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

《大话设计模式》第一章

Microsoft PowerPoint - 02 C語言基本概述.ppt

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

Microsoft PowerPoint - 02 C語言基本概述.ppt

Microsoft Word - compilation.docx

Strings

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Microsoft PowerPoint - P833_Ch02.ppt

Microsoft Word - well_game.doc

chp6.ppt

附录J:Eclipse教程

運算子多載 Operator Overloading

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

<4D F736F F D20B2C43032B3B920B8EAAEC6ABACBA41BB50AAEDA5DCA6A12E646F63>

Microsoft Word 軟體設計第二部份範例試題_C++_ _1_.doc

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

Transcription:

2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門 本章藉由兩個簡單的程式, 介紹 C++ 程式的基本結構和開發環境, 讓初學者能逐漸建立使用 C++ 的信心 1/44 C++ 的基本語法和使用環境 2.1 2.2 2.3 2.4 2.5 2.6 基本程式開發步驟第一個完整的 C++ 程式 Borland C++ 編譯器的取得和安裝使用 Visual C++.NET 程式開發步驟第二個 C++ 程式 C++ 代號的命名規則 2/44

基本程式開發步驟 1. 編輯 (edit) 2. 前處理 (preprocess) 3. 編譯 (compile) 4. 聯結 (link) 5. 裝載 (load) 6. 執行 (execute) 3/44 基本程式開發步驟示意圖 概念 編輯器 標頭檔 原始程式碼 前處理器 轉譯單元 編譯器 目的檔 程式庫 聯結器 4/44 執行結果 裝載器 執行檔

基本程式開發步驟 編譯器 (compiler) 將前置處理器處理後的中間檔 ( 轉譯單元 ), 轉譯成二進位機器碼目的檔 (.obj) 或人還看得懂的組合語言程式碼 ( 其後再呼叫 assembler, 再翻成機器碼 ) 另外並進行語法檢查和程式碼最佳化 聯結 (linking): 將目的程式聯結其他程式 ( 已經編譯成機器碼的程式片段, 內建或自行開發的程式庫 ), 產生執行檔 (.exe) 相對位址 -> 絕對位址 裝載器 (Loader): 將可執行碼放至於主記憶體內 加入.dll 2.2 第一個完整的 C++ 程式 5/44 6/44 // Test.cpp // 程式的目的是在顯示器上顯示一行文字 #include <iostream> using std::cout; using std::endl; // -- 程式主體部份 --------------------- int main() { cout << "Hello, 您好!" // 主要的敘述 << endl; return 0; } 這個程式包括了註解 (comments) 前處理指令 (preprocessor directives) 以及程式主體三個部份

6/44 7/44 註解的目的 1. 在每個檔案的開頭置入一段文字, 以便於日後追查 2. 補充說明變數和函數等自行定義的元件之意義, 以及使用上的注意事項 3. 使程式更容易閱讀 4. 將程式的某些部份暫時轉成註解, 可以不用真的把該部份程式刪除, 隨時可以恢復, 避免重複輸入 註解的兩種做法 1. 從雙斜線 // 的右邊開始, 一直到整行結束, 都視為註解 2. 以 /* 開頭, 一直到 */, 中間所包括的文數字或符號都視為註解 7/44 8/44

8/44 9/44 註解的兩種形式 /* Test.cpp 程式的目的是在顯示器上顯示一行文字 */ #include <iostream> using std::cout; using std::endl; // -------- 程式主體部份 --------------- int main() { cout << "Hello, 您好!" /* 主要的敘述 */ << endl; return 0; } 前置處理器指令 (preprocessor directives) 以符號 # 開頭的指令行在程式編譯前會由前置處理器先行處理 (i.e. 編譯程式前先做準備工作 ), 每個前置處理指令必須獨佔一行 #include <iostream> iostream.h: 標頭檔 (header file). 定義有關輸出入等串流函數資訊, 以供編譯器使用 依程式撰寫內容將 iostream.h 包進程式裡面, 以引進相關程式庫, 讓程式設計者方便使用裡面的函數 常數 運算等 使程式碼簡潔, 節省時間 常用程式庫見附錄 C

OOXX.???? **** 標頭檔 iostream XXXX.???? @@@ 標頭檔 stdlib #include <iostream> #include <stdlib> using namespace std; int main(void) { return 0; } OOXX???? **** XXXX.???? @@@ using namespace std; int main(void) {. return 0; } 編譯 前置處理器指令 (preprocessor directives) 在 ANSI/ISO C++ 最新規範中, C++ 標準函數庫 (library) 裡包含的函數 類別與物件均是定義在 std 這個名稱空間內 所以必須指明所使用的名稱空間為 std, 以便使用 C++ 所提供的標準程式庫 using std::cout std: 名稱空間 (name space) 表示使用 std 名稱空間內的 cout 函數 使用某個名稱空間內的變數或函數時, 我們必須使用 :: 把名稱空間和名稱空間內的變數或函數連在一起 名稱空間目的是為了避免大型程式間使用不同程式時, 發生變數或函數名稱重覆的問題 using namespace std;

前置處理器指令 (preprocessor directives) OOXX.???? AAA; **** 標頭檔 First.h XXXX.???? AAA; @@@ 標頭檔 Second.h #include First.h. using namespace std; int main(void) {. AAA;. return 0; } 因名稱衝突而無法引用既有程式的問題 10/44 14/44 程式主體 C++ 程式可能含有一個或一個以上的函數, 但只能有一個叫做 main 不管 main() 是不是程式中第一個出現的函數, 程式都是從 main() 開始執行 在 main() 左邊的關鍵字 int 表示 main() 的執行結果將會傳回一個整數 與程式本體內的最後一個敘述 return 0; 是對應的 完整的指令稱為敘述 (statement), 每一個敘述都是以分號結尾

cout 和 endl cout << "Hello, 您好!" << endl; cout 唸作 C-Out, 代表由標頭檔 <iostream> 定義的一個輸出資料流物件 (output stream object) 運算符號 << 稱為資料流插入運算子 (stream insertion operator) endl 是一種格式操縱子 (manipulators), 用來設定輸出格式 11/44 15/44 程式 Test.cpp 的更簡略形式 #include <iostream> using namespace std; int main() { cout << "Hello, 您好!" << endl; return 0; } 12/44 16/44

using 指令 (using directive) using namespace std; 在 using 指令之後, 所有名稱空間 std 內的標準元件都開放出來, 不再受限, 所以不需要在使用 using std:cout; 和 using std::endl; 兩個 using 宣告 13/44 17/44 C++ 程式的編排方式 下列的寫法都可以產生正確的輸出結果 : (1) #include <iostream> using namespace std; int main() { cout << "Hello, 您好!" << endl; } (2) #include <iostream> using namespace std; int main() { cout << "Hello, 您好!" << endl;} (3) #include <iostream> using namespace std; int main() { 14/44 18/44 cout << "Hello, 您好!" << endl;

15/44 19/44 延遲 DOS 視窗畫面自動關閉的方法 // TestW.cpp // 延遲 DOS 畫面自動關閉 #include <iostream> using namespace std; // 程式主體部份 int main() { cout << "Hello, 您好!" << endl; system("pause ); return 0; } 從 Windows XP 檔案總管直接以滑鼠執行 TestW.exe 16/44 20/44

Edit-Compile-Run 的程式開發流程循環 概念 Source Code Executable Code 執行結果 Edit Compile Run 17/44 21/44 使用 Borland 編譯器在 DOS 下編譯和執行範例程式 Test.cpp 18/44 22/44

Visual C++.NET 程式開發步驟 啟動 Visual C++.NET 19/44 23/44 Visual Studio.NET 的 起始頁 20/44 24/44

建立新專案 21/44 25/44 Win32 應用程式精靈 視窗 22/44 26/44

Visual Studio.NET 的設計視窗 工具列 標題 功能表 23/44 27/44 Workspace 視窗編譯訊息視窗程式碼視窗 24/44 28/44 PTest.cpp #include "stdafx.h" using namespace std; int main() { cout << "Hello, 您好!" << endl; cin.get () ; return 0; }

完成後的程式碼視窗如下圖所示 : 25/44 29/44 接著在工具列中按下 全部儲存 鈕 : 26/44 30/44

再按下工具列中的 啟動 鈕 : 27/44 31/44 要求重新編譯和執行的 Microsoft Development Environment 視窗 28/44 32/44

執行結果 29/44 33/44 開啟舊專案 30/44 34/44

插入檔案 新增檔案 視窗 31/44 35/44 加入標頭檔 32/44 36/44

另存新檔 視窗, 完成加入檔案的動作 33/44 37/44 變數的宣告和使用 所有 C++ 程式內的變數都要經由宣告才能使用 int x, y, Sum; 或 int x; int y; int Sum; // 第一個輸入整數 // 第二個輸入整數 // 兩個整數的和 34/44 38/44

宣告敘述與記憶體空間的對應關係 資料型態決定了變數佔用記憶體空間的大小 變數名稱代表記憶體所在的位址 35/44 39/44 變數宣告的兩重含意 1. 指定在記憶體內的空間大小 2. 規定這個變數所能接受的運算 36/44 40/44

變數 每個變數在記憶體內都有特定的位置, 而每個記憶體位置都有一個位址 (address/memory address) x 稱為變數的代號 ( 識別字, identifier) 當我們在程式敘述中參考到 x, 事實上操作的對象是記憶體該位址內的內容 x=x+1; = 為指定運算子 (assignment operator), 非數學上的 等於 概念 sum=x+y; (o) x+y=sum; (x) rval (right value) 和 lval (left value) 指派運算子 = 右邊的運算元稱為 rval ( 右值 ), 它必須在這個敘述處理前就有確定的值 指派運算子 = 左邊的運算元稱為 lval ( 左值 ), 準備用來存入 rval 的值 ; 它必須具有足夠的記憶空間, 而且是屬於相容的資料型態 37/44 42/44

輸入資料流物件 (input stream object) cin 用來配合資料流擷取運算子 (stream extraction operator), >>, 把來自鍵盤的輸入讀進執行中的程式 例如 :cin >> x; cin 和 cout 都是定義於標頭檔 <iostream>, 也使用 std 做為 namespace 38/44 43/44 從顯示器輸出訊息 cout << 請輸入第一個整數 \n? cout << 請輸入第一個整數 " << endl; 39/44 44/44

40/44 45/44 第二個 C++ 程式 Sum.cpp // Sum.cpp // 要求使用者輸入兩個整數, 並把計算結果輸出 #include <iostream> using namespace std; int main() { int x; // 第一個輸入整數 } int y; // 第二個輸入整數 int Sum; // 兩個整數的和 cout << " 請輸入第一個整數 \n"; cin >> x; cout << " 請輸入第二個整數 \n"; cin >> y; Sum = x + y; cout << " 這兩個整數的和是 : " << Sum << endl; return 0; 程式 Sum.cpp 的操作過程 41/44 46/44

C++ 代號 (identifiers) 的命名規則 1. 代號由英文字母 數字和底線符號 _ 構成, 長度不限 2. 英文字母的大小寫不同 3. 開頭不可以用數字 4. 不可以使用 C++ 內設的關鍵字 (keywords) 42/44 47/44 C++ 的 74 個關鍵字 43/44 48/44 and and_eq asm auto bitand bitor bool break case catch char class compl const const_cast continue default delete do double dynamic cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new not not_eq operator or or_eq private protected public register reinterpret_c return ast short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq

C++ 的代號 (identifiers) 1. 可以接受的代號 : Tax Tax_Paid TaxPaid a1 velocity A_1 _GoodDay 2. 錯誤的命名方式 : 1b %a -x 合計 asm you&me A@mail 44/44 49/44