1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu lập trình C++ tiếng Việt

200 670 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 200
Dung lượng 1,78 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

C++ là ngôn ngữ lập trình bậc trung, được phát triển bởi Bjarne Stroustrup năm 1979 tại Bell Labs. C++ chạy trên các nền tảng đa dạng, như Windows, Mac OS, và các phiên bản Unix đa dạng.C++ là ngôn ngữ lập trình bậc trung, được phát triển bởi Bjarne Stroustrup năm 1979 tại Bell Labs. C++ chạy trên các nền tảng đa dạng, như Windows, Mac OS, và các phiên bản Unix đa dạng.

Trang 1

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 1

Mục lục

Học C++ cơ bản và nâng cao 9

Đối với độc giả 9

Điều kiện tiền đề 9

Tổng quan về C++ 9

Lập trình hướng đối tượng 10

Thư việc chuẩn C++ (C++ Standard Library) 10

ANSI Standard 10

Học tập C++ như thế nào? 10

Miền sử dụng của C++ 11

Cài đặt môi trường C++ 11

Cài đặt môi trường nội bộ cho C++ 11

Text Editor 11

C++ Compiler: 11

Cài đặt GNU C/C++ Compiler 12

Cài đặt trên UNIX/Linux 12

Cài đặt trên Mac OS X 12

Cài đặt trên Windows 12

Cú pháp C++ cơ bản 13

Cấu trúc chương trình C++ 13

Biên dịch và thực thi chương trình C++ 14

Dấu chấm phảy và khối (block) trong C++ 15

Định danh (Identifier) trong C++ 16

Từ khóa trong C++ 16

Trigraph trong C++ 17

Khoảng trắng (Whitespace) trong C++ 18

Comment trong C++ 19

Kiểu dữ liệu trong C++ 20

Trang 2

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 2

Kiểu dữ liệu nguyên thủy trong C++ 20

Khai báo typedef trong C++ 23

Kiểu liệt kê enum trong C++ 24

Kiểu biến trong C++ 24

Định nghĩa biến trong C++ 25

Khai báo biến trong C++ 26

Ví dụ 27

Lvalue và Rvalue trong C++ 28

Phạm vi biến trong C++ 29

Biến cục bộ trong C++ 29

Biến toàn cục trong C++ 30

Khởi tạo biến cục bộ và biến toàn cục trong C++ 31

Hằng (Constant/Literal) trong C++ 32

Hằng số nguyên trong C++ 32

Hằng số thực trong C++ 33

Boolean literal trong C++ 33

Hằng ký tự trong C++ 34

Hằng chuỗi trong C++ 35

Định nghĩa hằng trong C++ 36

Sử dụng bộ tiền xử lý #define trong C++ 36

Sử dụng từ khóa const trong C++ 37

Modifier trong C++ 37

Qualifier trong C++ 39

Lớp lưu trữ (Storage Class) trong C++ 39

Lớp lưu trữ auto trong C++ 40

Lớp lưu trữ register trong C++ 40

Lớp lưu trữ static trong C++ 41

Lớp lưu trữ extern trong C++ 42

Lớp lưu trữ mutable trong C++ 43

Trang 3

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 3

Toán tử trong C++ 43

Toán tử số học trong C++ 44

Toán tử quan hệ trong C++ 45

Toán tử logic trong C++ 45

Toán tử so sánh bit trong C++ 46

Toán tử gán trong C++ 49

Các toán tử hỗn hợp trong C++ 51

Thứ tự ưu tiên toán tử trong C++ 52

Vòng lặp trong C++ 53

Các lệnh điều khiển vòng lặp trong C++ 55

Vòng lặp vô hạn trong C++ 55

Điều khiển luồng trong C++ 56

Toán tử điều kiện ? : trong C++ 57

Hàm trong C++ 57

Định nghĩa một hàm trong C++ 58

Ví dụ 59

Khai báo hàm trong C++ 59

Gọi hàm trong C++ 60

Tham số của hàm trong C++: 61

Giá trị mặc định cho các tham số trong C++ 62

Number trong C++ 63

Định nghĩa Number trong C++ 63

Hàm toán học trong C++ 65

Số ngẫu nhiên (Random Number) trong C++ 67

Mảng (Array) trong C++ 68

Khai báo mảng trong C++ 69

Khởi tạo mảng trong C++ 69

Truy cập các phần tử mảng trong C++ 70

Chi tiết về mảng trong C++ 71

Trang 4

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 4

Chu ỗi (String) trong C++ 72

Chuỗi theo phong cách C 72

Lớp String trong C++ 75

Con tr ỏ trong C++ 76

Con trỏ là gì? 77

Cách sử dụng con trỏ trong C++ 78

Chi tiết về con trỏ trong C++ 79

Tham chi ếu trong C++ 79

Tham chiếu và con trỏ trong C++ 80

Tạo tham chiếu trong C++ 80

Date và Time trong C++ 82

Date và Time hiện tại trong C++ 84

Định dạng Time bởi sử dụng cấu trúc tm trong C++ 85

Input/Output trong C++ 86

Header file cho I/O trong C++ 86

Standard Output Stream (cout) trong C++ 87

Standard Input Stream (cin) trong C++ 87

Standard Error Stream (cerr) trong C++ 88

Standard Log Stream (clog) trong C++ 89

Cấu trúc dữ liệu trong C++ 90

Định nghĩa một cấu trúc trong C++ 90

Truy cập các thành viên của cấu trúc trong C++ 91

Cấu trúc như là tham số hàm trong C++ 93

Con trỏ tới cấu trúc trong C++ 94

