Giáo trình: Lập trình nâng cao pot

155 131 0
Giáo trình: Lập trình nâng cao pot

Đ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

Giáo trình Lập trình nâng cao  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang Chương1 : GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG I. LỊCH SỬ PHÁT TRIỂN CỦA LẬP TRÌNH : 1. Lập trình tuyến tính :  Việc lập trình cho các máy tính đầu tiên phải viết theo ngôn ngữ máy trong hệ nhị phân nên mất nhiều thời gian khi chạy và thử nghiệm chương trình để gỡ rối .  Khả năng sử dụng lại các đoạn chương trình: không có  Khi các khả năng của máy tính (MT) tăng: Lập trình phát triển từ đơn giản đến phức tạp hơn.  Các tiện nghi cần thiết cho việc sử dụng lại chương trình gốc ban đầu hầu như không có trong các ngôn ngữ lập trình tuyến tính (LTTT) ban đầu. Khi cần làm công việc này người ta phải sao chép lại các chương trình gốc, dẫn đến chương trình dài ra. Nên việc bảo dưỡng, sữa chữa khó, rất mất thời gian  Dữ liệu: Toàn cục, không có tính che dấu dữ liệu nên rất khó kiểm soát 2. Lập trình có cấu trúc :  Phân mảnh vấn đề lớn thành các vấn đề con độc lập. Từ những vấn đề con này xây dựng thành thủ tục và hàm  Dữ liệu truyền giữa các thủ tục thông qua đối số, ngoài ra nó có các dữ liệu riêng mà các thủ tục bên ngoài phạm vi của nó không thể thâm nhập tới được 3. Sự trừu tượng hoá chức năng :  Trong một chương trình (CT) có cấu trúc chỉ cần biết thủ tục hay hàm đã cho làm được công việc cụ thể gì là đủ, còn làm thế nào mà công việc đó lại thực hiện được thì không quan trọng. Một khi thủ tục còn được tin cậy thì nó có thể dùng mà không cần biết là nó đã phải làm gì để hoàn thành đúng chức năng. Điều này được gọi là sự trừu tượng hoá chức năng (functional abstraction), đây là nền tảng của lập trình có cấu trúc 4. Lập trình hướng đối tượng (Object Oriented Programming):  Lập trình hướng đối tượng (LTHĐT) là xây dựng trên nền tảng của lập trình có cấu trúc với sự trừu tượng hoá dữ liệu.  Sự trừu tượng dữ liệu (data abstraction) tác động trên các dữ liệu cũng tương tự như sự trừu tượng hoá chức năng đã làm trên chức năng. Khi sự trừu tượng hoá dữ liệu xảy ra, các cấu trúc dữ liệu và các phần tử có thể được sử dụng mà không cần để ý tới các chi tiết cụ thể mà người ta xây dựng.  Sự thay đổi căn bản là ở chỗ: 1 chương trình hướng đối tượng (HĐT) được thiết kế xoay quanh dữ liệu mà ta làm việc trên nó hơn là bản thân chức năng chương trình.  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang  LTHĐT sẽ liên kết cấu trúc dữ liệu (CTDL) với các thao tác theo cách mà chúng ta thường nghĩ về thế giới xung quanh đó là: gắn 1 hành động cụ thể với 1 loại đối tượng nào đó. VD :  Ô tô thì có bánh xe, di chuyển được và hướng chúng thay đổi bằng cách quay tay lái.  Tương tự ta biết cây là 1 loại thực vật thân gỗ và có lá  Ô tô không phải là cây, cây không phải là ô tô, vậy ta có thể kết luận rằng điều thực hiên được với ô tô thì không thể thực hiện được với cây. Thật hoang tưởng khi đi lái cây hoặc tưới nước cho ô tô để nó lớn lên  LTHĐT cho phép sử dụng các quá trình suy nghĩ về thế giới quan vào dữ liệu VD :  Một mẩu tin thì có thể đọc ra, thay đổi và lưu trữ; còn một số phức thì có thể dùng trong các phép toán. Tuy vậy không thể viết một số phức vào tập tin làm một mẫu tin nhân sự được, và ngược lại không thể cộng hai mẫu tin nhân sự lại với nhau. Một chương trình LTHĐT sẽ xác định đặc điểm và hành vi cụ thể của các kiểu dữ liệu. Điều đó cho phép chúng ta xác định 1 cách chính xác chúng ta có thể có được những gì ở các kiểu dữ liệu khác nhau.  Chúng ta cũng luôn luôn liên hệ các khái niệm mới với các khái niệm đã tồn tại và lại có khả năng suy luận dựa trên sự liên hệ giữa các sự vật . LTHĐT cũng làm việc theo cách tương tự, cho phép ta xây dựng CTDL mới dựa trên những CTDL đang có mang theo những tính năng của cấu trúc nền mà chúng dựa trên đó, trong khi vẫn thêm vào những tính năng mới – tính thừa kế (inheritance) II. NHỮNG THUẬT NGỮ CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG : 1. Lớp (class), đối tượng (object), phương thức (method) :  LTHĐT cho phép tổ chức dữ liệu theo 1 cách tương tự như các nhà sinh học tổ chức các loài thực vật khác nhau. Theo cách nói của LTHĐT thì mỗi 1 loài thực vật đó sẽ được gọi là 1 lớp-class  Một lớp là 1 bảng mẫu mô tả các thông tin CTDL lẫn các công việc cụ thể của các phần tử dữ liệu  Mô tả  Chỉ ra nó làm được cái gì ? – Hành vi trên nó  Một phần tử mà được khai báo thuộc 1 lớp gọi là 1 đối tượng-Object Các hàm được định nghĩa hợp lệ trên 1 lớp gọi là phương thức-Method và chúng là các hàm duy nhất có thể xử lý dữ liệu của các đối tượng của lớp đó  Các CTDL dùng để mô tả 1 lớp thì gọi là các thuộc tính-Properties VD: class complex {  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang int real, imag // properties; void cong (complex c); // 1 void tru (complex c); // 2 void nhan (complex c); // 3 void chia (complex c); // 4 }; // 1,2,3,4: method complex a,b; // a,b: object  Mỗi một đối tượng thì có riêng 1 bản sao các phần tử dữ liệu của lớp a:real imag b:real imag  Các phương thức định nghĩa trong 1 lớp thì có thể gởi bởi bất kỳ 1 đối tượng nào. Điều này gọi là gởi thông điệp cho đối tượng. Các thông điệp thì chỉ phụ thuộc vào đối tượng nhận, nghĩa là đối tượng nào nhận thông điệp thì mới phải làm theo thông điệp đó. 2. Lớp cơ sở (base class), lớp dẫn xuất (derived class) :  Không giống như các kiểu dữ liệu chuẩn sẵn, các lớp có thể sử dụng các lớp khác làm các viên gạch xây dựng cho mình.  Một lớp thì có thể dùng để xây dựng 1 lớp mới. Lớp ban đầu thì được gọi là lớp cơ sở-base class. Còn lớp mới gọi là lớp dẫn xuất-derived class. 3. Tính kế thừa (Inheritance) :  Đó là khả năng cho phép sử dụng lại lớp đã có sẵn để xây dựng lớp mới như trên đã đề cập.  Vd: Từ lớp Animals có thể xây dựng các lớp dẫn xuất (hay còn gọi là lớp con-subclass) từ nó.  Lớp dẫn xuất thì được kế thừa tất cả các thuộc tính-properties và phương thức-method của lớp cơ sở, ngoài ra có thể có các thuộc tính mới và phương thức mới của riêng nó. Animals Insects Mammals Reptiles Amphibians Animals Insects Mammals Reptiles Amphibians  Các lớp Insects, Mammals, Reptiles, Amphibians là những lớp dẫn xuất từ lớp Animals chúng đều có chung thuộc tính được thừa kế từ lớp Animals là có hai mắt, di chuyển được …  Nhưng ngoài ra chúng vẫn có những thuộc tính riêng, chẳng hạn Mammals thì chỉ sống ở trên cạn còn Amphibians thì vẫn có thể sống được ở cả trên cạn lẫn dưới nước  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang 4. Tính đa hình (Polymorphism) : VD : Ấn phẩm : Properties: Tên Method: cất vào, lấy ra, tìm Sách : Kế thừa từ lớp Ấn phẩm Properties : Tên, Tg, NXB Method: Tìm Báo : Kế thừa từ lớp Ấn phẩm Properties : Kỳ,Tên Method: Tìm  Do Báo lưu trữ khác Sách nên phải viết 2 thủ tục tìm khác nhau. Việc tìm Sách và Báo là hoàn toàn khác nhau do đó có thể định nghĩa 2 phương thức khác nhau. Tuy nhiên LTHĐT cung cấp 1 khả năng gọi là tính đa hình (polymorphism) để giải quyết vấn đề này. Nó cho phép dùng 1 phương thức để tìm ra cả sách lẫn báo. Khi tìm sách, nó dùng phương thức tìm dành riêng cho sách, còn khi tìm báo, nó lại sử dụng phương thức tìm tương ứng với báo. Kết quả là chỉ cần một tên phương thức duy nhất được dùng cho cả hai công việc tiến hành trên hai lớp dẫn xuất có liên quan, mặc dù việc thực hiện của phương thức đó thay đổi theo từng lớp.  Tính đa hình thì dựa trên sự ràng buộc, đó là quá trình buộc 1 phương thức với 1 hàm thực sự. Khi các phương thức kiểu đa hình được sử dụng, trình biên dịch sẽ không xác định hàm nào tương ứng với phương thức sẽ được gọi. Hàm cụ thể nào được gọi là tuỳ thuộc vào lúc chạy. Điều này được gọi là sự ràng buộc muộn, vì nó xảy ra khi chương trình đang thực hiện.  Sự ràng buộc sớm cũng được sử dụng cho các phương thức không theo kiểu đa hình (còn gọi là phương thức tĩnh). Lúc đó, khi biên dịch thì trình biên dịch đã biết cụ thể hàm nào được gọi gắn với phương thức nào.  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang Chương 2 : GIỚI THIỆU VỀ NHỮNG ĐIỂM MỚI CỦA C++ I. C++ LÀ GÌ ?  Là ngôn ngữ được xây dựng từ ngôn ngữ C  Có tất cả các tính năng của C  “Tôn trọng” cú pháp của C  Có bổ sung và cải tiến II. SỰ KHÁC NHAU GIỮA C VÀ C++ 1. Ép kiểu :  Trong C : (tenkieu)bien  Trong C++: tenkieu(bien)  Vd Tính công thức S = 2/1 + 3/2 + … + (n+1)/n với n là số nguyên dương nhập từ bàn phím, có thể viết: #include<stdio.h> #include<conio.h> void main() { int n; printf(“\n So phan tu cua day N= “); scanf(“%d”,&n); float s=0.0; for (int i=1; i<=n; ++i) s += float(i+1)/float(i);//Ep kieu theo C++ printf(“S=%0.2f “,s); getch(); } 2. Ghi chú :  Trong C : /* */  Trong C++: /*…*/: ghi chú nhiều dòng // : ghi chú đến cuối một dòng 3. Khai báo :  Trong C++ : Chỉ cần khai báo trước khi sử dụng (mọi nơi) 4. Hằng  Trong C : #define N 100; (Không biết N là kiểu gì)  Trong C++: const int N=100; (Cho biết kiểu của N, đây gọi là một hằng có kiểu) 5. Toán tử phạm vi ::  Trong C++ :: (bốn dấu chấm) Vd: int a=2; void main( ) {  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang int a=3; printf(“ a ngoai:%d”,::a); (a=2) printf(“ a trong:%d”,a); (a=3) } 6. Vào ra trong C++ a. In dữ liệu ra màn hình : Hàm printf() Toán tử xuất: cout << bt << << bt; //đưa giá trị các bt ra màn hình b. Nhập dữ liệu từ bàn phím : Hàm scanf() Toán tử nhập: cin >>biến >> >>biến Vd : Nhập 1 dãy không quá n ký tự và chứa vào mảng h (kiểu char) : cin.get(h,n); * Chú ý 1: Toán tử nhập cin >> sẽ để lại ký tự chuyển dòng ‘\n’ trong bộ đệm, ký tự này có thể làm trôi phương thức cin.get Khắc phục: dùng cin.ignore(1); Mục đích : để bỏ qua 1 ký tự chuyển dòng * Chú ý 2: Để sử dụng các phương thức nói trên cần khai báo tệp tiêu đề: #include <iostream.h> 7. Định dạng khi in ra màn hình :  Quy định độ rộng tối thiểu là w vị trí cho giá trị (nguyên,thực,chuỗi) được in trong toán tử xuất ta dùng hàm: setw(w)  Hàm này cần đặt trong toán tử xuất  Chỉ có hiệu lực cho 1 giá trị được in gần nhất  Các giá trị in tiếp theo có độ rộng tối thiểu mặc định là 0 Vd: cout << setw(3) << “AB” << “CD” Sẽ in ra 5 ký tự gồm một dấu cách và 4 chữ cái A,B,C,D.  Hàm trên nằm trong thư viện #include <iomanip.h> 8. Kiểu liệt kê : Kiểu liệt kê (enum) :  Tên viết sau từ khoá enum được xem là kiểu liệt kê và có thể dùng để khai báo, Vd: enum MAU {xanh, do, tim, vang};//Đn kiểu MAU MAU m, dsm[10];//Khai báo các biến, mảng kiểu MAU  Các giá trị kiểu liệt kê là các số nguyên. Do đó có thể thực hiện các phép tính trên các giá trị này, có thể in, có thể gán giá trị này cho biến nguyên. Vd: MAU m1, m2; int n1, n2;  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang m1= tim; m2= vang; n1 = m1; // n1= 2 n2 = m1+ m2; // n2= 5 printf (“\n %d”, m2); //in ra số 3  Không thể gán trực tiếp 1 giá trị nguyên cho 1 biến enum mà phải dùng phép ép kiểu, Vd: m1= 2; // lỗi m1= MAU(2); // đúng 9. Cấp phát và giải phóng bộ nhớ :  Trong C: p=(int) malloc(sizeof(int));cấp phát 1 vùng nhớ p=(int) calloc(n,sizeof(int));cấp phát n vùng nhớ free(p); giải phóng bộ nhớ  Trong C++ : p= new int;cấp phát 1 vùng nhớ p= new int[n];cấp phát n vùng nhớ delete p; Giải phóng 10. Đối kiểu tham chiếu :  Trong C để nhận kết quả của hàm cần dùng đối con trỏ. Làm cho việc xây dựng cũng như sử dụng hàm khá phiền phức.  Trong C++ đưa vào đối kiểu tham chiếu (giống Pascal) dùng để chứa kết quả của hàm. Việc tạo lập và sử dụng đơn giản hơn. Vd : Trong C : void swapint(int *a, int *b) { int temp= *a; *a = *b; *b = temp; } Gọi hàm: swapint(&x, &y) Trong C++: void swapint (int &a, int &b) { int temp = a; a = b; b = temp; } Gọi hàm: swapint (x, y) //không cần toán tử &  Vậy một biến tham chiếu thì được xác định bằng toán tử & dùng trước tên biến giống như toán tử * dùng trước con trỏ  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang  Điểm khác nhau giữa 1 con trỏ chỉ đến 1 biến và 1 biến tham chiếu đến nó là:  Đối với con trỏ thì phải dùng phép toán lấy địa chỉ  Đối với biến tham chiếu thì không cần. 11. Đối có giá trị mặc định :  Trong nhiều trường hợp người dùng viết 1 lời gọi hàm nhưng còn chưa biết nên chọn giá trị nào cho các đối. Để khắc phục khó khăn này, C++ đưa ra giải pháp đối có giá trị mặc định. Khi xây dựng hàm, ta gán giá trị mặc định cho một số đối. Người dùng nếu không cung cấp giá trị cho các đối này, thì hàm sẽ dùng giá trị mặc định. Vd1: void delay ( int loops = 1000) { “Lệnh… }; Gọi: delay( ); // loops = 1000; delay(2000); // loops = 2000; Vd2: void test ( int a=100, int b=10; int c=1) { “Lệnh… }; test( ); // lấy các giá trị mặc định test(1,1,10); // a=1, b=1, c=10 test(10); // a=10, b,c mặc định test( ,10, ); // b=10, a,c mặc định test(20,10); // a=20, b=10, c mặc định 12. Hàm Inline :  Khi chương trình biên dịch nhìn thấy một lời gọi hàm, nó thường nhảy đến hàm đó. Tại vị trí cuối của hàm nó sẽ quay về lại lệnh theo sau lời gọi hàm.  Có thể lưu trong không gian bộ nhớ nhưng lại tốn thêm thời gian.  Đối với những hàm ngắn khoảng một đến hai dòng lệnh nên sử dụng inline  Một hàm inline được viết như một hàm bình thường trong file nguồn nhưng biên dịch vào trong mã inline thay vì vào trong một hàm. inline float converter(float dollars);  Hàm inline được trình bày như một thực thể riêng biệt trong file nguồn nhưng khi chương trình được biên dịch, thân của hàm thật sự được chèn vào trong chương trình bất cứ ở đâu một lời gọi hàm xảy ra. Cách viết hàm inline : Cách 1: inline[kiểu trả về] <tên hàm> (<đối số>); [kiểu trả về ] <tên hàm> (<đối số>)  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang { // các câu lệnh [return<biểu thức hoặc hằng>] } Cách 2: inline[kiểu trả về] <tên hàm> (<đối số>) { // các câu lệnh [return<biểu thức hoặc hằng>] } * Hàm Inline : những điểm cần lưu ý  Từ khoá inline phải xuất hiện trước các lời gọi hàm thì trình biên dịch mới biết cần xử lý hàm theo kiểu inline. Vd: #include<stdio.h> int cong(int a, int b); void int main() { int tong=cong(1,2); print(“%i\n”, tong); } inline int cong(int a, int b) // tính tổng hai số { return a+b; } Chương trình biên dịch sẽ thông báo lỗi vì ta đã khai báo và sử dụng cong()như một hàm thực nhưng lại định nghĩa inline.  Bởi vì mã của hàm inline phải được biên dịch trước trước khi nó được chen vào chương trình, cho nên ta luôn phải định nghĩa hàm inline trước khi tham khảo tới chúng.  Từ khoá inline thật sự chỉ là một gợi ý cho chương trình biên dịch chứ không phải là một lệnh bắt buộc. Thỉnh thoảng chương trình biên dịch (CTBD) sẽ bỏ qua inline và biên dịch hàm như một hàm bình thường.  Chẳng hạn nếu có quá nhiều hàm inline, CTBD sẽ không chấp nhận inline nữa vì thiếu bộ nhớ, hoặc khi các hàm inline quá dài. 13. Hàm chồng (Function Overloading) :  Sử dụng để định nghĩa một tập hợp những hàm được cho cùng tên và cơ bản cùng thực hiện những thao tác như nhau, nhưng sử dụng danh sách đối số khác nhau. void display(); // hàm display void display(const char*); void display(int one, int two); void display(float number); [...]... LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang BÀI T P CHƯƠNG 2 Bt1: Cho m t dãy i m trên m t ph ng, bi t to (x,y) c a t ng i m Vi t chương trình tìm m t c p i m xa nhau nh t Bt2: Cho bi t h tên, i m toán, lý, hoá c a N thí sinh In ra danh sách thí sinh trúng tuy n khi bi t i m chu n.Yêu c u in theo tr t t tăng d n c a t ng i m Bt3: Cho m t ma tr n s th c c p m × n; vi t chương trình tìm ph n t l n nh... nh t và ph n t nh nh t trên t ng hàng c a dãy s Bt4: Vi t chương trình hi n xâu ký t b t kỳ trên màn hình ho , t i v trí (x,y) và có màu m Bt5: Cho n hình ch nh t, bi t dài hai c nh c a t ng hình Vi t chương trình tính và in ra chu vi và di n tích c a các hình Bt6: Cho bi t h tên, tu i, m c lương và thu nh p c a N công nhân Vi t chương trình in ra danh sách công nhân bao g m: s th t , h tên, tu i, m... c a các l p cơ s khác nhau 8 Ph m vi l p (class scope) : Ph m vi: Là ph n chương trình mà trong ó ta có th truy xu t n m t tên bi n nào ó Hai ki u ph m vi thư ng dùng trong C: o Global: bi n ư c khai báo bên ngoài m t hàm, có ph m vi toàn c c, có th ư c truy xu t t b t kỳ ch nào trong chương trình LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang o Local: bi n ư c khai báo bên trong m t hàm ho c m t kh i l... d li u Các phương th c thư ng ư c khai báo là PUBLIC có th ư c s d ng b t c m i nơi trong chương trình D li u private không có s n bên ngoài l p i v i b t c chương trình nào D li u private c a nh ng l p khác thì n và không có s n trong ph m vi truy xu t c a nh ng hàm c a l p này LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang 11 Hàm b n (Friend Function) : Hàm : M t l i khai báo hàm cho: Tên c a hàm Ki...LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang Chương trình biên d ch s d ng ng c nh xác nh nh nghĩa nào c a m t hàm ư c ch ng ư c g i: tuỳ thu c vào s và ki u c a nh ng i s ư c cung c p trong l i g i Ch nh ng hàm mà cơ b n th c hi n cùng m... Chương trình biên d ch có th phân bi t nh ng hàm ch ng có cùng s lư ng i s nhưng khác ki u int square(int); float square(float); double square(double); Overloading v i s lư ng int int int int i s khác nhau square(int); //khai báo hàm square(int,int,int); asq = square(a) //g i hàm bsq = square(x,y,z) G i hàm ph i tương thích trên i s , ngư c l i, n u không có hàm nào có s tương thích ó thì chương trình. .. m t th c th khi ư c trình bày trong m t l p ư c g i là m t phương th c hay hàm thành ph n Trong m t l p polygon: "draw", "erase" và "move" là nh ng ví d c a nh ng phương th c–là m t ph n c a l p i tư ng là m t “h p en" nh n và g i thông i p H p en th c ch t ch a mã (dãy nh ng câu l nh c a máy tính) và d li u (thông tin mà nh ng câu l nh th c hi n trên nó) LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang... ng l i g i hàm trong chương trình Phương th c có th ư c xây d ng t bên ngoài ho c bên trong nh nghĩa l p Thông thư ng phương th c ng n vi t trong, phương th c dài vi t ngoài Giá tr tr v c a phương th c có th có ki u b t kỳ (chu n ho c ngoài chu n) Trong thân phương th c c a 1 l p có th s d ng: Các thu c tính c a l p Các phương th c c a l p Các hàm xây d ng trong chương trình Vd: class complex { private:... t c khi nào m t phương th c ư c g i, chương trình biên d ch s gán a ch c a i tư ng mà g i phương th c ó cho con tr this Con tr this có th ư c s d ng gi ng như b t c m t con tr nào khác n m t i tư ng Có th ư c s d ng truy xu t nh ng thành ph n c a i tư ng nó ch n b ng cách s d ng d u mũi tên this->age = 5; this->getdata(); class Person LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang { private: int age; public:... second obj2; obj1.display(); //không có hàm ch ng x y ra obj2.display(); } LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang Ph m vi ư c gi i h n nghiêm ng t i v i nh ng l p mà trong ó chúng ư c khai báo 14 Ch ng toán t (Operator Overloading) : Vi c dùng các phép toán thay cho 1 l i g i hàm rõ ràng làm chương trình ng n g n và sáng s a hơn nhi u Vd: th c hi n phép c ng 2 ma tr n ta vi t: C = A + B; r t g n . Giáo trình Lập trình nâng cao  LËp tr×nh chuyªn n©ng cao TrÇn Uyªn Trang Chương1 : GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG I. LỊCH SỬ PHÁT TRIỂN CỦA LẬP TRÌNH : 1. Lập. là nền tảng của lập trình có cấu trúc 4. Lập trình hướng đối tượng (Object Oriented Programming):  Lập trình hướng đối tượng (LTHĐT) là xây dựng trên nền tảng của lập trình có cấu trúc. đoạn chương trình: không có  Khi các khả năng của máy tính (MT) tăng: Lập trình phát triển từ đơn giản đến phức tạp hơn.  Các tiện nghi cần thiết cho việc sử dụng lại chương trình gốc ban

Ngày đăng: 29/07/2014, 03:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan