SlideShare a Scribd company logo
1 of 34
NGUYÊN LÝ LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG
Bài 1: Giới thiệu ngôn ngữ lập trình
C++
Giảng viên: TS. Lý Anh Tuấn
Email: tuanla@tlu.edu.vn
Nội dung
1. Giới thiệu C++
2. Biến, Biểu thức, Lệnh gán
3. Xuất nhập dữ liệu
4. Phong cách lập trình
5. Thư viện và Không gian tên
2
Giới thiệu C++
 Nguồn gốc C++
◦ Ngôn ngữ bậc thấp: Mã máy, Assembly
◦ Ngôn ngữ bậc cao: C, C++, FORTRAN, COBOL
◦ Lập trình hướng đối tượng trong C++
 Thuật ngữ C++
◦ Chương trình (Program), Hàm (Function), Thư
viện (Library)
◦ Xuất nhập cơ bản (IO) với cin/cout
3
Sự khác nhau giữa C và C++
 C là ngôn ngữ lập trình hướng thủ tục, trong khi
C++ là ngôn ngữ lập trình hướng đối tượng
 C chỉ hỗ trợ con trỏ, trong khi C++ hỗ trợ cả con trỏ
và tham chiếu
 C không có nạp chồng hàm (function overloading),
trong khi C++ hỗ trợ tính năng này
 C sử dụng nhập (scanf), xuất (printf) trong khi C++
sử dụng cin và cout dễ dùng hơn
 C không có kiểu (string, bool) trong khi C++ có 2
kiểu dữ liệu này
 Đuôi mở rộng của C là .c, còn đuôi mở rộng của
C++ là .cpp
4
Chương trình C++ mẫu (1/2)
5
Chương trình C++ mẫu (2/2)
6
Tình huống kết quả 2:
Xin chao.
Chao mung den voi C++.
Ban biet bao nhieu ngon ngu lap trinh? 1
Chuc ban hoc tot.
Tình huống kết quả 1:
Xin chao.
Chao mung den voi C++.
Ban biet bao nhieu ngon ngu lap trinh? 0
Ban nen hoc lop lap trinh co ban hon.
Người dùng nhập vào 0
Người dùng nhập vào 1
Biến trong C++
 Định danh trong C++
◦ Không trùng với từ khóa hoặc từ dành riêng
◦ Phân biệt chữ hoa, chữ thường
◦ Nên là tên có nghĩa
 Biến trong C++
◦ Là một vùng bộ nhớ để lưu trữ dữ liệu cho một
chương trình
◦ Phải được khai báo trước khi sử dụng trong
chương trình
7
Các kiểu dữ liệu (1/2)
8
Loại dữ liệu Kiểu dữ liệu Số ô nhớ Miền giá trị
Boolean bool 1 byte
0 hoặc 1. Trong đó 0 =>
FALSE và 1 => TRUE
Ký tự char 1 byte -128 tới 127
unsigned
char
1 byte 0 tới 255
Số nguyên int 4 byte -2147483648 tới 2147483647
unsigned int 4 byte 0 tới 4294967295
short int 2 byte -32768 tới 32767
long int 4 byte -2147483648 tới 2147483647
Các kiểu dữ liệu (2/2)
9
Số thực float 4 byte +/- 3.4e +/- 38 (~7 chữ số)
double 8 byte +/- 1.7e +/- 308 (~15 chữ số)
long double 8 byte +/- 1.7e +/- 308 (~15 chữ số)
Lưu ý: Kích thước của biến có thể khác với kích thước được
chỉ ra trong bảng, tùy thuộc vào trình biên dịch và máy tính bạn
mà sử dụng
Gán dữ liệu cho biến
 Khởi tạo dữ liệu trong câu lệnh khai báo
◦ Nếu chưa được khởi tạo, biến sẽ có giá trị
"undefined"!
 int myVar = 0;
 Gán dữ liệu trong khi chạy chương trình
◦ Cú pháp: Vế trái = Vế phải
 Vế trái phải là biến
 Vế phải có thể là bất kỳ biểu thức nào
◦ Ví dụ: distance = rate * time;
 Vế trái là distance
 Vế phải là rate * time
