Đề tài Khác nhau giữa C++, C#, Java
Có thêm dạng chú thích /// cho XML
Các kiểu dữ liệu ña dạng hơn: Byte,
Sbyte, Short, Ushort, Int, Uint,
Long, Ulong, Float, Double, Decimal,
String, Char, Bool
Mảng là ñối tượng (object),có thuộc
tính và phương thức
Không có sự tự chuyển ñổi qua lại
giữa bool và các kiểu khác
kiểu long có ñộ dài 64 bit
ode unsafe Hàm nạp chồng (overload) ñược khai báo 1 cách tường minh bằng từ khóa "override" ðể ñọc một ký tự văn bản từ của sổ console, Chúng ta dùng phương thức Console.Read(), giá trị trả về sẽ Khi bạn tạo các ñối tượng Java, JRE sẽ tự ñộng cấp phát không gian bộ nhớ cho các ñối tượng này từ heap, ñây là vùng bộ nhớ lớn có sẵn ñể cấp trong máy tính của bạn. Quá trình chạy thi hành sẽ theo vết của những ñối tượng này giùm bạn. Khi chương trình của bạn không sử dụng các ñối tượng ñó nữa thì JRE sẽ vứt bỏ chúng. Bạn không phải ñể tâm ñến chúng nữa. Con trỏ trong Java là ẩn ( có 1 pointer mechanism ñặc biệt, ñó chính là reference) java không cho phép các phép tính (arithmetic) với con trỏ Tương tự c++ Không giống như các ngôn ngữ khác ví như pascal, C/C++.. chúng có thể trực tiếp lấy giá trị bàn phím , trong C++ vẫn cú thể dựng các hàm printf và scanf Ngoài ra trong C++ cũng dựng toán tử xuất: cout << biểu thức << ... << biểu thức ; ñể ñưa giá trị các biểu thức ra màn hỡnh, dựng toỏn tử nhập: cin >> biến >> ... >> biến ñể nhập các giá trị số (nguyên thực) từ bàn phím và gán cho các biến. ðể nhập một dẫy không quá n ký tự và chứa vào mảng h (kiểu char) có thể dùng phương thức cin.get như sau: cin.get(h,n); Toán tử nhập cin >> sẽ ñể lại ký tự chuyển dãy ‘\n’ trong bộ ñệm, ký tự này có thể làm trôi phương thức cin.get. ðể khắc phục tỡnh trạng trên cần dựng phương thức cin.ignore ñể bỏ qua một ký tự chuyển dãy như sau: cin.ignore(1); ðể sử dụng các toán tử và phương thức nói trên cần khai báo tệp tiêu ñề: là kiểu int hoặc kiểu string tuỳ ý . Và chúng ta cũng có hai phương thức dùng ñể viết ra chuổi ký tự như sau Console.Write() - Viết một giá trị ra của sổ window Console.WriteLine() - tương tự trên nhưng sẽ tự ñộng xuống hàng khi kết thúc lệnh Thí dụ sau sẽ cho giá trị nhập kiểu int và giá trị in ra kiểu chuổi int x= Console.Read(); Console.WriteLine((Char)x); Giá trị trả về kiểu string: string s = Console.ReadLine(); Console.WriteLine(s); Giả sử có ñoạn mã như sau: int i = 10; int j = 20; Console.WriteLine(“{0} plus {1} equals {2}”, I, j, i+j); Kết quả hiển thị như sau: 10 plus 20 equals 30 Int i = 940; Int j = 73; Console.WriteLine(“{0,4}\n+{1.4}\n --- \n {2,4}”, I, j, i+j); Kết quả: 940 + 73 ---- 1013 từ bàn phím sau khi khai báo một biến. Java khó tính hơn hẳn! Nó cần một biến thuộc lớp Scanner và biến này phụ trách việc lấy giá trị mà người dùng nhập vào từ bàn phím ðể lấy giá trị mà người sử dụng nhập từ bàn phím, ta làm theo các bước sau: 1. Khai báo biến thuộc lớp Scanner. Lớp Scanner chỉ ñược hỗ trợ từ phiên bản Java 1.5 và nằm trong gói java.util. Trước khi làm việc này chương trình cần khai báo thư viện như sau: import java.util.*; /*dấu * thể hiện lấy tất cả các lớp có trong gói util có sẵn của java*/ // Khai báo một biến Scanner có tên là “nhap”. Scanner nhap = new Scanner(System.in); 2. Lấy giá trị nhập vào: System.out.print(”What is your name? “); /* In ra màn hình một câu hỏi tên. Nếu bạn viết println() thì sẽ tự ñộng xuống dòng. /* Khai báo và gán giá trị nhập từ bàn phím cho một biến kiểu String có tên name.*/ String name = nhap.nextLine(); ðiểm giống nhau giữa C++, C#, Java + Chú thích: Thường là ñoạn văn bản. Dùng ñể giải thích một vài khía cạnh của chương trình. Trình biên dịch bỏ qua hoàn toàn các chú thích trong chương trình. Tuy nhiên các chú thích này có ý nghĩa và ñôi khi rất quan trọng ñối với người ñọc và người phát triễn phần mềm ðều có 2 dạng //Chú thích một hàng ñơn /* Chú thích Nhiều hàng… */ Có thể có các dòng chú thích ngay trong chương trình Vd: printf(//Chu thich “dsadasdsa”); + Hằng: Một hằng (constant) là một biến nhưng giá trị không thể thay ñổi ñược suốt thời gian thi hành chương trình. ðôi lúc ta cũng cần có những giá trị bao giờ cũng bất biến. Khai báo: Const = ; Hằng bắt buộc phải ñược gán giá trị lúc khai báo.Một khi ñã ñược khởi gán thì không thể viết ñè chồng lên. Trị của hằng phải có thể ñược tính toán vào lúc biên dịch, Do ñó không thể gán một hằng từ một trị của một biến Hằng làm cho chương trình ñọc dễ dàng hơn, bằng cách thay thế những con số vô cảm bởi những tên mang ñầy ý nghĩa hơn. Hằng làm cho dễ sữa chương trình hơn. Hằng làm cho việc tránh lỗi dễ dàng hơn, nếu bạn gán một trị khác cho một hằng ñâu ñó trong chương trình sau khi bạn ñã gán giá trị cho hằng, thì trình biên dịch sẽ thông báo sai lầm. + Kiểu dữ liệu: có 2 loại *Kiểu dữ liệu cơ bản (dựng sẵn) *Kiểu dữ liệu do người dùng ñịnh nghĩa Trong một phạm vị hoạt ñộng không thể có hai biến cùng tên Khai báo: ; Hoặc ,,…; Có các kiểu dữ liệu cơ bản: boolean, char, byte, short, int, long, float, và double. Tất cả các kiểu này ñều có ñộ lớn mặc ñịnh + Kiểm tra kiểu, ñổi kiểu: Có thể chuyển kiểu dữ liệu thong qua cơ chế chuyển ñổi tường minh hay ngầm ñịnh + Quản lý bộ nhớ Con trỏ và cấp phát bộ nhớ ñộng trong C là một tính năng mạnh mẽ trong lập trình. Nó giúp người lập trình có thể tác ñộng sâu vào bộ nhớ của hệ thống ñiều này ñặc biệt hữu ích khi lập trình những phần mềm hệ thống. Song với lập trình ứng dụng con trỏ cũng gây ra không ích rắc rỗi và phiền phức với người lập trình. Bởi việc thao tác và quản lý với một số lượng lớn con trỏ trong chương trình ñòi hỏi người lập trình phải rất cẩn thận, có kinh nghiệm. Bằng không sự kiểm soát lỏng lẻo có thể gây ra những lỗi nghiêm trọng và việc gỡ lỗi cho nó không hề ñơn giản. Chính vì thế trong các ngôn ngữ bậc cao ñi ra ñời sau C như Java và C#... chủ yếu dùng ñể lập trình ứng dụng ñã hạn chế hoặc loại bỏ con trỏ Nếu bạn không viết hàm khởi tạo nào trong 1 lớp của thì 1 hàm khởi tạo mặc ñịnh tự ñộng tạo ra (trong assembly) cho bạn. Hàm khởi tạo mặc ñịnh khởi tạo những giá trị mặc ñịnh cho các biến thành viên Hàm trùng tên: Có thể sử dụng nhiều hàm cùng tên ñể dễ dàng trong việc sử dụng Không gian tên: Namespaces cho phép chúng ta gộp một nhóm các lớp, các ñối tượng toàn cục và các hàm dưới một cái tên. Nói một cách cụ thể hơn, chúng dùng ñể chia phạm vi toàn cụ thành những phạm vi nhỏ hơn với tên gọi namespaces. Khuông mẫu ñể sử dụng namespaces là: namespace identifier { namespace-body } Trong ñó identifier là bất kì một tên hợp lệ nào và namespace-body là một tập hợp những lớp, ñối tượng và hàm ñược gộp trong namespace. Ví dụ: namespace general { int a, b; } Trong trường hợp này, a và b là những biến bình thường ñược tích hợp bên trong namespace general. ðể có thể truy xuất vào các biến này từ bên ngoài namespace chúng ta phải sử dụng toán tử ::. Ví dụ, ñể truy xuất vào các biến ñó chúng ta viết: general::a general::b Tóm lại: namespace chỉ ñơn giản là phân biệt method của lớp này với method của lớp khác mà chúng có cùng tên. VD: 2 nhà ỏ gần nhau. Có 2 người con cùng là Tuấn. Thì lúc chúng ta gọi Tuấn thì không biết Tuấn nào. Vậy chúng ta phải gọi Tuấn của ông A hay Tuấn của ông B. Thì namespace nó cũng tương tự như vậy. Trong 2 lớp có cùng tên hành vi. Khi chúng ta gọi hành vi ñó thì hành vi ñó là của namespace nào. Namespace ñơn giản là vậy thôi. Tóm lượt & Nhận xét Tóm lượt - C++ là sự nới rộng của C, nó cung cấp thêm một số khả năng ñể cho phép lập trình hướng ñối tượng. Ứng dụng ñược viết theo hướng ñối tượng là 1 tập các ñối tượng tương tác lẫn nhau, C++ cung cấp phát biểu "class" ñể người lập trình ñặc tả các ñối tượng cấu thành ứng dụng. Tuy nhiên, mức ñộ hỗ trợ hướng ñối tượng của C++ còn yếu, không trong sáng và dễ làm người lập trình mắc lỗi trong quá trình viết code. Tóm lại, C++ thích hợp cho những người ñã quen dùng C hay những người chỉ biết lập trình hướng ñối tượng hay những người muốn kết hợp 2 trường phái lập trình cấu trúc và hướng ñối tượng. - C# do Microsoft ñề ra là ngôn ngữ hướng ñối tượng rất thuần nhất và trong sáng, nó hiện thực hầu hết các tính chất tốt của mô hình hướng ñối tượng giống như Java. Ngoài ra C# sẽ ñược dịch ra mã máy ñể chạy trên nền .Net, nền này cung cấp rất nhiều ñối tượng mạnh, phong phú và ña dạng ñể giải quyết nhiều vấn ñề phổ biến trong lập trình, nhờ ñó nếu bạn lập trình bằng C#, bạn tốn rất ít chi phí, thời gian, ứng dụng kết quả chạy rất tin cậy, một phần do tính chất hướng ñối tượng của C#, phần khác vì ứng dụng dùng chủ yếu các ñối tượng ñã ñược viết sẵn bởi Microsoft hay hãng thứ ba nào ñó. Tuy nhiên C# hiện chỉ chạy trên nền .Net mà nền .Net hiện chỉ chạy trên HðH Windows (có thể trong tương lai nó sẽ chạy trên Linux và MacOS). Ngôn ngữ Java có cú pháp rất giống với ngôn ngữ C/C++ (là một ngôn ngữ rất mạnh ñược dùng phổ biến hiện nay), tuy nhiên nó ñã ñược thay ñổi khá nhiều ñể ñáp ứng khả năng ñộc lập với hệ ñiều hành. Nền tảng của ngôn ngữ Java là các class. Các class ñóng vai trò như những ñối tượng, người lập trình khi xây dựng ứng dụng sẽ sử dụng một số class chuẩn của hệ thống, ñồng thời có thể tự mình xây dựng class khác ñáp ứng yêu cầu công việc. Nhận xét C++ là chỉ mới là ngôn ngữ hỗ trợ hướng ñối tượng, còn Java và C# ñã hoàn toàn hướng ñối tượng. Trong java/ C# không thể can thiệp và vùng nhớ trực tiếp như C++, và java và c# ñều có hệ thống dọn những vùng nhớ không dùng ñến nữa, kiểm soát vùng nhớ chặt chẽ hơn C++, ít bị lỗi về vấn ñề bộ nhớ hơn C++. Trong khi kiểu dữ liệu của C++ ñã tiến bộ hơn với C (trong C, các kiểu ñều là số), ñã quản lý chặt các kiểu, ñịnh dạng kiểu rõ ràng hơn, nhận dạng kiểu chính xác hơn, thì trong Java/ C# chặt chẽ hơn nữa về kiểu dữ liệu, boolen không thể là số mà chỉ có thể là true hoặc false, có hổ trợ thêm unicode, kiểu char hỗ trợ 16 byte ñể có thể chứa ñc mọi loại ngôn ngữ Về phần nhập xuất dữ liệu, Java có vẽ rắc rối hơn so với C++ và C#
File đính kèm:
- Đề tài Khác nhau giữa C++, C#, Java.pdf