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

