Đề tài Trình bày điểm giống nhau, khác nhau giữa C++, C#, Java
Đề bài:
Trình bày điểm giống nhau , khác nhau giữa C++ , C#, Java ở những điểm
sau:
o Chú thích
o Hằng
o Kiểu dữ liệu
o Kiểm tra kiểu, đổi kiểu
o Không gian tên
o Quản lý và cấp phát bộ nhớ
o Hàm trùng tên
o Nhập xuất
Bài làm:
I. Chú thích:
Một chương trình cần phải có chú thích về các đoạn mã được viết. Các
đoạn chú thích này sẽ không được biên dịch cũng như không tham gia vào
chương trình. Mục đích chính của nó là làm cho chương trình viết được rõ
ràng dễ hiểu. Do vậy những dòng chú thích sẽ cần thiết cho C++, C# cũng
như Java
1 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG BÀI THU HOẠCH SỐ 1 Đề bài: Trình bày điểm giống nhau , khác nhau giữa C++ , C#, Java ở những điểm sau: o Chú thích o Hằng o Kiểu dữ liệu o Kiểm tra kiểu, đổi kiểu o Không gian tên o Quản lý và cấp phát bộ nhớ o Hàm trùng tên o Nhập xuất Bài làm: I. Chú thích: Một chương trình cần phải có chú thích về các đoạn mã được viết. Các đoạn chú thích này sẽ không được biên dịch cũng như không tham gia vào chương trình. Mục đích chính của nó là làm cho chương trình viết được rõ ràng dễ hiểu. Do vậy những dòng chú thích sẽ cần thiết cho C++, C# cũng như Java Giống nhau: Trong C++, C# , Java đều có hai kiểu chú thích cơ bản là chú thích trên một dòng và chú thích trên nhiếu dòng. +Chú thích trên một dòng: bắt đầu bằng ký tự “//”.Khi trình biên dịch gặp ký tự này thì sẽ bỏ qua dòng đó. Vd: // Đây là ghi chú trên một dòng +Chú thích trên nhiều dòng: bắt đầu khai báo bằng cặp kí tự “/*” trước chú thích và kết thúc chú thích bằng “/*”. Kiểu chú thích này có thể có 1 hay nhiều dòng Vd: /* Bắt đầu ghi chú trên nhiều dòng Vẫn còn trong ghi chú Kết thúc ghi chú bằng */ Khác nhau: 2 _Trong C++: chỉ có hai kiểu chú thích cơ bản như ơ trên. _Trong C#: ngoài hai kiểu trên còn hỗ trợ thêm kiểu thứ ba là kiểu chứa các ra tập tin XML khi biên dịch để tạo sưu liệu cho mã nguồn. Trong kiểu thứ 3 này cũng có 2 kiểu chú định dạng XML nhằm xuất thích là chú thích trên 1 dòng ( bắt đầu bằng “ /// ”) và chú thích trên nhiều dòng ( bắt đầu bằng “ /** ” và kết thúc khối chú thích bằng “ */ ” ) theo chuẩn XML. Vd: /// XML một dòng chú thích theo chuẩn XML /** XML nhiều dòng chú thích theo chuẩn XML */ _Trong Java: giống như trong C#, Java còn có thêm kiểu thứ 3 là chú thích trong tư liệu.Đây là loại chú thích đặc biệt được đặt vào những chỗ thích hợp trong chương trình để javadoc ( công cụ sinh tài liệu ) có thể đọc và sử dụng để tạo ra tư liệu dạng HTML cho chương trình. Phần chú thích trong tư liệu được bắt đầu bằng “/**” và kết thúc bằng “*/”. Chúng thường được đặt trước phần định nghĩa các lớp interface, phương thức và biến. II. Hằng: Giống nhau: Trong C++, C#, Java, hằng được định nghĩa như là một biểu thức mang một giá trị xác định. Khi lập trình ta phải đảm bảo giá trị của nó không được thay đổi trong suốt chương trình. Khác nhau: _ Trong C++: có các giá trị hằng như: hằng nguyên, hằng long, hằng dấu phẩy động, hằng kí tự , hằng xâu kí tự. ta có thể khai báo hằng như sau: const kiểu hằng = giá trị vd: const int MAXLINE=100 trong C++ còn có cách thứ hai để khai báo 1 hằng đó là sử dụng chỉ thị tiền xử lý define : #define hằng chuỗi_thể_hiện_giá_ trị _ Trong C#: Hằng được phân thành ba loại: giá trị hằng (literal),biểu tượng hằng(symbolic constants), kiểu liệt kê(enumerations). _Trong Java: Trong java cách duy nhất để tạo ra một hằng là khai báo thuộc tính là final. Vd: final int MAX_VALUE = 100; III. Kiểủ dữ liệu: Giống nhau: Cả C++, C# và Java đều chia thành 2 tập hợp kiểu dữ liệu chính là: kiểu xây dựng sẵn do ngôn ngữ lập trình cung cấp cho người lập trình và kiểu dữ liệu do người dùng tự định nghĩa 3 Khác nhau: C++ C# Java Kiểu dữ liệu cơ bản của C++ chia làm 3 nhóm : _kiểu char: một giá trị kiểu char chiếm 8 bit, biểu diễn kí tự thông qua bảng mã ASCII. Có 2 kiểu char: sighed char(có dấu) và unsighed char( không dấu) _ Kiểu nguyên: có 4 loại kiểu nguyên int, unsighed int, long, unsighed long, _Kiểu dấu phẩy động: có 3 loại giá trị dấu phẩy động là float, double, long double . Kiểu logic boolean:một biến kiểu logic boolean nhận 1 trong 2 giá trị true hoặc false. Nó được sử dụng để nhận giá trị trả về của phép toán logic C# phân tập hợp kiểu dữ liệu thành hai loại: Kiểu dữ liệu giá trị (value) và kiểu dữ liệu tham chiếu (reference). Đối với một kiểu dữ liệu giá trị thì sẽ được lưu giữ kích thước thật trong bộ nhớ đã cấp phát là stack. Trong khi đó thì địa chỉ của kiểu dữ liệu tham chiếu thì được lưu trong stack nhưng đối tượng thật sự thì lưu trong bộ nhớ heap. Kiểu dữ liệu nguyên thủy của Java được chia làm 3 nhóm : - Kiểu nguyên bao gồm kiểu số nguyên và kiểu kí tự. Kiểu số nguyên bao gồm byte, short, long ,int. biểu diễn cho các số nguyên. Kiểu kí tư được thể hiện bằng kiểu char. _ Kiểu dấu phẩy động bao gồm 2 kiểu float và double biểu diễn cho số thập phân. _ Kiểu boolean : có 2 giá trị true(đúng) và false(sai). Trong Java có 3 kiểu dữ liệu tham chiếu: _ Mảng (Array): Tập hợp các dữ liệu cùng kiểu. Ví dụ : tên sinh viên _ Lớp (Class): Tập hợp các biến và các phương thức.Ví dụ : lớp “Sinhviên” chứa toàn bộ các chi tiết của một sinh viên và các phương thức thực thi trên các chi tiết đó. _ Giao diện (Interface):Là một lớp 4 trừu tượng được tạo ra cho phép cài đặt đa thừa kế trong Java. Nhận xét: Một ngôn ngữ mạnh về kiểu dữ liệu là phải khai báo kiểu dữ liệu của mỗi đối tượng khi khởi tạo và trình biên dịch sẽ giúp cho người lập trình không bị lỗi khi chỉ cho phép một kiểu dữ liệu có thể được gán cho kiểu dữ liệu khác. Kiểu dữ liệu cua một đối tượng là tín hiệu để trình biên dịch nhận biết được kích thước của 1 đối tượng và khả năng của nó. IV. Kiểm tra kiểu, đổi kiểu: Giống nhau: Trong C++, C#, Java đều có chuyển kiểu tự động, chương trình thực hiện việc tự động chuyển kiểu khi biểu thức gồm các toán hạng khác kiểu : khi 2 toán hạng trong 1 phép toán có kiểu khác nhau thì kiểu thấp hơn sẽ được tự động nâng thành kiểu cao hơn. Kết quả chung là kiểu cao hơn. Chuyển kiểu tường minh: thực hiện chuyển kiểu theo yêu cầu của người sử dụng . Cú pháp: (kiểu) biểu thức hoặc kiểu(biểu_thức) vd: Trong C++ : float d = 3.5; int i = (int) d; Khi chuyển một biểu thức kiểu dữ liệu có miền giá trị lớn hơn sang 1 kiểu dữ liệu có miền giá trị nhỏ hơn, ta có thể bị mất thông tin V. Không gian tên: Nhằm tránh sự xung đột giữa việc sử dụng các thư viện khác nhau từ các nhà cung cấp, C++, C# đưa ra khái niệm namespace , namespace được xem như là tập hợp các lớp đối tượng, và cung cấp duy nhất các định danh. Ngoài thư viện namespace do ngôn ngữ lập trình cung cấp, ta có thể tạo riêng cho mình các namespace. C++, C# đưa ra từ khóa using đề khai báo sử dụng namespace. Vd: Trong C# , cú pháp: using Để tạo một namespace dùng cú pháp sau: namespace { …… } 5 Trong Java cũng có khái niệm package giống như namespace trong C++ va C#. VI. Quản lý và cấp phát bộ nhớ: _ Trong C++, mỗi đối tượng khi tồn tại hay hoạt động được hệ điều hành cấp phát 1 vùng nhớ để lưu trữ các giá trị của dữ liểu thành phần cũng như các liên kết tới phương thức của chúng. Khi tạo ra đối tượng , hệ điều hành sẽ gán luôn cho các dữ liệu thành phần này các giá trị khởi tạo tùy theo mong muốn của người lập trình bằng các lệnh khai báo đối tượng. Các quá trình gán dữ liệu này phải được thực hiện tự động trước khi người lập trình có thể tác động lên đối tượng. Trong C++ có thể khởi tạo tự động 1 đối tượng bằng cách cung cấp phương thức khởi tạo trong định nghĩa lớp. Ngược lại khi kết thúc vòng đời của 1 đối tượng cần phải giải phóng hợp lý tất cả bộ nhớ đã được cấp phát cho đối tượng. Mục đích chính là đảm bảo các đối tượng được giải phóng đúng đắn. Khi khai báo thông qua con trỏ, gặp lệnh new thì khởi tạo đối tượng , gặp lệnh delete thì giải phóng đối tượng. _Trong C# , những kiểu dữ liệu chuẩn như int, float, double … là những kiểu dữ liệu giá trị, và các biến được tạo ra từ các kiểu dữ liệu này được lưu trên stack. Tuy nhiên, với các đối tượng kiểu dữ liệu tham chiếu thì được tạo ra trên heap, sử dụng từ khóa new để tạo một đốit ượng: vd: ThoiGian t = new ThoiGian(); Sử dụng từ khóa delete để giải phóng 1 đối tượng. vd delete (t); VII. Hàm trùng tên: Trong thực tế nhiều lúc ta phải thực thi nhiều hàm có chức năng giống nhau. Ví dụ ta xây dựng 1 hàm để cộng 2 toán hạng, thế nhưng toán hạng có thể là số nguyên , số thực , số phức, phân số hay là xâu. Khi đó ta phải xây dựng các hàm thực hiện các chưc năng trên có cùng 1 tên. Trong C++, C#, Java có hỗ trợ điều này , các hàm đó được gọi là hàm trùng tên hay các hàm xếp chồng(chồng hàm). Trong C++,C#, Java: các hàm trùng tên phải khác nhau về danh sách tham số. Nghĩa là hoặc các hàm phải khác nhau về số lượng tham số, hoặc nếu có số lượng tham số bằng nhau thì phải khác nhau về kiểu tham số. Để phân biệt các hàm với nhau, ngoài tên hàm , chương trình dịch còn căn cứ vào danh sách các tham số, chính vì vậy,danh sách tham số còn được gọi là chữ kí của hàm. VIII. Nhập xuất: _Trong C++ , có hai phương thức nhập xuất là nhập xuất theo C chuẩn hoặc nhập xuất theo cách mới của C++. 6 +Nhập xuất trong C chuẩn: sử dụng thư viện stdio.h , xuất dữ liệu bằng printf: nó cho phép chuyển dạng, tạo khuôn dạng của đối số và đưa chúng ra màn hình . Nhập dữ liệu bằng hàm scanf , nó đọc thông tin từ chiều vào chuẩn. +Nhập xuất trong C++ : cách nhập xuất mới trong C++ sử dụng lớp. Dùng thư viện iostream.h, nhập dữ liệu bằng >> và xuất dữ liệu bằng <<. Xuất dữ liệu với cout: cout<< bieu_thuc; cout<<bieu_thuc1<<bieu_thuc2<<…<<bieu_thucn; Nhập dữ liệu với cin: cin>> bien; cin>>bien1>>….>bienn; + Ngoài ra trong C++ còn có hàm nhập xuất xâu và kí tự.
File đính kèm:
- Đề tài Trình bày điểm giống nhau, khác nhau giữa C++, C#, Java.pdf