第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

单元二:面向对象程序设计 任务二:借书卡程序设计.
C语言程序设计 主讲教师 :张群燕 电话:
项目五——校园一卡通程序功能模块化设计 5-1项目显示查询和退出函数设计.
第7章 C#函數與.NET Framework類別函數庫
第五章 树 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
C++程序设计 主讲:王兴波教授 1.
C++程序设计 王希 图书馆三楼办公室.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
資料大樓 --談指標與陣列 綠園.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
C++程序设计 第二讲 清华大学软件学院.
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
C 程式設計— 指標.
If … else 選擇結構 P27.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
程序设计期末复习 黎金宁
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
程式撰寫流程.
第3章 變數、常數與資料型態 3-1 C語言的識別字 3-2 變數的宣告與初值 3-3 指定敘述 3-4 C語言的資料型態
第一章 C++编程简介 丘志杰 电子科技大学 计算机学院 软件学院.
计算机网络讲义 第5章 批量数据处理—数组 一维数组 排序和查找 二维数组 字符串.
软件学院 张 慧 清华大学软件学院.
3 數學運算 3.1 鍵盤輸入 輸入函數cin 多重輸入cin 輸出格式化 3-3
計數式重複敘述 for 迴圈 P
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
Introduction to the C Programming Language
10 多載函數 10.1 多載概論 多載一般函數 多載成員函數 10-3
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
第三章 链表 单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵.
Name1..hour //加班時數 name2..hour //請假時數
Chapter 2 & Chapter 3.
程式結構&語法.
Java變數 2014/6/24.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
Introduction to the C Programming Language
Introduction to the C Programming Language
Oop8 function函式.
物件導向程式設計 CH2.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
第三章 数据抽象.
C++程式設計入門 變數與運算子 作者:黃建庭.
第二章 类型、对象、运算符和表达式.
Introduction to the C Programming Language
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
第 3 章 类的基础部分 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
挑戰C++程式語言 ──第9章 函數.
#include <iostream.h>
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Introduction to the C Programming Language
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
第三章 高级函数特性.
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
變數與資料型態  綠園.
資料!你家住哪裏? --談指標 綠園.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
Introduction to the C Programming Language
第十二章 C与C C转入C++时不需改变的内容 12.2 C转入C++的一些与类无关的 新特性
隨機函數.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置

12-1 C++語言的基礎 12-1-1 C++語言的歷史 12-1-2 第一個C++程式 12-1-3 C++語言的布林資料型態

12-1-1 C++語言的歷史-說明 C++語言是在1980年初期,Bjarne Stoustrup在AT&T貝爾實驗室著手開發的程式語言,在1983年定名為C++,1985年10月Bjarne Stoustrup出版「The C++ Programming Language,第一版」一書,這就是C++語言的標準版本。 到了1990年,ANSI成立X3J16委員會制定標準的ANSI-C++,直到1997年11月才製定完成標準的ANSI-C++,事實上,1989年製定C語言的ANSI-C時,也曾參考C++語言的部分語法。

12-1-1 C++語言的歷史-C與C++ C++語言是將C語言擴充成一種物件導向的程式語言,其最初的目的是建立更有效率的C語言,C++語言可以視為程序式程式語言,只是新增物件導向的功能和一些改進程序式程式語言的語法。 使用C++語言撰寫的程式可以使用傳統程序式程式設計(即C語言的寫法),也可以使用物件導向程式設計風格。

12-1-2 第一個C++程式-說明 C++程式架構類似C語言,在Dev-C++新增原始碼檔案後,只需編輯好程式碼將它儲存成副檔名.cpp(C語言是.c),如此的程式碼檔案即是C++程式。

12-1-2 第一個C++程式-步驟1 步驟1:建立C++程式和編輯程式內容 Dev-C++一樣可以編輯、編譯和執行C++應用程式。

12-1-2 第一個C++程式-步驟2 步驟2:編譯和執行C++應用程式 請執行「執行」→「編譯並執行」指令或按F9鍵,如果程式沒有錯誤,可以看到執行結果,在「命令提示字元」視窗顯示字串內容,如下圖所示:

12-1-2 第一個C++程式-架構 C++語言的程式架構和C語言相同,都是由含括標頭檔、函數和全域變數宣告、main()主程式和其它函數所組成,如下所示: 01: /* 程式範例: Ch12-1-2.cpp */ 02: #include <iostream.h> 03: #include <stdlib.h> 04: // 主程式 05: int main() 06: { 07: // 顯示訊息 08: cout << "第一個C++程式\n"; 09: system("PAUSE"); 10: return 0; 11: }

12-1-2 第一個C++程式-程式註解 程式註解:第1和7列是程式註解,C++除支援C語言的標準註解「/*」和「*/」外,還新增「//」符號開始的文字列作為註解(這也是C99支援的註解),如下所示: 07: // 顯示訊息

12-1-2 第一個C++程式-標頭檔 標頭檔:第2~3列含括標題檔,<iostream.h>標頭檔是C++語言基本輸出輸入串流的標頭檔。

12-1-2 第一個C++程式-主程式 主程式:第5~11列的main()函數是C++程式的主程式,這是C++應用程式執行時的進入點,也就是說執行C++程式是從此函數開始,如下所示: 05: int main() 06: { 07: // 顯示訊息 08: cout << "第一個C++程式\n"; 09: system("PAUSE"); 10: return 0; 11: }

12-1-3 C++語言的布林資料型態-bool布林資料型態 C++語言支援C語言所有的資料型態,在ANSI-C++還支援bool布林資料型態,如下表所示: bool type = true;

12-1-3 C++語言的布林資料型態-變數宣告與初值 C++語言不同於C語言只能在程式區塊的開始宣告變數,C++語言允許在程式碼的任何位置,只要需要使用變數即可宣告變數,在宣告變數後,指定初始變數值的方法,除了使用指定敘述,也可以在括號中指定初值,其語法如下: 資料型態 變數名稱 (初值); 上述程式碼是在宣告變數時,指定其初值,例如:宣告整數a,如下所示: int a (10); int b = 20;

12-1-4 C++語言的運算子-關係運算子(Relational Operators) C++語言支援布林資料型態bool,所以關係運算式的結果是布林值的變數,而不在是整數,其值只能是true或false(Dev-C++的GCC的實際值仍為1和0),例如:一些關係運算式的結果,如下所示: r1 = ((5 == 5) && (3 > 6)); // false(true && false) r2 = ((5 == 5) || (3 > 6)); // true(true || false) 變數r1和r2是bool布林資料型態,其值分別為false和true,實際值是整數值是0和1。

12-1-4 C++語言的運算子-型態迫換(Type Casting Operators) C++語言除了相容C語言的型態迫換方式外,也可以使用新語法,也就是將迫換的變數置於型態的括號中,首先是C語言方式,如下所示: int i; float f = 3.1415; i = (int) f; 上述程式碼將浮點變數f迫換成整數,變數i的值為整數3。C++還可以將變數置於括號中進行型態迫換,如下所示: i = int (f);

12-2 C++語言的輸出與輸入 12-2-1 C++語言的輸出與輸入 12-2-2 輸入一整行文字內容

12-2 C++語言的輸出與輸入 C++語言提供全新標準輸出與輸入串流(Streams)來取代C語言的標準輸出和輸入函數scanf()和printf(),在<iostream.h>標頭檔的C++函式庫支援2種資料串流,如下所示: cin:標準輸入串流。 cout:標準輸出串流。

12-2-1 C++語言的輸出與輸入-說明 C++語言的cin和cout運算子的字頭為「c」字元,表示這是「控制台」(Console),in/out表示輸入與輸出。 在C++程式只需含括<iostream.h>標頭檔,就可以使用cin和cout運算子輸入和輸出資料,如下所示: #include <iostream.h>

12-2-1 C++語言的輸出與輸入-cout運算子 C++程式只需將顯示字串或變數送到標準輸出cout運算子,就可以在螢幕上顯示,其功能如同簡化的printf()函數,如下: cout << "請輸入字串內容: "; cout運算子還可以重複使用「<<」運算子在同一列程式碼輸出多個字串,如下所示: cout << "字串內容:[" << string << "]長度為:" << count << "\n";

12-2-1 C++語言的輸出與輸入-cin運算子 cout運算子的相反操作是輸入資料,此時是使用的是cin運算子的輸入串流,如下所示: cin >> string; 程式碼從標準輸入讀取字串,串流方向是從標準輸入使用「>>」運算子送到變數,最後存入字串變數string,在功能上如同scanf("%s")函數。

12-2-2 輸入一整行文字內容 cin是一個串流物件,提供成員函數getline()可以取得一整行的文字內容,其原型宣告,如下所示: cin.getline(char buffer[], int length, char delimiter = ' \n'); 函數屬於cin物件的成員函數,使用「.」運算式呼叫,參數buffer是用來儲存輸入文字內容的字元陣列,length參數是讀取的最大字元數,也就是陣列長度,最後一個參數delimiter是判斷輸入結束,預設的參數值是新行字元'\n',即讀取到新行字元為止。

12-3 C++語言的動態記憶體配置-new運算子 ptr2 = new int; today = new date;

12-3 C++語言的動態記憶體配置-delete運算子 在C++程式使用new運算子配置的記憶體空間,可以使用delete運算子釋放指定型態的記憶體空間,其語法如下所示: delete 資料型態; delete[] 資料型態; new運算子的使用有2種方式,第一種是釋放配置單一元素型態的記憶體空間,第二種方式是釋放配置陣列的多個元素。

12-4 C++語言的參考變數和範圍運算子-參考變數Reference 參考變數是其它變數的別名,在宣告參考變數時,需要指定成其它變數的名稱,參考變數的宣告和指標變數的宣告相似,其宣告的語法格式,如下所示: 資料型態 &變數名稱; 宣告和指標變數宣告只是將變數名稱前的「*」號改為「&」符號(這就是取址運算子)。

12-4 C++語言的參考變數和範圍運算子-參考變數範例 整數變數別名的參考變數宣告,如下所示: int &ref = num; 程式碼宣告參考變數ref變數num,也就是num的別名,ref參考變數就是變數num,當指定變數ref的值,相當於是指定變數num的值,如下: num = 15; ref = 17; 指定敘述分別指定num = ref = 15和ref = num = 17,換句話說,變數num和ref位址屬性的記憶體位址是指同一個位址。

12-4 C++語言的參考變數和範圍運算子-範圍運算子(Scope Operators) 如果函數中擁有同名的區域和全域變數,在C語言的函數並無法存取全域變數,因為存取的是同名的區域變數,C++語言提供「::」運算子可以存取全域變數的值,如下所示: ::value = int(value) + 7; 程式碼的2個value變數,value是取得區域變數的值,::value是指定全域變數value的值。

12-5 C++語言的函數 12-5-1 函數過載 12-5-2 inline函數 12-5-3 參考變數的傳址呼叫 12-5-4 預設的參數值

12-5-1 函數過載 C++語言的函數允許擁有兩個以上同名的函數,只是函數傳遞的參數個數或資料型態不同,稱為「過載」(Overload),如下所示: int square(int); double square(double); 兩個同名函數的原型宣告只是參數的型態不同。接著是參數個數不同的函數範例,如下所示: int getMax(int, int); int getMax(int , int, int); 同名函數的參數個數為2和3。

12-5-2 inline函數 C++語言的inline函數主要針對一些小型且頻繁呼叫的函數,因為inline函數是直接在函數呼叫的程式列展開函數的程式碼,以便節省呼叫函數所花費的額外執行時間,加速程式的執行。 在C++程式建立inline函數只需在函數前加上inline關鍵字,如下所示: inline int square(int no) { return no*no; }

12-5-3 參考變數的傳址呼叫-說明 參考變數的函數原型宣告,如下所示: void swap(int &, int &); void swap(int &x, int &y); 上述2種函數原型宣告都可以,參數列可以只列出型態,也可以連參數名稱一併列出,這2個參數x和y都是參考變數,如果函數使用參考變數傳遞,在函數中的程式碼就可以直接更改其參考的變數值,也就是呼叫時傳入的變數值。

12-5-3 參考變數的傳址呼叫-函數 函數swap()的完整程式碼,如下所示: void swap(int &x, int &y) { int temp; temp = x; x = y; y = temp; }

12-5-4 預設的參數值 在C++的函數可以指定預設的參數值,換句話說,如果函數呼叫時沒有指定參數值,就是使用預設參數值,例如:預設參數值的函數呼叫,如下所示: int volume(int, int = 2, int = 3); int volume(int length, int width = 2, int height = 3);