+ C đưa ra các phép toán xử lí trực tiếp đối tượng hợp thành (xâu ký tự, danh sách, hoặc bảng ) như là đối tượng toàn vẹn. Chẳng hạn, không có các phép toán tương tự như trong Pascal để thao tác tren bảng xâu. C không xác định bất kỳ 1 phương tiện cấp phát bộ nhớ nào khác nbgoài cấp phát bộ nhớ tĩnh (Static), còn cấp phát bộ nhớ động theo nguyên tắc xếp chồng dành cho các biến cục bộ của hàm. Bản thân C không cấp phát cơ chế vào ra, không cóphương pháp truy nhập tệp. Tất cả các cơ chế này đều được thực hiện bằng những lời gọi hàm trong thư viện.
+ C đưa ra các kết câu điều kiện cơ bản cần cho các chương trình có cấu trúc như : nhóm tuần tự các câu lệnh, chọn quy định ( lệnh if ); chu trình với các phép kiểm tra kết thúc ở đầu (lệnh for, While.), hoặc ở cuối (lệnh do.While); và việc chọn 1 trong các trường hợp có thể (lệnh Switch ).
12 trang |
Chia sẻ: maiphuongdc | Lượt xem: 5427 | Lượt tải: 3
Bạn đang xem nội dung tài liệu Đề tài Tìm hiểu về các ngôn ngữ lập trình, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TÌM HIỂU VỀ CÁC NGÔN NGỮ LẬP TRÌNH
* *
*
I - TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH
- Với sự phát triển như vũ bão của hardware, software cũng phát triển rất nhiều...Và các chương trình công cụ phát triển ứng dụng cũng không lằm ngoài tầm ảnh hưởng đó, đặc biệt là sự phát triển các ngôn ngữ lập trình. Hiện nay có rất nhiều loại ngôn ngữ lập trình như Pascal, C, C++,Visual C++, Java, Visual Basic....chúng ta không biết là nên chọn ngôn ngữ nào. Đây là những tìm hiểu của tôi về các ngôn ngữ , ưu điểm và nhược điểm của một số ngôn ngữ thông dụng hiên nay .
- Ngôn ngữ lập trình là phương tiện để liên lạc giữa con người và máy tính . Tiến trình lập trình - sựliên lạc thông qua ngôn ngữ lập trình – la một hoạt động con người. Hiểu theo cách thông thường các đặc trưng tâm lí của một ngôn ngữ có một tác động quan trọng lên chất lượng của lien lạc. Khi sử dụng một ngôn ngữ để lập trình bao giờ cũng cần nghiên cứu và tìm hiểu về một số đặc diểm của ngôn ngữ đó là :
+ Tính gọn gàng của ngôn ngữ lập trình : Là một chỉ dẫn về khối lượng thông tin hướng chương trình mà trí nhớ con người phải ghi nhớ . Trong các thuộc tính đo tính gọn gàng có :
Mức độ ngôn ngữ hỗ trợ cho các kết cáu có cấu trúc và giải quyết các vấn đề khó khăn theo logic
Loại từ khoá và cách viết tăt có thể được dùng
Sự phong phú của các kiểu ữ liệu và đặc trưng mặc định
Số các phép toán logic và số học
Số các hàm có sẵn
+ Tính cục bộ :Là đặc trưng toàn thái của chương trình
+ Tính tuyến tính : Là nhận thức con người được thuận lợi khi gặp một dãy tuyến tính các thao tác logic.
- Từ đó người lập trình mới rút ra được nhận xét ngôn ngữ nào :
Dễ thiết kế để dịch chương trình
Trình dịch nào hiệu quả : Chạy nhanh ,yêu cầu bộ nhớ thấp
Khả chuyển chương trình gốc tốt :
+ Chương trình gốc có thể được chuyển từ bộ xủ lí này sang bộ xử lí khác và từ trình biên dịch nọ sang trình biên dịch kia với rất ít hoặc không phải sửa đổi gì.
+ Chương trình gốc vẫn không thay đổi ngay cả khi môi trường của nó thay đổi ( như việc cài đặt bản mới của hệ diều hành)
+ Chương trình gốc có thể tích hợp vào trong các bộ trình phần mềm khác nhau với ít hay không cần thay đổi gì vì các đặc trưng của ngôn ngữ lập trình .
Tính sẵn có của công cụ phát triển : Điều này có thể làm ngắn bớt thời gian cần để sinh ra chương trình gốcvà có thể cải thiện chất lượng của chương trình
Tính dễ bảo trì : Điều này có tầm quan trọng chủ chốt cho tất cả các nỗ lực phát triển phần mềm không tầm thường .
II – CÁC LỚP NGÔN NGỮ VÀ ĐẶC ĐIỂM MỘT SỐ NGÔN NGỮ THÔNG DỤNG
Thế hệ thứ 1 : Ngôn ngữ máy được viết bằng các lệnh mã nhị phân : 110001. Đăcl điểm của ngôn ngữ máy là rất đơn giản,nên việc sử dụng chúng là khó và tẻ nhạt. Thế mà một số công việc với ngôn ngữ máy thế hệ thứ nhất vẫn còn được tiếp tục đến ngày nay.
Thế hệ thứ 2 : Hợp ngữ, sự lai tạp, thay thế các lệnh ngôn ngữ máy bàng một ngôn ngữ gợi tả hơn mà ở đó mỗi lệnh được viết bằng một dòng. Ưu điển của nó là chương trình sau khi biên dịch rất nhỏ gọn , dễ xâm nhập vào hạ tầng hệ thống . VD mov AH, 12H
Thế hệ thứ 3 : Ngôn ngữ lập trình có cấu trúc ra đời đánh dấu bước phát triển vượt bậc về mặt lập trình, các lập trình viên không còn phải khó nhọc như khi lập trình hợp ngữ. Ở đây chương trình được module hoá dưới dạng các hàm, các thủ tục. Đại diện của thế hệ này là Pascal, Fortran, C....
+ Ngôn ngữ Pascal : Là một ngôn ngữ lập trình có cấu trúc cả về phương diện chương trình lẫn cấu trúc dữ liệu.
Ưu điểm :
1.Tạo cho người lập trình thói quen làm việc có phương pháp, có kế hoạch và có ngăn nắp.Nhờ vậy tránh dược mọi sự hiểu lầm giữa người và máy.
2. Nhờ có cấu trúc mà chương trình sáng sủa ,dữ liệu rành mạch, rõ ràng, kết quả tính toán tin cậy.
3.Chương trình dịch Pascal luôn được cải tiên, nâng cấp cho phù hợp với sự phát triển của phần cứng. Các hàm của nó không ngừng được bổ sung ngày càng phong phú và tiện ích
Nhược điểm :
1.Không có giao thức đồ hoạ mà chỉ là nền DOS
2. Phần hướng đối tượng không đươc mạnh .
+ Trong đó ngôn ngữ C : Là một ngôn ngữ thế hệ 3 rất mạnh, phải nói đúng hơn là C chưa phải là một ngôn ngữ thế hệ 3 toàn vẹn, nó là ngôn ngữ thế hệ 2,5 thì đúng hơn. Ngôn ngữ C rất mềm dẻo, và hơn nữa với sự xúc tích của các câu lệnh đã làm C rất được các nhà lập sử dụng làm ngôn ngữ phát triển ứng dụng của mình. Nhiều ngôn ngũ lập trình khác được viết bằng C. Sự ưa thích C đã đưa nó đến những phát triển kế tiếp: Visual C, C Builder...
- Ưu điểm :
1. Được mọi người sử dụng rất nhiều. Dễ tìm Help, thư viện
2. Lõi ngôn ngữ đơn giản, cùng với sự hỗ trợ chức năng trong suốt quá trình sử dụng thư viện
3. Là ngôn ngữ rất mạnh , rất mềm dẻo
4. Không hề bị ngăn cản khi truy cập tới bộ nhớ
5. Là một trong những ngôn ngữ chạy nhanh nhất
6 . Chương trình biên dịch có thể đứng độc lập
7. Tương tác tốt vớ hệ thống nên dược sử dụng nhiều trong việc lập trình tương tac với hệ thống
- Nhược điểm :
1.Khó học đặc biệt là phần về con trỏ.
2. Rất ít lưới bảo vệ .Nếu bạn chọn C để làm chương trình thì khi truy cập bộ nhớ sai thì sẽ làm hỏng kinh khủng đến hệ thống của bạn và nó sẽ không ngừng ,nó chỉ lôi kéo bạn làm cho chương trình biên dịch lỗi
3. Không hoàn toàn hướng đối tượng
4. Giao diện đồ hoạ không tốt vì nó hoạt động trên nền DOS
5. Mã có thể trở nên hỗn độn
+ Ngôn ngữ C++ : Là bước phát triển kế tiếp của ngôn ngữ C, ở đây thên một công cụ lập trình mới, thêm một phương pháp lập trình mới đó là lập trình hướng đối tượng OOP (Object Oriented Programming). Lập trình hướng đối tượng là ở đó chương trình được phân hoạch vào các mođule là các đối tượng có khả năng tự chứa dữ liệu (thuộc tính - Properties), tự giải quyết các vấn để liên quan (phương thức - Method). Bạn hiểu nôm na như sau: Một chiếc xe đạp có các thành phần là có 2 bánh, có bàn đạp, có xích ...Đây được gọi là các thuộc tính của nó. Xe đạp còn có khả năng đi, dừng, nổ xăm...Đây được gọi là các phương thức của nó...Hiện nay , trên các hệ điều hành thông dụng như Windows, Linux/Unix..ngôn ngữ C++ được coi là ngôn ngữ chuẩn cho các nhà phát triển phần mềm.
Ưu điểm : 1.Sử dụng ở mọi nơi
2. Mang đầy đủ sự mềm dẻo của C
3. Là ngôn ngữ lập trình hướng đối tượng rất mạnh . Kĩ thuật hướng đối tượng bao gồm: hỗ trợ ở mức cao và làm cho ta có cảm giác tốt nhưng không có tính ép buộc.
4. Dễ mang chuyển đến nền ,máy khác (nếu các nguyên tắc của C++ được tôn trọng )
5. C++ là ngôn ngữ có ít từ khoá, tạo thuận lợi cho việc học và sử dụng
6. C++ là ngôn ngữ có cấu trúc module,nghĩa là cho phép sử dụng nhiều lần các chương trình con dưới dạng các hàm
7. Có nhiều thư viện sẵn có cho việc thêm các chức năng.
- Nhược điểm : 1. Khá khó học.Bạn sẽ không bao giờ ngừng học cái mới về nó (đây cũng là ưu điểm)
2.Chương trình chạy chậm hơn chương trình trong C
3. Tương tác ngược với C nên làm hạn chế khả năng của nó
Thế hệ thứ 4 : Là các ngôn ngữ trực quan Visual Basic, Visual C++, C Builder, Denphi. Là các ngôn ngữ hướng đối tượng mà ở đó một phần modul chương trình được hỗ trợ lập trình ở mức trực quan, trực tiếp (Ví dụ như phần giao diện). Nói đúng hơn đây là các ngôn ngữ hướng sự kiện.
+ Ngôn ngữ Visual Basic : Là ngôn ngữ rất dễ dùng của nó tương tự như giả mã
Ưu điểm :
1. Dễ học
2. Giao diện tốt.
3. Nhanh cho việc thực thi ứng dụng và thuật toán
4. Gần đây đã hoàn thành việc thêm phần hỗ trợ về hướng đối tượng cùng với việc hoàn thiện về .Net
- Nhược điểm :
1. Không mềm dẻo bằng các ngôn ngữ khác.Không có khả năng làm được nhiều thứ .
2. Chạy chậm hơn C/C++.
3. Yếu về xử lí và bắt lỗi kém
4.Chỉ là một sản phẩm Microsoft và căn bản của Windowns.
+ Ngôn ngữ Delphi : Bắt nguồn từ Object-Pascal, phiên bản 1.0 ra đời trong những năm 1991-1992 (còn gọi là Delphi 16) chỉ dùng được cho Win3.X, nghĩa là 16 bit. Phiên bản 2.0 (Delphi 32) ra đời năm 1994 dùng cho Win95/NT nghĩa là 32 bit thực sự. Hiện nay có bản Delphi 8.0. Delphi có thể đwowcj xem là một môi trường phát triển phần mềm dựa kết cấu, hướng đối tượng và trực quan.
Ưu điểm :
Là ngôn ngữ hướng đối tượng
Có thể mở rộng các kết cấu sẵn có nếu cần, có nghĩa là tạo được kế thừa của các kết cấu, còn Basic thì không làm được.
Liên kết dễ dàng với mọi loại cơ sở dữ liệu khác như Dbase, Orcle…
Trực quan, có thư viện liên kết động.
Nhược điểm
VB có thể hiện thị mã trong khi ở trong chế độ Debug còn Delphi thì không
Khi biên dịch thì chậm hơn là trong C và C++.
Không có sự chồng toán tử
+ Visual C++ : Là ngôn ngữ lập trình dựa trên nền tảng cơ bản của C++ đó là lập trình hướng đối tượng
Ưu điểm : Giao diện đồ hoạ tốt
Là ngôn ngữ lập trình hướng đối tượng
Có thể tác dụng sâu vào hệ thống
Nhược điểm : Là ngôn ngữ tương đối khó học
Chạy chậm hơn C
Java : Đây là ngôn ngữ được phát triển từ C/C++ do James ở công ty Sun Microsytem xây dựng len vào năm 1990. Lúc đầu lấy tên là Oak, sau này được ứng dụng vào nhiều lĩnh vực mới đổi tên lag JAVA. Được đánh giá là ngôn ngữ lập trình mạng rất mạnh. Java được xây dựng chủ yếu trong bộ công cụ phát triển Java (Java Development Kit – JDK) như là thư viện chuẩn, trong đó chứa các ttrình biên dịch, thông dịch, giúp đỡ, soạn thảo tài liệu…Đó chính là cáu nền phát triển Java. Với sự phát triển của Java như ngày nay, các nhà phát triển phần mềm đã xây dựng Java nhiều nhánh mới như Java – thư tín (JavaMail), Java - Viễn thông (JavaTAPI), ….JDK của chúng ta lại là môi trường bao trùm hệ thống Java. Hiện nay bản JDK 1.2.1 đã ra đời và là bản mới nhất.
Ưu điểm :
Hướng đối tượng triệt để.
Là ngôn ngữ độc lập, chạy trên mọi hệ điều hành có cài máy ảo Java.
Nó là Free ,có thể Download chương trình SDK
Rất dễ học nếu như bạn đã biết C hoặc C++
Có khẳ năng tự động cung cáp bộ nhớ quản lí
Có khả năng tuỳ biến giao diện theo sự lựa chọn của người dùng...
Nhược điểm :
Tốc độ khá chậm bởi vì bản chất biên dịch của nó là trên hệ thống máy ảo
Khó khăn cho biên dịch với ứng dụng độc lập.
Bộ nhớ con trỏ không cho phép
Nhiều người không thích với sự bắt ép của chương trình hướng đối tượng
So sánh giữa VB, Delphi, C : Điểm cao nhất là 10
Ràng buộc trong PT
Thành phần cơ bản PT
Thư viện sẵn có
CT sẵn có
Sự thực thi
Dễ học
Tính tương thích
LT viên chuyên nghiệp
Sự hài lòng về nghề nghiệp
Sự thăng tiến
VB
2
7
2
9
6
9
1
4
2
6
Delphi
8
10
4
3
8
7
3
5
7
4
C++
9
1
8
6
9
2
8
3
5
6
III – NGÔN NGỮ LẬP TRÌNH C/C++
C/C++ là ngôn ngữ lập trình rất mạnh .Nó là nền tảng để viết nên nhiều ngôn ngữ như JAVA (ngôn ngữ lập trình mạng khá là mạnh và phổ biến hiện nay), Visual C++ (là ngôn ngữ lập trình dựoc sử dụng rất rộng rãi trong quản trị cơ sơ dữ liệu, điện tử, điều khiển do lường, cơ học và quản lí kinh tế ), ngoài ra có rất nhiều hệ điều hành đã được viết bằng ngôn ngữ C/C++ như : Unix , Window, sau này là Linux được phát triển từ Unix.
Tôi đã chọn ngôn ngữ lập trình C/C++ là ngôn ngữ nền tảng cho việc học lập trình . Vì :
Tôi đã được tiếp cận với C/C++ .
Khi ta nắm chắc được C/C++, sẽ tạo điều kiện thuận lợi cho ta có thể học được các ngôn ngữ lập trình khác mạnh hơn như JAVA, VC++…
Có rất nhiều người sẽ thắc mắc là tại sao lại phải chọn cả C/C++ mà không chỉ chọn một trong 2 ngôn ngữ là C hoặc C++ thôi ? Như chúng ta đã biêt tuy C là ngôn ngữ mạnh và nó rất mềm dẻo nhưng nhược diểm lớn nhất của nó là không có hướng đối tượng . Còn ngôn ngữ C++ có đầy đủ nhung nó là một ngôn ngữ khá là khó học nên trước khi muốn làm quen với C++ thì ta nên học C trước để có thể học một cách dễ dàng hơn ( vì C++ được phát triển lên từ C). Trước khi nghiên cứu kĩ về C/C++ ta sẽ tìm hiểu sơ qua về lập trình hướng đối tượng.
.Lập trình hướng đối tượng (LTHĐT)
Đối tượng = Dữ liệu + phương thức
Đặc điểm chung : Có 8 đặc diểm nổi bật
Tập trung vào dữ liệu thay cho các hàm
Chương trình được chia thành các đối tượng
Các cấu trúc dữ liệu được thiết kế sao cho đặc tả đựơc đối tượng .
Các hàm thao tác trên các vùng dữ liệu của dối tượng được g ắm với cấu trúc dữ liệu đó.
Dữ liệu được đóng gói lại, được che giấu và không cho phép các hàm ngoại lai truy nhập tự do
Các đối tượng tác động và trao đổi thông tin với nhau qua các hàm.
Có thể dễ dàng bổ sung dữ liệu và các hàm mới vào các đối tượng nào đó khi cần thiết.
Chương trình được thiết kế theo cách tiếp cận từ dưới lên.
Khái niệm trung tâm của LTHĐT là lớp (class). Có thể xem lớp là tập hợp các đối tượng có CSDL và phương thức giống nhau.
Tính kế thừa : Cho phép ta định nghĩa lớp cũ trên cơ sở lớp cũ đã tồn tại, tất nhiên có bổ sung những phương thức hay thành phần mới.
Tính đa hình : xuất hiên khi có khái niệm kế thừa. Có nghĩa là 1 lớp kế thừa cùng 1 lúc từ nhiều lớp khác nhau
Các ưu điểm LTHĐT :
Loại bỏ những đoạn mã chương trình lặp lại trong quá trình mô tả các lớp và có thể mở rộng khả năng sử dụng của các lớp đã xxay dựng màg cần phải viết lại.
Quá trình thiết kế và lập trình sẽ được thực hiện theo quy trình nhất định chứ không phải dựa vào kinh nghiệm và kỹ thuật .Như vạy sẽ rút ngắn đươc thời gian xây dựng và tăng năng suất lao động.
nguyên lý đóng gói hay che giấu thông tin giúp cho chương trình an toàn không bị thay dổi bởi những đoạn chương trình khác.
Có thể xây dựng được ánh xạ các đối tượng của bài toán vào đối tượng chương trình.
Dễ nâng cấp và dễ mở rộng.
Có thể quản lí được độ phức tạp của các sản phẩm phần mềm.
Những ứng dụng chủ yếu của LTHDĐT
Các hệ thống làm việc theo thời gian thực.
Các mô hình hoá hoặc mô phỏng các quá trình.
Các hệ CSDLhướng đối tượng.
Các siêu văn bản và các đa phương tiện.
Các hệ thống trí tụe nhân tạo và các hệ thống chuyên gia.
Các hệ thống song song và mạng nơ-rôn.
Các hệ tự dộng hoá văn phòng hay trợ giúp quyết định
Các hệ CAD/CAM.
Bây giờ chúng ta sẽ tìm hiểu kĩ hơn về ngôn ngữ lập trình C và C++.
1.Ngôn ngữ lập trình C
- C có nguồn gốc sâu xa từ ngôn ngữ BCPL do Martun Richarts đề xuất năm 1967 và từ ngôn ngữ B do Ken Thompson phát triển từ ngôn ngữ BCPL vào năm 1970.
- Ban đầu C được thiết kế để lập trình trong môi trường của hệ điều hành Unix nhằm mục đích hỗ trợ cho các công việc lập trình phức tạp .Nhưng về sau với những nhu cầu phát triển ngày càng tăng của công việc lập trình ,C nhanh chóng hội nhập vào thế giới lập trình để rồi từ đó được các nhà lập trính sử dụng một cách rộng rãi và được các hãng tập trung vào phát triển các Tool để hoàn thiện.
a. Đặc điểm
+ Tính cô đọng (compact) : C chỉ có 32 từ khoá (như: auto, int, register..) chuẩn và 40 toán tử chuẩn (như : =, >, <, …) , nhưng hầu hết đều được biểu diễn băng chuỗin những kí tự ngắn gọn
+ Tính cấu trúc (Structured) : C có tập hợp những chỉ thị của lập trình có cấu trúc như lựa chọn, lặp. Từ đó các chương trình viết bằng C được tổ chức rõ rang và dễ hiểu.
+ Tính tương thích (Compatible) : C có bộ tièn xử lý và 1 thư viện chuẩn vô cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác , các chương trình viết bằng C vẫn hoàn toàn tương thích.
+ Tính linh động (flexible) : C là ngôn ngữ rất uyển chuyển về ngữ pháp, chấp nhận được nhiều cách thể hiện, có thể thu gọn kích thước của các mã lệnh làm cho chương trình chạy nhanh hơn.
+ Biên dịch (Compile) : C cho phép biên dịch nhiều tập tin chương trình riêng rẽ thành các tập tin đối tượng và liên kết các đối tượng đó lại với nhau thành 1 chương trình khả thi thống nhất .
b.Các tính chất đặc trưng
+ C đưa ra các phép toán xử lí trực tiếp đối tượng hợp thành (xâu ký tự, danh sách, hoặc bảng ) như là đối tượng toàn vẹn. Chẳng hạn, không có các phép toán tương tự như trong Pascal để thao tác tren bảng xâu. C không xác định bất kỳ 1 phương tiện cấp phát bộ nhớ nào khác nbgoài cấp phát bộ nhớ tĩnh (Static), còn cấp phát bộ nhớ động theo nguyên tắc xếp chồng dành cho các biến cục bộ của hàm. Bản thân C không cấp phát cơ chế vào ra, không cóphương pháp truy nhập tệp. Tất cả các cơ chế này đều được thực hiện bằng những lời gọi hàm trong thư viện.
+ C đưa ra các kết câu điều kiện cơ bản cần cho các chương trình có cấu trúc như : nhóm tuần tự các câu lệnh, chọn quy định ( lệnh if ); chu trình với các phép kiểm tra kết thúc ở đầu (lệnh for, While..), hoặc ở cuối (lệnh do..While); và việc chọn 1 trong các trường hợp có thể (lệnh Switch ).
+ C cung cấp con trỏ và khả năng định địa chỉ số học. Các đối của hàm được truyền băng cách sao chép giá trị của đối và hàm được gọi không thể nào thay đổi được giá trị của đối hiện tại. Khi muốn “gọi theo tham trỏ” bạn phải truyền con trỏ 1 cách tường minh và hàm có thể thay đổi đối tượng mà con trỏ chỉ tới. Các tên bảng được truyền như vị trí của gốc bảng cho nên các dối bảng thực tế dược gọi theo dãn trỏ
Ví dụ : Cách khai báo con trỏ trong C :
Type *p_name ; // type : là kiểu con trỏ (int, float,..)
//p_name: Tên con trỏ
Cách khai báo cấu trúc (Struct) trong C
Struct sinhvien {
Char hoten[25];
Int masv; };
+ C cho phép hàm được gọi đệ quy và các biến cục bộ của hàm sẽ được “tự động “ sinh ra hoặc được tạo mới với mỗi lần gọi mới. Các định nghĩ hàm được lồng nhau nhưng các biến có thể được khai báo theo kiểu cấu trúc khối. Các hàm của chương trình C có thể dịch tách nhau. Các biến có thể là biến trong hàm hoặc là biến ngoài hàm. Hàm chr biết được các biến ngoài trong cùng 1 tệp gốc, hoặc biến tổng thể “extern”.Ngoài ra các biến tự động có thể đặt trong các thanh ghi để tăng hiệu quả (việc khai báo thanh ghi chỉ là 1 hướng dãn cho chương trình dịch và không liên quan gì đến thanh ghi đặc biệt).
- Cách khai “extern”:
Tệp A có chứa khai báo biến toàn cục:
int x, y ;
char ch ;
Tệp B muốn sử dụng các biến toàn cục ở tệp A cần khai báo :
extern int x, y ;
extern char ch ;
Cách khai báo biến có kiểu :register/auto/static
Register/auto/static type (int, float,..) x ;
c.Môi trường làm việc
Hiện nay thì môi trường làm việc của C hầu như là người ta làm việc trên môi trường của C++. Vì C++ bao trùm lên cả C. Và như thế nó sẽ được sự hỗ trợ của C++ và dần hoàn thiện hơn.
d.Cấu trúc 1 chương trình C :
Cấu trúc chương trình
Minh hoạ
Gọi các tập tin tiền xử lí
( Preprocessor directives )
#include
#define N 100
Định nghĩa kiểu dữ liệu
typedefs
Khai báo prototype
Tên hàn và các tham số
Hàm chính
main() { Khai báo biến, hằng ;
Các lệnh
Gọi các hàm tự định nghĩa (nếu có)
}
Định nghĩa các hàm tự định nghĩa (nếu có)
Tên hàm { Khai báo biến , hằng;
Các lệnh;
Gọi các hàm khác(nếu có);
}
Ví dụ: Chương trình in ra câu chào : “Chao ban !”
Gọi các tập tin tiền xử lí
( Preprocessor directives )
#include
#include
Khai báo prototype
void hienthongbao (char *thongbao);
Hàm chính
main() { clrscr();
hienthongbao ( “Chao ban ! “);
getch(); return (0);
}
Định nghĩa các hàm tự định nghĩa (nếu có)
void hienthongbao { printf(“%s”,Tong bao);
}
2.Ngôn ngữ C++
Vào năm 1983, giáo sư Bjarne Stroustrap bắt đầu nghiên cứu và phát triển ngôn ngữ C để tạo thành 1 phiên bản mới. Phiên bản này có tên là C++. C++ thực hiện được tất cả các chức năng của C, bao trùm lên cả C. Ngoài ra C++ còn hoàn thiện C và đặc biệt là đã bổ sung thêm phần hướng đối tượng.
Các đặc điểm mở rộng trong C++ :
Những mở rộng trong C++ so với C mà không liên quan đến kỹ thuật hướng đối tượng :
Khả năng viết các dòng chú thích mới.
Khả năng khai thác linh hoạt hơn.
Khả năng định nghĩa lại các hàm : các hàm cùng tên có thể thực hiện theo những thao tác khá nhau. Các lời gọi hàm sẽ dùng kiểu và số tham số để xác định đúng hàm nào cần thực hiện.
Có thêm các toán tử định nghĩa bộ nhớ động mới : new và delete
Cách khai báo : type *p ;
Chỉ thị : p = new type ;
Cách dùng Delete : delete p;
Khả Năng định nghĩa các hàm inline để tăng tốc độ thực hiện chương trình.
Khai báo : inline type tên_hàm (type biến );
Ví dụ : inline double norme ( double vec[3]);
Trong C dùng macro như vậy chương trình sẽ chậm hơn.
Tạo các biến tham chiếu đến các biến khác.
Khai báo : type x, &t = x;
Ví dụ : int x, &t = x;
LTHĐT trong C++ :
C++ chứa đựng khái niệm lớp (class) :
Định nghĩa :
class tên_lớp {
//khai báo các thành phần dữ liệu (thuộc tính)
//khai báo các phương thức
};
//Định nghĩa (xây dựng) các phương thức
Thuộc tính của lớp có thể là các biến, mang, con trốc kiểu chuẩn(int, float, char,..)hay kiểu ngoài đã được định nghĩa.
C++ cho phép ta định nghĩa các hàm thiết lập (constructor) cho 1 lớp. Hàm thiết lập là 1 phương thức đặc biệt được gọi đến tại thời điểm 1 đối tượng của lớp được tạo ra.Hàm thiết lập có nhiệm vụ khởi tạo 1 đối tượng : cấp phát bộ nhớ, gán các giá trị cho các thành phần dữ liệu cũng như việc chuẩn bị chỗ cho các đói tượng mới. Một lớp có thể có 1 hay nhiều hàm thiết lập. Để xác định hàm thiết lập nào cần gọi đến, chương trình biên dịch có thể có 1 hàm huỷ bỏ (destructor), 1phương thức đặc biệt được gọi đến khi đối tượng giải phóng khỏi bộ nhớ.
Ví dụ : class thisinh
{
private:
int sts;
TSINH *ts;
public:
thisinh() //hàm tạo
{
sts=0;
ts=NULL;
}
// Hàm trong lớp
void nhap();
void sapxep();
void ghitep(char *ttep);
};
Lớp trong C++ thực chất là kiểu dữ kiệu do người sử dụng định nghĩa .Khả năng định nghĩa chồng toán tử cho phép định nghĩa các phép toán trên 1 lớp giống như các kiểu dữ liệu chuẩn của C. Ví dụ ta có thể định nghĩa 1 lớp số phức và các phép toán cộng, trừ, nhân, chia.
V í d ụ : class DT
{
private:
double *a;//tro toi cac he so cua da thuc
int n;//bac cua da thuc
public:
friend ostream& operator<<(ostream& os,const DT &d);
friend istream& operator>>(istream& is,DT &d);
DT operator-(); //tim doi cua da thuc
DT operator+(const DT &d1);//cong hai da thuc
DT operator-(DT &d1);//tru hai da thuc
DT operator*(const DT &d1);//nhan hai da thuc
DT operator/(const DT &d1);//chia hai da thuc
//cho biet bac va he so cua da thuc
double operator[](int i) {
if(i<0)
return double(n);
else
return a[i];
}
};
Cũng giống như C, C++ có khả năng chuyển đổi kiểu. Không những thế, C++ cho phép mở rộng sự chuyển đổi này sang các kiểu do người dùng tự định nghĩa (các lớp). Ví dụ ta có thể chuyển đổi từ kiểu chuẩn int của C sang kiểu số phức mà ta định nghĩa .
C++ cho phép thực hiện đa kế thừa các lớp đã xây dựng : Có nghĩa là 1 lớp kế thừa cùng 1 lúc từ nhiều lớp khác nhau. Từ phiên bản 2.0 trở đi C++ đã cho phép đa kế thừa.
C++ cung cấp những thao tác vào/ra mới dựa trên cơ sở khái niêm luồng dữ liệu (flow) sự ưu việt của thao tác nay ỏ chỗ:
Sử dụng đơn giản
Kích thước bộ nhớ được rut ngắn.
Khả năng áp dụng trên các kiểu do người dùng định nghĩa băng cách sử dụng cơ chế định nghĩa chồng toán tử.
Ngoài ra C++ còn chứa khái niêm khuôn hình (Template) :
Khuôn hình hàm :
Khai báo : template T tên_hàm(T a, T b, ..)
Trong đó : template :xác định đó là 1 khuôn hình với tham số kiểu T
Khuôn hình lớp :
Khai báo : template class point { T x,y;
public :
point (T abs=0,T ord=0) {
X=abs;y=ord; }
void display();
};
//các định nghĩa hàm bên ngoài khuôn hình lớp
template void d::display(){
count<<”Toa do : “<<x<<” ”<<y<<”\n”; }
Môi trường C++
Hệ soạn thảo : Để soạn thảo và sửa chữa mã nguồn
Chương trình dịch : làm nhiệm vụ chuyển chương trình nguồn trong C++ thành chương trình viết bằng ngôn ngữ máy tính điện tử có thể hiểu được.
Các tệp bao gồm : Là những tệp chứa các định nghĩa và các cấu trúc riêng biệt được chương trình sử dụng trong những trường hợp nhất định.
Thư viện chương trình : Là những tệp chứa những chương trình đã được dịch trước, dùng để thực hiện những chức năng nhất định, như nhập hay xuất dữ liệu ra màn hình, xuất dữ liệu ra máy in, tính giá trị các hàm toán học, …Lập trình viên có thể sử dụng nhưng chương trình đó để phát triển các chương trình của mình.
Chương trình liên kết : Thực hiện việc liên kết tất cả các thành phần khác nhau của chương trình C++ (ví dụ như các tệp trong thư viên ) để tạo ra chương trình khả thi.
Cấu trúc 1 chương trình C++ (cũng giống như cấu trúc chương trình C)
Các bước khai triển 1 chương trình C++.
Soạn thảo chương trình nguồn (Source Program) : Kết quả là tạo ra 1 tệp nguồn ghi trên đĩa cứng có dạng *.CPP hay có thể mở rộng khác.
Dịch chương trình (Complie ) : Kết quả là tạo ra 1 chương trình trong mã máy tương đương với chương trình nguồn. Tệp chứa chương trình trong mã máy được gọi là tệp đích có dạng *.Obj.
Liên kết (Link) để tạo ra tệp chương trình khả thi (tệp có thể thực hiện được) có dạng *.EXE hay *.COM.
Thực hiện chương trình.
IV- Kết luận
Như vậy qua việc nghiên cứu về các ngôn ngữ lập trình chung ta đx thấy được phần nào về đặc điểm của một số ngôn ngữ lập trình thông dụng hiện nay. Qua đó cũng thấy được ưư diểm và nhược điểm của chúng. Như vậy chúng ta đã phàn nào không còn thấy hoang mang trước việc :Chọn ngôn ngữ nào để lập trình? Không biết nên học ngôn ngữ nào?.
Tuy nhiên chúng ta nên hiểu một điều là : Chúng ta không nên coi trọng một ngôn ngữ nào cả. Học ngôn ngữ nào thì cũng thế , nhưng miễn là làm sao ta phải có tư duy lập trìnhvà chỉ cần nắm chắc đựơc một ngôn ngữ ( dù là ngôn ngữ nào) như thế khi cần thiết ta có thể chuyển sang học ngôn ngữ khá một cách dễ dàng
Hết
Các file đính kèm theo tài liệu này:
- 24811.doc