Từ khóa typedef trong C++ 97

Lớp và Đối tượng trong C++ 97

Định nghĩa Lớp trong C++ 98

Định nghĩa Đối tượng trong C++ 98

Truy cập các thành viên dữ liệu trong C++ 99

Trang 5

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 5

Chi tiết về Lớp & Đối tượng trong C++ 100

Tính kế thừa trong C++ 101

Lớp cơ sở (Base Class) và Lớp thừa kế (Derived Class) trong C++ 102

Điều khiển truy cập và Tính kế thừa trong C++ 103

Kiểu kế thừa trong C++ 104

Đa kế thừa trong C++ 105

Nạp chồng toán tử và Nạp chồng hàm trong C++ 107

Nạp chồng hàm trong C++ 107

Nạp chồng toán tử trong C++ 109

Toán tử có thể nạp chồng và không thể nạp chồng trong C++ 112

Ví dụ về Nạp chồng toán tử trong C++ 112

Đa hình trong C++ 113

Hàm virtual trong C++ 116

Hàm pure virtual trong C++ 116

Trừu tượng hóa dữ liệu trong C++ 117

Nhãn truy cập (Access Label) trong C++ 118

Lợi ích của Trừu tượng hóa dữ liệu trong C++ 119

Ví dụ về Trừu tượng hóa dữ liệu trong C++ 119

Chiến lược thiết kế trong C++ 120

Tính đóng gói dữ liệu trong C++ 121

Ví dụ về Đóng gói dữ liệu trong C++ 122

Chiến lược thiết kế trong C++ 123

Interface trong C++ (Lớp trừu tượng) 123

Ví dụ về Lớp trừu tượng trong C++ 124

Chiến lược thiết kế trong C++ 127

File và Stream trong C++ 127

Mở một File trong C++ 128

Đóng một File trong C++ 129

Viết tới một File trong C++ 129

Trang 6

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 6

Đọc một File trong C++ 129

Ví dụ về Đọc và Viết file trong C++ 129

Con trỏ vị trí File trong C++ 131

Xử lý ngoại lệ (Exception Handling) trong C++ 132

Ném Exception trong C++ 133

Bắt Exception trong C++ 134

Standard Exception trong C++ 135

Định nghĩa Exception mới trong C++ 137

Bộ nhớ động trong C++ 139

Toán tử new và delete trong C++ 139

Cấp phát bộ nhớ động cho Mảng trong C++ 141

Cấp phát bộ nhớ động cho Đối tượng trong C++ 141

Namespace trong C++ 142

Định nghĩa một Namespace trong C++ 143

using namespace directive trong C++ 144

Namespace không kề nhau trong C++ 146

Namespace lồng nhau trong C++ 146

Template trong C++ 148

Function Template trong C++ 148

Class Template trong C++ 150

Bộ tiền xử lý (Preprocessor) trong C++ 152

Bộ tiền xử lý # define trong C++ 153

Function-Like Macro trong C++ 154

Biên dịch có điều kiện trong C++ 155

Các toán tử # và ## trong C++ 156

Macro tiền định nghĩa trong C++ 158

Xử lý tín hiệu (Signal Handling) trong C++ 159

Hàm signal() trong C++ 160

Hàm raise() trong C++ 161

Trang 7

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 7

Đa luồng (Multithread) trong C++ 163

Tạo Thread trong C++ 163

Kết thuốc Thread trong C++ 164

Ví dụ 165

Truyền tham số tới Thread trong C++ 166

Kết hợp và Tháo gỡ các Thread trong C++ 168

Lập trình Web trong C++ 171

CGI là gì? 171

Web Browsing 171

Sơ đồ cấu trúc CGI 172

Cấu hình Web Server 172

Chương trình CGI đầu tiên 173

Hello World! This is my first CGI program 174

HTTP Header 174

Biến môi trường của CGI 175

Thư viện CGI trong C++ 178

Phương thức POST và GET 178

Truyền thông tin bởi sử dụng phương thức GET 178

Ví dụ URL đơn giản sử dụng phương thức GET 179

Ví dụ về FORM bởi sử dụng phương thức GET 181

Truyền thông tin bởi sử dụng phương thức POST 181

Truyền Checkbox Data tới CGI Program 182

Truyền Radiobutton Data tới CGI Program 184

Truyền Text Area Data tới CGI Program 186

Truyền DropDown Box Data tới CGI Program 187

Sử dụng Cookie trong CGI 189

Cách nó làm việc 189

Thiết lập Cookie 190

Thu hồi Cookie 191

Trang 8

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 8

Ví dụ về File Upload 193

Thư viện Template chuẩn (STL) trong C++ 195

Thư viện chuẩn C++ (C++ Standard Library) 198

Thư viện hàm chuẩn trong C++ (Standard Function Library) 198

Thư viện lớp hướng đối tượng trong C++ (Object Oriented Class Library) 198

Tài liệu tham khảo C++ 199

Link hữu ích về C++ 199

Trang 9

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 9

Học C++ cơ bản và nâng cao C++ là ngôn ngữ lập trình bậc trung (middle-level), được phát triển bởi Bjarne Stroustrup năm 1979 tại Bell Labs C++ chạy trên các nền tảng đa dạng, như Windows, Mac OS, và các phiên bản Unix

đa dạng

Bài hướng dẫn này sẽ cung cấp chi tiết khái niệm về C++ từ cơ bản tới nâng cao, kèm theo các ví

dụ thực hành trực tuyến đa dạng giúp bạn thích thú bài học và hiểu sâu hơn các khái niệm đã được đề cập

Loạt bài hướng dẫn của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint

Đối với độc giả Loạt bài hướng dẫn về C++ được chuẩn bị cho người mới học, giúp họ hiểu các khái niệm C++ từ

cơ bản tới nâng cao

Điều kiện tiền đề Trước khi bắt đầu học theo loạt bài này và thực hành với các ví dụ về C++ đa dạng, mình giả sử rằng bạn đã biết khái niệm về một chương trình máy tính là gì và thế nào là một ngôn ngữ lập trình máy tính

Tổng quan về C++

C++ là một ngôn ngữ lập trình kiểu tĩnh, mục đích tổng quát, phân biệt kiểu chữ mà hỗ trợ lập trình hướng đối tượng, lập trình thủ tục

C++ được coi như là ngôn ngữ bậc trung (middle-level), khi nó kết hợp các đặc điểm và tính

năng của ngôn ngữ bậc cao và bậc thấp

C++ được phát triển bởi Bjarne Stroustrup năm 1979 tại Bell Labs ở Murray Hill, New Jersey, như

là một bản nâng cao của ngôn ngữ C và với tên gọi đầu tiên là “C với các Lớp”, nhưng sau đó được đổi tên thành C++ vào năm 1983

C++ là một Superset của C, và bất kỳ chương trình C nào cũng là một chương trình C++

Ghi chú: Khi nói một ngôn ngữ lập trình là kiểu tĩnh khi việc kiểm tra kiểu được thực hiện trong

thời gian biên dịch (compile-time), chứ không phải là run-time

Trang 10

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 10

Lập trình hướng đối tượng

C++ hỗ trợ đầy đủ lập trình hướng đối tượng, bao gồm 4 tính năng trụ cột của lập trình hướng đối tượng là:

ANSI Standard bảo đảm rằng C++ là portable, nghĩa là: code bạn viết cho compiler của Microsoft

sẽ được biên dịch mà không xảy ra lỗi khi sử dụng một compiler trên Mac, UNIX, và Windows box hoặc một Alpha

ANSI Standard đã tồn tại trong thời gian dài, và tất cả C++ compiler đều hỗ trợ ANSI Standard Học tập C++ như thế nào?

Điều quan trọng nhất khi học tập C++ là trọng tâm vào các khái niệm

Mục đích của việc học một ngôn ngữ lập trình là trở thành một lập trình viên giỏi hơn, tức là để thiết kế và thực thi các hệ thống mới hiệu quả hơn, hoặc sửa đổi chương trình cũ

Trang 11

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 11

C++ hỗ trợ các phong cách lập trình đa dạng Bạn có thể viết trong Fortran, C, Smalltalk, … trong bất kỳ ngôn ngữ nào Mỗi style có thể đạt được mục tiêu của nó một cách hiệu quả trong khi duy trì runtime và space hiệu quả

Miền sử dụng của C++

C++ được sử dụng bởi hàng nghìn lập trình viên trong mỗi lĩnh vực ứng dụng cơ bản

C++ đang được sử dụng phổ biến để viết device driver và các phần mềm khác mà dựa vào thao tác trực tiếp của phần cứng dưới ràng buộc về realtime

C++ được sử dụng rộng rãi để đào tạo, nghiên cứu

Bất cứ hai đã sử dụng Apple Macintosh hoặc một PC chạy trên Windows đã là gián tiếp sử dụng C++, bởi vì User Interface của các hệ thống này được viết bằng C++

Cài đặt môi trường C++

Cài đặt môi trường nội bộ cho C++

Nếu bạn muốn cài đặt môi trường C++, bạn cần hai phần mềm có sẵn trong máy sau đây:

Text Editor

Nó sẽ được sử dụng để soạn chương trình của bạn Ví dụ như Windows Notepad, OS Edit command, Brief, Epsilon, EMACS và Vim hoặc Vi

Tên và phiên bản của Text Editor có thể đa dạng trên các hệ điều hành khác nhau Ví dụ, Notepad

sẽ được sử dụng trên Windows và Vim hoặc Vi có thể được sử dụng trên Windows cũng như Linux hoặc UNIX

Các file, mà bạn tạo với editor này, được gọi là các source file và với C++, chúng được đặt tên với đuôi mở rộng là cpp, cp, hoặc c

Trước khi bắt đầu lập trình, đảm bảo rằng bạn có một Text editor và bạn có đủ kinh nghiệm để soạn một chương trình C++

C++ Compiler:

C++ Compiler được sử dụng để biên dịch source code của bạn thành chương trình có thể thực thi

Trang 12

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 12

Hầu hết C++ compiler không quan tâm phần đuôi mở rộng bạn cung cấp cho source code, nhưng nếu bạn không xác định, thì theo mặc định, nó sẽ sử dụng đuôi là cpp

Compiler được sử dụng thường xuyên nhất là GNU C/C++ compiler, hoặc bạn có thể sử dụng các Compiler khác từ HP hoặc Solaris nếu bạn có Hệ điều hành tương ứng

Cài đặt GNU C/C++ Compiler

Cài đặt trên UNIX/Linux

Nếu bạn đang sử dụng Linux hoặc UNIX, thì kiểm tra xem GCC đã được cài đặt trên hệ thống

chưa bằng việc nhập lệnh sau tại dòng lệnh (command line):

$ g ++ v

Nếu bạn đã cài đặt GCC, thì nó sẽ in thông báo sau:

Using built - in specs

Target : i386 - redhat - linux

Configured with : / configure prefix =/ usr .

Thread model : posix

gcc version 4.1 20080704 Red Hat 4.1 -46)

Nếu GCC chưa được cài đặt, bạn cần phải cài đặt theo hướng dẫn có tại:http://gcc.gnu.org/install/

Cài đặt trên Mac OS X

Nếu bạn sử dụng Mac OS X, cách đơn giản nhất để cài đặt GCC là tải môi trường phát triển Xcode

từ Website của Applet và theo các chỉ dẫn

Bạn có thể tải Xcode từ: developer.apple.com/technologies/tools/

Cài đặt trên Windows

Để cài đặt GCC trên Windows, bạn cần cài đặt MinGW Để cài đặt MinGW, bạn truy cập:www.mingw.org, và từ đó tới trang để tải MinGW Tải phiên bản mới nhất của MinGW, sẽ có tên là MinGW-<version>.exe

Trong khi cài đặt MinGW, tối thiểu bạn phải cài đặt gcc-core, gcc-g++, binutils, và MinGW runtime

Trang 13

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 13

Thêm thư mục phụ bin của MinGW tới biến môi trường PATH, để mà bạn có thể xác định các tool

trên command line bởi các tên đơn giản của chúng

Khi việc cài đặt hoàn tất, bạn có thể chạy gcc, g++, ar, ranlib, dlltool, và một số GNU tool khác từ Windows command line

Cú pháp C++ cơ bản Khi chúng ta xem xét một chương trình C++, nó có thể được định nghĩa như là một tập hợp của các đối tượng, mà giao tiếp thông qua việc triệu hồi các phương thức của mỗi đối tượng đó Dưới đây, chúng tôi miêu tả ngắn gọn ý nghĩa của class (lớp), object (đối tượng), method (phương thức)

và các biến đối tượng:

Object - Đối tượng có các trạng thái và hành vi Ví dụ: một đối tượng dog có các trạng thái

là color, name, breed, và các hành vi là wagging, barking, eating Một đối tượng là một minh họa của một lớp

Class - Một lớp có thể được định nghĩa như là một template/blueprint, mà miêu tả hành

vi/trạng thái mà đối tượng hỗ trợ

Methods - Về cơ bản, một phương thức là một hành vi Một lớp có thể chứa nhiều phương

thức Phương thức là nơi tính logic được viết, dữ liệu được thao tác và tất cả action được thực thi

Instant Variables - Mỗi đối tượng có tập hợp biến đối tượng duy nhất của nó Trạng thái

của một đối tượng được tạo ra bởi các giá trị được gán cho các biến đối tượng của nó Cấu trúc chương trình C++

Bạn theo dõi một đoạn code đơn giản sẽ in Hello World

Trang 14

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 14

cout << "Hello World" ; // prints Hello World

return ;

}

Chương trình trên có các phần sau:

 Ngôn ngữ C++ định nghĩa một số header, mà chứa tong tin cần thiết và hữu ích cho

chương trình của bạn Với chương trình này, header là <iostream> là cần thiết

bổ sung gần đây cho C++

trong C++ Các comment đơn dòng bắt đầu với // và kết thúc ở cuối dòng

Dòng int main() là hàm main, tại đây việc thực thi chương trình bắt đầu

Dòng tiếp theo cout << "This is my first C++ program."; làm thông báo “This is my first

C++ program” được hiển thị trên màn hình

Dòng tiếp theo return 0; kết thúc hàm main() và làm nó trả về giá trị 0 tới tiến trình đang gọi

Biên dịch và thực thi chương trình C++

Dưới đây là cách lưu file, biên dịch và chạy chương trình Bạn theo các bước sau:

 Lưu file với tên: hello.cpp

code của bạn thì dòng nhắc lệnh sẽ đưa bạn tới dòng tiếp theo và tạo a.out file có thể thực thi

 Bây giờ, bạn soạn „a.out‟ để chạy chương trình

 Bạn sẽ thấy „Hello World‟ được in trên cửa sổ

$ g ++ hello cpp

Trang 15

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 15

Dấu chấm phảy và khối (block) trong C++

Trong C++, dấu chấm phảy là ký tự kết thúc lệnh (statement terminator) Nghĩa là, mỗi lệnh đơn phải kết thúc bởi một dấu chấm phảy Nó chỉ dẫn sự kết thúc của một thực thể logic

Dưới đây là ví dụ về 3 lệnh khác nhau:

Trang 16

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 16

Định danh (Identifier) trong C++

Một Định danh (Identifier) trong C++ là một tên được sử dụng để nhận diện một biến, hàm, lớp, module, hoặc bất kỳ user-defined item nào (người dùng tự định nghĩa) Một Định danh (Identifier) bắt đầu với một chữ cái từ A tới Z hoặc từ a tới z hoặc một dấu gạch dưới (_) được theo sau bởi 0 hoặc nhiều chữ cái, dấu gạch dưới và ký số (từ 0 tới 9)

C++ không cho phép các ký tự như @, $ và % bên trong các Identifier C++ là ngôn ngữ lập trình

phân biệt kiểu chữ Vì thế, Manpower và manpower là hai Identifier khác nhau trong C++

Dưới đây là một số ví dụ về Identifier (Định danh) thích hợp:

mohd zara abc move_name a_123

myname50 _temp j a23b9 retVal

Từ khóa trong C++

Bảng dưới liệt kê các từ được dự trữ (dành riêng) trong C++ Những từ này không thể được sử dụng như là constant hoặc biến hoặc bất kỳ tên Identifier (Định danh) nào

Trang 17

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 17

Trang 18

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 18

Khoảng trắng (Whitespace) trong C++

Một dòng mà chỉ chứa khoảng trắng (Whitespace), có thể là một comment, được biết đến như là một dòng trống, và C++ hoàn toàn bỏ qua nó

Khoảng trắng (Whitespace) là khái niệm được sử dụng trong C++ để miêu tả blank, tab, ký tự newline, và comment Khoảng trắng (Whitespace) phân biệt các phần của lệnh và giúp compiler nhận diện vị trí một phần tử trong một lệnh, ví dụ như int, vị trí phần kết thúc và vị trí phần tử tiếp theo bắt đầu Do đó, trong lệnh sau:

int age ;

Phải có ít nhất một Whitespace (thường là khoảng trống) giữa int và age để compiler có thể phân biệt chúng Trong lệnh:

fruit = apples + oranges ; // Get the total fruit

Các ký tự khoảng trắng (Whitespace) giữa fruit và =, hoặc giữa = và apples là không cần thiết; tuy nhiên, để giúp cho code của bạn dễ đọc hơn, bạn có thể thêm chúng vào

Trang 19

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 19

Comment trong C++

Comment của chương trình là các lời diễn giải, mà bạn có thể bao trong C++ code, và giúp cho bất

kỳ ai đọc source code dễ dàng hơn Tất cả ngôn ngữ lập trình đều cho phép một số mẫu comment nào đó

C++ hỗ trợ các comment đơn dòng và đa dòng Tất cả ký tự có trong comment được bỏ qua bởi C++ compiler

Comment trong C++ bắt đầu với /* và kết thúc với */ Ví dụ:

/* This is a comment */

/* C++ comments can also

* span multiple lines

kỳ dạng comment nào bên trong dạng khác Ví dụ:

/* Comment out printing of Hello World:

Trang 20

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 20

cout << "Hello World"; // prints Hello World

*/

Kiểu dữ liệu trong C++

Trong khi làm việc với bất kỳ ngôn ngữ lập trình nào, bạn cần sử dụng các kiểu biến đa dạng để lưu giữ thông tin Các biến, không gì khác ngoài các vị trí bộ nhớ được dành riêng để lưu giá trị Nghĩa là, khi bạn tạo một biến, bạn dành riêng một số không gian trong bộ nhớ cho biến đó

Bạn có thể thích lưu thông tin của các kiểu dữ liệu (Data Type) đa dạng như Character, Wide Character, integer, floating-point, double floating point, Boolean, … Dựa trên kiểu dữ liệu của một biến, hệ thống sẽ cấp phát bộ nhớ và quyết định những gì có thể được lưu giữ trong bộ nhớ dành riêng đó

Kiểu dữ liệu nguyên thủy trong C++

Tên tiếng Anh là Primitive Type, còn có thể gọi là kiểu dữ liệu gốc, kiểu dữ liệu có sẵn trong C++ Bên cạnh các kiểu dữ liệu gốc này, C++ cũng cung cấp các kiểu dữ liệu user-defined Bảng dưới đây liệt kê 7 kiểu dữ liệu cơ bản trong C++:

Trang 21

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 21

Một số kiểu cơ bản có thể được sửa đổi bởi sử dụng một hoặc nhiều modifier này:

Trang 22

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 22

unsigned short int Range 0 tới 65,535

signed short int Range -32768 tới 32767

long int 4bytes -2,147,483,647 tới 2,147,483,647

signed long int 4bytes Tương tự như long int

unsigned long int 4bytes 0 tới 4,294,967,295

long double 8bytes +/- 1.7e +/- 308 (~15 digits)

Kích cỡ của các biến có thể khác với những gì hiển thị trên bảng, phụ thuộc vào compiler và máy tính bạn đang sử dụng

Dưới đây là ví dụ sẽ đưa ra kích cỡ chính xác của các kiểu dữ liệu đa dạng trên máy tính của bạn

#include <iostream>

using namespace std ;

int main ()

{

cout << "Size of char : " << sizeof ( char ) << endl ;

cout << "Size of int : " << sizeof ( int ) << endl ;

cout << "Size of short int : " << sizeof ( short int ) << endl ;

cout << "Size of long int : " << sizeof ( long int ) << endl ;

cout << "Size of float : " << sizeof ( float ) << endl ;

Trang 23

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 23

cout << "Size of double : " << sizeof ( double ) << endl ;

cout << "Size of wchar_t : " << sizeof ( wchar_t ) << endl ;

return ;

}

Ví dụ này sử dụng endl, mà chèn một ký tự newline sau mỗi dòng, và toán tử << được sử dụng để truyền nhiều giá trị tới màn hình Chúng tôi cũng sử dụng toán tử sizeof() để lấy kích cỡ của các

kiểu dữ liệu đa dạng

Khi code trên được biên dịch và thực thi, nó cho kết quả sau (kết quả có thể đa dạng tùy thuộc vào compiler và máy tính bạn đang sử dụng)

Size of char

Size of int

Size of short int

Size of long int

Size of float

Size of double

Size of wchar_t

Khai báo typedef trong C++

Bạn có thể tạo một tên mới cho một kiểu dữ liệu đang tồn tại bởi sử dụng typedef trong C++ Cú

pháp đơn giản sau để định nghĩa một kiểu dữ liệu mới bởi sử dụng typedef:

typedef type newname ;

Ví dụ sau nói cho compiler rằng feet là tên khác của int:

typedef int feet ;

Bây giờ, khai báo sau là hoàn toàn hợp lệ và sẽ tạo một biến integer gọi là distance:

feet distance ;

Trang 24

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 24

Kiểu liệt kê enum trong C++

Kiểu liệt kê enum khai báo một tên kiểu tùy ý và một tập hợp của 0 hoặc nhiều Identifier (Định danh) mà có thể được sử dụng như là các giá trị của kiểu đó Mỗi Enumerator là một constant có kiểu là kiểu liệt kê (enumeration)

