TRẦN CÔNG NGHỊ
TỰ ĐỘNG HÓA
TÍNH TOÁN, THIẾT
KẾ VÀ ĐÓNG TÀU
ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HỒ CHÍ MINH
7 - 2009
Trang để trống
Trần công nghị
TỰ ĐỘNG HÓA
TÍNH TOÁN, THIẾT
KẾ VÀ ĐÓNG TÀU
ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HỒ CHÍ MINH
Mục lục
Mở đầu
Chương 1: Thiết kế tàu
1.1 Các giai đoạn thiết kế
1. 2 Các phương pháp thiết kế tàu
1.3 Thiết kế tối ưu tàu thủy
1.4 Ngôn ngữ lập trình và tự động hóa thiết kế
5
5
7
7
13
14
Chương 2: Tính nổi và tính ổn định tàu
2.1 Phương pháp số dùng trong tự động hóa tính toán tính nổi tàu.
2.1.1. Nội suy Lagrange
2.1.2 Tích phân một lớp
2.1.3 Đa thức Lagrange
2.1.4 Đa thức Tchebyshev
2.2 Tính nổi tàu thủy
2.2.1 Kích thước chính và các hệ số thân tàu
2.2.2 Tỷ lệ Bonjean
2.2.3 Tính thể tích phân chìm và cá đại lượng liên quan thể tích
2.2.4 Tính các đường thủy tĩnh trên máy cá nhân
2.2.5 Biểu đồ Firsov
2.3 Ổn định tàu.
2.3.1 Ổn định ngang ban đầu.
2.3.2 Ổn định tại góc nghiêng lớn.
2.3.3 Đồ thị ổn định.
2.4
Thuật toán xác lập họ đường Cross Curves (pantokaren)
2.5
Giới thiệu chương trình tính tính nổi tàu thủy
29
29
29
31
34
37
38
38
42
42
44
47
48
49
50
51
52
63
Chương 3: Sức cản vỏ tàu
3.1 Phương pháp tính áp dụng tính sức cản và chân vịt
3.2 Sức cản vỏ tàu
3.3 Các phương pháp kinh nghiệm tính sức cản vỏ tàu
64
64
70
74
Chương 4: Thiết kế chân vịt tàu thủy
4.1 Đặc tính hình học chân vịt
4.2 Vẽ chân vịt
4.3 Đặc tính thủy động lực
4.4 Đồ thị thiết kế chân vịt
4.5 Tính hệ số dòng theo, hệ số lực hút
4.6 Xâm thực chân vịt
4.7 Độ bền cánh chân vịt
4.8 Thiết kế chân vịt bước cố định
4.9 Lập chương trình thiết kế chân vịt tàu
4.10 Vẽ chân vịt trên máy PC
87
87
89
90
94
98
102
107
110
118
127
2
Chương 5: Qui hoạch tuyến tính và qui hoạch phi tuyến
5.1 Qui hoạch tuyến tính.
5.2 Qui hoạch phi tuyến.
5.2.1 Hàm một biến.
5.2.2 Hàm nhiều biến
5.2.3 Xác định min/max hàm một biến
5.2.4 Phương pháp sử dụng gradient
5.2.5 Phương pháp tìm trực tiếp (không qua giai đoạn tính gradient).
5.2.6 Phương pháp dùng hàm phạt penalty
133
133
140
140
141
142
146
150
155
Chương 6: Thiết kế tối ưu tàu thủy
6.1 Đánh giá các chỉ tiêu kinh tế – kỹ thuật của tàu
6.2 Sơ đồ tính hiệu quả kinh tế
6.3 Tự động thiết kế tàu vận tải
6.4 Thiết kế tàu đánh cá
164
164
166
167
181
Chương 7: Spline và vẽ đường hình tàu
7.1 Spline
7.2 Vẽ đường hình tàu
7.3 Tự động hóa quá trình vẽ tàu
7.4 Sử dụng hàm spline vẽ đường hình tàu thủy
189
189
195
200
232
Tài liệu tham khảo
Phụ lục
233
3
Mở đầu
“Tự động hóa tính toán, thiết kế và đóng tàu” trình bày cách tính toán, thuật toán phục
vụ việc lập chương trình tính tính năng tàu thủy, tính di chuyển, thiết bị đẩy tàu và tự động hóa vẽ
tàu. Sau mười năm sử dụng sách cho chuyên đề này những người viết chỉnh, sửa, viết lại, có bổ
sung những phần lần xuất bản đầu chưa kịp đưa vào. Sửa chữa và bổ sung lần này nhằm làm cho
tài liệu phù hợp đề cương giảng dạy và học tập tại trường Đại học Giao thông Vận tải Tp Hồ Chí
Minh.
Hy vọng rằng sách có ích cho những người đang theo học đóng tàu và công trình nổi cũng
như các đồng nghiệp đang làm việc trong cùng lĩnh vực.
Thành phố Hồ Chí Minh tháng 6 năm 2009.
Người viết
“Mở đầu” lần in thứ nhất
“Tự động hóa tính toán, thiết kế và đóng tàu” bao gồm hướng dẫn tính toán, chương
trình tính phục vụ những môn học tàu thủy tại trường đại học. Những đề tài trong tài liệu này:
Thiết kế tàu, Tính nổi và tính ổn định, Sức cản vỏ tàu và thiết bị đẩy tàu, Qui hoạch tuyến tính,
qui hoạch phi tuyến và ứng dụng của lý thuyết này vào thiết kế tối ưu tàu thủy, Spline và ứng
dụng trong vẽ đường hình, khai triển vỏ tàu.
Tài liệu được bố trí theo cách tiện lợi cho người đọc. Mở đầu mỗi chương bạn đọc có điều
kiện ôn lại những hiểu biết cần thiết về các phương pháp tính liên quan đến nội dung của chương,
có điều kiện làm quen chương trình tính viết bằng ngôn ngữ C áp dụng trong tính toán. Các
chương trình nhỏ này còn được dùng cho những vấn đề liên quan với ngành tàu. Nội dung mỗi
chương chỉ gồm những kiến thức đã được truyền đạt trong trường đại học chuyên ngành. Trên cơ
sở những vấn đề đang được trình bày bạn đọc tìm hiểu thêm giải thuật xử lý những bài toán cụ thể
đang đặt ra và cách hoàn thiện một chương trình máy tính dựa vào giải thuật vừa có.
Tài liệu có thể giúp ích cho sinh viên khoa đóng tàu, kỹ sư làm việc trong lĩnh vực đóng
sửa tàu, thiết kế, nghiên cứu tàu cùng đông đảo bạn đọc quan tâm đến tàu thủy khi tính toán tính
năng, như tính nổi, ổn định, tính sức cản, chọn máy phù hợp, thiết kế mới, lập phương án đóng
mới, lập phương án sửa chữa tàu vv...
Trong quá trình biên soạn tài liệu những người làm công tác chuẩn bị nhận được sự giúp đỡ
chân tình và thiết thực của ban giám hiệu phân hiệu Đại học Hàng hải, phân khoa đóng tàu, bạn
cùng nghề và những bạn bè xa, gần. Những đóng góp quí giá về nội dung, về biên soạn và hiệu
chỉnh tài liệu, hiệu chỉnh các bản in thử vv… đã làm cho tài liệu có nội dung phù hợp hơn, tránh
được nhiều sai sót. Xin chân thành cám ơn về sự đóng góp quí giá trên. Người viết căn cứ sự giúp
đỡ, chỉ dẫn trên đã cố gắng hoàn chỉnh tài liệu kịp ra mắt bạn đọc, tuy nhiên vì khả năng có hạn
chắc rằng trong tài liệu vẫn còn những sai sót khó tránh. Rất mong bạn đọc gần, xa góp thêm ý
kiến nhằm làm cho tài liệu ngày càng hoàn thiện. Thư, bài góp ý, xây dưng xin gửi về phân hiệu Đại
học Hàng Hải, thành phố Hồ Chí Minh.
Thành phố Hồ Chí Minh tháng 12 năm 2000.
4
Chương 1
THIẾT KẾ TÀU
1.1 CÁC GIAI ĐOẠN THIẾT KẾ
Thông thường, theo truyền thống, thiết kế cần trải qua các giai đoạn:
(1) Xây dựng yêu cầu và nhiệm vụ thiết kế
Công việc mở đầu này thường do người chủ phương tiện đặt ra, người thiết kế phải thực hiện
đúng và đủ. Trong nhiệm vụ thiết kế cần thiết phải đề cập đến công dụng, loại hình, khu vực hoạt
động của tàu. Những tính năng kỹ thuật chủ yếu của tàu tương lai được trình bày rõ trong yêu cầu
thiết kế. Trong điều kiện Việt nam những vấn đề được đề cập trong nhiệm vụ thư có thể như sau:
- hạn chế về kích thước chính,
- trọng tải, dung tích chở dùng cho tàu vận tải, sức kéo dùng cho tàu kéo, khả năng khai thác
dùng cho tàu cá, các tính năng sử dụng đặc trưng cho loại tàu cụ thể,
- máy chính: kiểu máy, hạn chế về công suất, vòng quay vv...
- vận tốc tàu cần thiết,
- khả năng chuyến đi biển,
- tính ổn định, tính chịu sóng gió, tính chống chìm,
- vật liệu làm vỏ tàu,
- thiết bị sinh hoạt,
- thiết bị trên tàu (thiết bị boong): thiết bị lái, neo, buộc, phương tiện cứu sinh, phương tiện an
toàn, cần cẩu,
- thiết bị buồng máy,
- hệ thống ống,
- hệ thống thông tin,
- hệ thống điện,
- các thiết bị chuyên ngành và thiết bị đặc biệt.
(2) Thiết kế sơ bộ
Trong giai đoạn này thực hiện các công việc gắn liền với xác định đặc tính tàu tương lai.
Những nhóm việc chính có thể là:
a/ Xác định lượng chiếm nước của tàu thoả mãn phương trình cân bằng D = γV, trong đó lực
nổi tính theo định luật Archimedes đúng bằng trọng lượng toàn tàu.
b/ Xác định sơ bộ kích thước chính và các hệ số đầy thân tàu. Kích thước chính thân tàu được
hiểu trước tiên là chiều dài, chiều rộng, chiều cao, chiều chìm trung bình của tàu. Từ kích thước
chính có thể nhận thấy chiều cao mạn khô cũng đã được đề cập trong giai đoạn này.
c/ Trên cơ sở kích thước chính, các hệ số đầy, bắt đầu triển khai việc xác định hình dáng hay
là dạng vỏ tàu, lập bản vẽ đường hình tàu.
d/ Với tàu tự chạy, bắt đầu tính sức cản vỏ tàu, công suất máy cần thiết để tàu có thể hoạt
động đạt yêu cầu đề ra.
e/ Xác định lần nữa lượng chiếm nước và tính ổn định tàu, trên cơ sở đường hình vừa tạo ra.
f/ Kiểm tra tính nổi của tàu trên cơ sở đường hình mới tạo.
g/ Chuẩn bị bố trí chung, có tính sơ bộ.
h/ Tính trọng lượng, trọng tâm tàu trên cơ sở bố trí chung và các bản vẽ kết cấu ban đầu.
5
(3) Thiết kế kỹ thuật
Trong phần thiết kế kỹ thuật chỉ sử dụng kết quả của một trong rất nhiều phương án từ thiết
kế sơ bộ, và kết quả ấy đã được thừa nhận. Trên cơ sở đường hình tàu đã có, bố trí chung đã ổn định
cho đến thời điểm đang kể, thiết bị máy móc đã được chọn, các bộ phận thiết kế tiến hành các công
việc hợp tác, thiết kế chi tiết hơn, bố trí chi tiết và cụ thể hơn, mối liên hệ giữa các bộ phận trên tàu
trở thành hiện thực hơn. Trong giai đoạn này các sơ đồ lắp ráp được hoàn thiện, các thiết kế kết cấu
được triển khai đến chi tiết. Từ các bản vẽ chi tiết đã có thể tiến hành tính toán giá thành sản phẩm
một cách chi tiết.
Trong giai đoạn thiết kế kỹ thuật, các Viện thiết kế có thể tiến hành phân việc theo nhóm.
Các nhóm công tác có thể theo dạng sau.
- Bộ phận chuyên về vỏ tàu.
+ Khai triển tôn vỏ, chia tôn,
+ Tính các tính năng tàu,
+ Bố trí toàn tàu,
+ Triển khai thiết kế kết cấu các chi tiết trên vỏ tàu,
+ Bố trí các hệ thống ống toàn tàu,
+ Tính toán lại trọng lượng vật tư, thiết bị và trọng tâm của chúng,
- Bộ phận cơ khí- động lực tàu.
+ tính toán cân bằng năng lượng trên tàu,
+ Bố trí buồng máy,
+ Bố trí các hệ thống ống liên quan máy chính, máy phụ,
+ Bố trí hệ thống điều khiển máy chính, máy phụ, tự động hoá buồng máy vv...
- Bộ phận điện - điện tử.
+ Cân bằng năng lượng điện trên tàu,
+ Bố trí hệ thống điện trên tàu,
+ Bố trí hệ thống nhận điện từ bờ,
+ Thiết bị an toàn điện,
+ Bố trí hệ thống máy móc thiết bị điện tử đảm bảo an toàn hàng hải, thông tin, liên lạc.
Nếu coi quá trình thiết kế là sự hoàn thiện dần các phép tính nhằm thỏa mãn yêu cầu đề ra,
quá trình này có thể minh họa dưới dạng sự tiến hóa theo đường xoắn ốc. Mọi phép tính, phép thử
được tiến hành riêng nhau, theo những qui luật vật lý nhất định. Kết quả của phép tính này làm tiền
đề cho phép tính tiếp theo, sau đó kết quả của phép tính tiếp theo này làm tiền đề cho phép tính sau
nó. Sau mỗi vòng tiến hóa, kết quả của cùng một phép tính sẽ đổi thay so với giá trị ban đầu, và kết
quả lần thứ hai (sau đó là thứ ba, thứ tư...) lại làm chức năng dữ liệu đầu vào cho phép tính kế tiếp.
Chu trình trên lặp lại nhiều lần, theo đường xoắn ốc, cho đến khi kết quả cuối cùng thỏa mãn các
điều kiện đặt ra, với sai sót trong phạm vi cho phép.
Trên hình xoắn ốc minh hoạ cách làm này.
6
yeâu caàu cuûa chuû taøu
maïn khoâ
tính eâm
vaän toác
maùy chính
söùc chôû,
dung tích
tính oån ñònh,
tính choáng chìm
Hình 1.1
1.2 CÁC PHƯƠNG PHÁP THIẾT KẾ TÀU
Ngày nay có thể chia các phương pháp thiết kế thành những nhóm sau:
1.2.1
THIẾT KẾ TỔNG HỢP
Phương pháp dựa trên cơ sở thống kê. Trong phương pháp này tiến hành xác định các kích
thước chính của tàu, tỉ lệ kích thước, các hệ số, các đặc trưng hình học khác trên cơ sở các công thức
kinh nghiệm, rút ra từ thực tế. Các yêu cầu và mọi đòi hỏi về ổn định, an toàn vv... của tàu được thử
sau mỗi lần tính.
Phương pháp phương trình vi phân cho phép thay đổi một số đặc trưng trong khi chọn các
thông số của tàu thiết kế. Trong một phạm vi nhất định phương pháp phương trình vi phân tương
đồng với cách làm của phép biến phân trong thiết kế.
Phương pháp thiết kế không dựa hoàn toàn vào tầu mẫu cũng được coi là một phương
pháp tổng hợp. Trong cách làm này người ta dựa vào nguyên tắc đi dần đến mục tiêu bằng cách phép
tính gần đúng dần. Một trong những mô hình toán dùng để tính có thể như sau:
Bước 1. Xác định lượng chiếm nước theo một trong các cách thông dụng.
Xác định các kích thước chính của tàu và các hệ số đầy.
Bước 2. Xác định sức cản vỏ tàu, xác định công suất máy chính, thiết kế máy đẩy tàu, xác
định vận tốc tàu,
Xác định khối lượng thân tàu,
Điều chỉnh lượng chiếm nước của tàu.
Bước 3. Xác định chính xác lượng chiếm nước, công suất máy chính, chọn các máy phụ, thiết
bị tàu.
Bước 4. Kiểm tra tính ổn định, chiều cao mạn khô, dung tích hầm hàng, kiểm tra tính chống
chìm, khả năng đi biển và nếu có đòi hỏi, kiểm tra độ bền chung toàn tàu.
Bước 5. Hiệu chỉnh toàn bộ thông số đã tính, xác định thông số ở dạng cuối cùng.
Cách làm khác có thể là:
Bước 1. Xác định lượng chiếm nước.
Bước 2. Xác định sức cản vỏ tàu, xác định công suất máy chính, thiết kế máy đẩy tàu, xác
định vận tốc tàu,
Xác định khối lượng thân tàu,
Điều chỉnh lượng chiếm nước của tàu.
Tính chiều dài L, hệ số đầy thể tích.
Bước 3. Tính H/T
Bước 4. Tính B/T theo tiêu chuẩn ổn định
7
Bước 5. Tính các đại lượng khác trên cơ sở D,L, CB (δ), H/T, B/T...
Dưới đây sẽ giới thiệu tiếp một phương án thiết kế tàu vận tải biển do Watson đề nghị.
1. Xác định sức chở của tàu: P = D - Ws
2. Xác định lượng chiếm nước: D = CB.L.B.T
Trong đó CB xác định từ các phương pháp thông dụng được trình bày tiếp.
CB = f( L, v) , v- vận tốc tàu.
4. B = f(L)
5. H = f(L)
6. T = f(L)
Các kích thước chính từ 4. đến 6. phụ thuộc vào các hạn chế sau:
4a. L/B, phụ thuộc vào công suất máy,
5a. L/H, đảm bảo độ bền tàu,
6a. L/T
7. B/H hoặc là H = f(B), đảm bảo ổn định tàu,
8. T/B hoặc là T = f(B), ảnh hưởng đến chọn công suất máy tàu,
9. T/H, hoặc là T = f(H), đảm bảo chiều cao mạn khô.
Ví dụ giải theo các phương pháp kinh điển.
Các phương pháp tính kinh điển được áp dụng xử lý bài toán thiết kế thường gặp. Cần thiết
kế tàu vận tải hàng khô, sức chở 13000dwt, khai thác với vận tốc 18 HL/h. Tàu được trang bị máy
diesel làm máy chính.
Sơ bộ xác định lượng chiếm nước.
Từ lý thuyết thiết kế tàu, cách xác định D nhanh nhất là sử dụng hệ số hiệu năng sức chở, tính
bằng tỷ lệ giữa sức chở và lượng chiếm nước ηDW.
D=
DWT
η DW
Dữ liệu cho η chọn bằng công tác thống kê. Với tàu vận tải thường gặp hệ số này khoảng 0,7.
D=
13000
= 18600t
0,7
Chiều dài thiết kế của tàu vận tải tùy thuộc vào lượng chiếm nước và vận tốc khai thác. Một
trong những công thức có độ tin cậy cao là công thức của Posdiunine, dùng cho tàu vận tải thế hệ
những năm sáu mươi, bảy mươi:
⎛ vs
L = c⎜⎜
⎝ 2 + vs
⎞
⎟⎟
⎠
2
3
D , [ m]
Hệ số c trong trường hợp cụ thể bằng 7,16. Chiều dài thiết kế tính từ công thức sẽ là L =
153,5m (504’).
Vận tốc tương đối 1 theo cách dùng tại UK và USA:
1
Corresponding speed, theo caùch duøng töø taïi UK vaø USA
8
vs
L
=
18
504
≈ 0,8.
Hệ số đầy thân tàu CB = 1,06 -
1 vs
= 0,66.
2 L
Tỷ lệ L/B = 2.L1/4 = 7.
Tỷ lệ B/T được chọn nhằm đảm bảo các yêu cầu về ổn định tàu, B/T = 2,3.
Tỷ lệ H/T nhằm đảm bảo đòi hỏi về chiều cao mạn khô tàu: H/T = 1,42.
Trên cơ sở các kích thước chính tiến hành xác định trọng lượng và trọng tâm tàu theo các
công thức kinh nghiệm.
Trọng lượng tàu:
D = WHF + WM + WDW + WR
Trong đó: WHF – trọng lượng thân tàu và trang thiết bị tàu, WM – trọng lượng buồng máy,
WDW – sức chở (hàng hóa), WR – trọng lượng dự trữ.
γ.L.B.T.CB = WHF + WM + WDW + WR
Tiếp tục thay thế các biểu thức tính trọng lượng vế phải bằng các công thức kinh nghiệm có
thể viết:
γ.L.B.T.CB =.L.B.H.pHF + BHP.pM + (WDW + WR)
Từ đó:
γ.CB.(L/B).B.B.(T/B).B = (L/B).B.B.(T/B).(H/T).B.pHF + BHP.pM + (WDW + WR).
Thay thế ký hiệu L/B = l; B/T = b; H/T = h vào phương trình trên đây, có thể viết:
γ.CB.l.(l /B).B3 = l. (l /B).h.B3. pHF + BHP.pM + (WDW + WR).
Công suất máy chính trong giai đoạn thiết kế sơ bộ có thể thay bằng công thức liên quan đến
D và Vs.
D 2 / 3Vs3
γ.CB. l.(l /b).B3 = l. (l /b).h.B3. pHF +
.pM + (WDW + WR)
c
Thay biểu thức của D bằng biểu thức từ vế phải, sẽ nhận được:
3
γ.CB. l.(l /b).B
(γ .CB.(1 / b).B )
= l. (l /b).h.B . pHF +
3 2/3
3
c
hoặc:
3
3
γ.CB. l.(l /b).B = l.(l /b).h. pHF.B +
và sau đó:
(γ.CB. (l /b) –(l /b).h.pHF ).B3 -
Vs3
(γ .CB.(1 / b).)2 / 3 Vs3
c
(γ .CB.(1 / b).)2 / 3 Vs3
.pM.B2 + (WDW + WR)
.pM.B2 - (WDW + WR) = 0.
c
Từ phương trình cuối sẽ tìm được nghiệm B.
Kích thước chính còn lại xác định theo công thức:
L = (L/B).B;
T = (T/B).B;
H = (H/T).T;
Khi đã có L, B, T, CB, vv… tiến hành tính lại D của tàu.
9
.pM + (WDW + WR)
Sử dụng công thức (γ.CB. (l/b) –(l/b).h.pHF ).B3 -
(γ .CB.(1 / b).)2 / 3 Vs3
.pM.B2 - (WDW + WR) =
c
0, trong đó WR chiếm khoảng 2% sức chở, tính bằng 260t, tiếp tục tính phương trình trọng lượng.
Từ thống kê có thể nhận được các giá trị c = 400; pHF = 0,1295 t/m3; pM = 0,077t/HP.
2/3
7
⎛
⎞
0,66 ⎟
⎜1,031.
2,3
⎠ .18,03.
[1,031. 0,66.(7/2,3) – (7/2,3).1,42. 0,1295] B3 - ⎝
400
0,077. B2 – (13000 + 260) = 0;
Sau rút gọn phương trình có dạng:
1,512 B3 – 1,82B2 – 13260 = 0;
Nghiệm B = 21,1 m.
Từ đó: L = 147,7m; T = 9,2m; H = 13,05m.
LBH = 147,7x21,1x13,05 = 40600 m3.
D = 19400 t.
WHF = LBH.pHF = 40600x0,1295 = 5260 t.
Sức cản tàu.
Sức cản tàu tính cho trường hợp cũ thể: L/ ∇1/3 = 147,7 / 190001/3 = 5,5;
9,25
v
=
= 0,243 ; CB = 0,66; CM = 0,981; CP = 0,673.
Fr =
9,81x147,7
gL
WS = 2,73. D.L = 4600 m2.
Từ đồ thị sức cản tàu vận tải, theo phương pháp Harwald – Guldhammer có thể đọc được hệ
số sức cản dư CR = 1,234x10-3. Sau hiệu chỉnh theo B/T thực tế hệ số lực cản mang giá trị CR =
1,21x10-3.
Sức cản ma sát: CF = 1,49x10-3. Hiệu chỉnh cho các phần lồi CF = 1,54x10-3.
Hệ số sức cản CT = (1,21 + 1,54)x10-3 = 2,75x10-3.
Sức cản vỏ tàu: RT = ½ρ V2.WS = 57000 kG.
Công suất kéo cần tính theo công thức:
EPS =
RT × v 5700.9,25
=
= 7030[ HP]
75
75
Với hiệu suất chân vịt, theo chế độ chạy tự do, khoảng ηcv = 0,70, công suất cần thiết để đẩy
tàu phải là:
BHP = EPS / ηCV = 10043 PS.
Với dự trữ công suất chừng 25%, cần thiết chọn máy 12500 PS.
Trọng lượng buồng máy tính theo công thức:
WM = BHP.pM = 12500x0,077 = 962 t.
Theo cách tính này, trọng lượng tàu sẽ là:
D = 5260 + 962 + 13260 = 19482 t.
10
So với lượng chiếm nước tính toán, trọng lượng dự trữ bị giảm 82 t, điều đó có thể chấp nhận
được khi thiết kế.
1.2.2 Thiết kế theo phương pháp biến phân
Theo cách đặt vấn đề của giáo sư Nogid, có thể sử dụng phương pháp biến phân xử lý các bài
toán cơ bản của thiết kế tàu.
Bài toán xác định giá trị thích hợp nhất của CB (hay là δ) và L/B khi các giá trị của vận tốc
tàu vs, sức chở đã được xác định gần đúng, đưa về dạng:
P; Vecon; Q; k; q;... = f( CB, L/B,... ) theo cách diễn đạt của giáo sư Nogid.
Bài toán xác định kích thước tàu thích hợp nhất khi vận tốc tàu đã đặt ra không được phép
hạ thấp, còn trọng tải đã được xác định gần sát.
N; Q; k; q;... = f(P, CB, L/B)
Bài toán mang tính tổng quát hơn được ghi làm hai dạng:
D; N; k; q;... = f(CB, L/B,...) với Vecon = const.
D; Vecon, k; q;... = f(CB, L/B,... ) với N = const.
Cách giải theo phương pháp này thông thường theo trình tự sau.
D = f(CB, L,B,T,H) + P.
Thay vào phương trình trên một dẫy giá trị của một biến số, ví dụ CB = var, với giả thiết các
biến khác, ví dụ B/T = const; H/T = const;... và dưới dạng khai triển người giải bài toán cần thực
hiện công việc theo sơ đồ:
CB, gán trước
L/B
B/T
H/T
Bảng 1.1
CB2
-
CB1
-
CB3
-
Từ đó có thể nhận được các quan hệ:
D; N = f( CB, L/B) với Vecon = const;
D; Vecon = f( CB, L/B) với N = const; n = const.
Để so sánh tính kinh tế của các phương án, tiến hành vẽ các đồ thị dạng:
q; k = f( CB, L/B)
Đồng thời với các chỉ tiêu kinh tế cần tiến hành thiết lập đồ thị cho các chỉ tiêu kỹ thuật, liên
quan đến mỗi phương án, ví dụ:
N; h/B;... = f(CB, L/B).
Công việc theo hướng này đòi công sức hết sức lớn, và đòi hỏi sự so sánh cân nhắc cẩn thận
khi xét chọn phương án. Theo giáo sư Nogid, trong cách làm này, nếu sử dụng phương pháp (theo
từ giáo sư dùng) coi lượng chiếm nước không đổi, công việc làm có thể được giảm bớt 2 .
2
Nogid L.M.,”Терия проектирования судов”,(Lyù thuyeát thieát keá taøu) Sudpromiz, 1955.
11
D = D0 = const, trong đó D0 - lượng chiếm nước khởi đầu của thiết kế.
Thực hiện các phép tính xác định trọng lượng, dung tích, ổn định vv... cho các phương án
theo sơ đồ tính thích hợp, ví dụ sơ đồ sau:
Xác định kích thước chính.
Bảng 1.2
CB = CB1
Tên gọi
⎛ L⎞
⎜ ⎟1
⎝ B⎠
L0 =
⎡ 1 ⎛ L⎞ 2 B⎤
⎥
⎜ ⎟
⎢⎣ γ . δ ⎝ B ⎠ T ⎥⎦
⎛ L⎞
⎜ ⎟2
⎝ B⎠
⎛ L⎞
⎜ ⎟3
⎝ B⎠
CB = CB2
⎛ L⎞
⎜ ⎟1
⎝ B⎠
⎛ L⎞
⎜ ⎟2
⎝ B⎠
⎛ L⎞
⎜ ⎟3
⎝ B⎠
1/ 3
D01/ 3 ⎢
B
. L0
L
T
T0 = . B0
B
H
H 0 = . T0
T
B0 =
Công suất máy N0, xem bảng dưới
P1
P2
...
Pn
∑
dP = D0 - ∑ = ξ.dP
D = D0 - dD
⎛ D⎞
⎟
⎝ D0 ⎠
1/ 3
k= ⎜
N = N0.k2
L = L0 .k
B = B0.k
T = T0.k
H = H0.k
Bước tiếp theo tiến hành tính sức cản tàu cho tất cả phương án, theo mẫu tương tự. Sau khi
có sức cản, động tác tiếp theo là xác định công suất máy chính. Cách làm không khác các động tác
khi xác định kích thước chính.
Xác định công suất máy.
Bảng 1.3
Tên gọi
CB = CB1
⎛ L⎞
⎜ ⎟1
⎝ B⎠
⎛ L⎞
⎜ ⎟2
⎝ B⎠
vecon
R, từ bảng tính sức cản
w, hệ số dòng theo
12
CB = CB2
⎛ L⎞
⎜ ⎟3
⎝ B⎠
⎛ L⎞
⎜ ⎟1
⎝ B⎠
⎛ L⎞
⎜ ⎟2
⎝ B⎠
⎛ L⎞
⎜ ⎟3
⎝ B⎠
t, hệ số lực hút
1− t
1− w
R
T=
1− t
ηV =
DCV = a × T
η = ηv ηpξr
R × v econ 1
N=
×
75
η
Để chọn được phương án tốt nhất cần thiết phân tích tính kinh tế và tính kỹ thuật của tất cả
phương án vừa lập. Phương án được chọn phải thoả mãn tiêu chuẩn được đặt ra từ trước. Có thể hình
dung rằng, cách làm này đòi một lượng tính toán khổng lồ liên quan đến tất cả phương án.
1.3
THIẾT KẾ TỐI ƯU TÀU THỦY
1.3.1 Mô hình toán thiết kế tàu
Khác với phương pháp biến phân, trong đó người thiết kế phải so sánh, đối chiếu hàng loạt
phương án thiết kế dùng cho 1 sản phẩm, cụ thể hơn là cho 1 con tàu đang được đặt lên bàn cân, kết
quả của phép so sánh đó là chọn ra một và chỉ một phương án “ tốt nhất”. Trong thiết kế dựa vào lý
thuyết tối ưu người thiết kế không phải so sánh, đối chiếu các phương án và thực tế người thiết kế
không thể làm được việc đó, mà công cụ lao động được người thiết kế sử dụng “tự” xác định kết quả
“tối ưu” bằng con đường ngắn nhất tùy thuộc cách điều khiển của người thiết kế. Trong cách làm
theo lý thuyết tối ưu chúng ta không phải để mắt đến hàng ngàn, hàng triệu thậm chí hàng tỷ
“phương án” sẵn sàng bày ra trước mắt người xem, người thiết kế hướng dẫn công cụ lao động thử
tìm phương án đạt yêu cầu trong số hàng triệu lời giải để có căn cứ làm việc.
Bài toán thiết kế tàu trong thực tế không khác bài toán qui hoạch tuyến tính hoặc phi tuyến.
Giả sử chúng ta cần thiết kế một con tàu dân dụng nhằm mục đích mang lại lợi nhuận nhiều nhất
chúng ta phải tính lợi ích kinh tế. Lợi ích kinh tế ở đây thường có thể hiểu là tàu sẽ mang lại lợi
nhuận nhiều nhất trong trong phạm vi có thể, hoặc chi phí cho sản xuất và sử dụng tàu ít nhất trong
điều kiện cho phép, hoặc hiểu theo cách thời gian hoàn vốn của công trình đầu tư ngắn nhất vv...
Trong thực tế người thiết kế phải giải bài toán tối ưu sau:
f(x) → min.
(A)
Hàm f(x) trong ngôn từ chuyên môn gọi là hàm mục tiêu. Trong thiết kế tàu có thể coi nó dưới
dạng hàm chi phí sản xuất, sử dụng hoặc thời gian hoàn vốn. Bản thân nó chứa tất cả thông số
xác định đặc trưng hình học và động học tàu.
Thông thường các thông số trong hàm mục tiêu bị hạn chế trong phạm vi nhất định, ví dụ
chiều dài, chiều rộng, chiều cao tàu không thể là số 0 hoặc số âm, tỉ lệ giữa chiều chìm và chiều cao
không thể là số âm và không thể lớn hơn 1. Mặt khác tàu được thiết kế phải đảm bảo ổn định, an
toàn, phải đảm bảo độ bền khi nổi trên nước cũng như khi hoạt động vv... Tất cả những đòi hỏi này
trở thành những hạn chế mà bài toán bị ràng buộc. Và như vậy điều kiện cần của bài toán trên đây
được viết như sau:
ai ≤ xi ≤ bi
g(x) ≤ 0;
(B)
13
Mô hình toán cụ thể cho từng loại tàu bạn đọc sẽ tìm hiểu tại các phần tiếp theo. Tại đây chúng ta
có thể tiến đến bước tiếp của chương trình là chọn phương pháp số cho lời giải ổn định.
Để giải bài toán (A) cùng các hạn chế (B) có thể sử dụng các phương pháp qui hoạch tuyến
tính hoặc qui hoạch phi tuyến, hay còn gọi là các phương pháp tính tối ưu thích hợp.
1.4 NGÔN NGỮ LẬP TRÌNH VÀ TỰ ĐỘNG HÓA THIẾT KẾ
Ngôn ngữ lập trình là những phần mềm để phát triển các ứng dụng. Ngôn ngữ lập trình đã
trải qua quá trình phát triển và hoàn thiện, là công cụ quan trọng phát triển công nghệ thông tin. Tự
động hóa tính toán, thiết kế và hiển thị kết quả tính đều thông qua ngôn ngữ lập trình. Những ngôn
ngữ lập trình có ứng dụng rộng rãi và hiệu quả có thể nêu lên sau đây.
• FORTRAN (viết tắt từ FORmula TRANslation), ra đời từ những năm năm mươi, chính
xác hơn năm 1957, ứng dụng chủ yếu trong các ngành khoa học, kỹ thuật mà ngày nay gọi là công
nghệ.
Phiên bản đầu của FORTRAN thường được nhắc đến với tên gọi FORTRAN II, song phiên
bản được dùng phổ biến nhất là FORTRAN IV. Các dàn máy IBM thời bấy giờ nhận dạng phiên bản
phổ thông này dưới tên viết ghép FFORTRAN. Ngôn ngữ thích hợp cho việc xử lý những bài toán
cỡ lớn của thời đại, được dùng trong các chương trình tính toán thiết kế ô tô, tàu thủy, máy bay và
tàu không gian, tính toán độ bền các công trình xây dụng, thiết kế tối ưu. Có thể coi hơn 90% những
chương trình lớn trong các lĩnh vực khoa học, kỹ thuật được viết bằng ngôn ngữ này.
Thực tế sử dụng đã nảy sinh vài vấn đề phiền toái. Các nhà sản cuất các chương trình đa năng
tự cho phép mình viết các bộ dịch cho FORTRAN theo sở trường của riêng mình. Tuy phần lớn các
nhà sản xuất vẫn dựa vào tiêu chuẩn của ANSI – American National Standards Institute để biên soạn
compiler cho FORTRAN IV song chẳng có bộ dịch nào giống bộ dịch nào, vì người nào cũng cố xé
rào khỏi chuẩn ANSI. Tình hình ấy bắt buộc ANSI phải ra tay thống nhất, năm 1978 phiên bản cuối
cùng mang tên ANSI X3.9-1978 đã đặt dấu chấm cho sự bùng phát tự do. Phiên bản này có tên gọi
FORTRAN 77, ngày nay được dùng rộng rãi.
• Algol , viết tắt từ Algorithm, ra đời vào đầu những năm sáu nươi với sự tham gia rất đông
các nhà toán học, các người viết chương trình của châu Âu. Ngôn ngữ được thiết kế rất trong sáng,
dễ học, dễ thực hiện. Đây là phiên bản của bộ môn toán tính dùng trong máy tính. Ngôn ngữ thích
hợp cho việc giải quyết những vấn đề khoa học của thời đại. Tất cả các thuật toán chuẩn ra đời trong
thời kỳ này được chuyển thành chương trình viết bằng Algol 60. Cho đến những năm cuối bảy mươi
chương trình bằng ngôn ngữ Algol còn được chạy trên các dàn máy lớn. Những chương trình mẫu
giải quyết những vấn đề tính toán theo phương pháp số, đặc biệt phần đại số tuyến tính, viết bằng
Algol từ những năm sáu mươi cho đến tận ngày nay vẫn là những chương trình ưu việt, chưa gì thay
được 3 .
Ngôn ngữ này là ngôn ngữ tốt song không sinh ra tại Mỹ, và theo đó không tìm được chỗ
đứng ở Mỹ, việc ấy đồng nghĩa với sự hạn chế số người dùng và sự phát triển tiếp theo.
3
Toaøn boä thuaät toaùn thuoäc ñaïi soá tuyeán tính do caùc nhaø toaùn hoïc gioûi nhaát bieân soaïn ñaõ ñöôïc maõ hoùa thaønh chöông
trình baèng ngoân ngöõ Algol 60, in laïi trong taøi lieäu do Wilkinson J.H. vaø Reinsch C. chuû bieân “Handbook for
auotomatic computation”, Heidelberg Springer, 1971.
14
• COBOL (Common Business Oriented Language), ra đời năm 1960, áp dụng chủ yếu trong
lĩnh vực kinh doanh, thương mại. Ngôn ngữ này được hoàn thiện và còn tìm thấy chỗ đứng tận hôm
nay.
• BASIC (viết tắt từ Beginner’s All-purpose Symbolic Instruction Code) do Kemeny và
Kurtz phát triển từ 1964 tại Mỹ, là ngôn ngữ dùng cho máy tính nhỏ. Basic dễ học và sử dụng không
khó lắm, song khả năng giải quyết công việc không lớn. Điều phiền toái nữa là ngôn ngữ này thuộc
dạng “dễ tính” nên được phát triển gần như không kiểm soát được. Tồn tại quá nhiều “thổ ngữ” từ
Basic nên khó chọn thứ tiếng chuẩn mực cho ứng dụng quan trọng.
Năm 1975 Gates W. viết ngôn ngữ cũng mang tên BASIC cho máy Altair, dạng
microcomputer đầu tiên. Ngôn ngữ mang tên BASIC ngày nay thực tế là các cải biên của thứ tiếng
mà Gates đã đưa ra thời đó.
• Ngôn ngữ PL (Programming Language) còn được viết dưới dạng PL1 hoặc PL/I, cải biên
cách viết PL1, được người khổng lồ lúc bấy giờ IBM đăït ra trong thời gian 1963-1966 sau thành
công của FORTRAN và các ngôn ngữ khác tại Mỹ. Ngôn ngữ thừa kế những tốt đẹp của
FORTRAN, Algol, Cobol. Bản thân ngôn ngữ bậc cao này cũng đã có tham vọng sử dụng ngôn ngữ
assembly làm các phương tiện nối ghép, chạy chương trình mẫu. Người ta đặt thêm số 1 cuối tên gọi
với hàm ý “ngôn ngữ lập trình số 1”. Tuy ý tưởng hay, thiết kế chuẩn song thực tế không được như ý
muốn chủ quan của những người sinh non ra nó. Ngôn ngữ được quảng cáo rùm beng, song người
dùng không nhiều vì các compiler của PL làm việc quá tồi. Ngôn ngữ không thọ được bao lâu, ngày
nay thế hệ trẻ khỏi phải nghe quảng cáo ngôn ngữ number one nữa.
• Pascal ra đời chính thức 1971. Người có công thiết kế ngôn ngữ là Niklaus Wirth. Tên
gọi của ngôn ngữ Pascal để ghi nhớ công lao nhà toán học lớn thế kỷ 17 Blaise Pascal. Ngôn ngữ
Pascal thuộc nhóm có cấu trúc chặt, là ngôn ngữ lập trình tiêu chuẩn bất cứ người lập trình nào cũng
nên biết. Theo nhận định của các nhà chuyên môn, đây là thứ ngôn ngữ “lingua franca”, làm cả chức
năng “common tongue”, là tiếng nói chung cho lập trình. Ngày nay trong các trường học, trong các
lớp học về lập trình, tại các kỳ thi năng khiếu ngôn ngữ này còn là ngôn ngữ chính thức để truyền
thụ và thi tài.
• C là ngôn ngữ lập trình đa năng, ứng dụng vào giải quyết những công việc thực tế nảy
sinh từ cuộc sống. C được coi là ngôn ngữ gần “ngôn ngữ máy”, có khả năng giải quyết mọi công
việc mà những ngôn ngữ lập trình “bậc cao” sinh trước nó như FORTRAN, PL1, Pascal đã làm,
đồng thời còn giải quyết cả những việc mà đàn anh không muốn chạm tới, những việc chỉ giành cho
ngôn ngữ gần gũi máy như Assembler giải quyết.
Lịch sử phát triển của C có nhiều điều đáng nhắc. Yêu cầu thực tế của AT&T là phải có ngôn
ngữ dùng cho hệ điều hành UNIX, sử dụng trên máy DEC PDP-11. Việc này được giao cho Dennis
Ritchie. Hệ điều hành, compiler và chương trình ứng dụng đều được D. Ritchie viết bằng C năm
1972. Thực ra, trước đó Martin Richards đã được giao công việc tương tự và kết quả của nó là ra đời
ngôn ngữ có tên viết tắt BCPL. Trên cơ sở BCPL năm 1970 Ken Thompson soạn ngôn ngữ B (có
thểù bắt nguồn từ cái tên BCPL) và đã soạn đủ phần mềm để điều hành DEC PDP-7. Vào năm 1972
với sự cộng tác của K. Thompson, D.Ritchie đã đi từ B đến C. Nguồn gốc của tên gọi “C” chỉ đơn
giản vậy. Năm 1978 nhà xuất bản Prentice-Hall tung ra thị trường “ The C Programming Language”
do Brian W. Kernighan và Dennis M. Ritchie, viết tắt là K&R, cùng viết. Sách ra đời là món quà vô
giá đối với giới lập trình. C vượt ra khỏi ranh giới ban đầu là ngôn ngữ của hệ điều hành UNIX để
thâm nhập vào DOS và hệ điều hành của IBM. Năm 1983 American National Standarts Institute
(ANSI) thành lập ủy ban để tiêu chuẩn hoá ngôn ngữ C. Kết quả làm việc của Uûy ban này là khẳng
15
định tính đúng đắn của C và ủy ban chấp nhận (có thêm bớt) ngôn ngữ C với tên “ANSI C” . ANSI
C chính thức có hiệu lực từ năm 1988. Cuối những năm tám mươi và đầu những năm chín mươi thế
giới lập trình chứng kiến sự bùng nổ ứng dụng C. Ngôn ngữ C đang lấn sân của những ngôn ngữ lập
trình đàng anh đã một thời vang bóng.
Ngoài hệ điều hành UNIX của AT & T, nhiều hãng sản xuất phần mềm xây dựng các bộ dịch
C để đưa vào hoạt động. Các bộ dịch có độ tin cậy cao gồm:
• Turbo C++ Professional , Borland C++
• Zortech C cho máy IBM PC
• Microsoft C
• Mixsoftware’s Power
Điểm mạnh của C được thể hiện trên nhiều mặt. C rất gần với ngôn ngữ Assembly và giao
tiếp dễ dàng với Assembly. C thao tác trên các bit nhanh chóng, chính xác và hiệu quả như ngôn ngữ
máy vẫn làm. C chấp nhận làm việc với mọi kiểu dữ liệu, với độ chính xác do người dùng đặt. Với
biến con trỏ C phát huy thế mạnh khi thao tác mảng, chuỗi, hàm, vv. . . So với các ngôn ngữ lập trình
khác, C điều khiển con trỏ thuần thục, dễ dàng hơn. Con trỏ giúp C đẩy nhanh tốc độ tính toán, giảm
chi phí bộ nhớ. Con trỏ làm cho C vượt trội các ngôn ngữ khác về tính mềm mại, dễ sử dụng và tạo
cho C sức mạnh để chinh phục các vấn đề phức tạp.
Chương trình viết bằng ngôn ngữ C dạng tiêu biểu thể hiện ở ví dụ sau đây:
1
2
3
4
5
6
7
8
# include
/* chương trình đầu tiên */
main()
{
printf (“\n Programming Language C\n”) ;
}
Chương trình viết bằng ngôn ngữ C, bất kể lớn hay nhỏ, dài hay ngắn, gồm có hàm và biến .
Hàm chứa các dòng lệnh ghi rõ các phép tính phải thực hiện còn biến ghi nhớ và lưu giữ giá trị hiện
hành lúc chương trình làm việc. Hàm ở đây tương đương với chương trình con hoặc thủ tục trong
FORTRAN và Pascal. Ở ví dụ trên đây, hàm có tên là main (chương trình chính). Với một hàm bất
kỳ, bạn tùy ý gán cho nó một tên riêng bạn thích. Trong trường hợp cụ thể này toàn bộ chương trình
chỉ có một hàm và hàm đó đóng vai trò chương trình bởi vậy nó có tên chuẩn là main.
Chương trình trên đây gồm các phần sau:
Phần 1: Dòng 1 chứa đường dẫn cho compiler.
Phần 2: Ghi chú tại dòng 2
Phần 3: Dòng 3 gọi là nguyên bản của hàm
Từ dòng 3 đến 7 là toàn bộ chương trình chính.
Dịch và liên kết chương trình
Chương trình C đã viết xong nhưng muốn chạy được phải trải qua quá trình dịch và liên kết.
Quá trình được miêu tả ngắn như sau: Chương trình gốc, hay còn gọi là đơn vị dịch được chuyển cho
bộ dịch (compiler). Compiler dịch sang mã máy. Kết quả dịch được ghi vào file đối tượng (thuật ngữ
16
khoa học - kỹ thuật là object file). Sau đó bộ phận liên kết thâu nhận object file đó, và các file khác
nếu có, tạo ra file .EXE hay còn gọi là mođun để nạp vào máy.
Riêng quá trình dịch tiến hành theo thứ tự sau. Chương trình gốc đi qua máy quét (scanner)
dưới dạng một dòng các ký tự. Máy quét nhận dạng đợt đầu, chỉ chấp nhận các ký tự đã được phép
đi qua để đến bộ phận phân loại ra từ khoá, nhận dạng, hằng số, ký hiệu v v . . . . Tạm gọi giai đoạn
vừa qua là giai đoạn kiểm tra chính tả. Bài viết đúng chính tả mới được đưa đến bộ phận kiểm tra ngữ
pháp . Trong ví dụ trên, sau printf phải có dấu “(“- mở và sau đó đóng lại bằng dấu “)”. Khi đã làm
xong tất cả công việc mệt nhọc đó compiler mới cho phép chuyển bộ mã dịch sang object file.
Từ khóa.
Đây là một trong 6 nhóm được C phân loại. 5 nhóm còn lại là dấu nhận dạng, hằng số, dấu
đặc biệt cho các xâu ký tự, toán tử và ký hiệu nêu ở phần đầu. ANSI C dành 32 cụm từ sau đây làm
từ khoá. Trong chương trình C sẽ viết, đừng bao giờ sử dụng các từ khoá này làm tên riêng cho
chương trình, nhận dạng, macro. Những từ khoá đó là:
auto
double
int
struct
break
else
long
switch
case
enum
register
typedef
char
extern
return
union
const
float
short
unsigned
continue
for
signed
void
default
goto
sizeof
volatile
do
if
static
while
Thư viện của C.
Thư viện chuẩn cho C tùy thuộc vào khả năng cung cấp của các hãng sản xuất phần mềm liên
quan đến C. Theo qui định trong ANSI C các hàm, kiểu, vĩ mô của thư viện chuẩn được khai báo
trong các header chuẩn. Khai báo khi mở đầu bạn phải dùng ,ví dụ:
#include
là xuất phát từ các từ vừa nêu. Std có nghĩa là chuẩn, lib - thư viên, còn “h” viết tắt từ header.
Các header chuẩn tối thiểu , trong C nguyên thủy như sau :
Trong những chương tiếp theo của tài liệu, các ví dụ minh họa phương pháp tính và các
chương trình tính được thể hiện bằng ngôn ngữ C. Những hàm toán tính được chọn từ các chương
trình mẫu viết bằng Algol sau đó được “dịch” sang C. Những hàm khác được chuyển từ FORTRAN
sang hoặc viết mới bằng C. Bạn đọc quan tâm đến ngôn ngữ C đề nghị tìm đọc thêm “Giáo trình
ngôn ngữ lập trình C. Giành cho học viên kỹ thuật viên tin học”, Vi tính Bách khoa, Tp. Hồ Chí
Minh, 1997.
•
Ngôn ngữ C++
17
Bản thân C++ là sự phát triển ở mức cao từ C, song nó lại không hoàn toàn là C. Ngôn ngữ
C thuộc nhóm ngôn ngữ lập trình có cấu trúc chặt, còn C++ lại tạo cho người viết những thỏa mái
ngoài mong đợi.
Trong C chương trình được xây dựng với mục đích rất cụ thể, để giải quyết một việc cụ thể
nào đó. C ghi nhận dữ liệu, và dữ liệu đó có thể ở dạng đơn giản hoặc phức tạp, xử lý dữ liệu và
thông báo ra cũng là dữ liệu vì dữ liệu là đối tượng phục vụ của nó. Còn C++, hiểu theo nghĩa lập
trình hướng đối tượng (OOP) thì lại nhắm vào đối tượng, mà đối tượng theo nghĩa chung nhất là một
cái gì đó có giới hạn.
Trong đối tượng người ta đưa dữ liệu vào và cả các phương pháp khai thác, sử dụng dữ liệu
nữa. Và lập trình hướng đối tượng không chỉ hạn chế làm một việc cụ thể mà giải quyết bất kỳ việc gì
cần cho đối tượng..
Trước khi mang tên C++ ngôn ngữ này có tên ban đầu là”C with Classes” tức là “C với các
lớp”. Lớp đi liền với chúng ta khi còn dùng C++.
C ra đời trên thực tế từ 1972 từ Bell Labs, do Dennis Ritchie và Ken Thompson viết. Ban đầu
C chưa nổi tiếng ngay, nó phát tiển âm thầm cho đến năm 1978 khi Brian Keringhan và Dennis
Ritchie tung ra “The C Programming Language”. Từ đó ngôn ngữ C phát triển nhanh và được tiêu
chuẩn hóa bằng hội đồng của ANSI (Mỹ), từ 1983 đến năm 1988 . Ngôn ngữ ANSI C được chính
thức khai tên từ 1988.
Không phải điều ngạc nhiên, cũng chính từ Bell Labs, nơi sản sinh ra C, năm 1986 “The C++
Programming Language” do Bjarne Stroustrup viết với tư cách là “một cuốn sách” ra đời, mang lại
cho người lập trình không khí mới.
C++ tự nó đã là ngôn ngữ lập trình như tên gọi của cuốn sách, song nó thừa kế một cách hoàn
mỹ những gì là tốt đẹp nhất của C và phát triển sự tốt đẹp ở mức cao hơn. Thực tế đã chứng minh C
là ngôn ngữ uyển chuyển, có khả năng thâm nhập vào các lĩnh vực tính toán, quản lý song C++ còn
linh hoạt và uyển chuyển hơn. C là ngôn ngữ vô cùng mạnh song C++ được coi là mạnh hơn.
Giống như các ngôn ngữ lập trình khác, C theo nghĩa cũ vẫn bị rào cản trong một vài hạn
chế, còn C ++ đang phá bỏ rào cản đó. Trong thực tế có thể coi C++ là công cụ làm việc thích hợp
cho những người lập trình. Trong quản lý dữ liệu, C và nhiều ngôn ngữ khác sử dụng struct (hay còn
gọi là record nếu hiểu theo nghĩa chung nhất ) để quản lý các đối tượng. Công việc quản lý đó không
có gì chê trách được. Song khác với với struct, khi C++ đưa vào lớp (class) cả đối tượng và công
cụ quản lý đối tượng nó liền phát huy thế mạnh đến mức không ngờ được.
Ngôn ngữ lập trình nếu kể đầy đủ phải bao gồm từ ngôn ngữ máy và ngôn ngữ gần với ngôn
ngữ máy. Có thể xếp các ngôn ngữ máy tính vào trong năm nhóm, hay nói cách khác trong năm thế
hệ của ngôn ngữ lập trình.
Thế hệ đầu tiên giành chỉ các mã số 0 và số 1 mà mỗi bit của máy tính đều hiểu. Ngôn ngữ
này làm người thông ngôn duy nhất trong những năm bốn mươi đến đầu những năm năm mươi. Tại
thời điểm này máy chỉ có thể “hiểu” ngôn ngữ độc nhất là mã nhị thức (binary code), gồm 0 và 1.
Ngôn ngữ đầu tiên này còn mang tên gọi “ngôn ngữ máy”.
Thế hệ thứ hai của ngôn ngữ máy tính đánh dấu bằng sự ra đời của ngôn ngữ Assembly,
ngày nay có người dịch là hợp ngữ. Assembly giúp cho máy tính nhận diện và dịch sang ngôn ngữ
máy các mã mnemonic như ADD (cộng, thêm vào), SUB (trừ), MOV (dịch chuyển) vv… Các
chương trình sử dụng các mnemonic để viết được gọi là assembly, còn chương trình dịch assembly
sang ngôn ngữ máy có tên gọi là Assembler. Ngôn ngữ Assembly ra đời trong những năm năm mươi
18