10
Gán dữ liệu: Ký hiệu viết tắt
11
Ví dụ Tương đương với
count += 2; count = count + 2;
total -= discount; total = total - discount;
bonus *= 2; bonus = bonus * 2;
time /= rushFactor; time = time/rushFactor;
change %= 100; change = change % 100;
amount *= cnt1 + cnt2; amount = amount * (cnt1 + cnt2);
Những quy tắc gán dữ liệu
 Tính tương thích của phép gán
◦ Khác kiểu dữ liệu:
 Quy tắc: không gán giá trị thuộc một kiểu dữ liệu cho
biến thuộc một kiểu dữ liệu khác
◦ intVar = 2.99; // 2 được gán cho intVar!
 Chỉ phần nguyên là hợp kiểu, vì thế chỉ phần này được
gán cho biến intVar
 Được gọi là ép kiểu ngầm định hoặc chuyển đổi dữ liệu
tự động
◦ 2, 5.75, "Z", "Hello World" là các hằng literal,
không thể thay đổi giá trị khi chạy chương trình
12
Chuỗi escape (1/2)
 Cú pháp: <ký_tự>
 Báo với trình biên dịch đây là một ký tự đặc biệt
13
Chuỗi escape Ý nghĩa
n Xuống dòng mới
r Về đầu dòng
t Dấu Tab ngang
a Chuông (tiếng bíp)
 Dấu ngạch chéo ngược
Chuỗi escape (2/2)
14
' Dấu nháy đơn
" Dấu nháy kép
v Dấu Tab dọc
b Dấu Backspace (Kí tự xóa)
f Form Feed
? Dấu chấm hỏi
Ví dụ về chuỗi escape
15
Kết quả:
Ban dang
Hoc lap trinh
'C++'
"Chuc ban hoc vui ve!"
Hằng
 Đặt tên cho hằng
◦ Hằng literal ít mang ngữ nghĩa
 VD: bản thân số 24 không cho biết nó diễn đạt thông tin
gì
 Việc đặt tên cung cấp cho hằng ngữ nghĩa
nó muốn diễn đạt
◦ VD: const int NUMBER_OF_STUDENTS = 24;
 Gọi là hằng được khai báo hay hằng được đặt tên
 Có thể sử dụng tên hằng ở bất cứ chỗ nào trong chương
trình
16
Hằng được đặt tên
17
Tình huống kết quả:
Nhap vao khoan tien ban gui (nghin dong):500
Sau mot nam, khoan tien gui tang len thanh 534.5 nghin dong.
Độ chính xác phép toán
 Cách xác định giá trị biểu thức trong C++:
◦ Có thể không như bạn mong đợi
◦ Toán hạng bậc cao nhất sẽ quyết định kiểu độ chính xác
phép toán được thực hiện
 VD1: 17 / 5 trả về giá trị 3
◦ Cả hai toán hạng kiểu nguyên nên phép chia số nguyên
được thực hiện!
 VD2: 17.0 / 5 trả về giá trị 3.4
◦ Toán hạng bậc cao nhất kiểu thực nên phép chia độ chính
xác số thực được thực hiện!
 VD3: int var1 = 1, var2 = 2;
◦ var1/var2 = ?
18
Độ chính xác phép toán
 Các phép toán được thực hiện từng bước
một
◦ VD: 1 / 2 / 3.0 / 4 thực hiện 3 phép chia riêng rẽ
 đầu tiên 1 / 2 = 0
 tiếp đó 0 / 3.0 = 0.0
 cuối cùng 0.0 / 4 = 0.0 !
 Chỉ thay đổi một toán hạng trong một biểu
thức lớn là không đủ
◦ Cần lưu ý đến tất cả các phép toán riêng rẽ sẽ
được thực hiện
19
Ép kiểu
 Ép kiểu cho biến
◦ Có thể thêm ".0" vào literal để ép độ chính xác
phép toán, nhưng với biến?
 Không thể sử dụng "myInt.0"!
◦ static_cast<double> intVar:
◦ Ép hoặc chuyển intVar sang kiểu double một
cách tường minh
 Kết quả chuyển đổi sau đó được sử dụng
 VD: doubleVar=static_cast<double>intVar1/intVar2;
Ép thực hiện phép chia số thực giữa hai biến nguyên
20
Ép kiểu
 Hai cách ép kiểu
◦ Ép kiểu ngầm hoặc tự động:
 17/ 5.5 sẽ tự động chuyển 17 thành 17.0
◦ Chuyển kiểu tường minh:
 Người lập trình chỉ rõ việc chuyển kiểu bằng
toán tử ép kiểu (double)17/ 5.5
 Tương tự, sử dụng toán tử ép kiểu
(double)myInt / myDouble để ép kiểu trên biến
21
Các toán tử viết tắt
 Các toán tử tăng giảm
◦ Toán tử tăng, ++
intVar++; tương đương với
intVar = intVar + 1;
◦ Toán tử giảm, --
intVar--; tương đương với
intVar = intVar – 1;
◦ Tăng hậu tố: intVar++
 Sử dụng giá trị hiện tại của biến, sau đó tăng biến
◦ Tăng tiền tố: ++intVar
 Trước hết tăng biến, sau đó sử dụng giá trị mới
22
Tăng hậu tố vs Tăng tiền tố
 VD 1: Giá trị của valueProduced và n ?
int n = 2, valueProduced;
valueProduced = 2 * (n++);
cout << valueProduced << endl;
cout << n << endl;
 VD 2: Giá trị của valueProduced và n ?
int n = 2, valueProduced;
valueProduced = 2 * (++n);
cout << valueProduced << endl;
cout << n << endl;
23
Xuất/nhập dữ liệu
 Các đối tượng I/O: cin, cout, cerr
 Được định nghĩa trong thư viện <iostream>
 Phải có các dòng sau đây ở đầu chương
trình:
◦ #include <iostream>
using namespace std;
◦ Báo cho C++ sử dụng thư viện phù hợp để ta có
thể sử dụng các đối tượng I/O cin, cout, cerr
24
Xuất dữ liệu
 Tất cả các kiểu dữ liệu đều có thể hiển thị trên màn
hình:
◦ Biến, hằng, literal, biểu thức
 cout << numberOfGames << " games played.";
hai giá trị được xuất ra:
◦ giá trị của biến numberOfGames
◦ chuỗi ký tự " games played."
 Cho phép xuất nhiều giá trị trong một lệnh cout
25
Xuống dòng khi xuất dữ liệu
 Xuống dòng mới:
◦ Sử dụng chuỗi escape "n"
 VD: cout << "Hello Worldn";
◦ Sử dụng đối tượng endl
 VD: cout << "Hello World" << endl;
◦ Hai ví dụ cho kết quả giống nhau
26
Định dạng giá trị xuất ra
 Giá trị in ra có thể không như mong đợi
cout << "The price is $" << price << endl;
◦ Nếu price có giá trị 78.5, màn hình sẽ hiển thị:
 The price is $78.500000 hoặc
 The price is $78.5
 Quy định kích thước phần thập phân:
◦ cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
◦ Kết quả bây giờ sẽ là:
 The price is $78.50
27
Xuất ra lỗi
 Sử dụng đối tượng cerr
◦ Làm việc tương tự như cout
◦ Cung cấp cơ chế để phân biệt giữa xuất dữ liệu
thông thường và xuất ra lỗi
 Chuyển hướng luồng xuất ra
◦ Hầu hết các hệ thống cho phép cout và cerr
được chuyển hướng sang các thiết bị khác. VD:
máy in, file, …
28
Nhập dữ liệu bằng cin
 cin để nhập dữ liệu, cout để xuất dữ liệu
 Khác nhau:
◦ Toán tử ">>" hướng theo chiều ngược lại
◦ Tên là cin thay vì cout
◦ Phải nhập dữ liệu cho biến
 cin >> num;
◦ Dừng màn hình đợi người dùng nhập dữ liệu vào
◦ Giá trị nhập vào được gán cho biến num
29
Nhắc nhập dữ liệu
 Luôn nhắc người dùng nhập dữ liệu
cout << "Enter number of dragons: ";
cin >> numOfDragons;
 Nếu không có "n" con chạy đợi nhập dữ
liệu nằm cùng dòng với lời nhắc
Enter number of dragons: ____
 Tất cả cin nên có lời nhắc cout
30
Phong cách lập trình
 Mục tiêu: làm cho chương trình dễ đọc và
sửa đổi
 Chú thích trong C++, 2 cách:
◦ // cau chu thich cho mot dong
◦ /* doan chu thich */
 Quy ước đặt tên trong C++
◦ Tên hằng: viết hoa hoàn toàn
VD: NUMBER_OF_STUDENTS
◦ Tên biến: viết theo cách lowerToUpper
VD: numberStudent
◦ Quan trọng là tên phải có ý nghĩa
31
Thư viện
 Các thư viện chuẩn của C++
 # include <tên_thư_viện>
◦ Thêm nội dung của file thư viện vào chương
trình của bạn
◦ Được gọi là chỉ thị tiền xử lý
 C++ có nhiều thư viện:
◦ Xuất/nhập dữ liệu, toán học, xâu ký tự, …
32
Không gian tên
 Không gian tên định nghĩa:
◦ Một tập các định nghĩa tên
 Hiện tại sử dụng không gian tên std
◦ Có tất cả các định nghĩa thư viện chuẩn cần thiết
 Ví dụ:
#include <iostream>
using namespace std;
◦ Bao gồm toàn bộ thư viện chuẩn của các định nghĩa tên
 #include <iostream>
using std::cin;
using std::cout;
◦ Có thể chỉ khai báo sử dụng các đối tượng chúng ta cần
33
Tóm tắt
 C++ phân biệt chữ hoa, chữ thường
 Sử dụng các tên có ý nghĩa
◦ Cho biến và hằng
 Các biến phải được khai báo trước khi sử dụng
◦ Và nên được khởi tạo
 Thận trọng trong các thao tác số học:
◦ Độ chính xác, dấu ngoặc, thứ tự phép toán
 #include các thư viện chuẩn của C++ khi cần
 cin – nhập, cout – xuất, cerr – xuất thông điệp lỗi
 Sử dụng chú thích để giúp chương trình dễ hiểu
34

More Related Content

What's hot

Design Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếDesign Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếVKhang Yang
 
Or2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflowOr2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflow4Science
 
Basic Javascript
Basic JavascriptBasic Javascript
Basic JavascriptBunlong Van
 
03 chuong 3 - data sets
03   chuong 3 - data sets03   chuong 3 - data sets
03 chuong 3 - data setstruong le hung
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objetoelliando dias
 
Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1laducqb
 
Desigining of Database - ER Model
Desigining of Database - ER ModelDesigining of Database - ER Model
Desigining of Database - ER ModelAjay Chhimpa
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)Trieu Nguyen
 
MongoDB Introduction
MongoDB IntroductionMongoDB Introduction
MongoDB Introductionthanh can
 
Lecture-03 Introduction to UML
Lecture-03 Introduction to UMLLecture-03 Introduction to UML
Lecture-03 Introduction to UMLartgreen
 
Uml activity diagram
Uml activity diagramUml activity diagram
Uml activity diagramSally Jarkas
 
Hệ điều hành (chương 5)
Hệ điều hành (chương 5)Hệ điều hành (chương 5)
Hệ điều hành (chương 5)realpotter
 
Cascading Style Sheets(CSS)
Cascading Style Sheets(CSS)Cascading Style Sheets(CSS)
Cascading Style Sheets(CSS)Reshmi Rajan
 

What's hot (20)

Design Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếDesign Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tế
 
Or2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflowOr2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflow
 
Basic Javascript
Basic JavascriptBasic Javascript
Basic Javascript
 
Introduction to RDF
Introduction to RDFIntroduction to RDF
Introduction to RDF
 
Website #01: HTML cơ bản
Website #01: HTML cơ bảnWebsite #01: HTML cơ bản
Website #01: HTML cơ bản
 
03 chuong 3 - data sets
03   chuong 3 - data sets03   chuong 3 - data sets
03 chuong 3 - data sets
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
 
Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1
 
Lezione HTML
Lezione HTMLLezione HTML
Lezione HTML
 
Desigining of Database - ER Model
Desigining of Database - ER ModelDesigining of Database - ER Model
Desigining of Database - ER Model
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
 
MongoDB Introduction
MongoDB IntroductionMongoDB Introduction
MongoDB Introduction
 
CSS
CSSCSS
CSS
 
Lecture-03 Introduction to UML
Lecture-03 Introduction to UMLLecture-03 Introduction to UML
Lecture-03 Introduction to UML
 
Uml activity diagram
Uml activity diagramUml activity diagram
Uml activity diagram
 
Hệ điều hành (chương 5)
Hệ điều hành (chương 5)Hệ điều hành (chương 5)
Hệ điều hành (chương 5)
 
