明解C++教學手冊 柴田望洋 博士 著 書號:PG20269

Slides:



Advertisements
Similar presentations
1 第二讲 C++ 编程基础. 2 主要内容 C++ 语言概述 C++ 编程基础 数据的简单输入输出 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境.
Advertisements

基本概論 Basic concepts.
C语言程序设计 主讲教师 :张群燕 电话:
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
第一章 C语言概述 计算机公共教学部.
编译原理上机实习
雷 霆 战 机 By—谷恩轩&余万全.
C++程序设计 王希 图书馆三楼办公室.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
程式設計 博碩文化出版發行.
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第二章 C# 基础知识.
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
C++程序设计 第二讲 清华大学软件学院.
第3章 變數、資料型別與運算子.
程式語言 -Visual Basic 變數、常數與資料型態.
编译原理与技术 类型检查 2018/11/21 《编译原理与技术》-类型检查.
结构体和共用体 2 梁春燕 华电信息管理教研室.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程序设计期末复习 黎金宁
第三章 C++中的C 面向对象程序设计(C++).
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
第3章 變數、常數與資料型態 3-1 C語言的識別字 3-2 變數的宣告與初值 3-3 指定敘述 3-4 C語言的資料型態
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
1.1 数据结构讨论的范畴 1.2 基本概念 1.3 算法和算法的量度.
變數命名 保留字(Reserved Word)
C++语言程序设计 第二章 C++简单程序设计.
第三节 整数类型.
$10 可空类型.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
C#程序设计基础 第二章 数据类型.
第三章 C# 基础知识.
C++程序语言设计 Chapter 3: The C in C++.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C语言程序设计.
實作輔導 2 日期: 3/24(星期六) 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
OOP6 結構Struct 黃兆武.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
Java變數 2014/6/24.
第2章 数据类型及表达式 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
第 二 章 数据类型、运算符与表达式.
保留字與識別字.
C语言程序设计 李祥 QQ:
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
第3章 数据类型、运算符与表达式.
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第二章 类型、对象、运算符和表达式.
第2章 数据类型与表达式 学习目的与要求: 掌握C 语言的基本数据类型及使用方法 掌握C程序中常用的运算符和表达式 了解数据类型的转换.
第二章 基本数据类型 ——数据的表示.
Review 1~3.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
本节内容 指针类型.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
1.4WIN32中的宽字符.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
變數、資料型態、運算子.
第2章 Java语言基础.
第6章 PHP基本語法介紹.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
變數與資料型態  綠園.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第2章 Arduino编程.
Presentation transcript:

明解C++教學手冊 柴田望洋 博士 著 書號:PG20269

第四章 資料型態和陣列 本章要學習的是整數型態和浮動小數點型態等內建資料型態、有效率地表示同型態之資料的陣列,以及表示整數值之集合體的列舉。

4-1 整數型態 整數型態 整數型態(integer type)是可表示有限範圍內的連續整數之型態。 4-1 整數型態 整數型態 整數型態(integer type)是可表示有限範圍內的連續整數之型態。 在宣告型態時加上unsigned或signed等型態修飾詞(type specifier),可以指定要使用無符號的整數型態還是有符號的整數型態。

整數型態還可依據其能夠表示之個數,分為char、short int、int、long int這四種,除了char型態以外,其他三個形態都各有無符號版和有符號版。 這些型態與bool型態及wchar_t型態合稱為泛整數型態(integral type)或整數型態(integer type)。

C++的處理器是以<climits>標頭來提供整數型態的各型態所能表現之數值範圍。

#define指令是進行「取代」之指示,像這樣的取代指令就是類似對象巨集(object-like macro),而INT_MAX這樣的名稱則是巨集名稱(macro name)。

使用類似對象巨集的優點為: 可以將值的管理集中在巨集定義的部份。 由於可以賦予常數值名稱,所以程式會比較容易解讀。

字元型態有以下三種: 單純字元型態 無符號的字元型態 有符號的字元型態

字元型態所能表現的範圍會因處理器而不同,這是因為各種處理器之字元型態在記憶體上所佔有的位元數不同。

電腦是透過字元碼來識別字元。

整數常值是以十進位數、八進位數以及十六進位數這三種基數來表示。

物件和sizeof運算子 變數的正式名稱為物件(object)。

sizeof運算子有以下這兩種形式: sizeof 運算式 izeof(型態)

size_t型態和typedef sizeof運算子所產生的size_t型態,並不是C++本身的內建型態(built-in type),必須引入<cstddef>標頭才能使用。 typedef宣告可以給予即存型態另一個名稱。

typeid運算子 typeid運算子可以取得型態的各種相關資訊。

bool型態 不是0的數值會被視為true,而0則會被視為false。

4-2 浮動小數點型態 浮動小數點型態 浮動小數點型態()可以表示具有小數點以下部份之實數,它可分為以下這三種: float 4-2 浮動小數點型態 浮動小數點型態 浮動小數點型態()可以表示具有小數點以下部份之實數,它可分為以下這三種: float double long double

浮動小數點常值可以使用附指數之數學表示法。 若是加上浮動小數點尾碼(floating suffix),就可以指定型態。

4-3 運算和型態 運算和型態

在兩邊運算元的型態不同的運算中,會進行隱式形態轉換(implicit type conversion)。

作為運算對象的運算元之型態不同時,型態較小的運算元會先轉換成較大的型態再進行計算。

顯式型態轉換 要用實數求取整數除以整數的商時,至少要有一邊的運算元是double型態,並且使用「/」運算子。