Để tạo một Enumeration, bạn sử dụng từ khóa enum trong C++ Form chung của kiểu liệt kê enum

là:

enum enum - name { list of names } var - list ;

Tại đây, enum-name là tên kiểu liệt kê Danh sách tên được phân biệt bởi dấu phảy

Ví dụ, code sau định nghĩa một bản liệt kê màu gọi là color và biến c là kiểu của color Cuối cùng, c được gán giá trị blue

enum color { red , green , blue } c ;

c = blue ;

Theo mặc định, giá trị của name đầu tiên là 0, name thứ hai là 1 và name thứ 3 là 2, … Nhưng bạn

có thể cung cấp cho một name một giá trị cụ thể bằng việc thêm một Initializer (giá trị khởi tạo) Ví

dụ, trong enumeration sau, green sẽ có giá trị là 5:

enum color { red , green = , blue };

Ở đây, blue sẽ có giá trị là 6 bởi vì mỗi name sẽ có giá trị lớn hơn của name trước đó là 1

Kiểu biến trong C++

Một biến cung cấp nơi lưu giữ được đặt tên để chúng ta có thể thao tác Mỗi biến trong C++ có một kiểu cụ thể, mà quyết định: kích cỡ và cách bố trí bộ nhớ của biến; dãy giá trị có thể được lưu giữ bên trong bộ nhớ đó; và tập hợp hoạt động có thể được áp dụng cho biến đó

Tên biến có thể gồm các ký tự, các ký số, dấu gạch dưới Nó phải bắt đầu bởi hoặc một ký tự hoặc một dấu gạch dưới Các ký tự chữ hoa và chữ thường là khác nhau bởi C++ là ngôn ngữ phân biệt kiểu chữ

Dưới đây là các kiểu biến cơ bản trong C++ đã được giới thiệu trong chương trước:

Trang 25

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 25

bool Lưu giữ giá trị true hoặc false

char Là một kiểu integer, kích cỡ 1 byte

int Kích cỡ tự nhiên nhất của integer của máy tính

float Giá trị single floating-point

double Giá trị double floating-point

C++ cũng cho phép định nghĩa các kiểu biến khác, sẽ được giải thích trong các chương tới, đó

là: Enumeration, Pointer, Array, Reference, Data structure, và Class

Tiếp theo là cách định nghĩa, khai báo và sử dụng các kiểu biến đa dạng:

Định nghĩa biến trong C++

Định nghĩa biến trong C++ nghĩa là nói cho compiler nơi và lượng bộ nhớ cần tạo để lưu giữ biến

đó Một định nghĩa biến xác định một kiểu dữ liệu, và chứa danh sách của một hoặc nhiều biến có kiểu đó, như sau:

Trang 26

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 26

char c , ch ;

float f , salary ;

double d ;

Dòng int i, j, k; vừa khai báo và định nghĩa các biến i, j, k, mà chỉ dẫn compiler để tạo các biến với

tên là i, j, k của kiểu int

Các biến có thể được khởi tạo (được gán giá trị ban đầu) trong các khai báo Initializer (phần khởi tạo) gồm một ký hiệu bằng được theo sau bởi một Constant Expression (biểu thức hằng số), như sau:

type variable_name = value ;

Ví dụ:

extern int d = 3 f = 5 // declaration of d and f

int d = 3 f = 5 // definition and initializing d and f

byte z = 22; // definition and initializes z

char x = 'x' ; // the variable x has the value 'x'.

Với định nghĩa mà không có phần khởi tạo: các biến được khởi tạo với NULL (tất cả byte có giá trị 0); giá trị khởi tạo của tất cả biến khác không được định nghĩa

Khai báo biến trong C++

Khai báo biến trong C++ chắc chắn với compiler rằng có một biến đang tồn tại với kiểu và tên đã cho, để mà compiler tiếp tục trình biên dịch mà không cần biết đầy đủ chi tiết về biến đó Một khai báo biến chỉ có ý nghĩa tại thời gian biên dịch, compiler cần khai báo biến thực sự tại thời điểm kết nối chương trình

Khai báo biến là hữu ích khi bạn đang sử dụng nhiều file, và bạn định nghĩa biến của bạn ở một trong các file đó mà sẽ có sẵn tại thời điểm kết nối chương trình Bạn sẽ sử dụng từ khóa extern để khai báo một biến tại bất kỳ đâu Mặc dù, bạn có thể khai báo một biến nhiều lần trong chương trình C++, nhưng nó có thể chỉ được định nghĩa một lần trong một file, một hàm, hoặc một khối code

Trang 27

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 27

Trang 28

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 28

Lvalue và Rvalue trong C++

Có hai loại Expression trong C++:

lvalue : Đây là expression liên quan tới một vị trí vùng nhớ Bất kỳ lvalue có thể xuất hiện ở

bên trái hoặc bên phải của một phép gán

rvalue : Khái niệm này liên quan tới một giá trị dữ liệu mà được lưu giữ tại một số địa chỉ

trong vùng nhớ Một rvalue là một expression mà không thể có một giá trị được gán tới nó, nghĩa là: rvalue có thể xuất hiện bên phải nhưng không thể xuất hiện bên trái của một phép gán

Các biến là lvalue có thể xuất hiện bên trái của phép gán Các Numeric literal (hằng số) là rvalue không thể được gán và không thể xuất hiện ở bên trái của phép gán Dưới đây là một lệnh hợp lệ trong C++:

Trang 29

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 29

 Bên trong một hàm hoặc một khối, được gọi là biến cục bộ (local)

 Bên ngoài của tất cả hàm, được gọi là biến toàn cục (global)

Chúng ta sẽ học hàm và các tham số của hàm là gì trong chương tới Dưới đây chúng tôi sẽ giải thích khái niệm về biến cục bộ và biến toàn cục

Biến cục bộ trong C++

Các biến được khai báo bên trong một hàm hoặc khối là các biến cục bộ (local) Chúng chỉ có thể được sử dụng bởi các lệnh bên trong hàm hoặc khối code đó Các biến cục bộ không được biết ở bên ngoài hàm đó (tức là chỉ được sử dụng bên trong hàm hoặc khối code đó) Dưới đây là ví dụ

Trang 30

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 30

Biến toàn cục trong C++

Biến toàn cục (global) trong C++ được định nghĩa bên ngoài các hàm, thường ở phần đầu chương trình Các biến toàn cục giữ giá trị của nó trong suốt vòng đời chương trình của bạn

Một biến toàn cục có thể được truy cập bởi bất kỳ hàm nào Tức là, một biến toàn cục là có sẵn cho bạn sử dụng trong toàn bộ chương trình sau khi đã khai báo nó Dưới đây là ví dụ sử dụng biến toàn cục và biến nội bộ trong C++:

Trang 31

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 31

Khi một biến cục bộ được định nghĩa, nó không được khởi tạo bởi hệ thống, chính bạn phải khởi tạo nó Các biến toàn cục được khởi tạo tự động bởi hệ thống khi bạn định nghĩa chúng, như sau:

Kiểu dữ liệu Initializer (Giá trị khởi tạo)

Trang 32

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 32

Constant là một kiểu dữ liệu thay thế cho Literal, còn Literal thể hiện chính nó Trong ví dụ: const PI

= 3.14 thì Constant ở đây là PI, còn Literal là 3.14

Constant có thể là bất kỳ kiểu dữ liệu cơ bản nào trong C++, và có thể được phân chia thành giá trị hằng số nguyên, hằng số thực, hằng ký tự, hằng chuỗi và Boolean literal (tạm dịch: hằng logic) Ngoài ra, constant được đối xử giống như các biến thông thường, ngoại trừ việc giá trị của chúng

là không thể thay đổi sau khi định nghĩa

Hằng số nguyên trong C++

Hằng số nguyên có thể là decimal (cơ số 10), octal (cơ số 8) hay hexadecimal (cơ số 16) Giá trị

có tiền tố (prefix) là 0 cho octal, là 0x hay 0X cho hexadecimal và không có gì cho decimal

Một hằng số nguyên cũng có các hậu tố (suffix) U hay L thể hiện kiểu unsigned hay long Hậu tố có thể là chữ hoa hoặc chữ thường và có thể trong bất kỳ thứ tự nào

Ví dụ về các hằng số nguyên:

212 // Legal

215u // Legal

Trang 33

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 33

0xFeeL // Legal

078 // Illegal: 8 is not an octal digit

032UU // Illegal: cannot repeat a suffix

Dưới đây là các kiểu hằng số nguyên đa dạng:

Một hằng số thực bao gồm phần nguyên (integer part), dấu chấm thập phân (decimal point), phần

lẻ (fraction part) và phần mũ (exponent part) Chúng ta có thể biểu diễn hằng số thực theo dạng decimal hay dạng mũ

Khi thể hiện dạng decimal phải bao gồm dấu chấm thập phân, phần mũ hoặc cả hai Khi thể hiện dạng mũ phải gồm phần nguyên, phần lẻ hoặc cả hai Dạng mũ đi kèm với kí tự E hoặc e

Xét các ví dụ sau:

3.14159 // Legal

314159E-5L // Legal

510E // Illegal: incomplete exponent

210f // Illegal: no decimal or exponent

e55 // Illegal: missing integer or fraction

Boolean literal trong C++

Có hai kiểu Boolean literal và chúng là một phần của các từ khóa C++:

Giá trị true

 Và giá trị false

Trang 34

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 34

Bạn không nên đồng nhất giá trị true với 1 và giá trị false với 0

Hằng ký tự trong C++

Các hằng kí tự trong C++ mở đầu và kết thúc bởi dấu nháy đơn Nếu hằng ký tự bắt đầu với L (ví

dụ L„x‟) thì nó là kiểu wchar_t Nếu không thì, nó là hằng ký tự kiểu char, ví dụ như „x‟

Hằng kí tự có thể là một kí tự (như „X‟), một escape sequence (như „\t‟) hay một kí tự mở rộng (như

„\u02c0′)

Một số kí tự trong C++ khi được đứng trước bởi dấu \ thì chúng sẽ mang một ý nghĩa đặc biệt như bắt đầu dòng mới „\n‟ hay tạo một tab „\t‟ Chúng được biết như là escape sequence (dãy thoát) Bảng dưới đây thể hiện một số mã escape sequence phổ biến:

Escape sequence Ý nghĩa

Trang 35

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 35

\xhh Số hệ cơ số 16 của một hoặc nhiều ký số

Dưới đây là ví dụ minh họa một số ký tự escape sequence:

Trang 36

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 36

Dưới đây là cú pháp để sử dụng tiền xử lý #define để định nghĩa một constant trong C++:

Ví dụ sau giải thích cú pháp trên:

Trang 37

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 37

}

Khi code trên được biên dịch và thực thi, nó cho kết quả sau:

50

Bạn có thể sử dụng tiền tố const để định nghĩa hằng trong C++ với một kiểu cụ thể, như sau:

const type variable = value ;

