Đề 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

