Đề tài Sinh viên trình bày điểm giống và khác nhau giữa C++, Java và C# - Nguyễn Công Huy
Có chung nhiều kiểu dữ liệu cơ bản như char, int, long. được định nghĩa sẵn. (tuy
nhiên chúng có thể khác nhau về độ dài)
- Các kiểudữ liệu đều được
quy về các con số, kể cả
kiểu boolean, char. Do đó
có sự tự chuyển đổi qua lại
giữa các kiểu dữ liệu.
- Kiểu int có độ dài là 32 bit
(trong VC++) hoặc 16 bit
(trong các trình biên dịch
khác); kiểu long có độ dài
32 bit; char có độ dài 8
bit .
- Có kiểu số nguyên không
dấu như unsigned int.
BÀI THU HOẠCH SỐ 1 : LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG LỚP K3C4 Đề bài : Sinh viên trình bày điểm giống và khác nhau giữa C++, Java và C#. Bài làm C++ C# Java Kiểu dữ liệu Có chung nhiều kiểu dữ liệu cơ bản như char, int, long... được định nghĩa sẵn. (tuy nhiên chúng có thể khác nhau về độ dài) - Các kiểu dữ liệu đều được quy về các con số, kể cả kiểu boolean, char. Do đó có sự tự chuyển đổi qua lại giữa các kiểu dữ liệu. - Kiểu int có độ dài là 32 bit (trong VC++) hoặc 16 bit (trong các trình biên dịch khác); kiểu long có độ dài 32 bit; char có độ dài 8 bit ... - Có kiểu số nguyên không dấu như unsigned int... - Các kiểu dữ liệu không phải số như char, boolean thì không ở dạng số như C++ - Kiểu int có độ dài 32 bit; kiểu long có độ dài 64 bit; char có độ dài 16 bit ... - Có kiểu số nguyên không dấu như unsigned int... - Các kiểu dữ liệu không phải số như char, boolean thì không ở dạng số như C++ - Kiểu int có độ dài 32 bit; long có độ dài 64 bit, char có độ dài 16 bit ... - Không có kiểu số nguyên không dấu. Kiểm tra kiểu, chuyển đổi kiểu dữ liệu. Tự động chuyển thành kiểu dữ liệu cấp cao hơn khi thực hiện phép tính giữa hai kiểu dư liệu khác nhau. Có 2 cách chuyển đổi kiểu, ngầm định và tường minh : + Kiểu ngầm định : Tự chuyển về cùng kiểu dữ liệu khi thực hiện phép toán hoặc phép gán. Nếu chuyển từ cao xuống thấp thì sẽ có nguy cơ sai số. + Kiểu tường minh : Việc chuyển đổi là do người lập trình thực hiện. VD : float y=3; int x=(int)y; Không cho phép chuyển đổi kiểu dữ liệu do người dùng định nghĩa. Cho phép chuyển đổi kiểu dữ liệu do người dùng định nghĩa. Không cho phép chuyển đổi kiểu dữ liệu do người dùng định nghĩa. Nhập xuất Cấu trúc lệnh nhập xuất khá giống nhau. - Nhập bằng lệnh cin>> >>...; Xuất bằng hàm cout <<...; - Nhập bằng lệnh System.Console.Read() để đọc số và System.Console.Readline() để đọc chuỗi. Hàm Read() và Readline() trả về giá trị nhập vào. Xuất ra bằng lênh System.Console.Write(<đối tượng xuất>); hoặc - Dùng lệnh System.out.println(“<n ội dung>”) Họ tên : Nguyễn Công Huy Lớp : K3C4 - Khác nhau về định dạng dữ liệu xuất ra màn hình. - Các nội dung nối với nhau bởi dấu <<; System.Console.Writeline(< đối tượng xuất>) - Khác nhau về định dạng dữ liệu xuất ra màn hình. - Các nội dung nối với nhau bởi dấu & - Khác nhau về định dạng dữ liệu xuất ra màn hình. - Các nội dung nối với nhau bởi dấu + Hằng Là những biến có giá trị không thay đổi được trong khi thực thi. Khai báo bằng câu lệnh #define <giá trị> Không cần khai báo kiểu trong C++ (sẽ tự nhận diện qua ). Ví dụ : #define hang 5 (int) #define hang 5l(long) #define hang 'a' (hang là kiểu char, nhưng thực ra là mang giá trị 97) Không có dấu ; ở cuối. Nhập bằng lệnh const <tên hằng> = ; Phải khai báo kiểu dữ liệu. C# còn có kiểu khai báo hằng tập hợp : enum { = <giá trị>, } Có dấu ; ở cuối. Dùng lệnh final = ; Phải có khai báo kiểu dữ liệu. Có dấu ; ở cuối. Chú thích Đều dùng hai cách chú thích là // cho một dòng và /**/ cho một khối. Chỉ có hai kiểu chú thích. Các kiểu suy rộng như /// hay /** đều được hiểu như // và /* Ngoài hai cách giống C++, C# còn sử dụng kiểu chú thích ///, cho nội dung chú thích chi tiết hơn khi sử dụng hàm, rất hữu ích để phòng khi quên tác dụng của hàm hoặc của đối số Ví dụ : /// Chú thích về công dụng hàm /// biến 1 để làm gì ? private void ham(int bien) {} Kiểu /***/ được hiểu như /// trong C#, gọi là create code report. Quản lý và cấp phát bộ nhớ. Bộ nhớ được cấp phát tự động khi khai báo biến theo cách thông thường. Cấp phát bộ nhớ động bằng lệnh new(); và giải phóng bộ nhớ bằng lệnh delete(); C# hạn chế dùng con trỏ (vì dùng con trỏ rất khó quản lý trong dự án lớn, dễ ảnh hưởng đến vùng nhớ của chương trình khác), do đó việc thực hiện cấp phát khi tạo đối tượng và giải phóng bộ nhớ khi đối tượng hết nhiệm vụ và số tham chiếu đến nó bằng 0 (thực hiện bởi bộ garbage Quản lý và cấp phát bộ nhớ trong java cũng có cách hoạt động tương tự như trong C#. colletion), thường được thực hiện tự động. Không gian tên. Đều chung một mục đích là tránh việc trùng tên khi có quá nhiều class giống nhau. Bởi vậy, ta phải đặt chúng vào những namespace riêng. Khai báo trong VC++ : namespace <tên namespace> { <Các thành phần trong namespace (biến, hàm…)> } -Gọi thành phần bên trong : ::<thành phần cần gọi> -Khai báo giống với VC# - Gọi thành phần bên trong : .<thành phần cần gọi> Để sử dụng được namespace thì phải sử dụng namespace: using - Cách khai báo khác về cú pháp Hàm trùng tên. Hàm trùng tên được sử dụng khi muốn đặt các hàm có tên giống nhau (thường là để làm những việc giống nhau) nhưng khác nhau về số lượng tham số, kiểu trả về…, kiểu trả về phụ thuộc vào tham số đầu vào. Nhận xét chung : Do C# là một ngôn ngữ lập trình được phát triển từ C++ và Java, còn Java lại là ngôn ngữ vay mượn nhiều cấu trúc, cú pháp từ C++ nên giữa chúng có nhiều điểm giống nhau. Chúng cũng cùng là ngôn ngữ lập trình hướng đối tượng. Chúng cũng hỗ trợ nhiều kiểu dữ liệu khác nhau. Tuy nhiên, do lịch sử phát triển khác nhau nên giữa chúng cũng có không ít điểm khác nhau, mỗi ngôn ngữ có một lợi thế riêng : – C++ là ngôn ngữ mạnh, can thiệp sâu vào hệ thống, thường dùng để lập trình những chương trình lớn, hệ điều hành, driver, game ..., nên đòi hỏi người lập trình phải có kiến thức cao hơn. – Java là một ngôn ngữ “Viết một lần, thực thi khắp nơi”, nó không biên dịch trước mà đến khi chạy mới thông dịch. Vì vậy, trên hệ điều hành cần cài môi trường thực thi (java runtime). Nhưng trước đó, java đã biên dịch mã nguồn thành bytecode nên tốc độ cũng được cải thiện hơn so với những ngôn ngữ thông dịch khác như Python, Perl, PHP, ... – C# được phát triển dựa trên C++ và Java. Nó phụ thuộc chặt chẽ vào .NET Framework, với những đặc trưng như : mọi dữ liệu cơ sở đều là đối tượng, được cấp phát và hủy bỏ bởi trình dọn rác Garbage-Collector (GC), và nhiều kiểu trừu tượng khác chẳng hạn như class, delegate, interface, exception, ...
File đính kèm:
- Đề tài Sinh viên trình bày điểm giống và khác nhau giữa C++, Java và C# - Nguyễn Công Huy.pdf