Aula8 diagrama sequencia
Aula8 diagrama sequenciaAula8 diagrama sequencia
Aula8 diagrama sequencia
 
Revisão UML
Revisão UMLRevisão UML
Revisão UML
 
Cascading Style Sheets(CSS)
Cascading Style Sheets(CSS)Cascading Style Sheets(CSS)
Cascading Style Sheets(CSS)
 
Html full
Html fullHtml full
Html full
 

Similar to Giới thiệu ngôn ngữ lập trình C++

C2 basics of_c_and_cpp
C2 basics of_c_and_cppC2 basics of_c_and_cpp
C2 basics of_c_and_cppHồ Lợi
 
chapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdfchapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdfNguyenDiem50
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdfKinHongnh
 
Thdc3 Lap Trinh C
Thdc3 Lap Trinh CThdc3 Lap Trinh C
Thdc3 Lap Trinh Cquyloc
 
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPTBÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPTMasterCode.vn
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiHuynh MVT
 
Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Mr Giap
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Thanh Giảng Lê
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàmLAnhHuy4
 
Group 14_pointer_beta2.pptx
Group 14_pointer_beta2.pptxGroup 14_pointer_beta2.pptx
Group 14_pointer_beta2.pptxChuHaBnh
 

Similar to Giới thiệu ngôn ngữ lập trình C++ (20)

Pointer vn
Pointer vnPointer vn
Pointer vn
 
C2 basics of_c_and_cpp
C2 basics of_c_and_cppC2 basics of_c_and_cpp
C2 basics of_c_and_cpp
 
C2 basics of_c_and_cpp
C2 basics of_c_and_cppC2 basics of_c_and_cpp
C2 basics of_c_and_cpp
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
chapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdfchapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdf
 
Lect09 string
Lect09 stringLect09 string
Lect09 string
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
 
Thdc3 Lap Trinh C
Thdc3 Lap Trinh CThdc3 Lap Trinh C
Thdc3 Lap Trinh C
 
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPTBÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
BÀI 3: Các khái niệm cơ bản trong lập trình - Giáo trình FPT
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
 
Ctdl lab01
Ctdl lab01Ctdl lab01
Ctdl lab01
 
Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051
 
Bai 18
Bai 18Bai 18
Bai 18
 
Pointer
PointerPointer
Pointer
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
Chuong 2@ngon ngu c
Chuong 2@ngon ngu cChuong 2@ngon ngu c
Chuong 2@ngon ngu c
 
Con trỏ trong C
Con trỏ trong CCon trỏ trong C
Con trỏ trong C
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàm
 
Group 14_pointer_beta2.pptx
Group 14_pointer_beta2.pptxGroup 14_pointer_beta2.pptx
Group 14_pointer_beta2.pptx
 
Chuong1 c
Chuong1 c Chuong1 c
Chuong1 c
 

Recently uploaded

Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 

