Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
301,5 KB
Nội dung
Chơng 1
Giới thiệuvềngônngữ C++
Khả năng tổ chức và xử lý thông tin là yếu tố chính dẫn đến thành công
trong thời đại hiện nay. Các máy tính đợc thiết kế để kết nối và xử lý một lợng
lớn các thông tin nhanh và hiệu quả. Tuy nhiên chúng không thể làm đợc bất
cứ việc gì khi mà một ngời nào đó cha nói với chúng những gì phải làm.
Những công việc mà ngời ta yêu cầu phải thực hiện, thì đó chính là những cái
mà C++ có thể làm. C++ là một ngônngữ lập trình bậc cao, nó cho phép
những kỹ s phần mềm trao đổi thông tin một cách hiệu quả đối với máy tính.
C++ là một ngônngữ có khả năng thích ứng và có tính mềm dẻo cao. Từ
khi nó đợc tạo ra năm 1980, nó đã đợc sử dụng rộng rãi với các chơng trình
bao gồm cơ sở cho các bộ vi điều khiển, các hệ thống điều hành, các ứng dụng,
và đồ hoạ. C++ nhanh chóng trở thành một ngônngữ lập trình đợc a chuộng.
Có một sự yêu cầu lớn đối với những ngời làm việc với máy tính là họ phải có
khả năng yêu cầu làm những công việc mà họ cần, và C++ cho phép họ làm
việc nhanh chóng và hiệu quả.
Sơ lợc về lịch sử phát triển của C++
Năm 1970 hai nhà lập trình là Brian Kemighan và Dennis Ritchie tạo ra
một ngônngữ mới đợc gọi là C (Gọi là ngônngữC bởi vì C đứng trớc một
ngôn ngữ cũ mà họ sử dụng có tên là B). C đợc thiết kế với một mục đích chủ
yếu là: viết hệ thống điều hành. Ngônngữ này rất đơn giản, mềm dẻo và nó
sớm đợc sử dụng rộng rãi cho nhiều dạng chơng trình khác nhau. Cuối cùng C
đã nhanh chóng trở thành một trong những ngônngữ thông dụng nhất trên thế
giới.
Tuy nhiên ngônngữC có một vấn đề chính, nó là một ngônngữ hớng đối
tợng, nghĩa là khi thiết kế một chơng trình C, ngời lập trình bắt đầu với việc
mô tả dữ liệu và viết các thủ tục để thao tác với các dữ liệu đó.
Cuối cùng những ngời lập trình khám phá ra rằng ngững quá trính trên nó
làm cho chơng trình trở lên rõ ràng và dễ hiểu nếu họ có thể đa vào một bunch
dữ liệu và nhóm chúng vào với nhau với các thao tác mà làm việc trên các dữ
liệu đó. Nh vậy một nhóm đợc gọi là một object (đối tợng) hoặc class (lớp).
Thiết kế các chơng trình bằng cách thiết kế các class đợc biết đến nh thiết kế
hớng đối tợng (object-oriented design _ OOD)
Năm 1980 Bjarne Stroustrup bắt đầu làm việc trên một ngônngữ mới gọi là
C với class. Ngônngữ này cải tiến từ ngônngữC bằng cách thêm một số đặc
điểm mới, và đặc biệt quan trọng là về class. Ngônngữ này đợc cải tiến, bổ
sung, và cuối cùng nó trở thành C++.
C++ với những thành công của nó, trên thực tế là nó cho phép những ngời
lập trình tổ chức và xử lý thông tin hiệu quả hơn hầu hết các ngônngữ khác.
Hơn nữa, nó đợc xây dựng trên những việc đã đợc làm với ngônngữ C. Trên
thực tế hầu hết các chơng trình C có thể chuyển đổi sang chơng trình C++ với
một chút thay đổi. Những chơng trình này thờng không sử dụng hết tất cả
những đặc điểm mới của C++, nhng chúng vẫn có thể thực hiện đợc công việc.
Trong trờng hợp này, C++ cho phép các nhà lập trình xây dựng dựa trên những
nền tảng tồn tại của mã của C.
Sự tổ chức của C++
C++ đợc thiết kế nh là một cầu nối giữa những ngời lập trình và máy tính
raw. ý tởng chính là cho phép ngời lập trình tổ chức một chơng trình theo một
cách mà họ có thể dễ dàng hểu đợc chúng. Chơng trình dịch sau đó dịch từ
ngôn ngữ sang dạng mà máy có thể sử dụng.
Các chơng trình máy tính bao gồm hai phần chính là: dữ liệu và các lệnh.
Các máy tính tác động một chút hoặc không có sự tổ chức(organization) trên
hai phần này. Sau cùng, các máy tính đợc thiết kế một cách chung nhất có thể
đợc. Một ý tởng cho các nhà lập trình là tác động lên tổ chức trên máy tính của
họ và không phải bằng cách khác.
Dữ liệu trong máy tính đợc chứa nh một chuỗi bao gồm các byte. C++ sử
dụng những byte này để chứa các dữ liệu có ích. Các khái báo dữ liệu đợc
dùng bởi những ngời lập trình để biểu thị thông tin mà họ đang làm việc. Ví
dụ:
int total; //Total number accounts
Khai báo trên yêu cầu C++ rằng bạn muốn dùng một phần bộ nhớ của máy
tính để chứa một số nguyên với tên là total. Bạn có thể cho phép chơng trình
dịch lựa chọn những byte đặc biệt nào đó của bộ nhớ để sử dụng.
Biến total là một biến đơn giản. Nó có thể chỉ chứa duy nhất một số nguyên
và miêu tả duy nhất với một total. Một chuỗi các số nguyên có thể đợc tổ chức
vào trong một mảng. Mặt khác, C++ sẽ kết nối các chi tiết, tác động lên
(imposing) sự tổ chức trên bộ nhớ của máy tính.
int balance[1001; //Balance (in cents) for all 100 accounts
Cuối cùng, có thêm các kiểu dữ liệu phức hợp. Ví dụ, một hình chữ nhật có
thể có chiều rộng, độ cao, màu và mẫu tô. C++ cho phép bạn tổ chức bốn
thuộc tính trên vào một nhóm gọi là một cấu trúc (structure).
struct rectangle {
int width; //Width of rectangle in pixels
int height; //Height of rectangle in pixels
color_type color; //color of the rectangle
fill-type fill; //Fill pattern
};
Tuy nhiên, dữ liệu chỉ là một phần của chơng trình, ngoài ra bạn còn cần đến
các lệnh. Đến mức độ mà máy tính đợc quan tâm, nó không biết một chút gì về
cách sắp xếp của các lệnh. Nó chỉ biết rằng nó đang làm gì với lệnh hiện tại và
tại đâu nó có lệnh kế tiếp.
C++ là một ngônngữ bậc cao, nó cho phép bạn viết một câu lệnh bậc cao
nh:
area = (base*height)/2.0; // Compute area of triangle
Chơng trình dịch dịch lệnh này vào một chuỗi các chỉ dẫn (lệnh) của máy.
Các kiểu lệnh này đợc gọi là một assignment statement. Nó đợc sử dụng để tính
và chứa các giá trị của một biểu thức số học.
Bạn cũng có thể dùng control statement (lệnh điều khiển) để điều khiển
thứ tự của quá trình xử lý. Các lệnh nh if và switch làm cho máy tính tạo các
quyết định dơn giản. Các lệnh có thể đợc lặp lại bằng cách dùng vòng lặp nh
while và for.
Các nhóm của các lệnh có thể nằm trong các hàm. Vì vậy bạn chỉ cần viết
một hàm với mục đích chung để vẽ hình chữ nhật và sau đó có thể sử dụng lại
hàm đó những nơi mà bạn muốn vẽ hình chữ nhật. C++ cung cấp một bộ
phong phú các hàm tiêu chuẩn (standard function) những hàm mà thực hiện
các chức năng thông thờng nh tìm kiếm (searching), phân loại (sorting), nhập
vào (input), và đa ra (output).
Một bộ các hàm quan hệ có thể đợc nhóm với nhau để tạo ra các modul, và
các modul đợc nối với nhau tạo thành các chơng trình.
Một trong những mục tiêu chính của ngôn nhữ C++ là tổ chức các lệnh hợp
thành các phần để có thể sử dụng lại đợc. Cuối cùng, bạn có thể viết một chơng
trình nhanh hơn nếu bạn mợn hầu hết các mã của bạn ở một nơi nào đó khác.
Nhóm các modul có khả năng dùng lại có thể kết hợp vào trong một th viện. Ví
dụ, nếu bạn cần một bộ sắp xếp thông thờng, bạn có thể dùng các hàm chức
năng qsort từ th viện và liên kết nó với chơng trình của bạn.
Một máy tính chia thế giới thành dữ liệu và các lệnh. Trong cả một thời
gian dài, các ngônngữ bậc cao nh C vẫn giữ nguyên cách phân chia này. Trong
ngôn ngữ C, bạn có thể định nghĩa dữ liệu hoặc viết các lệnh nhng không thể
kết hợp cả hai.
Một sự cải tiến chính trong C++ là ý tởng kết hợp dữ liệu và lệnh lại với
nhau trong một cấu trúc gọi là lớp (class) hoặc đối tợng (object). Lập trình h-
ớng đối tợng cho phép nhóm dữ liệu với các lệnh thao tác trên dữ liệu đó. Khái
niệm này đợc nâng lên một bớc nữa trong C++: nó cho phép ta nhận đợc các
class mới từ những cái đã tồn tại.
Đặc điểm cuối này là một tính năng rất mạnh. Nó cho phép bạn xây dựng
các class phức tạp từ những class đơn giản hơn, nhỏ hơn. Nó cũng cho phép
bạn định nghĩa một class trìu tợng (abstract), cơ bản và sau đó tạo ra (derive)
các class chi tiết hơn từ các class ban đầu. Ví dụ, một class trìu tợng về hình
dạng có thể đợc dùng để định nghĩa các hình dạng nh: hình chữ nhật, tam giác,
hình tròn.
Tổ chức (organization) là một mấu chốt để viết các chơng trình hoàn hảo.
Nh trong cuốn sách này, bạn biết rằng bảng nội dung ở đằng trớc, bảng mục
lục ở đằng sau, nó là một cách mà các quyển sách đợc tổ chức. Tổ chức làm
cho quyển sách này sử dụng đợc dễ hơn.
Ngôn ngữ C++ cho phép bạn tổ chức các chơng trình của mình dùng cú
pháp (syntax) đơn giản mà hiệu quả. Cuốn sách này sẽ đi sâu vào cú pháp của
C++ và hớng dẫn bạn định kiểu các quy tắc để tạo các chơng trình tin cậy và
dễ đọc. Bằng cách kết hợp một cú pháp hiệu quả với kiểu (style) lập trình tốt
bạn có thể tạo những chơng trình mạnh thực hện các phép toán phức tạp.
Cách học ngônngữ C++
Chỉ có duy nhất một cách học viết chơng trình là phải viết các chơng trình.
Bạn sẽ học đợc rất nhiều bằng cách viết và gỡ rối (debugging) các chơng trình
hơn là khi mà bạn đã đọc song cuốn sách này (than you ever will by reading
this book). Cuốn sách này bao gồm nhiều bài tập về lập trình, và bạn cố gắng
làm đợc càng nhiều trong số chúng càng tốt. Khi làm các bài tập bạn phải luôn
nghĩ đến kiểu chơng trình hoàn hảo nhất, phải luôn luôn chú thích (comment)
các chơng trình của bạn, thậm chí cả khi bạn đang làm bài tập đó cho riêng
mình. Sự chú thích giúp bạn tổ chức các ý tởng của mình, và chú thích các ch-
ơng trình của bạn là một cách luyệnn tập tôt nhất khi bạn đi vào thực tế (real
world).
Bạn hãy đừng nghĩ rằng, Tôi chỉ viết những chơng trình này cho riêng
mình, vì vậy tôi không cần chú thích chúng. Trớc tiên, những mã mà bạn thấy
rất rõ ràng khi viết, nó có thể thờng rất rối và khó hiểu khi bạn xem lại một
tuần sau đó. Viết các câu chú thích, nó còn giúp bạn tổ chức các ý tởng của
mình (Nừu bạn có thể viết ra một ý tởng bằng tiếng Anh, thì bạn mới chỉ hoàn
thành một nửa công việc viết nó bằng C++)
Cuối cùng, các chơng trình có xu hớng xa hơn là chúng ta mong đợi. Một
lần tôi viết một chơng trình đợc thiết kế chỉ làm việc duy nhất trên một máy
tính tại Caltech. Chơng trình phụ thuộc vào hệ thống rất cao. Bởi vì tôi là ngời
duy nhất sẽ dùng chơng trình, chơng trình sẽ in ra một thông báo theo sau nếu
tôi có một dòng lệnh sai:
?LSTUIT User is a twit
Vài năm sau đó tôi là một sinh viên tại trờng đại học Syracuse. Ngời th ký
tại trờng Computer Science cần một chơng trình tơng tự nh chơng trình danh
sách của tôi ở Caltech, vì vậy tôi sửa chơng trình của tôi cho cô ta. Thật không
may, tôi đã quên cái thông báo lỗi nhỏ bé buồn cời đó của tôi.
Tởng tợng rằng nó sẽ khủng khiếp nh thế nào khi tôi bớc vào văn phòng
của Computer Science và bị hỏi bởi ngời th ký trởng. Ngời đàn bà này có nhiều
quyền lực đến mức mà bà ta có thể làm cho trởng khoa phải kính nể. Cô ta
nhìn tôi và nói, Ngời sử dụng là đần, hả? (User is a twit, huh?) Rất may mắn là
cô ta có tính hài hớc, hoặc ngày nay tôi không ở đây nữa.
Rải rắc suốt cuốn sách này là các chơng trình bị đứt quãng (broken),
và bỏ thời gian để tìm ra tại sao chúng không làm việc. Thông thờng những
vấn đề này rất đơn giản nh dấu chấm phẩy không đúng chỗ, hoặc dùng = thay
cho ==. Những chơng trình này giúp bạn học cách tìm các lỗi ở các chơng
trình nhỏ, từ đó bạn làm tơng tự ở các chơng trình lớn, và bạn sẽ tạo các lỗi, đ-
ợc luyện tập để tìm chúng.
Chơng 2
Các máy tính là các công cụ mà có thể chứa, tổ chức và xử lý một lợng lớn
thông tin. Tuy nhiên chúng không thể làm đợc bất cứ cái gì khi mà ai đó cha đ-
a cho chúng những lệnh chi tiết.
Thông tin với các máy tính không dễ dàng. Nó yêu cầu các lệnh chính xác
và chi tiết. Cuộc sống có dễ dàng hơn không nếu chúng ta có thể viết chơng
trình bằng tiếng Anh? Tiếp theo chúng ta yêu cầu máy tính, Thêm vào tất cả
các kiểm tra và các deposit của tôi và nói với tôi toàn bộ, và máy sẽ cân bằng
(balancce) các kiểm tra của chúng ta (checkbook).
Nhng tiêng Anh là một ngônngữ rất hạn chế nếu bạn phải viết các câu
lệnh chính xác. Ngônngữ hoàn toàn không rõ nghĩa và không chính xác.
Grace Hopper, một bà nổi tiếng về tính toán (computing), một lần bình luận về
các chỉ dẫn ở hộp dầu gội đầu:
Wash (gội)
Rinse (gội qua)
Repeat (lặp lại)
Bà ta cố gắng theo sự chỉ dẫn, nhng đã đùng hết hộp dầu (Wash-rinse-
repeat. Wash-rinse-repeat. Wash-rinse-repeat ).
Tất nhiên chúng ta sẽ cố gắng viết bằng tiếng Anh rõ ràng. Chúng ta phải
rất cẩn thận và chắc chắn để đánh vần rõ ràng mọi thứ và chắc chắn tính đến
các lệnh (chỉ dẫn) cho mọi trờng hợp xảy ra. Nếu chúng ta làm việc cật lực,
chúng ta có thể viết các lệnh tiếng Anh chính xác, đúng không?
Chính vì vậy, có một nhóm ngời tập trung thời gian cố gắng viết tiếng Anh
chính xác. Họ đợc gọi là chính phủ, và các văn bản họ viết đợc gọi là quy định
của chính phủ. Một cách đáng tiếc, trong sự cố gắng để làm cho các quy định
chính xác, chính phủ đã làm cho các văn bản hầu hết rất khó đọc. Nếu bạn đã
từng đọc quyển hớng dẫn kèm theo với biểu thuế của bạn, thì bạn sẽ thấy đợc
tiếng Anh chính xác sẽ nh thế nào.
Thậm chí, ngay cả với những phụ từ không cần thiết mà chính phủ thêm
vào thì các vấn đề có thể xảy ra. Một vài năm trớc đây, California thông qua
điều luật yêu cầu tất cả những ngời đi xe máy phải đeo mũ bảo hiểm. Ngay sau
đó điều luật này có hiệu lực, một cảnh sát dừng một ngời không đeo mũ bảo
hiểm lại, ngời đàn ông đề nghị cảnh sát xem kỹ hơn điều luật.
Điều luật có hai điểm: 1) Ngời đi xe máy phải có mũ bảo hiểm đợc xác
nhận là chống đợc va chạm và 2) Nó phải đợc thít một cách chắc chắn. Ngời
cảnh sát không thể phạt anh ta khi mà anh ta có mang mũ và thít chắc chắn vào
đầu gối.
Vì những vấn đề hạn chế đó của tiếng Anh, nên nó không thể trở thành
một ngônngữ máy tính đợc. Vậy bây giờ chúng ta sẽ trao đổi thông tin với
máy tính nh thế nào?
Các máy tính đầu tiên trị giá hàng triệu dollar, trong khi cùng thời gian đó
thì lơng của một ngời lập trình thành thạo (good) là 15,000 dollar một năm.
Các nhà lập trình bắt buộc phải viết chơng trình bằng một ngônngữ mà tất cả
các lệnh đợc chuyển thành chuỗi các con số, gọi là ngônngữ máy. Ngônngữ
này có thể đa trực tiếp vào trong máy tính. Một kiểu chơng trình ngônngữ máy
có dạng nh sau:
1010 1111
0011 0111
0111 0110
và tiếp tục nh vậy cho hàng trăm lệnh.
Trong khi máy nghĩ với các con số mà con ngời không thể. Để lập trình
với các máy tính cổ này, các kỹ s phần mềm đã phải viết ra những chơng trình
của họ, sử dụng một ngônngữ đơn giản, một ngônngữ mà mỗi từ sẽ đặc trng
(stand for) cho một lệnh đơn. Nó đợc gọi là ngônngữ assembly, bởi vì những
ngời lập trình phải dịch bằng tay, hoặc tổ hợp (assemble) mỗi dòng ra mã máy.
Một kiểu chơng trình ngônngữ assembly có thể giống nh sau:
Program Translation
MOV A,47 1010 1111
ADD A,B 0011 0111
HALT 0111 0110
và tiếp tục nh vậy cho hàng trăn lệnh.
Quá trình này đợc minh hoạ bằng hình 2.1.
Hình 2-1.
Quá trình dịch là một nhiệm vụ buồn tẻ và chán ngắt, nó đòi hỏi phải kiên
trì. Một kỹ s phần mềm đã xét thấy đây là công việc hoàn chỉnh cho một máy
tính, vì vậy anh ta viết một chơng trình thực hiện công việc này một cách tự
động, nó đợc gọi là assambler.
Anh ta trình bày sáng tạo mới này lên ông chủ và ngay lập tức bị ca cẩm
Anh dám nghĩ ngay cả việc sử dụng một chiếc máy đắt nh vậy cho một nhiệm
vụ thuộc văn phòng? Đa ra trị giá thời gian một tiếng của máy tính để đổi lại
trị giá thời gian một tiếng của ngời lập trình, điều này không phải là một quan
điểm không có lý.
Assembly
language
Assembly
(translation)
Machine Language
Program
MOV A,47
ADD A,B
HALT
MOV A,47
ADD A,B
HALT
1010 1111
0011 0111
0111 0110
1010 1111
0011 0111
0111 0110
May thay, thời gian qua đi thì giá trị của ngời lập trình đợc tăng lên và giá
trị của máy tính giảm đi. Vì vậy nó sẽ mang lại hiệu quả hơn khi các nhà lập
trình viết các chơng trình bằng ngônngữ assembly và sử dụng một chơng trình
gọi là assembler để dịch chơng trình đó ra ngônngữ máy.
Ngôn ngữ assembly tổ chức chơng trình theo một cách mà các ngời lập
trình dễ hiểu hơn. Tuy nhiên, máy sẽ khó khăn hơn khi sử dụng chơng trình
này. Chơng trình phải đợc dịch trớc khi máy có thể thực hiện chúng. Đây là sự
khởi đầu cho một xu hớng. Các ngônngữ lập trình ngày càng trở lên thuận tiện
hơn cho những ngời lập trình sử dụng và nó cũng bắt đầu yêu cầu ngày càng
nhiều thời gian của máy tính để dịch chúng ra dạng mà các máy tính có thể sử
dụng.
Qua hàng năm các ngônngữ bậc cao đã đợc phát minh ra. Những ngôn
ngữ này cố gắng để cho những ngời lập trình viết ra những chơng trình mà họ
dễ dàng hiểu đợc và nó cũng đủ rõ ràng và đơn giản để các máy tính có thể
hiểu.
Các ngônngữ bậc cao ban đầu đợc thiết kế để xử lý (handle) các kiểu đặc
trng của các ứng dụng. FORTRAN đợc thiết kế dùng cho kỹ thuật, COBOL, để
viết các báo cáo thơng mại, và PASCAL dùng cho sinh viên. (Số lớn trong
những ngônngữ này phát triển lớn hơn là khi nó đợc sử dụng ban đầu. Nh có
đồn đại rằng Nicklaus Wirth đã nói, Nếu tôi biết rằng PASCAL trở lên thành
công nh vậy, thì tôi đã cẩn thận hơn khi thiết kế chúng.)
Sau đó, Brian Kemighan và Dennis Ritchie phát triển ngônngữC và Bjarne
Stroustrup chuyển nó thành C++.
Các chơng trình từ khái niệm đến thực hiện
Các chơng trình C++ đợc viết bằng ngônngữ bậc cao sử dụng các chữ cái,
các chữ số, và các biểu tợng khác mà bạn thấy trên bàn phím. Trên thực tế máy
tính thực hiện một ngônngữ bậc rất thấp gọi là macbine code (một chuỗi các
con số). Vì vậy, trớc khi một chơng trình có thể đợc sử dụng, nó phải qua một
vài sự biến đổi.
Các chơng trình đợc xuất phát nh là một ý tởng trong đầu của nhà lập trình.
Anh ta viết những ý tởng của mình bằng một trình soạn thảo (text editor) trong
một file gọi là file nguồn (sourcefile) hoặc mã nguồn (source code). File này đ-
ợc biến đổi bằng một trình biên dịch (compiler) ra một file đối tợng
(objectfile). Tiếp theo một chơng trình gọi là trình liên kết (linker) đa các file
đối tợng này, kết hợp nó với các thủ tục đợc định nghĩa trớc từ th viện tiêu
chuẩn (standard library), và tạo một chơng trình có thể thực hiện đợc (một bộ
các lệnh của ngônngữ máy). Trong các phần tiếp theo, bạn sẽ thấy đợc những
dạng khác nhau làm việc với nhau để tạo một chơng trình cuối cùng.
Hình 2-2 đa ra những bớc mà bắt buộc phải thực hiện để chuyển đổi một
chơng trình viết bằng ngônngữ bậc cao ra một chơng trình mà có thể thực hiện
đợc.
Hình 2-2. Sự chuyển đổi của một ngônngữ bậc cao ra chơng trình
Wrappers
Rất may mắn là bạn không phải chạy bản thân chơng trình biên dịch,
assembler, trình liên kết. Hầu hết các trình biên dịch C++ dùng các chơng
trình wrapper , chơng trình mà xác định những công cụ nào cần thiết để chạy
nối tiếp nhau.
Một số hệ thống lập trình thậm chí còn đi xa hơn và cung cấp cho những
ngời lập trình một môi trờng phát triển khép kín (IDE-integrated development
environment). IDE bao gồm một trình soạn thảo, trình biên dịch, trình liên kết
quản lý project, trình gỡ rối
and more in one convenient package.
Cả Borland và Microsoft cùng cung cấp các IDE với các trình biên dịch
của họ.
Tạo một chơng trình thực sự
Trớc khi bạn thực sự bắt đầu tạo các chơng trình của mình, bạn cần thiết
phải biết các công cụ lập trình cơ bản. Phần này sẽ giúp bạn từng bớc thực hiện
gõ vào, biên dịch, và chạy một chơng trình đơn giản. Nó trình bày cách sử
dụng hai kiểu trình biên dịch khác nhau. Kiểu thứ nhất là độc lập (standalone)
hoặc trình biên dịch gõ dòng lệnh (command-line compiler). Kiểu trình biên
dịch này đợc khép kín trong một chế độ xử lý theo lô (batch mode) từ dòng
Mã bậc cao
Chơng trình
ngôn ngữ assembly
Trình biên dịch
Mã đối tợng
Trình liên kết
Chơng trình có khả
năng thực hiện
Assembler
Th viện
lệnh. Nói một cách khác, bạn gõ một lệnh và trình biên dịch chuyển từ mã
nguồn của bạn thành một chơng trình có thể thực hiện đợc. Một kiểu trình biên
dịch khác đợc chứa trong một IDE.
Hầu hết các hệ thống UNIX dùng các trình biên dịch gõ dòng lệnh. Một
vài trình biên dịch kiểu IDE sẵn có cho UNIX, nhng nó rất ít. Mặt khác, hầu
hết các trình biên dịch sử dụng với MS-Dos và Windows chứa một môi trờng
phát triển khép kín.
For command-line die-hards, these compilers do contain command-line
compilers as well.
Tạo một chơng trình
dùng một trình biên dịch dòng lệnh
Trong phần này bạn sẽ xem xét kỹ từng bớc một quá trình cần thiết để tạo
một chơng trình dùng một trình biên dịch dòng lệnh. Chỉ dẫn đợc đa ra cho sử
dụng một một trình biên dịch UNIX chung, trình biên dịch Free Software
Foundation's g++, Turbo-C++, Borland C++, và Microsoft Visual C++.
Tuy nhiên, nếu bạn đang sử dụng một chơng trình dịch Borland hoặc
Microsoft bạn có thể muốn nhảy đến đoạn dùng IDE
However, if you are using a Borland or Microsoft compiler, you might want to
skip ahead to the section on using the IDE.
Bớc 1:
Nó rất dễ dàng quản lý nếu bạn tạo một th mục riêng cho mỗi chơng trình
mà bạn đang làm việc. Trong trờng hợp này bạn sẽ tạo một th mục hello để
chứa chơng trình hello của bạn.
Trong UNIX:
% mkdir hello
% cd hello
Trong MS-DOS:
C: MKDIR HELLO
C: CD HELLO
Bớc 2: tạo chơng trình
Một chơng trình khởi đầu nh một file văn bản. Ví dụ 2-1 là chơng trình
hello dạng nguồn
#include <iostream.h>
int main()
{
cout << "Hello World\n";
return (0);
}
Sử dụng chơng trình soạn thảo a thích của bạn để gõ vào chơng trình trên.
Trong UNIX tên file của bạn nên lấy tên là hello.cc và trong MS-DOS/Windows
là hello.ccp.
Cảnh báo (Warning)
Những ngời sử dụng MS-DOS/Windows không nên sử dụng chơng trình
xử lý word nh Microsoft Word hoặc WordPerfect để viết chong trình của
mình. Các chơng trình xử lý word thêm vào file các mã tạo dạng làm xáo trộ
trình biên dịch. Bạn phải sử dụng trình soạn thảo văn bản nh trình soạn thảo
MS-DOS vì những trình soạn thảo này có khả năng soạn thảo các file ASCII
Bớc 3: Chạy trình biên dịch
Trình biên dịch chuyển đổi file nguồn bạn vừa tạo ra chơng trình có thể th-
ợc hiện đợc. Mỗi trình biên dịch có một dòng lệnh khác nhau. Các dòng lệnh
cho hầu hết các trình biên dịch phổ biến đợc liệt kê dới đây.
UNIX CC Compiler (Generic uNix)
Hầu hết các trình biên dịch UNIx-based theo một tiêu chuẩn chung giống
nhau. Trình biên dịch C++ đợc gọi là cc. Để dịch chơng trình hello, chúng ta
phải cần lệnh sau:
% CC -g -ohello hello.cc
Trong đó, chọn g tạo khả năng gỡ rối. (Trình biên dịch thêm các thông tin
phụ vào chơng trình để làm cho chúng gỡ rối đợc dễ hơn.) Thay đổi hello nói
với trình biên dịch rằng chơng trình đợc gọi là hello, và cuối cùng hello.cc là
tên của file nguồn. Xem sổ tay trình biên dịch của bạn cho các chi tiết với tất
cả các lựa chọn có thể. Có một số trình biên dịch C++ khác nhau cho UNIX, vì
vậy dòng lệnh của bạn có thể khác chút ít.
Free Software Foundation's g++ Compiler
The Free Software Foundation, the GNU people, publishes a number of
highquality programs. (See the glossary entry "Free Software Foundation" for
information on how to get their software.) Among their offerings is a C++ compiler
called g++.
Để dịch một chơng trình dùng trình biên dịch g++, dùng dòng lệnh sau:
% g++ -g -Wall -ohello hello.cc
Thêm vào thay đổi -Wall bật lên tất cả các cảnh báo.
Borland's Turbo C++ in MS-DOS
Hãng quốc tế Borland tạo một trình biên dịch low-cost MA-DOS C++ gọi
là Turbo-C++. Trình biên dịch này rất lý tởng để học. Dòng lệnh cho Turbo-C+
+ là:
C:> tcc -ml -v -N -P -w -ehello hello.cpp
Thông số ml yêu cầu Turbo-C++ để dùng mô hình bộ nhớ rộng. (Máy PC
này có rất nhiều mô hình bộ nhớ khác nhau có thể đợc dùng khi tạo các chơng
trình. Cuốn sách này sẽ không nói về những bộ nhớ này. Thay vì thế, chúng ta
có quan điểm, Sử dụng mô hình bộ nhớ rộng và không phải lo nghĩ gì cho đến
khi bạn trở thành chuyên gia lập trình.)
Thay đổi v nói với Turbo-C đa thông tin gỡ rối vào chơng trình. Cảnh
báo đợc bật lên với w, kiểm tra ngăn xếp bằng N. Trên thực tế trình biên
dịch sẽ dịch cả C và C++ We force a C++ compile using the -P switch. Cuối
cùng, -ehello nói với Turbo-C++ để tạo một chơng trình có tên là hello, và
hello.ccp là tên của file nguồn. Xem sổ tay tham khảo Turbo-C++ để có danh
sách hoàn chỉnh các lựa chọn.
[...]... đ c lựa chọn c n thận, vì vậy cuối c u hộp đ c sắp thẳng hàng với đầu điểm dừng Mã C+ + Cc mã th c tế cho chơng trình c a bạn gồm c hai phần: cc biến và cc lệnh c thể th c hiện đ c Biến đ c sử dụng để chứa dữ liệu sử dụng cho chơng trình Lệnh c khả năng th c hiện yêu c u máy tính làm gì với cc dữ liệuCc lớp C+ + là một sự kết hợp c a dữ liệu và cc lệnh làm vi c với cc dữ liệu đó Nó cung c p... hoa dàng cho cc giá trị c định (nh MAX_ITEMS, SCREEN_WIDTH) Cc quy c này là cc quy c cổ điển theo hầu hết cc chơng trình C và C+ + Nhiều chơng trình mới hơn dùng cc tên hỗn hợp cc chữ c i (nh RecordsInFile) Đôi khi họ dùng chữ in hoa c a chữ c i đầu tiên để chỉ thông tin về biến Ví dụ recordsInFile c thể đ c dùng để chỉ biến địa phơng trong khi RecordsInFile chỉ đén biến cc bộ (Xem chơng 9,... bạn phải trả credit cho những nơi mà chúng c quyền đ c hởng Trong phần này bạn nên tham khảo chính t c giả bất cc ng vi c gì bạn muốn sao chép Cc dạng mầu file Danh sách cc dạng file mà chơng trình c a bạn đ c ho c viết là một sự mô tả ngắn về dạng mẫu c a chúng Cc hạn chế Danh sách bất kể giới hạn ho c hạn hạn chế gắn với chơng trình, nh: Cc file dữ liệu phải c dạng mẫu chính x c; chơng trình... bạn c u tr c một c ng trình xây dựng, bạn c n hai thứ là: gạch và một thiết kế mà cho bạn biết gép chúng với nhau nh thế nào Trong chơng trình máy tính bạn c ng c n hai thứ là: dữ liệu (c c biến) và cc lệnh (mã) Cc biến là cc khối xây dựng c bản c a chơng trình Cc lệnh cho máy tính biết phải làm gì với cc biến Cc chú thích đ c sử dụng để miêu tả biến và cc lệnh Chúng đ c nghi chú bởi t c giả... những c bản này, thêm những yếu tố stylistic mới nh bạn h c nhữngcơ sở mới c a ngôn ngữ Summary Một chơng trình nên ngắn gọn, s c tích và dễ đ c Nó phải cung c p nh một bộ cc lệnh máy tính, nhng c ng nh c ng vi c tham khảo miêu tả thuật toán và dữ liệu dùng trong nó Tất c mọi thứ là t liệu với cc chú thích Cc chú thích ph c vụ hai m c đích là Đầu tiên chúng mô tả chơng trình c a bạn để bất c ngời... style c a chơng trình? Bài tập 3-1: Làm qua tất c cc bài tập lập trình trong cuốn sách này và viết cc khối chú thích cho chúng Điều này sẽ ph c vụ một số m c đích Đầu tiên nó giúp cc bạn luyện tập tạo chú thích Thứ hai nó bỏ qua đ c lời bào chữa c a những nguời lập trình đi tr c, "Tôi không c đủ thời gian để đa vào những c u chú thích." Chơng 4 Cc khai báo c bản và cc biểu th c (Basic Diclerations... chỉ là một yếu tố tạo một chơng trình c chất lợng cao Tính ch c chắn (consistency) c ng là một nhân tố Quyển sách này đ c tổ ch c với bảng nội dung ở đầu sách và bảng chỉ m c ở phía sau Hầu hết cc cuốn sách đ c in c sự tổ ch c giống nh thế này tính ch c chắn này tạo cho ta dẽ dàng tìm từ trong bảng chỉ m c và tìm tiêu đề chơng trong bảng nội dung Một c ch đáng ti c là c ng đồng những ngời lập trình... chơng này bạn sẽ tập trung c u tr c cc chơng trình đơn giản chỉ c một hàm C u tr c chơng trình c bản Cc yếu tố c bản c a một chơng trình là cc khai báo dữ liệu, cc hàm, và cc chú thích Hãy xem những yếu tố này c thể đ c tổ ch c vào một chơng trình C+ + đơn giản C u tr c cơ bản c a chơng trình với một hàm là: /********************************************* * Heading comments * *********************************************/... rõ lắm C+ + c thể nói rằng chơng trình này th c hiện c ng vi c là chuyển dữ liệu từ nguồn (source) vào đích (destination) Máy tính không quan tâm là bản nào đ c sử dụng Một chơng trình dịch tốt sẽ tạo ra c ng một mã máy cho c hai bản Naming Style Cc tên c thể chứa c chữ in hoa và chữ thờng Trong cuốn sách này chúng ta sẽ dùng chữ thờng cho cc tên biến (nh source_ptr, curent_index) Cc chữ in... kết th c mỗi dòng không kết th c một c u lệnh Cc câu trong cuốn sách này c thể kéo dài một vài dòng kết th c của mỗi dòng đ c coi nh dấu c ch ngăn c ch giữa cc từ C+ + c ng làm vi c nh vậy Một c u lệnh đơn c thể kéo dài vài dòng Giống nh vậy, bạn c thể đa vài c u trên c ng một dòng, đúng nh bạn c thể đặt vài c u lệnh trên c ng một dòng Tuy nhiên, hầu hết chơng trình c a bạn dễ đ c hơn nếu c u lệnh .
Stroustrup chuyển nó thành C+ +.
C c chơng trình từ khái niệm đến th c hiện
C c chơng trình C+ + đ c viết bằng ngôn ngữ b c cao sử dụng c c chữ c i,
c c chữ số,. c thể tạo những chơng trình mạnh th c hện c c phép toán ph c tạp.
C ch h c ngôn ngữ C+ +
Chỉ c duy nhất một c ch h c viết chơng trình là phải viết c c