Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Giáo trình C++ và lập trình hướng đối tượng
PREMIUM
Số trang
71
Kích thước
3.0 MB
Định dạng
PDF
Lượt xem
738

Giáo trình C++ và lập trình hướng đối tượng

Nội dung xem thử

Mô tả chi tiết

VM- A

GS. PHẠM VĂN ẤT (Chu biẻn) - LÊ TRƯỜNG THÔNG

GIÁO TRÌNH

&

LẬP TRÌNH HƯỚNG ĐÔÌ TƯỢNG

Ị TRƯỜNG CAO DANG CÔNG NGHỆ

THỦ ĐỨC

THƯ V IỆN

0000014461

BKCB-,

NHÀ XUẤT BẢN HỔNG ĐỨC

LỜI NÓI ĐẦU

Lập trình cấu trúc là phương pháp tổ chức, phân chia chương trình thành các hàm,

thủ tục. Chúng được dùng đê xử lý dữ liệu nhưng lại tách rời các cấu trúc dữ liệu.

Thông qua các ngôn ngữ Foxpro, Pascal, c đa số những người làm Tin học đã khá

quen biết với phương pháp lập trình này.

Lập trình hướng đối tượng (object-oriented programming) dựa trên việc tổ chức

chuông trình thành các lớp (class). Khác với hàm và thủ tục, lớp là một đơn vị bao gồm

cả dữ liệu và các phương thức xử lý. Vì vậy lóp có thể mô tả các thực thể một cách chân

thực, đầy đủ cả phần dữ liệu và yêu cầu quản lý. Tư tưởng lập trình hướng đối tương

được áp dụng cho hầu hêt các ngôn ngữ mới chạy trên môi trường Windows như

Microsoft Access, Visual Basic, Visual c. Vì vậy việc nghiên cứu phương pháp lập trình

mới này là rất cần thiết đối với tất cà nhũng người quan tâm, yêu thích Tin học.

c(l) ra đời năm 1973 với mục đích ban đầu là để viết hệ điều hành Unix trên máy

tính mini PDP. Sau đó c đã được sử dụng rộng rãi trên nhiều loại máy tính khác nhau

và đã trở thành một ngôn ngữ lập trinh cấu trúc rất được ưa chuộng trên toàn thế giới.

Đe đưa c vào thế giới hướng đối tượng, năm 1980 nhà khoa hoc người Mỳ

B. Stroustrup(2) đã cho ra đời một ngôn ngữ c mới có tên ban đâu là "C có lớp", sau đó

đên năm 1983 thì gọi là C ". Ngôn ngữ c là một sự phát triển mạnh mẽ cùa c. Trong

c+ chẳng những đưa vào tất cả các khái niệm, công cụ của lập trình hướng đối tượng mà

còn đưa vào nhiều khả năng mới mẻ cho hàm. Như vậy c++ là một ngôn ngữ lai cho phép

tổ chức chương trình theo các lớp và các hàm. Có thể nói c+f đã thúc đay ngôn ngữ c

vốn đã rất thuyết phục đi vào thế giới lập trình hướng đối tượng và c đã trở thành ngôn

ngữ hướng đối tượng nổi bật trong những năm 90.

Cuốn sách này sẽ trinh bày một cách hệ thống các khái niệm của lập trình hướng

đôi tượng được cài dặt trong c như lớp, đôi tượng (object), sir thừa kê (inheritance),

tính tương ứng bội (polymorphism) và các khả năng mới trong xây dựng, sử dựng hàm

như: đối tham chiếu, dối mặc định, hàm trùng tên, hàm toán tử. Có một số vấn đề còn ít

được biết dến như cách xây dựng hàm với số đối bất định trong c cũng sẽ được giới

thiệu. Các chương từ 1 đến 11 với cách giải thích tỉ mỉ và với gân 100 chương trình

minh họa sẽ cung câp cho bạn đọc các khái niệm, phương pháp và kinh nghiệm lập

trình hướng đôi tượng trên c++. Có một phụ lục cuối sách (Phụ lục 6) sẽ hệ thống ngắn

gọn phương pháp phân tích, thiết kế và lập trình hướng đối tuợng trên bình diện chung.

Cuốn sách gồm 12 chương và 7 phụ lục.

Chương 1 hướng dẫn cách làm việc với phần mềm TC 3.0 để thử nghiệm các

chương trinh, trình bày sơ lược vê các phương pháp lập trình và giới thiệu một sô mờ

rộng đơn giàn của c

