1
Bài 2: Ngôn ngữ C++
Các mở rộng so với C
2
Lịch sử phát triển của C++
• Được xây dựng trên nền của C.
• Phiên bản đầu tiên của C++ ra đời năm 1980 với tên
là “C with classes”. Đến năm 1983 .
• Năm 1990, ANSI/ISO 9899 đã định nghĩa một chuẩn
cho C.
• Năm 1998, ISO/IEC 14882 đã cụ thể hóa chuẩn cho
C++
3
C++ và C
• C là tập con của C++.
• Tất cả các thư viện trong C đều có thể sử dụng trong
C++.
• C++ cũng có cùng những yếu điểm như C (về con
trỏ…)
• Một số mở rộng của C++ so với C:
▫ Từ khóa mới
▫ Dữ liệu, khai báo biến
▫ Chuyển kiểu, tham chiếu, cấp phát bộ nhớ …
4
C++ và Java
• Java là ngơn ngữ hồn tồn hướng đối tượng. Tất cả
các mã lệnh đều đóng gói trong các lớp.
• C++ là ngơn ngữ lai ghép. Nó hỗ trợ cả lập trình
hướng chức năng và lập trình hướng đối tượng.
• Do vậy C++ mạnh hơn nhưng cũng khó kiểm soát
hơn.
5
Nội dung
• Phân tích một ví dụ chương trình C++.
• Các kiểu dữ liệu, các toán tử, các hàm, vào ra (I/O).
• Các cấu trúc điều khiển.
• Các mảng, chuỗi, con trỏ.
• Một số mở rộng của C++ so với C.
6
Một chương trình cụ thể trên C++
// Title: The program doing something
#include <iostream.h>
void doSomething(int p);
int main()
{
int p = 7;
doSomething(p);
cout << “I have something done.” << endl;
return 0;
}
void doSomething(int p) {
for( int i = 0; i < p; i++ ) {
cout << “*” << endl;
}
}
7
Các kiểu dữ liệu cơ bản của C++
• Một số kiểu dữ liệu cơ bản:
• char characters: ’a’, ’b’, ’\n’, ’\0’, ’7’
• int
integers: 3, 6883, -5, 0
• double floating point numbers: 3.14, 7e9
• bool true or false.
• Ngồi ra: float, long, unsigned long, short, unsigned
char, wchar_t
8
Các kiểu dữ liệu cơ bản của C++
• Khai báo biến trong chương trình
▫ char a;
▫ int b;
▫ double c;
• Phép gán:
▫ b = 4; a = 'w’; c = -3.777;
▫ int x = 78;
• Chú ý:
▫ C++ cho phép khai báo biến tại bất cứ đâu trước khi sử
dụng.
9
Các kiểu dữ liệu cơ bản của C++
• Hằng số:
▫ const double PI=3.1415926;
▫ const int MAXBUFFER=20;
• Ép kiểu:
▫ Khi gán giá trị vào biến kiểu khác.
▫ Ví dụ
myInt=(int)myFloat; Theo cách của C
myInt=int(myFloat); Theo cách của C++
10
Các tốn tử cơ bản trong C++
• Arithmetic operators:
▫ +, -, *, /, %
• Comparison:
▫ ==, !=, <, >, >=, <=
• Logical:
▫ &&, ||, !
• Assignment:
▫=
• Bitwise:
▫ &, |, ~,^
• Shortcuts:
▫ +=, *=, ^=, (etc.)
• Other:
▫ <<, >>, ? :, ->, ., ,
11
Các tốn tử trong C++
• Tốn tử ++ and --:
▫ ++
▫ --
increment by 1
decrement by 1
• Chú ý rằng i++ và ++i được thực thi khác nhau.
12
Hàm (function)
Name
int someFunction(double f, char c)
{
Body
// …
}
Return Type
Parameter
List
13
Hàm (function)
• Chú ý rằng các hàm được phân biệt bởi tên và danh
sách các tham số. Các hàm sau là khác nhau.
▫ int exampleFunction(int i, char c);
▫ int exampleFunction(double f);
▫ int exampleFunction();
▫ int exampleFunction(char c, int i);
• Ngồi ra có sự khác nhau giữa biến truyền kiểu tham
chiếu và biến truyền kiểu giá trị (giới thiệu phần sau)
14
Kiểu vào ra cơ bản
• Để xuất ra màn hình dùng hàm cout.
▫ cout << “The result is: “ << result << endl;
• Nhập giá trị từ bàn phím dùng hàm cin.
▫ cin >> x;
• Khai báo thư viện
▫ #include <iostream.h>
15
Cấu trúc điều khiển – Rẽ nhánh
• The if statement:
if ( x > 0 )
{
cout << “positive”;
}
else
{
cout << “negative or zero”;
}
16
Cấu trúc điều khiển – Lựa chọn
• Ví dụ switch :
int x;
cout << "Enter choice (1, 2, or 3)";
cin >> x;
switch(x) {
case 1: doThis(); break;
case 2: doThat(); break;
case 3: doSomethingElse(); break;
default: cout << "Sorry, invalid Input";
}
17
Cấu trúc điều khiển – Lặp
• The for loop:
Start condition
Terminating condition
for(k = 0; k < 10; k++ )
{
cout << “The square of “ << k << “ is “
<< k * k << endl;
}
Action taking place at
the end of each iteration
18
Cấu trúc điều khiển – Lặp
• Cấu trúc lặp while :
while ( condition )
{
// do something
}
Equivalent to:
for( ; condition ; ) {
// do something
}
19
Cấu trúc điều khiển Lặp do … while
• Cú pháp:
Equivalent to:
do
{
// something
} while( condition);
// something
while( condition) {
// something
}
• Các lệnh nhảy: break, continue, goto
20
Địa chỉ ơ nhớ
• Mỗi vị trí mà một đơn vị dữ liệu được lưu trữ gọi là địa chỉ ơ
nhớ.
• Khi khai báo một biến: Ví dụ Int myAge.
• Máy tính sẽ chọn một vị trí ơ nhớ sẵn có.
• Gán cho tên myAge địa chỉ của ơ nhớ đó.
21
Mảng
• Mảng dùng để lưu trữ các phần tử có cùng kiểu dữ liệu.
• int someNumbers[7];
22
Lưu trữ các giá trị trong mảng
int rent[4];
rent[0] = 250;
rent[1] = 375;
rent[2] = 460;
rent[3] = 600;
int
int
int
int
int
rent[4] = {250, 375, 460, 600};
rent[] = {250, 375, 460, 600};rent[2] and
rent[4] = {250, 375};
rent[3] are set to
0
rent[3] = {250, 375, 460, 600};
Syntax error
rent[4] = {0};
Sets all array elements to 0
22
23
Lưu trữ các giá trị trong mảng
int rent[4];
rent[0] = 250;
rent[1] = 375;
rent[2] = 460;
rent[3] = 600;
int
int
int
int
int
rent[4] = {250, 375, 460, 600};
rent[] = {250, 375, 460, 600};
rent[2] and
rent[4] = {250, 375};
rent[3] are set to
rent[3] = {250, 375, 460, 600};
0
Syntax error
rent[4] = {0};
Sets all array elements to 0
23
24
Một số lỗi thường gặp khi làm việc với mảng
Quên là mảng được đánh chỉ số từ 0
25
Một số lỗi thường gặp khi làm việc với mảng
• Truy cập đến ngoài phạm vi của mảng
Element is out of bounds