Tải bản đầy đủ (.doc) (4 trang)

2 c++motsomorongsoc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (69.27 KB, 4 trang )

HỌC VIỆN KỸ THẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN

ĐỀ CƯƠNG BÀI GIẢNG

HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bộ môn: Công nghệ phần mềm
Giáo viên: 1) Phạm Thị Bích Vân

Bài II: Ngôn ngữ C++, các mở rộng so với C
1. Thời lượng: 3 tiết (GV giảng: 3)
2. Mục đích, yêu cầu: Giới thiệu cho sinh viên lịch sử phát triển của ngôn ngữ C++, giới thiệu lại cho sinh
viên qua về cấu trúc một chương trình trong C++, một số mở rộng của C++ so với ngôn ngữ C.
3. Nội dung:
a. Nội dung chi tiết:
• Lịch sử của C++




Ý tưởng về cấu trúc trong C++ đã xuất phát vào các năm 1970 từ Simula 70 và Algol 68.
Vào những năm đầu thập niên 1980, người dùng biết C++ với tên gọi "C with Classes".
Trong năm 1983, 1984, ngôn ngữ "C with Classes" được thiết kế lại, mở rộng hơn rồi một trình




biên dịch ra đời. Và chính từ đó, xuất hiện tên gọi "C++".
Các mở rộng của C++
Các từ khóa mới


Để bổ sung các tính năng mới vào C, một số từ khóa (keyword) mới đã được đưa vào C++
ngoài các từ khóa có trong C.
asm
new
This

catch
operator
throw

class
private
try

delete
protected
virtual

friend
public

inline
template

• Cách ghi chú
C++ chấp nhận hai kiểu chú thích.
− Kiểu chú thích /*…*/ được dùng cho các khối chú thích lớn gồm nhiều dòng,
− Kiểu // được dùng cho các chú thích một dòng.



Dòng xuất nhập



Trong C++ chúng ta có thể dùng dòng nhập/xuất chuẩn (standard input/output stream) để



nhập/xuất dữ liệu thông qua hai biến đối tượng của dòng (stream object) là cout và cin.
Ví dụ: cout<< "Nhap vao mot so X:"; cin>>X;
Cách chuyển đổi kiểu dữ liệu



Hình thức chuyển đổi kiểu trong C tương đối tối nghĩa, vì vậy C++ trang bị thêm một cách




chuyển đổi kiểu giống như một lệnh gọi hàm.
Ví dụ 2.4:
int X = 200;
long Y = (long) X; //Chuyen doi kieu theo cach cua C
long Z = long(X); //Chuyen doi kieu theo cach moi cua C++
Khai báo biến
Trong C++ cho phép khai báo linh hoạt bất kỳ vị trí nào trong một phạm vi cho trước (không



nhất thiết phải ngay đầu của phạm vi), xen kẽ việc khai báo dữ liệu với các câu lệnh thực hiện.

Khi khai báo một biến trong chương trình, biến đó sẽ có hiệu lực trong phạm vi của chương trình



đó kể từ vị trí nó xuất hiện. Vì vậy không thể sử dụng một biến được khai báo bên dưới nó.
Các biến const

Bộ môn Công nghệ phần mềm





Có thể dùng const để quy định kích thước của một mảng như đoạn mã sau:
const int ArraySize = 100;
int X[ArraySize];
Khi khai báo một biến const trong C++ thì chúng ta phải khởi tạo một giá trị ban đầu và các biến



const được hiểu mặc định là static.
Struct và union



Trong C++ tên của struct và union được xem luôn là tên kiểu giống như khai báo bằng lệnh
typedef.
Trong C, chúng ta có thể có đoạn mã
sau :
struct Complex

{
float Real;
float Imaginary;
};
…………………..
struct Complex C

Trong C++, vấn đề trở nên đơn
giản hơn:
struct Complex
{
float Real;
float Imaginary;
};
…………………..
Complex C;



Quy định này cũng áp dụng cho cả union và enum. Tuy nhiên để tương thích với C, C++ vẫn



chấp nhận cú pháp cũ.
Toán tự định phạm vi



Toán tử định phạm vi (scope resolution operator) ký hiệu là ::, nó được dùng truy xuất một phần




tử bị che bởi phạm vi hiện thời.
Toán tử new và delete



C++ định nghĩa một phương thức mới để thực hiện việc cấp phát động bộ nhớ bằng cách dùng

hai toán tử new và delete.
Cú pháp:
new type_name; new ( type_name )
new type_name initialize; new ( type_name ) initializer
− Nếu toán tử new cấp phát không thành công thì nó sẽ trả về giá trị NULL.
− Còn toán tử delete thay thế hàm free() của C, nó có cú pháp như sau :
delete pointer; delete [] pointer
• Hàm inline


Với một hàm thông thường phải chứa một loạt các xử lý điểm vào (entry point): tham số phải



được đẩy vào stack, một lệnh gọi phải được thực hiện và sau đó việc quay trở về cũng phải được
thực hiện bằng cách giải phóng các tham số ra khỏi stack. Khi đó phải chép lập lại các đoạn
chương trình nếu muốn tăng hiệu quả.
Để tránh khỏi phải xử lý điểm vào, C++ trang bị thêm từ khóa inline để loại việc gọi hàm. Cú




pháp của hàm inline như sau :
inline data_type function_name ( parameters )
{
}
Các giá trị tham số mặc định



Một trong các đặc tính nổi bật nhất của C++ là khả năng định nghĩa các giá trị tham số mặc định



cho các hàm. Chẳng hạn chúng ta có đoạn chương trình sau:
void MyDelay(long Loops); //prototype
Chẳng hạn muốn gán giá trị mặc định cho tham số Loops là 1000. Khi đó đoạn mã trên được viết
lại như sau:

void MyDelay(long Loops = 1000); //prototype
− Mỗi khi gọi hàm MyDelay() mà không gởi một tham số tương ứng thì trình biên dịch sẽ tự động
Bộ môn Công nghệ phần mềm






gán cho tham số Loops giá trị 1000.
Tham chiếu
Biến tham chiếu có cú pháp như sau :
data_type & variable_name;

Khi dùng biến tham chiếu cho tham số chỉ có địa chỉ của nó được gởi đi chứ không phải là toàn
bộ cấu trúc hay đối tượng đó điều này rất hữu dụng khi chúng ta gởi cấu trúc và đối tượng lớn
cho một hàm

.



Phép

nạp

chồng

Với ngôn
chúng ta có thể nạp chồng các hàm và các toán tử (operator).
− Nạp chồng hàm

ngữ C++,

Trong ngôn ngữ C cũng như mọi ngôn ngữ máy tính khác, mỗi hàm đều phải có một tên
phân biệt. Đôi khi đây là một điều phiền toái, C++ giải quyết điều này bằng cách cho phép chúng ta
tạo ra các hàm khác nhau có cùng một tên. Đây chính là nạp chồng hàm. Ví dụ:
int abs(int i);
long abs(long l);
double abs(double d);
− Nạp chồng toán tử
Một hàm định nghĩa một toán tử có cú pháp sau:
cocdata_type operator operator_symbol ( parameters )
{

………………………………
}
Hầu hết các toán tử của C++ đều có thể được nạp chồng. Các toán tử sau không được nạp
chồng là:
Toán tử
::
.*
.
?:
sizeof

Ý nghĩa
Toán tử định phạm vi.
Truy cập đến con trỏ là trường của struct hay thành viên của class.
Truy cập đến trường của struct hay thành viên của class.
Toán tử điều kiện

b. Nội dung thảo luận: So sánh kiểu dữ liệu tham trị, kiểu dữ liệu tham chiếu và kiểu dữ liệu con trỏ.
c. Nội dung tự học: Tìm hiểu kỹ thêm về con trỏ, về các mở rộng của C++. Luyện tập thông qua các
bài tập.
d. Bài tập (bắt buộc, mở rộng):
Bài 1: Viết chương trình nhập tọa độ tâm O và bán kính r của 1 hình tròn. Nhập vào từ bàn phím tọa
độ điểm M bất kỳ (trên mặt phẳng). Cho biết vị trí tương đối của M so với đường tròn: ở trong, trên
hay ngoài đường tròn? (Cho nhập tọa độ đỉnh kiểm tra nhiều lần)
Bài 2: Viết chương trình tính ước số chung lớn nhất của 2 số nguyên dương nhập vào từ bàn phím.
Dùng vòng lặp do – while để tính nhiều lần, khi nào muốn kết thúc nhấn ESC
Bài 3: Viết chương trình kiểm tra tính đối xứng của một số, dùng vòng lặp do - while để cho phép
nhập và kiểm tra nhiều lần, muốn thoát người dùng nhấn ESC.
Bộ môn Công nghệ phần mềm



Bài 4: Nhập các số thực a, b, c. Giải và biện luận phương trình trùng phương ax 4 + bx2 + c = 0.
Bài 5: Giải phương trình bậc 2, kiểm tra không cho nhập hệ số a=0.
Bài 6: Lập trình cho biết mã của ký tự vừa nhập từ bàn phím cho đến khi nào ấn ESC.
Bài 7: Tìm những giá trị x, y, z (< 100) thoả mãn điều kiện: x2 + y2 = z2
Bài 8: Nhập số nguyên dương n và m. Tìm hai chữ số cuối của n luỹ thừa m
Bài 9: Tính tổng hai số chỉ thời gian, mỗi số gồm:giờ, phút, giây. (Dung struct)
Bài 10: Viết hàm xác định độ dài của xâu kí tự
Bài 11: In ra tất cả các ước của số n.
Bài 12: Tìm k nhỏ nhất để 2k >=n
Bài 13: Tìm k lớn nhất để 4k bé hơn n.
Bài 14: In ra năm âm lịch tương ứng với năm nhập vào ví dụ năm 2009 là năm “Kỷ Sửu” (case:)
Bài 15: Nhập vào hai số và một ký hiệu phép toán, tính giá trị của biểu thức được thành lập từ hai số
và phép toán trên.
Bài 16: Biểu diễn một số lẻ dương dưới dạng 2p -1 (p nguyên dương)
4. Tài liệu tham khảo
• Lập trình hướng đối tượng với C++ / Lê Đăng Hưng, Tạ Tuấn Anh, Nguyễn Hữu Đức, Nguyễn
Thanh Thủy (Chủ biên), - Hà Nội : Khoa học và Kỹ thuật, 2009. -346 trang. Chương II.
• Giáo trình C++ & lập trình hướng đối tượng / Phạm Văn Ất (Chủ biên), Lê Trường Thông. – Hà
Nội : Hồng Đức, 2009. -495 trang. Phần 2.
• Object-Oriented Programming in C++ (4th Edition) / Robert Lafore. Sams Publishing, 2002.
Chapters 2, 3, 4, 5.
5. Câu hỏi ôn tập
- Lịch sử phát triển của C++?
- Cấu trúc của một chương trình bằng C++?
- Một số mở rộng của C++?
- Ý nghĩa các từ khóa?
- Thế nào là kiểu dữ liệu tham chiếu?
- Thế nào là nập chồng? Có những kiểu nạp chồng nào ?


Bộ môn Công nghệ phần mềm



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×