Chuông 2 trình bày các khả năng mới trong việc xây dựng và sử dụng hàm trong

c như biến tham chiếu, dối có kieu tham chiếu, đối có giá trị mặc định, hàm trực

tuyến, hàm trùng tên, hàm toán tử.

Chương 3 nói về một khái niệm trung tâm của lập trình hướng đối tượng là lóp gồm:

Định nghĩa lớp, khai báo các biến, mảng đối tượng (kiểu lóp), phương thức, dùr.g con trỏ

this trong phương thức, phạm vi truy xuất của các thàr h phần, các phương thức toán tử.

<n Tác giá cùa c là nhà khoa học Dermis Ritchie.

<2) Bjarne Stroustrup’s và Dennis Ritchie đều làm việc ớ Bell Lab (Mỹ) - nơi quy tụ rất nhiều nhà

khoa học và nghiên cứu hàng đầu về lĩnh vực máy tính.

3

Chương 4 trình bày các vấn đề tạo dựng, sao chép, huỷ bỏ các đối tượng và các vấn

đề khác có liên quan như: Hàm tạo, hàm tạo sao chép, hàm huỷ, toán tử gán, câp phát

bộ nhớ cho đối tượng, hàm bạn, lớp bạn.

Chương 5 trình bày một khái niệm quan trọng tạo nên khả năng mạnh của lập trình

hướng đối tượng trong việc phát triển, mở rộng phân mém, đó là khả năng thừa kê của

các lớp.

Chương 6 trình bày một khái niệm quan trọng khác cho phép xử lý các vấn đề khác

nhau, các thực thể khác nhau, các thuật toán khác nhau theo cùng một lược đô thông

nhất, đó là tính tương ứng bội và phương thức ảo. Các công cụ này cho phép dễ dàng tổ

chức chương trình quàn lý nhiều dạng đối tượng khác nhau.

Chương 7 trình bày các thao tác trên tệp như: tạo một tệp mới, ghi dữ liệu từ bộ nhớ

lên tệp, đọc dữ liệu từ tệp vào bộ nhớ,...

Chương 8 nói về việc tổ chức vào/ra trong c " . c đưa vào một khái niệm mới gọi

là các dòng tin (Stream). Các thao tác vào/ra sẽ thực hiện trao đôi dữ liệu giữa bộ nhớ

với dòng tin: Vào là chuỵên dữ liệu từ dòng nhập vào bộ nhớ, ra là chuyên dữ liệu từ

bộ nhớ lên dòng xuất. Đe nhập xuất dữ liệu trên một thiết bị cụ thể nào, ta chì cần gán

dòng nhập xuất với thiết bị đó. Việc tổ chức vào ra theo cách như vậy là rât khoa học

và tiện lợi vì nó có tính độc lập thiêt bị.

Chương 9 trình bày các hàm đồ họa sử dụng trong c và c . Các hàm này được sử

dụng rải rác trong toàn bộ cuốn sách để xây dựng các đối tượng đồ họa.

Chương 10 trình bày các hàm truy xuất trực tiếp vào bộ nhớ của máỵ tính, trong đó

có bộ nhớ màn hình. Các hàm này sẽ được sử dụng trong chương 11 để xây dựng các

lớp menu và cửa sổ.

Chương 11 giới thiệu 5 chương trình tương đối hoàn chỉnh n.iằm minh họa thêm

khả năng và kỹ thuật lập trình hướng đối tượng trên c++.

Chương 12 trình bày thêm một số chương trình hướng đối tượng trên c ” . Đây là

các chương trình tương đối phức tạp, hữu ích và sử dụng các công cụ mạnh của c .

Phụ lục 1 trinh bày các phép toán trong c+ f và thứ tự ưu tiên của chúng.

Phụ lục 2 liệt kê một danh sách các từ khoá của C ’.

Phụ lục 3 trình bày bảng mã ASCII và mã quét của các ký tự.

Phụ lục 4 trinh bày một vấn đề quan trọng nhưng còn ít được nói đến trong các tài

liệu, đó là cách sử dụng con trỏ void để xây dựng các hàm VỚI số đối không cố định

giống như các hàm printf và scanf của c .

Phụ lục 5 sẽ giới thiệu tóm tắt hơn 200 hàm để bạn đọc tiện việc tra cứu. (Vì trong

c vẫn sử dụng các hàm của C).

Phụ lục 6 trình bày một cách ngắn gọn phương pháp phân tích, thiết kế và lập trình

hướng đối tượng trên bình diện chung.