這種顯式型態轉換(explicit type conversion)就叫做轉型(cast),其中的( )則是轉型運算子。 顯式型態轉換的轉型寫法: (型態) 運算式 這種顯式型態轉換(explicit type conversion)就叫做轉型(cast),其中的( )則是轉型運算子。 顯式型態轉換的函數寫法: 型態 (運算式)

static運算子可以執行靜態轉型(static cast),它是適用於隱式型態轉換的「自然型態轉換」所使用的運算子。

可以使用轉型寫法、函數寫法和static cast的其中之一,來進行整數和浮動小數點數之間的型態轉換。

迴圈控制 下列程式的執行結果會視處理器而有所不同。

作為判斷迴圈之基準的變數,應該使用整數而非浮動小數點數。

4-4 陣列 陣列 陣列是由同型態之變數(元素)集合而成的。 陣列是透過賦予元素型態、變數名稱和元素數來宣告,而元素數必須是常數。

各元素的存取是藉由在[ ]中賦予整數型態之索引(subscript)來進行。 由於開頭元素的索引會是0,所以各元素從頭開始會依序是a[0]、a[1]、a[2]、a[3]、a[4]、a[5]。

可藉由陣列來實現相同型態的集合體。

陣列和for敘述 下面是使用陣列的程式。

下面是用for敘述改寫之後的程式。

使用陣列處理成績 使用陣列改寫List 4-17的程式如下:

加上const來宣告的物件,就可以作為無法變更值的常數運算式(const expression)來使用。

陣列的初始化 給予陣列的初始化子是用逗號(,)來區隔,並依序排在{ }之中。 若是不給予元素數來宣告陣列,就會依初始化子的數量來決定陣列的元素數。

陣列的元素數 陣列a的元素數是使用sizeof(a) / sizeof(a[0])來求取。

陣列型態的資訊 typeid運算子也可以調查陣列的型態。

將陣列逆向排列

陣列的複製 由於無法透過指定運算子來複製陣列,所以必須像下面的程式這樣子進行複製。

逐一走過陣列的元素就叫做走訪(traverse)。

多維陣列 也可以將「陣列」作為陣列的元素,這種陣列又稱為多維陣列(multidimensional array)。

初始化子 沒有給予初始化子的元素,將自動以0初始化。 多維陣列的初始化子沒有必要以{ }來作成巢狀結構。

4-5 列舉 列舉 表示可以表示值的「集合體」。 宣告表示狗、貓、猴的集合體之列舉(enumeration)。Animal是列舉名稱(enum-name),而{ }中的Dog、Cat、Monkey則是列舉元(enumerator)。 無法對列舉的變數使用插入運算子來讀入值,此時會暫且將值讀入int型態的變數type。 宣告animal型態的變數「selected」。

總結 表示有限範圍的整數之整數型態有char型態、int型態、bool型態、wchar_t型態。整數型態的特性是在<climits>標頭中作為類似對象巨集來定義。 表示實數的浮動小數點型態有float型態、double型態、long double型態。浮動小數點型態的特性是定義在<cfloat>標頭中。 char型態有單純char型態、unsigned char型態、signed char型態這三種。單純char型態是有符號形態還是無符號型態則視處理器而定。 程式中是以字元碼來辨識字元。 透過isprint之類的is…函數,就可以調查字元的種類。 int型態有short版、單純int版、long版這三種。而每一種還可分為有符號版和無符號版。

整數常值可以用十進位、八進位以及十六進位來表示。必要的時候,還必須在最後面加上整數尾碼U或L來指定型態。 迴圈的控制應該使用整數型態而不是浮動小數點型態。 bool型態是表示真和偽的型態。布林常值有true和false這兩個。 如果插入boolalpha操作子,就可以將bool型態的值以字元而非整數值來輸出。 物件就是用來表現值的記憶區域。 運算式和型態在記憶體上所佔有的大小,可以使用sizeof運算子來取得。 sizeof運算子所產生的size_t型態是在<cstddef>標頭內被typedef宣告。 typedef宣告可以給予原有的型態一個新的名稱。 型態的相關資訊可以透過typeid運算子來取得。

整數之間的計算結果會是整數,而浮動小數點數之間的計算結果則會是浮動小數點數。 浮動小數點型態和整數型態等不同型態之間的數值計算,會自動進行型態轉換。 要將運算式的值轉換成以其他型態來表現的值,只要進行轉型(型態轉換)即可。 轉型有轉型寫法、函數寫法、動態轉型、靜態轉型、強制轉型以及常數性轉型這六種。整數和浮動小數點數之間的型態轉換,可以用轉型寫法、函數寫法和靜態轉型的任何一種來進行。 集合同型態的物件,並在記憶體上排成一線就是陣列,陣列是以元素型態、名稱、元素數來作為特徵。 陣列的各個元素可以透過索引運算子[ ]來存取。索引是指示元素位置(位於開頭之後的第幾個元素)的值。

宣告陣列時一定要給予元素數(作為常數運算式),如果需要表示元素數的變數的話,可以將元素數作為常數物件來實現。另外,宣告過的陣列a的元素數,可以使用sizeof(a) / sizeof(a[0])來求取。 不可以使用指定運算子「=」來完全複製陣列的所有元素。 對陣列的元素進行有規律的操作時,很適合使用for敘述。 以陣列作為元素的陣列就是多維陣列,透過視維數之不同來多重地使用索引運算子[ ],就可以存取各個元素。 列舉可以表示某個範圍的整數之集合體,各個列舉元會是表示值的名稱。 對整數常數給予名稱時,應該使用常數物件或列舉,而不是類似對象巨集。