Giới thiệu ngôn ngữ lập trình C++

  • 1. NGUYÊN LÝ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 1: Giới thiệu ngôn ngữ lập trình C++ Giảng viên: TS. Lý Anh Tuấn Email: tuanla@tlu.edu.vn
  • 2. Nội dung 1. Giới thiệu C++ 2. Biến, Biểu thức, Lệnh gán 3. Xuất nhập dữ liệu 4. Phong cách lập trình 5. Thư viện và Không gian tên 2
  • 3. Giới thiệu C++  Nguồn gốc C++ ◦ Ngôn ngữ bậc thấp: Mã máy, Assembly ◦ Ngôn ngữ bậc cao: C, C++, FORTRAN, COBOL ◦ Lập trình hướng đối tượng trong C++  Thuật ngữ C++ ◦ Chương trình (Program), Hàm (Function), Thư viện (Library) ◦ Xuất nhập cơ bản (IO) với cin/cout 3
  • 4. Sự khác nhau giữa C và C++  C là ngôn ngữ lập trình hướng thủ tục, trong khi C++ là ngôn ngữ lập trình hướng đối tượng  C chỉ hỗ trợ con trỏ, trong khi C++ hỗ trợ cả con trỏ và tham chiếu  C không có nạp chồng hàm (function overloading), trong khi C++ hỗ trợ tính năng này  C sử dụng nhập (scanf), xuất (printf) trong khi C++ sử dụng cin và cout dễ dùng hơn  C không có kiểu (string, bool) trong khi C++ có 2 kiểu dữ liệu này  Đuôi mở rộng của C là .c, còn đuôi mở rộng của C++ là .cpp 4
  • 5. Chương trình C++ mẫu (1/2) 5
  • 6. Chương trình C++ mẫu (2/2) 6 Tình huống kết quả 2: Xin chao. Chao mung den voi C++. Ban biet bao nhieu ngon ngu lap trinh? 1 Chuc ban hoc tot. Tình huống kết quả 1: Xin chao. Chao mung den voi C++. Ban biet bao nhieu ngon ngu lap trinh? 0 Ban nen hoc lop lap trinh co ban hon. Người dùng nhập vào 0 Người dùng nhập vào 1
  • 7. Biến trong C++  Định danh trong C++ ◦ Không trùng với từ khóa hoặc từ dành riêng ◦ Phân biệt chữ hoa, chữ thường ◦ Nên là tên có nghĩa  Biến trong C++ ◦ Là một vùng bộ nhớ để lưu trữ dữ liệu cho một chương trình ◦ Phải được khai báo trước khi sử dụng trong chương trình 7
  • 8. Các kiểu dữ liệu (1/2) 8 Loại dữ liệu Kiểu dữ liệu Số ô nhớ Miền giá trị Boolean bool 1 byte 0 hoặc 1. Trong đó 0 => FALSE và 1 => TRUE Ký tự char 1 byte -128 tới 127 unsigned char 1 byte 0 tới 255 Số nguyên int 4 byte -2147483648 tới 2147483647 unsigned int 4 byte 0 tới 4294967295 short int 2 byte -32768 tới 32767 long int 4 byte -2147483648 tới 2147483647
  • 9. Các kiểu dữ liệu (2/2) 9 Số thực float 4 byte +/- 3.4e +/- 38 (~7 chữ số) double 8 byte +/- 1.7e +/- 308 (~15 chữ số) long double 8 byte +/- 1.7e +/- 308 (~15 chữ số) Lưu ý: Kích thước của biến có thể khác với kích thước được chỉ ra trong bảng, tùy thuộc vào trình biên dịch và máy tính bạn mà sử dụng
  • 10. Gán dữ liệu cho biến  Khởi tạo dữ liệu trong câu lệnh khai báo ◦ Nếu chưa được khởi tạo, biến sẽ có giá trị "undefined"!  int myVar = 0;  Gán dữ liệu trong khi chạy chương trình ◦ Cú pháp: Vế trái = Vế phải  Vế trái phải là biến  Vế phải có thể là bất kỳ biểu thức nào ◦ Ví dụ: distance = rate * time;  Vế trái là distance  Vế phải là rate * time 10
  • 11. Gán dữ liệu: Ký hiệu viết tắt 11 Ví dụ Tương đương với count += 2; count = count + 2; total -= discount; total = total - discount; bonus *= 2; bonus = bonus * 2; time /= rushFactor; time = time/rushFactor; change %= 100; change = change % 100; amount *= cnt1 + cnt2; amount = amount * (cnt1 + cnt2);
  • 12. Những quy tắc gán dữ liệu  Tính tương thích của phép gán ◦ Khác kiểu dữ liệu:  Quy tắc: không gán giá trị thuộc một kiểu dữ liệu cho biến thuộc một kiểu dữ liệu khác ◦ intVar = 2.99; // 2 được gán cho intVar!  Chỉ phần nguyên là hợp kiểu, vì thế chỉ phần này được gán cho biến intVar  Được gọi là ép kiểu ngầm định hoặc chuyển đổi dữ liệu tự động ◦ 2, 5.75, "Z", "Hello World" là các hằng literal, không thể thay đổi giá trị khi chạy chương trình 12
  • 13. Chuỗi escape (1/2)  Cú pháp: <ký_tự>  Báo với trình biên dịch đây là một ký tự đặc biệt 13 Chuỗi escape Ý nghĩa n Xuống dòng mới r Về đầu dòng t Dấu Tab ngang a Chuông (tiếng bíp) Dấu ngạch chéo ngược
  • 14. Chuỗi escape (2/2) 14 ' Dấu nháy đơn " Dấu nháy kép v Dấu Tab dọc b Dấu Backspace (Kí tự xóa) f Form Feed ? Dấu chấm hỏi
  • 15. Ví dụ về chuỗi escape 15 Kết quả: Ban dang Hoc lap trinh 'C++' "Chuc ban hoc vui ve!"
  • 16. Hằng  Đặt tên cho hằng ◦ Hằng literal ít mang ngữ nghĩa  VD: bản thân số 24 không cho biết nó diễn đạt thông tin gì  Việc đặt tên cung cấp cho hằng ngữ nghĩa nó muốn diễn đạt ◦ VD: const int NUMBER_OF_STUDENTS = 24;  Gọi là hằng được khai báo hay hằng được đặt tên  Có thể sử dụng tên hằng ở bất cứ chỗ nào trong chương trình 16
  • 17. Hằng được đặt tên 17 Tình huống kết quả: Nhap vao khoan tien ban gui (nghin dong):500 Sau mot nam, khoan tien gui tang len thanh 534.5 nghin dong.
  • 18. Độ chính xác phép toán  Cách xác định giá trị biểu thức trong C++: ◦ Có thể không như bạn mong đợi ◦ Toán hạng bậc cao nhất sẽ quyết định kiểu độ chính xác phép toán được thực hiện  VD1: 17 / 5 trả về giá trị 3 ◦ Cả hai toán hạng kiểu nguyên nên phép chia số nguyên được thực hiện!  VD2: 17.0 / 5 trả về giá trị 3.4 ◦ Toán hạng bậc cao nhất kiểu thực nên phép chia độ chính xác số thực được thực hiện!  VD3: int var1 = 1, var2 = 2; ◦ var1/var2 = ? 18
  • 19. Độ chính xác phép toán  Các phép toán được thực hiện từng bước một ◦ VD: 1 / 2 / 3.0 / 4 thực hiện 3 phép chia riêng rẽ  đầu tiên 1 / 2 = 0  tiếp đó 0 / 3.0 = 0.0  cuối cùng 0.0 / 4 = 0.0 !  Chỉ thay đổi một toán hạng trong một biểu thức lớn là không đủ ◦ Cần lưu ý đến tất cả các phép toán riêng rẽ sẽ được thực hiện 19
  • 20. Ép kiểu  Ép kiểu cho biến ◦ Có thể thêm ".0" vào literal để ép độ chính xác phép toán, nhưng với biến?  Không thể sử dụng "myInt.0"! ◦ static_cast<double> intVar: ◦ Ép hoặc chuyển intVar sang kiểu double một cách tường minh  Kết quả chuyển đổi sau đó được sử dụng  VD: doubleVar=static_cast<double>intVar1/intVar2; Ép thực hiện phép chia số thực giữa hai biến nguyên 20
  • 21. Ép kiểu  Hai cách ép kiểu ◦ Ép kiểu ngầm hoặc tự động:  17/ 5.5 sẽ tự động chuyển 17 thành 17.0 ◦ Chuyển kiểu tường minh:  Người lập trình chỉ rõ việc chuyển kiểu bằng toán tử ép kiểu (double)17/ 5.5  Tương tự, sử dụng toán tử ép kiểu (double)myInt / myDouble để ép kiểu trên biến 21
  • 22. Các toán tử viết tắt  Các toán tử tăng giảm ◦ Toán tử tăng, ++ intVar++; tương đương với intVar = intVar + 1; ◦ Toán tử giảm, -- intVar--; tương đương với intVar = intVar – 1; ◦ Tăng hậu tố: intVar++  Sử dụng giá trị hiện tại của biến, sau đó tăng biến ◦ Tăng tiền tố: ++intVar  Trước hết tăng biến, sau đó sử dụng giá trị mới 22
  • 23. Tăng hậu tố vs Tăng tiền tố  VD 1: Giá trị của valueProduced và n ? int n = 2, valueProduced; valueProduced = 2 * (n++); cout << valueProduced << endl; cout << n << endl;  VD 2: Giá trị của valueProduced và n ? int n = 2, valueProduced; valueProduced = 2 * (++n); cout << valueProduced << endl; cout << n << endl; 23
  • 24. Xuất/nhập dữ liệu  Các đối tượng I/O: cin, cout, cerr  Được định nghĩa trong thư viện <iostream>  Phải có các dòng sau đây ở đầu chương trình: ◦ #include <iostream> using namespace std; ◦ Báo cho C++ sử dụng thư viện phù hợp để ta có thể sử dụng các đối tượng I/O cin, cout, cerr 24
  • 25. Xuất dữ liệu  Tất cả các kiểu dữ liệu đều có thể hiển thị trên màn hình: ◦ Biến, hằng, literal, biểu thức  cout << numberOfGames << " games played."; hai giá trị được xuất ra: ◦ giá trị của biến numberOfGames ◦ chuỗi ký tự " games played."  Cho phép xuất nhiều giá trị trong một lệnh cout 25
  • 26. Xuống dòng khi xuất dữ liệu  Xuống dòng mới: ◦ Sử dụng chuỗi escape "n"  VD: cout << "Hello Worldn"; ◦ Sử dụng đối tượng endl  VD: cout << "Hello World" << endl; ◦ Hai ví dụ cho kết quả giống nhau 26
  • 27. Định dạng giá trị xuất ra  Giá trị in ra có thể không như mong đợi cout << "The price is $" << price << endl; ◦ Nếu price có giá trị 78.5, màn hình sẽ hiển thị:  The price is $78.500000 hoặc  The price is $78.5  Quy định kích thước phần thập phân: ◦ cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); ◦ Kết quả bây giờ sẽ là:  The price is $78.50 27
  • 28. Xuất ra lỗi  Sử dụng đối tượng cerr ◦ Làm việc tương tự như cout ◦ Cung cấp cơ chế để phân biệt giữa xuất dữ liệu thông thường và xuất ra lỗi  Chuyển hướng luồng xuất ra ◦ Hầu hết các hệ thống cho phép cout và cerr được chuyển hướng sang các thiết bị khác. VD: máy in, file, … 28
  • 29. Nhập dữ liệu bằng cin  cin để nhập dữ liệu, cout để xuất dữ liệu  Khác nhau: ◦ Toán tử ">>" hướng theo chiều ngược lại ◦ Tên là cin thay vì cout ◦ Phải nhập dữ liệu cho biến  cin >> num; ◦ Dừng màn hình đợi người dùng nhập dữ liệu vào ◦ Giá trị nhập vào được gán cho biến num 29
  • 30. Nhắc nhập dữ liệu  Luôn nhắc người dùng nhập dữ liệu cout << "Enter number of dragons: "; cin >> numOfDragons;  Nếu không có "n" con chạy đợi nhập dữ liệu nằm cùng dòng với lời nhắc Enter number of dragons: ____  Tất cả cin nên có lời nhắc cout 30
  • 31. Phong cách lập trình  Mục tiêu: làm cho chương trình dễ đọc và sửa đổi  Chú thích trong C++, 2 cách: ◦ // cau chu thich cho mot dong ◦ /* doan chu thich */  Quy ước đặt tên trong C++ ◦ Tên hằng: viết hoa hoàn toàn VD: NUMBER_OF_STUDENTS ◦ Tên biến: viết theo cách lowerToUpper VD: numberStudent ◦ Quan trọng là tên phải có ý nghĩa 31
  • 32. Thư viện  Các thư viện chuẩn của C++  # include <tên_thư_viện> ◦ Thêm nội dung của file thư viện vào chương trình của bạn ◦ Được gọi là chỉ thị tiền xử lý  C++ có nhiều thư viện: ◦ Xuất/nhập dữ liệu, toán học, xâu ký tự, … 32
  • 33. Không gian tên  Không gian tên định nghĩa: ◦ Một tập các định nghĩa tên  Hiện tại sử dụng không gian tên std ◦ Có tất cả các định nghĩa thư viện chuẩn cần thiết  Ví dụ: #include <iostream> using namespace std; ◦ Bao gồm toàn bộ thư viện chuẩn của các định nghĩa tên  #include <iostream> using std::cin; using std::cout; ◦ Có thể chỉ khai báo sử dụng các đối tượng chúng ta cần 33
  • 34. Tóm tắt  C++ phân biệt chữ hoa, chữ thường  Sử dụng các tên có ý nghĩa ◦ Cho biến và hằng  Các biến phải được khai báo trước khi sử dụng ◦ Và nên được khởi tạo  Thận trọng trong các thao tác số học: ◦ Độ chính xác, dấu ngoặc, thứ tự phép toán  #include các thư viện chuẩn của C++ khi cần  cin – nhập, cout – xuất, cerr – xuất thông điệp lỗi  Sử dụng chú thích để giúp chương trình dễ hiểu 34