Phụ lục 7 trình bày một số chương trình minh họa thuật toán đệ quy kiểu quay lui.

Khi viết chúng tôi đã hết sức cố gắng để cuốn sách được hoàn chỉnh, song chẳc

chán không tránh khỏi thiếu sót, vì vậy rất mong nhận được sự góp ý của độc già.

Nhân dịp này chúng tôi xin chân thành cám ơn Thạc sĩ Nguyễn Văn Phác đã tận

tình giúp đỡ trong việc hiệu đính ''à biên tập cuốn sách này.

CÁC TÁC GIẢ

4

Chương 1

ũ" & LẬP TRÌNH hưởngđối tượng

Trong chương này trình bày các vẫn (tè sau:

- Cách sư dụng phần mềm TC 3.0

- Những sưa đôi cần thiết một chương trình c để biến nỏ thành một

chương trình c (chạy được trong môi trường c++)

- Tóm lược về các phương pháp lập trình cẩu trúc VCI lập trình

hưởng đoi tượng

- Những mờ rộng của c + so với c

§1. TURBO c++ 3.0

Các ví dụ trong cuốn sách này sẽ viết và thực hiện trên môi trường TC++

3.0. Bộ cài đặt TC 3.0 gồm 5 đĩa. Sau khi cài đặt (giả sử vào thư rr.ục

C:\TC) thì trong thư mục TC sẽ gồm các thư mục con sau:

C:\TC\BG1 chứa các tệp đuôi BGI và CHR

C:\TC\BIN chứa các tệp chương trình (đuôi EXE) như TC, TCC, TLIB,

TLINK

C:\TC\INCLUDE chứa các tệp tiêu đề đuôi H

C:\TC\LIB chứa các tệp đuôi LIB, OBJ

Đe vào môi trường của TC++ chỉ cần thực hiện tệp chương trình TC

trong thư mục C:\TC\BIN. Ket quả nhận được hệ menu chính của TC++ với

màu nền xanh gần giống như hệ menu quen thuộc của TC (Turbo C). Hệ

menu của TC + gồm các menu: File, Edit, Search, Run, Compile, Debug,

Project, Options, Window, Help.

Cách soạn thảo, biên dịch và chạy chương trình trong TC++ cũng giống

như trong TC, ngoại trừ diêm sau: Tệp chương trình trong hệ soạn thảo của

TC có duôi mặc định là CPP còn trong TC thì tệp chương trình luôn có

đuôi c.

Trong TCM cóthế thực hiện cả chương trình c và c* . Đe thực hiện

chương trình c cần dùng đuôi c đế đặt tên cho tệp chương trình, để thực

hiện chương trình c r cần dùng đuôi CPP để đặt tên cho tệp chương trình.

5

§2. c++ VÀ c

- Có thể nói c++ là sự mở rộng (đáng kể) của c. Điều đó có nghĩa là

mọi khả năng, mọi khái niệm trong c đều dùng được trong c++.

- Vì trong c++ sử dụng gần như toàn bộ các khái niệm, định nghĩa, các

kiểu dữ liệu, các cấu trúc lệnh, các hàm và các công cụ khác của c, nên yêu

cầu bắt buộc đối với các đọc giá c++ là phải biết sử dụng tương đối thành

thạo ngôn ngữ c.

- Vì c++ là sự mở rộng của c, nên bản thân một chương trình c đã là

chương trình c (chi cần thay đuôi c bằng đuôi CPP). Tuy nhiên Trình

biên dịch TCf+ yêu cầu mọi hàm chuẩn dùng trong chương trình đều phải

khai báo nguyên mẫu bàng một câu lệnh ((include, trong khi điều này không

bắt buộc đối với Trình biên dịch của TC.

Trong c có thể dùng một hàm chuẩn mà bỏ qua câu lệnh ((include để

khai báo nguyên mẫu của hàm được dùng. Điều này không báo lỗi khi biên

dịch, nhưng có thể dẫn đến kết quả sai khi chạy chương trình.

Ví dụ khi biên dịch chương trình sau trong môi trường c sC không gặp

các dòng cảnh báo (warning) và thông báo lỗi (error). Nhưng khi chạy sẽ

nhận được kết quả sai.

#include <stdio.h>

void m a i n ()

{

float a, b, c, p, s;

prin t ! ("\nNhap a, b, c: ");

scanf&a, &b, &c);

p = (a + b + c) / 2;

s = sqrt(p * (p - a) * (p - b) * (p - c ) );

prin t f (”\nDien tich = %0.2f", s);

get c h ();

}

Neu biên dịch chương trình này trong TC++ sẽ nhận được các thông báo

lỗi sau:

Eror: Funtion 'sqrt' should have a prototype

Eror: Funtion 'getch' should have a prototype

Để biến chương trình trên thành một chương trình c+* cần:

+ Đặt tên chương trình với duôi CPP

+ Thêm 2 câu lệnh ((include để khai báo nguyên mẫu cho các hàm sqrt,

getch:

ttinclude <math.h>

tlinclude <conio.h>

6

§3. LẬP TRÌNH CẤU TRÚC & LẬP TRÌNH Đ ố l TƯỢNG

3.1. Phương pháp lập trình cấu trúc

- Tư tưởng chính của lập trình cấu trúc là tổ chức chương trình thành

các chương trình con. Trong PASCAL có 2 kiểu chương trình con là thủ tục

và hàm. Trong c chỉ có một loại chương trình con là hàm.

Hàm là một đơn vị chương trình độc lập dùng để thực hiện một phần

việc nào đó như: Nhập số liệu, in kết quả hay thực hiện một số tính toán.

Hàm cần có đổi và các biến, mảng cục bộ dùng riêng cho hàm.

Việc trao đối dữ liệu giữa các hàm thực hiện thông qua các đối và các

biến toàn bộ.

Các ngôn ngữ như c, PASCAL. FOXPRO là các ngôn ngữ cho phép

triển khai phương pháp lập trinh cấu trúc.

Một chương trình cấu trúc gồm các cấu trúc dữ liệu (như biến, mảng,

bản ghi) và các hàm. thủ tục.

Nhiệm vụ chính của việc tố chức thiết kế chương trình cấu trúc là tổ

chức chương trình thành các hàm, thủ tục: Chương trình sẽ bao gồm các

hàm. thủ tục nào.

Ví dụ xét yêu cầu sau: Viết chương trình nhập toạ độ (x, y) của một dãy

điểm, sau đó tìm một cặp điểm cách xa nhau nhất.

Trên tư tưởng của lập trình cấu trúc có thể tổ chức chương trình như sau:

+ Sử dụng 2 mảng thực toàn b ộ X và y để chứa toạ độ dãy điểm.

+ Xây dựng 2 hàm:

Hàm nhapsl dùng để nhập toạ độ n điểm, hàm này có một đối là biến

nguyên n và được khai báo như sau:

void nhapsl(int n ) ;

Hàm do dai dùng dê tính độ dài doạn thắng đi qua 2 điếm có chỉ số là i

và j, nó dược khai báo như sau:

float do_dai(int i, int j);

Chương trình c cho bài toán trên được viết như sau:

#include <stdio.h>

#include <conio.h>

tinclude <math.h>

float x[100], yflOO];

float do dai(int i, int j)

{

return sqrt(pow(x[i ] - x[j], 2) + pow(y[i] - y[j], 2));

}

7

void nhapslfint n)

{

int i;

for (i=l; i<=n; ++i)

{

pri n t f ("\nNhap toa do X , y cua diem thu %d: ", i);

scanf("%f%f", &x[i] , &y[i]);

}

}

void main()

{

int n, i, j, imax, jmax;

float: d, dmax;

printf("\nSo diem N = ");

scanf("%d", &n) ;

nhapsl(n);

dmax = do_dai(l, 2); imax = 1; jmax = 2;

for (1=1; i<=n-l; ++i)

for (j=i+l; j<=n; t+j)

{

d = do dai(i, j);

if (d > dmax)

{

dmax = d;

imax = i ;

jmax = j;

}

}

printf("\nDoan thang lon nhat CO do dai = %0.2f", dmax);

printf{"\nDi qua 2 diem CO chi so la %d, %d", imax, jmax);

getch();

}

3.2. Phương pháp lập trình hướng đối tuọng

+ Khái niệm trung tâm của lập trình hướng đối tượng là lớp (class). Có

thể xem lớp là sự kết hợp các thành phần dữ liệu và các hàm. Cũng có thể

xem lớp là sự mở rộng của cấu trúc trong c (struct) bàng cách đưa thêm vào

các phương thức (method) hay còn gọi là hàm thành viên (member

function). Một lớp được định nghĩa như sau:

class Tên lớp

{

// Khai báo các thành phần dữ liệu

// Khai báo các phuong thức

} ;

+ Các phương thức có thể được viết (xây dựng) bên trong hoặc bèn

8

Tải ngay đi em, còn do dự, trời tối mất!