Ví dụ sau giải thích chi tiết cú pháp trên:

#include <iostream>

using namespace std ;

int main ()

{

const int LENGTH = 10;

const int WIDTH = 5

const char NEWLINE = '\n' ;

Trang 38

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 38

C++ cho phép các kiểu dữ liệu char, int và double có các Modifier đặt trước chúng Một Modifier

được sử dụng để thông báo ý nghĩa của kiểu cơ sở, giúp cho nó tăng sự chính xác hơn với sự cần thiết của các tình huống đa dạng

Dưới đây là các Modifier trong C++:

Các Modifier là: signed, unsigned, long, và short có thể được áp dụng cho kiểu integer Ngoài

ra, signed và unsigned có thể được áp dụng cho kiểu char, và long có thể áp dụng cho kiểu

double

Các Modifier là signed và unsigned cũng có thể được sử dụng như là tiền tố cho các Modifier

là long hoặc short modifiers Ví dụ: unsigned long int

C++ cho phép kiểu khai báo tắt để khai báo các unsigned, short, or long integer Bạn có thể chỉ đơn giản sử dụng từ unsigned, short, hoặc long, mà không cần int Ví dụ sau minh họa hai khai

báo là hợp lệ trong C++ để khai báo các biến unsigned integer:

/* This program shows the difference between

* signed and unsigned integers

*/

int main ()

{

Trang 39

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 39

short int i ; // a signed short integer

short unsigned int j ; // an unsigned short integer

const Đối tượng của kiểu const không thể bị thay đổi bởi chương trình trong khi thực thi

volatile Modifier này nói cho compiler rằng giá trị của biến có thể được thay đổi một cách

không rõ ràng (không báo trước) bởi chương trình

restrict Một con trỏ được đặt là restrict thì có ý nghĩa là đối tượng nó trỏ đến có thể được

truy cập Restrict được thêm vào trong chuẩn C99

Lớp lưu trữ (Storage Class) trong C++ Lớp lưu trữ (Storage Class) định nghĩa phạm vi và vòng đời của biến và/hoặc các hàm bên trong một chương trình C++ Chúng thường đứng trước kiểu dữ liệu mà chúng tác động Dưới đây là các lớp lưu trữ có thể được sử dụng trong C++:

Trang 40

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Trang 40

 static

Lớp lưu trữ auto trong C++

Lớp lưu trữ auto trong C++ là lớp lưu trữ mặc định cho tất cả biến cục bộ trong C++:

Lớp lưu trữ register trong C++

Lớp lưu trữ register trong C++ được sử dụng để định nghĩa các biến cục bộ mà nên được lưu giữ

trong một thanh ghi thay vì RAM Nghĩa là, biến có kích cỡ tối đa bằng với kích cỡ thanh ghi (thường là 1 từ) và không thể có toán tử một ngôi '&' được áp dụng tới nó (vì không có địa chỉ bộ nhớ)

Ngày đăng: 19/09/2015, 18:18

HÌNH ẢNH LIÊN QUAN

Bảng sau hiển thị kiểu biến, lượng bộ nhớ nó dùng để lưu giá trị trong bộ nhớ, và giá trị lớn nhất và  nhỏ nhất có thể được lưu giữ với các kiểu biến đó: - Tài liệu lập trình C++ tiếng Việt
Bảng sau hiển thị kiểu biến, lượng bộ nhớ nó dùng để lưu giá trị trong bộ nhớ, và giá trị lớn nhất và nhỏ nhất có thể được lưu giữ với các kiểu biến đó: (Trang 21)
Bảng dưới liệt kê các toán tử số học được hỗ trợ bởi ngôn ngữ C++: - Tài liệu lập trình C++ tiếng Việt
Bảng d ưới liệt kê các toán tử số học được hỗ trợ bởi ngôn ngữ C++: (Trang 44)
Bảng dưới đây liệt kê các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C++: - Tài liệu lập trình C++ tiếng Việt
Bảng d ưới đây liệt kê các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C++: (Trang 45)
Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử. Các toán tử với quyền ưu tiên cao nhất xuất  hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng - Tài liệu lập trình C++ tiếng Việt
Bảng d ưới đây liệt kê thứ tự ưu tiên của các toán tử. Các toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng (Trang 52)
Bảng dưới liệt kê các hàm quan trọng trong khi bạn làm việc với Date và Time trong C hoặc C++ - Tài liệu lập trình C++ tiếng Việt
Bảng d ưới liệt kê các hàm quan trọng trong khi bạn làm việc với Date và Time trong C hoặc C++ (Trang 82)
Bảng dưới liệt kê danh sách các toán tử có thể được nạp chồng trong C++: - Tài liệu lập trình C++ tiếng Việt
Bảng d ưới liệt kê danh sách các toán tử có thể được nạp chồng trong C++: (Trang 112)
Hình trong C++ được sử dụng. Bạn có các lớp khác nhau với cùng một tên hàm, và có thể là cùng - Tài liệu lập trình C++ tiếng Việt
Hình trong C++ được sử dụng. Bạn có các lớp khác nhau với cùng một tên hàm, và có thể là cùng (Trang 116)
Bảng dưới là miêu tả ngắn gọn về mỗi exception được đề cập trong sơ đồ trên: - Tài liệu lập trình C++ tiếng Việt
Bảng d ưới là miêu tả ngắn gọn về mỗi exception được đề cập trong sơ đồ trên: (Trang 136)
Sơ đồ cấu trúc CGI - Tài liệu lập trình C++ tiếng Việt
Sơ đồ c ấu trúc CGI (Trang 172)

TỪ KHÓA LIÊN QUAN

w