Professional Documents
Culture Documents
Chương 2
Chương 2
Khi bạn viết chương trình, bạn làm việc với dữ liệu ở ba dạng khác nhau: chữ (hoặc không tên
hằng số), biến và hằng số được đặt tên.
Hiểu các hằng số không có tên, theo nghĩa đen và các kiểu dữ liệu của chúng
Tất cả các ngôn ngữ lập trình đều hỗ trợ hai kiểu dữ liệu rộng; số mô tả dữ liệu
bao gồm các số và chuỗi mô tả dữ liệu không phải là số. Hầu hết các chương trình
ngôn ngữ hỗ trợ một số kiểu dữ liệu bổ sung, bao gồm nhiều kiểu cho các giá trị số
rất lớn hoặc rất nhỏ và đối với những cái có và không có số thập phân phân số
các chữ số. Các ngôn ngữ như C ++, C #, Visual Basic và Java phân biệt giữa số nguyên (toàn bộ
số) biến số và biến số dấu phẩy động (phân số) có chứa
dấu thập phân. (Số dấu phẩy động còn được gọi là số thực .) Do đó, trong một số
ngôn ngữ, các giá trị 4 và 4.3 sẽ được lưu trữ trong các loại biến số khác nhau.
Ngoài ra, nhiều ngôn ngữ cho phép bạn phân biệt giữa các giá trị nhỏ hơn và lớn hơn
chiếm số lượng byte khác nhau trong bộ nhớ. Bạn sẽ tìm hiểu thêm một chút về những
các kiểu dữ liệu chuyên biệt ở phần sau của chương này và thậm chí nhiều hơn nữa khi bạn học lập trình
nhưng cuốn sách này sử dụng hai loại rộng nhất: số và chuỗi.
Khi bạn sử dụng một giá trị số cụ thể, chẳng hạn như 43, trong một chương trình, bạn viết nó bằng cách sử dụng
chữ số và không có dấu ngoặc kép. Một giá trị số cụ thể thường được gọi là một hằng số
(hoặc hằng số theo nghĩa đen ) bởi vì nó không thay đổi — số 43 luôn có giá trị 43. Khi
bạn lưu trữ một giá trị số trong bộ nhớ máy tính, các ký tự bổ sung như ký hiệu đô la và
dấu phẩy không được nhập hoặc lưu trữ. Những ký tự đó có thể được thêm vào đầu ra để dễ đọc, nhưng
chúng không phải là một phần của con số.
Một giá trị văn bản cụ thể hoặc một chuỗi ký tự, chẳng hạn như “Amanda”, là một hằng số chuỗi (hoặc chữ
chuỗi không đổi ). Hằng số chuỗi, không giống như hằng số, xuất hiện trong dấu ngoặc kép
trong các chương trình máy tính. Giá trị chuỗi còn được gọi là giá trị chữ và số vì chúng có thể
chứa các ký tự chữ cái cũng như số và các ký tự khác. Ví dụ,
“$ 3.215,99 US”, bao gồm ký hiệu đô la, dấu phẩy, dấu chấm, chữ cái và số, là một chuỗi.
Mặc dù chuỗi có thể chứa số, giá trị số không được chứa ký tự chữ cái.
Hằng số 43 và hằng số chuỗi “Amanda” là những ví dụ về không đặt tên
hằng số —chúng không có định danh như các biến.
khởi đầu
nhập myNumber
khởi đầu
nhập myNumber
đặt myAnswer =
đặt myAnswer = myNumber * 2
myNumber * 2
xuất myAnswer
dừng lại
xuất myAnswer
dừng lại
Trong hầu hết các ngôn ngữ lập trình, trước khi bạn có thể sử dụng bất kỳ biến nào, bạn phải bao gồm
khai báo cho nó. Một tuyên bố là một tuyên bố cung cấp một kiểu dữ liệu và một định danh
cho một biến. Định danh là tên của thành phần chương trình. Kiểu dữ liệu của mục dữ liệu là
phân loại mô tả những điều sau:
Những giá trị nào có thể được giữ bởi mục
Cách mục được lưu trữ trong bộ nhớ máy tính
Những thao tác nào có thể được thực hiện trên mặt hàng
Như đã đề cập trước đó, hầu hết các ngôn ngữ lập
ế trình
ằ ốhỗ trợ một số kiểu dữ liệu, nhưng trong điều này
book, chỉ có hai kiểu dữ liệu sẽ được sử dụng: num và string .
Trang 3 Khai báo và sử dụng biến và hằng số
Khi bạn khai báo một biến, bạn cung cấp cả kiểu dữ liệu và số nhận dạng. Tùy ý, bạn
có thể khai báo giá trị bắt đầu cho bất kỳ biến nào. Khai báo giá trị bắt đầu được gọi là khởi tạo
biến . Ví dụ, mỗi câu lệnh sau đây là một khai báo hợp lệ. Hai trong số
các câu lệnh bao gồm các lần khởi tạo và hai câu lệnh không:
num mySalary
41
num yourSalary = 14,55
string myName
string yourName = "Juanita"
Hình 2-2 cho thấy chương trình nhân đôi số từ Hình 2-1 với các khai báo được thêm vào
bóng mờ. Các biến phải được khai báo trước khi chúng được sử dụng lần đầu tiên trong một chương trình. Một số
ngôn ngữ yêu cầu tất cả các biến phải được khai báo ở đầu chương trình, các biến khác cho phép
các biến được khai báo ở đầu mỗi mô-đun và các biến khác cho phép các biến
được khai báo ở bất kỳ đâu miễn là chúng được khai báo trước lần sử dụng đầu tiên. Cuốn sách này sẽ
tuân theo quy ước khai báo tất cả các biến với nhau.
khởi đầu
Tuyên bố
num myNumber
num myAnswer
khởi đầu
Tuyên bố
nhập myNumber num myNumber
num myAnswer
nhập myNumber
xuất myAnswer
dừng lại
Hình 2-2 Lưu đồ và mã giả của chương trình nhân đôi số với khai báo biến
© 2015 Cengage Learning
Trong nhiều ngôn ngữ lập trình, nếu bạn khai báo một biến và không khởi tạo nó, biến
chứa một giá trị không xác định cho đến khi nó được gán một giá trị. Giá trị không xác định của một biến thường
được gọi là rác . Mặc dù một số ngôn ngữ sử dụng giá trị mặc định cho một số biến (chẳng hạn như
gán 0 cho bất kỳ biến số nào chưa được gán), cuốn sách này sẽ giả định rằng
biến giữ rác. Trong nhiều ngôn ngữ, việc sử dụng biến chứa rác trong
một câu lệnh số học hoặc để hiển thị nó dưới dạng đầu ra. Ngay cả khi bạn làm việc với một ngôn ngữ
cho phép bạn hiển thị rác, nó không có mục đích gì để làm như vậy và tạo thành một lỗi logic.
Trang 4
Khi bạn tạo một biến mà không gán cho nó một giá trị ban đầu (như với myNumber và
myAnswer trong
Hình 2-2), mục đích của bạn là chỉ định một giá trị sau này — ví dụ: bằng cách nhận
một như đầu vào hoặc đặt kết quả của một phép tính ở đó.
(còn tiếp)
Trang 5 Khai báo và sử dụng biến và hằng số
(còn tiếp)
Cách viết hoa Pascal là một quy ước trong đó Lương theo giờ Ngôn ngữ lập trình 43
chữ cái đầu tiên của tên biến là LastName
chữ hoa. Nó đôi khi được gọi là trên
vỏ lạc đà để phân biệt với thấp hơn
vỏ lạc đà.
Ký hiệu Hungary là một dạng của lạc đà numHourlyWage C dành cho API Windows
cách viết hoa trong đó kiểu dữ liệu của biến là stringLastName lập trình
một phần của định danh.
Vỏ rắn là một quy ước trong đó lương theo giờ C, C ++, Python, Ruby
các phần của một tên biến được tách biệt last_name
bằng dấu gạch dưới.
Trường hợp hỗn hợp có dấu gạch dưới là một Lương theo giờ Ada
quy ước đặt tên biến tương tự như Last_Name
vỏ rắn, nhưng các từ mới bắt đầu bằng
một ký tự hoa.
Trường hợp Kebob đôi khi được sử dụng làm lương theo giờ Lisp (với chữ thường
tên cho kiểu sử dụng dấu gạch ngang để họ chữ cái), COBOL (với
các phần riêng biệt của một tên biến. Các chữ in hoa)
tên bắt nguồn từ thực tế là các từ
trông giống như những miếng thức ăn trên xiên.
Việc áp dụng quy ước đặt tên cho các biến và sử dụng nó một cách nhất quán sẽ giúp làm cho
chương trình dễ đọc và dễ hiểu hơn.
Mặc dù mọi ngôn ngữ đều có quy tắc riêng để đặt tên biến, bạn không nên lo lắng
với cú pháp cụ thể của bất kỳ ngôn ngữ máy tính cụ thể nào khi thiết kế
logic của một chương trình. Suy cho cùng, logic hoạt động với bất kỳ ngôn ngữ nào. Các tên biến được sử dụng
xuyên suốt cuốn sách này chỉ tuân theo ba quy tắc:
1. Tên biến phải là một từ. Tên có thể chứa các chữ cái, chữ số, dấu gạch ngang hoặc
gạch dưới. Không có ngôn ngữ nào cho phép nhúng khoảng trắng trong tên biến và hầu hết không
cho phép dấu câu như dấu chấm, dấu phẩy hoặc dấu hai chấm. Cuốn sách này chỉ sử dụng bảng chữ cái
chữ cái, chữ số và dấu gạch dưới trong tên biến. Do đó, r là một tên biến hợp pháp,
cũng như tốc độ và interestRate . Lãi suất tên biến không được phép
vì không gian.
2. Tên biến phải bắt đầu bằng một chữ cái. Một số ngôn ngữ lập trình cho phép biến
tên bắt đầu bằng một ký tự không có dấu chấm như dấu gạch dưới. Gần như tất cả
ngôn ngữ lập trình cấm tên biến bắt đầu bằng một chữ số. Thisbookfollows
quy ước chung nhất về việc bắt đầu tên biến bằng một chữ cái.
Trang 6
Khi bạn viết một chương trình bằng trình chỉnh sửa được đóng gói với trình biên dịch trong IDE, trình biên dịch có thể
hiển thị tên biến có màu khác với các thành phần chương trình khác. Hỗ trợ trực quan này giúp bạn
tên biến nổi bật so với các từ là một phần của ngôn ngữ lập trình.
3. Tên biến nên có một số ý nghĩa thích hợp. Đây không phải là một quy tắc chính thức
của bất kỳ ngôn ngữ lập trình nào. Khi tính toán lãi suất trong một chương trình,
máy tính không quan tâm nếu bạn gọi biến g , u84 hay fred . Miễn là
kết quả số chính xác được đặt trong biến, tên thực của nó không
vấn đề. Tuy nhiên, việc tuân theo logic của một câu lệnh như
đặt quan tâmEarned = ban đầuInvestment * lãi suất thay vì
một câu lệnh
như set f = i * r hoặc set someBanana = j89 * myFriendLinda . Khi một chương trình
yêu cầu thay đổi, có thể là vài tháng hoặc vài năm sau khi bạn viết bản gốc
phiên bản, bạn và các lập trình viên đồng nghiệp của bạn sẽ đánh giá cao
tên biến thay cho các định danh khó hiểu. Phần sau của chương này, bạn sẽ học
thêm về việc chọn số nhận dạng tốt.
Lưu ý rằng lưu đồ trong Hình 2-2 tuân theo các quy tắc trước cho các biến: Cả hai biến
tên, myNumber và myAnswer , là những từ đơn không có dấu cách nhúng và chúng có
ý nghĩa thích hợp. Một số lập trình viên đặt tên biến theo tên bạn bè hoặc tạo lối chơi chữ với
họ, nhưng các chuyên gia máy tính coi hành vi như vậy là không chuyên nghiệp và nghiệp dư.
Một câu lệnh như vậy là một câu lệnh gán . Tuyên bố này kết hợp hai hành động. Đầu tiên,
máy tính sẽ tính toán giá trị số học của myNumber * 2 . Thứ hai, giá trị được tính là
được lưu trữ trong vị trí bộ nhớ myAnswer .
Dấu bằng là toán tử gán . Toán tử gán là một ví dụ về
toán tử nhị phân , nghĩa là nó yêu cầu hai toán hạng — mỗi bên một toán hạng. (Một toán hạng đơn giản là
một giá trị được sử dụng bởi một toán tử.) Toán tử gán luôn hoạt động từ phải sang trái,
có nghĩa là nó có tính liên kết phải hoặc tính liên kết từ phải sang trái . Điều này có nghĩa là
giá trị của biểu thức ở bên phải của toán tử gán được đánh giá đầu tiên, sau đó là
kết quả được gán cho toán hạng bên trái. Toán hạng ở bên phải của một phép gán
toán tử phải là một giá trị — ví dụ, một hằng số có tên hoặc không tên hoặc một số học
biểu hiện. Toán hạng ở bên trái của một toán tử gán phải là một tên đại diện cho
một địa chỉ bộ nhớ — tên của vị trí nơi kết quả sẽ được lưu trữ.
Ví dụ: nếu bạn đã khai báo hai biến số có tên là someNumber và
someOtherNumber , thì mỗi câu lệnh sau là một câu lệnh gán hợp lệ:
đặt someNumber = 2
đặt someNumber = 3 + 7
đặt someOtherNumber = someNumber
đặt someOtherNumber = someNumber * 5
Trang 7
Trong mỗi trường hợp, biểu thức ở bên phải của toán tử gán được đánh giá và lưu trữ tại
vị trí được tham chiếu ở phía bên trái. Kết quả bên trái của một toán tử gán là
được gọi là lvalue . Chữ l là bên trái. Giá trị luôn là định danh địa chỉ bộ nhớ.
Tuy nhiên, các câu lệnh sau không hợp lệ: Đừng làm điều đó
Toán hạng bên trái của 45
đặt 2 + 4 = someNumber
một toán tử chuyển nhượng
đặt someOtherNumber * 10 = someNumber
phải đại diện cho một ký ức
đặt someNumber + someOtherNumber = 10 Địa chỉ.
Trong mỗi trường hợp này, giá trị ở bên trái của toán tử gán không phải là bộ nhớ
địa chỉ, vì vậy các câu lệnh không hợp lệ.
Khi bạn viết mã giả hoặc vẽ một lưu đồ, nó có thể giúp bạn sử dụng bộ từ trong
các câu lệnh gán, như được hiển thị trong các ví dụ này, để nhấn mạnh rằng giá trị bên trái là
đang được thiết lập. Tuy nhiên, trong hầu hết các ngôn ngữ lập trình, bộ từ không được sử dụng và phép gán
các câu lệnh có dạng đơn giản hơn sau:
someNumber = 2
someOtherNumber = someNumber
Vì dạng viết tắt là cách các phép gán xuất hiện trong hầu hết các ngôn ngữ, quy ước này
được sử dụng cho phần còn lại của cuốn sách này.
Một biến số là một trong đó có thể chứa chữ số và có các hoạt động toán học
thực hiện trên đó. Trong cuốn sách này, tất cả các biến số có thể chứa dấu thập phân và dấu
cho biết tích cực hoặc tiêu cực; một số ngôn ngữ lập trình cung cấp số chuyên dụng
loại cho các tùy chọn này. Trong câu lệnh myAnswer = myNumber * 2 , cả myAnswer và
myNumber là
các biến số; nghĩa là, nội dung dự định của chúng là các giá trị số, chẳng hạn như
dưới dạng 6 và 3, 14,8 và 7,4, hoặc –18 và –9.
Một biến chuỗi có thể chứa văn bản, chẳng hạn như các chữ cái trong bảng chữ cái và các
ký tự, chẳng hạn như dấu chấm câu. Nếu một chương trình làm việc có chứa câu lệnh
lastName = "Lincoln" ,
thì lastName là một biến chuỗi. Một biến chuỗi cũng có thể giữ
các chữ số có hoặc không có các ký tự khác. Ví dụ: "235 Main Street" và "86" là
cả hai chuỗi. Một chuỗi như “86” được lưu trữ khác với giá trị số 86 và bạn
không thể thực hiện số học với chuỗi. Các lập trình viên thường sử dụng chuỗi để giữ
các chữ số khi chúng sẽ không bao giờ được sử dụng trong các câu lệnh số học – ví dụ: một tài khoản
số hoặc mã zip.
An toàn kiểu là tính năng của một số ngôn ngữ lập trình ngăn chặn việc gán các giá trị của
một kiểu dữ liệu không chính xác. Bạn chỉ có thể gán dữ liệu cho một biến nếu nó đúng kiểu. (Như là
Trang 8
ngôn ngữ được gọi là được đánh mạnh.) Nếu bạn khai báo taxRate dưới dạng một biến số và
stockItem dưới dạng một chuỗi, khi đó các câu lệnh sau là hợp lệ:
taxRate = 2,5
stockItem = "giám sát"
Các dữ liệu sau không hợp lệ vì loại dữ liệu đang được chỉ định không khớp với biến
kiểu:
Đừng làm điều đó
Nếu taxRate là số
taxRate = "2,5" và mục hàng là
hàng tồn kho = 2,5 một chuỗi, sau đó là những
taxRate = hàng tồn kho bài tập không hợp lệ.
hàng tồn kho = taxRate
Sau khi SALES_TAX_RATE được khai báo, các câu lệnh sau có ý nghĩa giống hệt nhau: rong cả hai trường hợp,
Cách khai báo các hằng được đặt tên là khác nhau giữa các ngôn ngữ lập trình. Điều này
cuốn sách tuân theo quy ước sử dụng tất cả các chữ cái viết hoa trong các mã định danh không đổi và sử dụng
gạch dưới các từ riêng biệt để dễ đọc. Sử dụng các quy ước này làm cho
hằng số dễ nhận ra hơn. Trong nhiều ngôn ngữ, một hằng số phải được gán giá trị của nó khi nó
được khai báo, nhưng trong một số ngôn ngữ, một hằng số có thể được gán giá trị của nó sau đó. T
tuy nhiên, giá trị của hằng số không thể thay đổi sau lần gán đầu tiên. Cuốn sách này sau
quy ước khởi tạo tất cả các hằng khi chúng được khai báo.
Khi bạn khai báo một hằng số được đặt tên, việc bảo trì chương trình trở nên dễ dàng hơn. Ví dụ,
nếu giá trị của thuế suất bán hàng thay đổi từ 0,06 thành 0,07 trong tương lai và bạn đã khai báo
một hằng số được đặt tên là SALES_TAX_RATE , bạn chỉ cần thay đổi giá trị được gán cho
không đổi ở đầu chương trình, sau đó dịch lại chương trình vào máy
ngôn ngữ và tất cả các tham chiếu đến SALES _ TAX_RATE đều được cập nhật tự động. Nếu bạn đã sử dụng
không đặt tên theo nghĩa đen 0,06 thay vào đó, bạn sẽ phải tìm kiếm mọi trường hợp của giá trị và
Trang 9
thay thế nó bằng cái mới. Ngoài ra, nếu chữ 0,06 được sử dụng trong các phép tính khác
trong chương trình (ví dụ: như một tỷ lệ chiết khấu hoặc giá cả), bạn sẽ phải cẩn thận
chọn các trường hợp của giá trị để thay đổi và bạn có thể mắc lỗi.
Đôi khi, việc sử dụng các hằng chữ không có tên là thích hợp trong một chương trình, đặc biệt nếu ý nghĩa của chúng rõ ràng
cho hầu hết độc giả. Ví dụ: trong một chương trình tính một nửa giá trị bằng cách chia cho hai, bạn có thể 47
chọn sử dụng nghĩa đen 2 không được đặt tên thay vì phải chịu thêm thời gian và chi phí bộ nhớ khi tạo
một hằng số được đặt tên là HALF và gán 2 cho nó. Chi phí bổ sung do thêm các biến hoặc hướng dẫn vào
một chương trình được gọi là chi phí.
1. Kiểu dữ liệu của một biến mô tả loại giá trị mà biến có thể giữ và
các loại hoạt động có thể được thực hiện với nó.
2. Nếu name là một biến chuỗi, thì câu lệnh đặt tên = "Ed" là hợp lệ.
3. Toán hạng ở bên phải của toán tử gán phải là một tên
đại diện cho một địa chỉ bộ nhớ.
Nói cách khác, ví dụ này làm tăng giá trị của totalScore . Ví dụ cuối cùng này trông kỳ lạ
trong đại số vì có thể giá trị của totalScore và totalScore cộng với 10 là
tương đương. Bạn phải nhớ rằng dấu bằng là toán tử gán và rằng
câu lệnh thực sự đang lấy giá trị ban đầu của totalScore , thêm 10 vào nó và gán
kết quả đến địa chỉ bộ nhớ ở bên trái của toán tử, là totalScore .
Trong ngôn ngữ lập trình, bạn có thể kết hợp các câu lệnh số học. Khi bạn làm vậy, mọi
toán tử tuân theo các quy tắc ưu tiên (còn được gọi là thứ tự của các hoạt động ) ra lệnh
thứ tự thực hiện các thao tác trong cùng một câu lệnh. Các quy tắc ưu tiên cho
các câu lệnh số học cơ bản như sau:
Các biểu thức trong dấu ngoặc đơn được đánh giá đầu tiên. Nếu có nhiều bộ
dấu ngoặc đơn, biểu thức trong dấu ngoặc đơn trong cùng được đánh giá đầu tiên.
Phép nhân và phép chia được đánh giá tiếp theo, từ trái sang phải.
Phép cộng và phép trừ được đánh giá tiếp theo, từ trái sang phải.
Toán tử gán có mức độ ưu tiên rất thấp. Do đó, trong một tuyên bố chẳng hạn như
d=e*f+g, các phép toán ở bên phải của toán tử gán luôn được thực hiện
trước khi gán cuối cùng cho biến bên trái.
Khi bạn học một ngôn ngữ lập trình cụ thể, bạn sẽ tìm hiểu về tất cả các toán tử được sử dụng trong
ngôn ngữ. Nhiều sách ngôn ngữ lập trình chứa một bảng chỉ định mức độ ưu tiên tương đối của mọi
toán tử được sử dụng trong ngôn ngữ.
Sau khi các câu lệnh này thực thi, giá trị của firstAnswer là 14. Theo quy tắc của
ưu tiên, phép nhân được thực hiện trước phép cộng, vì vậy 3 được nhân với 4, cho 12,
và sau đó 2 và 12 được thêm vào, và 14 được gán cho firstAnswer . Giá trị của secondAnswer ,
tuy nhiên, là 20, bởi vì các dấu ngoặc đơn buộc thực hiện thao tác bổ sung chứa
Đầu tiên. 2 và 3 được thêm vào, tạo ra 5, và sau đó 5 được nhân với 4, tạo ra 20.
Quên các quy tắc ưu tiên số học hoặc quên thêm dấu ngoặc đơn khi
bạn cần chúng, có thể gây ra các lỗi logic khó tìm thấy trong các chương trình. Ví dụ,
tuyên bố sau có thể xuất hiện để trung bình hai điểm kiểm tra:
Tuy nhiên, nó không. Bởi vì phép chia có mức độ ưu tiên cao hơn phép cộng,
tuyên bố mất một nửa số score2 , thêm nó vào score1 , và lưu trữ các kết quả trong trung bình . Các
phát biểu đúng là:
trung bình = (điểm1 + điểm2) / 2
Trang 11
Bạn có thể tự do thêm dấu ngoặc đơn ngay cả khi bạn không cần chúng để buộc một thứ tự khác
các hoạt động; đôi khi bạn sử dụng chúng chỉ để làm cho ý định của bạn rõ ràng hơn. Ví dụ,
các câu lệnh sau hoạt động giống hệt nhau:
totalPriceWithTax = price + price * TAX_RATE
totalPriceWithTax = price + (price * TAX_RATE)
49
Trong cả hai trường hợp, trước tiên giá được nhân với TAX_RATE , sau đó nó được thêm vào giá và cuối cùng là
kết quả được lưu trong totalPriceWithTax . Vì phép nhân xảy ra trước phép cộng trên
bên phải của toán tử gán, cả hai câu lệnh đều giống nhau. Tuy nhiên, nếu bạn cảm thấy
rằng tuyên bố có dấu ngoặc đơn làm cho ý định của bạn rõ ràng hơn đối với người đọc
chương trình của bạn, thì bạn nên sử dụng chúng.
Tất cả các toán tử số học đều có tính kết hợp từ trái sang phải . Điều này có nghĩa là các hoạt động với
cùng thứ tự ưu tiên diễn ra từ trái sang phải. Hãy xem xét tuyên bố sau:
answer = a + b + c * d / e - f
Phép nhân và phép chia có mức độ ưu tiên cao hơn so với phép cộng hoặc phép trừ, vì vậy
phép nhân và phép chia được thực hiện từ trái sang phải như sau:
c nhân với d , và kết quả chia cho e , cho một kết quả mới.
Do đó, câu lệnh trở thành:
answer = a + b + (kết quả tạm thời vừa tính) - f
Sau đó, phép cộng và phép trừ được thực hiện từ trái sang phải như sau:
a và b được
thêm vào, kết quả tạm thời được cộng, và sau đó f bị trừ. Kết quả cuối cùng là
sau đó được phân công trả lời .
Một cách khác để nói điều này là hai câu lệnh sau là tương đương:
answer = a + b + c * d / e - f
answer = a + b + ((c * d) / e) - f
Tham khảo nhanh 2-2 tóm tắt mức độ ưu tiên và tính liên kết của năm thường xuyên nhất
toán tử đã sử dụng.
THAM KHẢO NHANH 2-2 Mức độ ưu tiên và tính liên kết của năm toán tử phổ biến
Nhà điều hành Ưu tiên (so với
Biểu tượng Tên người vận hành toán tử trong bảng này) Sự liên kết
= Chuyển nhượng Thấp nhất Phải sang trái
Khi bạn làm việc với một ngôn ngữ phân biệt giữa số nguyên và dấu phẩy động
giá trị, bạn có thể kết hợp các loại khác nhau trong biểu thức số học. Khi bạn làm, ngoài ra,
phép trừ và phép nhân hoạt động như mong đợi. Ví dụ: kết quả của 2,3 + 5 là 7,3 và
kết quả của 4,2 * 2 là 8,4. Khi bạn kết hợp các loại, phân chia cũng hoạt động như mong đợi. Đối với
Ví dụ, kết quả của 9.3 / 3 là 3.1.
Tuy nhiên, trong nhiều ngôn ngữ, chia một số nguyên cho một số nguyên khác là một trường hợp đặc biệt. Trong
các ngôn ngữ như Java, C ++ và C #, chia hai số nguyên dẫn đến một số nguyên và bất kỳ
một phần nhỏ của kết quả bị mất. Ví dụ: trong các ngôn ngữ này, kết quả của 7/2 là 3, không phải
3.5 như bạn có thể mong đợi. Các nhà lập trình nói rằng phần thập phân của kết quả bị cắt bỏ,
hoặc bị cắt ngắn.
Khi lập trình bằng ngôn ngữ cắt bớt kết quả của phép chia số nguyên, bạn phải đặc biệt
cẩn thận với các số thấp hơn 1. Ví dụ: nếu bạn viết một chương trình giảm một nửa công thức, bạn có thể sử dụng
một biểu thức chẳng hạn như 1/2 * cốcSugar. Bất kể giá trị của cốcSugar là bao nhiêu, kết quả sẽ
luôn luôn là 0 bởi vì 2 đi vào 1 0 nguyên lần.
Nhiều ngôn ngữ lập trình cũng hỗ trợ toán tử phần dư , đôi khi được gọi là
toán tử mô đun hoặc toán tử mô đun. Khi được sử dụng với hai toán hạng số nguyên,
toán tử phần dư là giá trị còn lại sau khi chia. Ví dụ: 24 Mod 10 là 4
vì khi 24 chia cho 10 thì 4 là số dư. Trong Visual Basic, toán tử phần dư
là từ khóa Mod . Trong Java, C ++ và C #, toán tử là dấu phần trăm (%).
Toán tử còn lại có thể hữu ích trong nhiều trường hợp. Ví dụ, bạn có thể
xác định xem một số là số chẵn hay lẻ bằng cách tìm phần dư khi số đó là
chia cho 2. Bất kỳ số nào có dư là 0 là số chẵn và bất kỳ số nào có dư
của 1 là số lẻ.
Bởi vì toán tử còn lại khác nhau giữa các ngôn ngữ lập trình và vì
hoạt động tự nó được xử lý khác nhau khi được sử dụng với các toán hạng phủ định, phần còn lại
toán tử sẽ không được sử dụng trong phần còn lại của cuốn sách độc lập với ngôn ngữ này. Tương tự, cuốn sách này
sử dụng một kiểu dữ liệu, num , cho tất cả các giá trị số và giả định rằng cả số nguyên và
các giá trị dấu phẩy động có thể được lưu trữ trong các biến num và các hằng số được đặt tên.
Trang 13
1. Dấu ngoặc đơn có mức độ ưu tiên cao hơn bất kỳ phép số học thông thường nào 51
các toán tử.
2. Các phép toán trong câu lệnh số học xảy ra từ trái sang phải theo thứ tự
họ xuất hiện.
điểm = điểm + 5
Bạn có thể tìm hiểu về các mô-đun nhận và trả dữ liệu trong Chương 9 của phiên bản toàn diện của
Cuốn sách này.
Một chương trình chính thực thi một mô-đun bằng cách gọi nó. Để gọi một mô-đun là sử dụng tên của nó để gọi
mô-đun, khiến nó thực thi. Khi nhiệm vụ của mô-đun hoàn tất, điều khiển trả về
đến vị trí mà từ đó mô-đun được gọi trong chương trình chính. Khi bạn truy cập
một mô-đun, hành động tương tự như đặt đầu đĩa DVD ở trạng thái tạm dừng. Bạn từ bỏ chính của bạn
hành động (xem video), thực hiện một số công việc khác (ví dụ: làm bánh mì sandwich) và
sau đó quay lại nhiệm vụ chính chính xác nơi bạn đã dừng lại.
Trang 14
Quá trình chia nhỏ một chương trình lớn thành các mô-đun là quá trình mô- đun hóa ;
các nhà khoa học máy tính cũng gọi nó là sự phân hủy chức năng . Bạn không bao giờ bắt buộc phải
mô-đun hóa một chương trình lớn để làm cho nó chạy trên máy tính, nhưng có ít nhất ba
lý do để làm như vậy:
Nếu không có sự trừu tượng, danh sách công việc sẽ bắt đầu:
Bạn có thể liệt kê hàng chục bước nữa trước khi hoàn thành việc giặt là và chuyển sang bước thứ hai
việc vặt trong danh sách ban đầu của bạn. Nếu bạn phải xem xét từng chi tiết nhỏ, cấp thấp của mọi nhiệm vụ trong
ngày của bạn, có thể bạn sẽ không bao giờ rời khỏi giường vào buổi sáng. Sử dụng cấp cao hơn,
danh sách trừu tượng hơn làm cho ngày của bạn có thể quản lý được. Tính trừu tượng làm cho các nhiệm vụ phức tạp trông đơn giản.
Các nghệ sĩ trừu tượng tạo ra những bức tranh trong đó họ chỉ nhìn thấy bức tranh lớn — màu sắc và hình thức — và bỏ qua
chi tiết. Trừu tượng có một ý nghĩa tương tự giữa các lập trình viên.
Tương tự như vậy, một số mức độ trừu tượng xảy ra trong mọi chương trình máy tính. Năm mươi năm trước, một
lập trình viên phải hiểu các hướng dẫn mạch cấp thấp mà máy tính sử dụng. Nhưng
giờ đây, các ngôn ngữ lập trình cấp cao mới hơn cho phép bạn sử dụng từ vựng giống như tiếng Anh trong
mà một câu lệnh rộng tương ứng với hàng chục lệnh máy. Không có vấn đề gì
ngôn ngữ lập trình cấp cao mà bạn sử dụng, nếu bạn hiển thị thông báo trên màn hình, bạn đang
không bao giờ bắt buộc phải hiểu cách màn hình hoạt động để tạo ra từng pixel trên màn hình. Bạn
Trang 15
viết một hướng dẫn như thông báo đầu ra và các chi tiết của các hoạt động phần cứng là
xử lý cho bạn bởi hệ điều hành.
Mô-đun cung cấp một cách khác để đạt được sự trừu tượng. Ví dụ, một chương trình trả lương có thể gọi
một mô-đun có tên computeFederalWithholdingTax () . Khi bạn gọi mô-đun này từ
chương trình, bạn sử dụng một câu lệnh; bản thân mô-đun có thể chứa hàng chục câu lệnh. Bạn
53
có thể viết chi tiết toán học của mô-đun sau này, người khác có thể viết chúng, hoặc bạn
có thể mua chúng từ một nguồn bên ngoài. Khi bạn lập kế hoạch cho chương trình trả lương chính của mình,
chỉ có mối quan tâm là thuế khấu lưu liên bang sẽ phải được tính toán; bạn lưu các chi tiết
cho sau này.
Mô-đun hóa giúp nhiều lập trình viên làm việc trên một vấn đề
Khi bạn chia bất kỳ nhiệm vụ lớn nào thành các mô-đun, bạn có khả năng dễ dàng phân chia
nhiệm vụ giữa những người khác nhau. Hiếm khi có một lập trình viên nào viết một chương trình thương mại
mà bạn mua. Xem xét bất kỳ chương trình xử lý văn bản, bảng tính hoặc cơ sở dữ liệu nào bạn có
đã sử dụng. Mỗi chương trình có rất nhiều tùy chọn và đáp ứng các lựa chọn của người dùng trong rất nhiều lựa chọn có thể
theo cách, sẽ mất nhiều năm để một lập trình viên viết tất cả các hướng dẫn.
Các nhà phát triển phần mềm chuyên nghiệp có thể viết các chương trình mới trong vài tuần hoặc vài tháng, thay vì
năm, bằng cách chia các chương trình lớn thành các mô-đun và gán mỗi mô-đun cho một cá nhân
lập trình viên hoặc nhóm.
các thành phần chức năng của chương trình của bạn dưới dạng các mô-đun độc lập và kiểm tra chúng trong
các chương trình hiện tại, phần lớn công việc sẽ được thực hiện khi bạn sử dụng các mô-đun trong tương lai
các ứng dụng.
54
1. Mô-đun hóa loại bỏ tính trừu tượng, một tính năng làm cho các chương trình nhiều hơn
gây nhầm lẫn.
2. Mô-đun hóa giúp nhiều lập trình viên làm việc trên một vấn đề dễ dàng hơn.
3. Mô-đun hóa cho phép bạn sử dụng lại công việc dễ dàng hơn.
Khi bạn tạo một mô-đun, bạn bao gồm những điều sau:
Tiêu đề — Tiêu đề mô-đun bao gồm số nhận dạng mô-đun và có thể khác
thông tin nhận dạng cần thiết.
Một phần thân — Phần thân mô-đun chứa tất cả các câu lệnh trong mô-đun.
Một sự trở lại statement-Các mô-đun trở lại tuyên bố đánh dấu sự kết thúc của mô-đun và
xác định điểm tại đó điều khiển quay trở lại chương trình hoặc mô-đun được gọi là
mô-đun. Trong hầu hết các ngôn ngữ lập trình, nếu bạn không bao gồm câu lệnh trả về tại
khi kết thúc mô-đun, logic vẫn sẽ trả về. Tuy nhiên, cuốn sách này tuân theo quy ước
của một cách rõ ràng bao gồm một câu lệnh trả về với mọi mô-đun.
Đặt tên cho một mô-đun tương tự như đặt tên cho một biến. Các quy tắc và quy ước đặt tên
các mô-đun hơi khác nhau trong mọi ngôn ngữ lập trình, nhưng trong văn bản này, tên mô-đun
tuân theo các quy tắc chung được sử dụng cho các số nhận dạng biến:
Tên mô-đun phải bắt đầu bằng một chữ cái và không được chứa khoảng trắng.
Tên mô-đun nên có một số ý nghĩa.
Trang 17
Mặc dù nó không phải là một yêu cầu của bất kỳ ngôn ngữ lập trình nào, nhưng việc sử dụng một động từ thường là hợp lý.
hoặc một phần của tên mô-đun, vì mô-đun thực hiện một số hành động. Tên mô-đun điển hình bắt đầu bằng hành động
các từ như nhận được, tính toán và hiển thị. Khi bạn lập trình bằng ngôn ngữ trực quan sử dụng màn hình
các thành phần như nút và hộp văn bản, tên mô-đun thường chứa các động từ đại diện cho người dùng
các hành động, chẳng hạn như nhấp hoặc kéo.
55
Ngoài ra, trong văn bản này, tên mô-đun được theo sau bởi một tập hợp các dấu ngoặc đơn. Điều này sẽ giúp
bạn phân biệt tên mô-đun với tên biến. Phong cách này tương ứng với cách
mô-đun được đặt tên trong nhiều ngôn ngữ lập trình, chẳng hạn như Java, C ++ và C #.
Khi bạn tìm hiểu thêm về các mô-đun trong các ngôn ngữ lập trình cụ thể, bạn sẽ thấy rằng đôi khi bạn đặt
tên biến trong dấu ngoặc đơn theo sau tên mô-đun. Bất kỳ biến nào được đặt trong dấu ngoặc đơn
chứa thông tin bạn muốn gửi đến mô-đun. Hiện tại, dấu ngoặc đơn ở cuối tên mô-đun
sẽ trống trong cuốn sách này.
Khi một chương trình chính muốn sử dụng một mô-đun, nó sẽ gọi mô-đun đó. Một mô-đun có thể gọi một mô-đun khác
và mô-đun được gọi có thể gọi một mô-đun khác. Số lượng cuộc gọi theo chuỗi chỉ có giới hạn
theo dung lượng bộ nhớ có sẵn trên máy tính của bạn. Trong cuốn sách này, biểu tượng sơ đồ
được sử dụng để gọi một mô-đun là một hình chữ nhật với một thanh ngang trên cùng. Bạn đặt tên của
mô-đun bạn đang gọi bên trong hình chữ nhật.
Một số lập trình viên sử dụng một hình chữ nhật với các sọc dọc xuống mỗi bên để đại diện cho một mô-đun trong một sơ đồ,
và cuốn sách này sử dụng quy ước đó nếu một mô-đun nằm ngoài một chương trình. Ví dụ, viết sẵn, dựng sẵn
mô-đun tạo các số ngẫu nhiên, tính toán các hàm lượng giác tiêu chuẩn và thường xuyên sắp xếp các giá trị
là bên ngoài các chương trình của bạn. Tuy nhiên, nếu mô-đun đang được tạo như một phần của chương trình, sách
sử dụng một hình chữ nhật với một sọc duy nhất trên đỉnh.
Trong một sơ đồ, bạn vẽ từng mô-đun riêng biệt với các ký hiệu lính canh của riêng nó. Các
đầu sentinel chứa tên của mô-đun. Tên này phải giống với
tên được sử dụng trong chương trình hoặc mô-đun gọi. Kết thúc sentinel chứa trả về ,
chỉ ra rằng khi mô-đun kết thúc, tiến trình logic của các câu lệnh sẽ
thoát khỏi mô-đun và quay lại chương trình hoặc mô-đun đang gọi. Tương tự, trong mã giả,
bạn bắt đầu mỗi mô-đun với tên của nó và kết thúc bằng một câu lệnh trả về ; mô-đun
câu lệnh name và return được căn chỉnh theo chiều dọc và tất cả các câu lệnh mô-đun đều
thụt vào giữa chúng.
Ví dụ, hãy xem xét chương trình trong Hình 2-3, không chứa bất kỳ mô-đun nào. Nó
chấp nhận tên và số dư đến hạn của khách hàng làm đầu vào và lập hóa đơn. Ở đầu hóa đơn,
tên và địa chỉ của công ty được hiển thị trên ba dòng, theo sau là
tên khách hàng và số dư đến hạn. Để hiển thị tên và địa chỉ công ty, bạn có thể chỉ cần
bao gồm ba câu lệnh đầu ra trong logic dòng chính của một chương trình, như thể hiện trong Hình 2-3, hoặc
bạn có thể modularizethe chương trình bằng cách tạo cả logic dòng chính và displayAddressInfo ()
mô-đun, như trong Hình 2-4.
Trang 18
Tuyên bố
đầu ra "Tổng:",
thăng bằng
dừng lại
Hình 2-3 Chương trình tạo hóa đơn chỉ sử dụng chương trình chính
© 2015 Cengage Learning
khởi đầu
Trang 19
Tuyên bố
tên chuỗi
số dư
displayAddressInfo ()
tên đầu vào,
thăng bằng
đầu ra "ABC
Chế tạo"
displayAddressInfo ()
đầu ra "Omro, WI
đầu ra "Tổng:", 54963 "
thăng bằng
trở về
dừng lại
57
khởi đầu
Tuyên bố
tên chuỗi
số dư
displayAddressInfo ()
đầu ra "Khách hàng:", tên
đầu ra "Tổng:", số dư
dừng lại
displayAddressInfo ()
đầu ra "ABC Manufacturing"
Hình 2-4 Chương trình tạo hóa đơn sử dụng chương trình chính gọi mô-đun displayAddressInfo ()
© 2015 Cengage Learning
Khi mô-đun displayAddressInfo () được gọi trong Hình 2-4, logic chuyển từ
chương trình chính của mô-đun displayAddressInfo () , như được hiển thị bằng mũi tên lớn màu đỏ trong
cả lưu đồ và mã giả. Ở đó, mỗi câu lệnh mô-đun thực thi lần lượt
trước khi điều khiển logic được chuyển trở lại chương trình chính, nơi nó tiếp tục với
Trang 20
câu lệnh theo sau lệnh gọi mô-đun, như được hiển thị bằng mũi tên lớn màu xanh lam. Lập trình viên nói
các câu lệnh được chứa trong một mô-đun đã được đóng gói .
Cả hai chương trình trong Hình 2-3 và 2-4 đều không vượt trội hơn chương trình kia về mặt
chức năng; cả hai đều thực hiện chính xác các nhiệm vụ giống nhau theo cùng một thứ tự. Tuy nhiên, bạn có thể
thích phiên bản được mô-đun hóa của chương trình vì ít nhất hai lý do:
58
Đầu tiên, chương trình chính vẫn ngắn gọn và dễ theo dõi vì nó chỉ chứa một
câu lệnh để gọi mô-đun, thay vì ba câu lệnh đầu ra riêng biệt để thực hiện
công việc của mô-đun.
Thứ hai, một mô-đun rất dễ sử dụng lại. Sau khi bạn tạo mô-đun thông tin địa chỉ, bạn
có thể sử dụng nó trong bất kỳ ứng dụng nào cần tên và địa chỉ của công ty. Nói cách khác,
bạn thực hiện công việc một lần và sau đó bạn có thể sử dụng mô-đun nhiều lần.
Một nhược điểm tiềm ẩn trong việc tạo các mô-đun và di chuyển giữa chúng là chi phí phát sinh. Máy tính
theo dõi địa chỉ bộ nhớ chính xác mà nó sẽ trả về sau khi thực thi một mô-đun bằng cách ghi lại
địa chỉ bộ nhớ ở một vị trí được gọi là ngăn xếp. Quá trình này yêu cầu một lượng nhỏ máy tính
thời gian và nguồn lực. Trong hầu hết các trường hợp, lợi thế của việc tạo mô-đun vượt xa số lượng nhỏ
chi phí yêu cầu.
Việc xác định thời điểm mô đun hóa một chương trình không phụ thuộc vào một bộ quy tắc cố định; nó
đòi hỏi kinh nghiệm và cái nhìn sâu sắc. Các lập trình viên tuân theo một số nguyên tắc khi quyết định cách thức
xa để chia nhỏ các mô-đun hoặc số lượng cần đưa vào mỗi mô-đun. Một số công ty có thể có
các quy tắc tùy ý, chẳng hạn như "hướng dẫn của mô-đun không bao giờ được chiếm nhiều hơn một trang" hoặc "a
mô-đun không bao giờ được có nhiều hơn 30 câu lệnh, ”hoặc“ không bao giờ có mô-đun chỉ có một
tuyên bố." Thay vì sử dụng các quy tắc tùy tiện như vậy, một chính sách tốt hơn là đặt cùng nhau
các câu lệnh đóng góp vào một nhiệm vụ cụ thể. Các tuyên bố càng đóng góp vào
cùng một công việc, chức năng gắn kết của mô-đun càng lớn. Một mô-đun kiểm tra
tính hợp lệ của giá trị của biến ngày tháng hoặc giá trị yêu cầu người dùng nhập giá trị và chấp nhận nó làm đầu vào, là
được coi là cố kết. Một mô-đun kiểm tra tính hợp lệ của ngày, khấu trừ phí bảo hiểm và
tính thuế khấu lưu của liên bang cho một nhân viên sẽ kém gắn kết hơn.
Chương 9 của phiên bản toàn diện của cuốn sách này cung cấp thêm thông tin về việc thiết kế các mô-đun cho
tính liên kết cao. Nó cũng khám phá chủ đề ghép nối, là thước đo mức độ phụ thuộc vào các mô-đun
lẫn nhau.
trong Hình 2-5. Trong phiên bản này của chương trình, ba hằng số được đặt tên giữ ba dòng
dữ liệu công ty được khai báo trong mô-đun displayAddressInfo () . (Xem phần đổ bóng.)
khởi đầu 59
displayAddressInfo ()
Tuyên bố Tuyên bố
tên chuỗi
string LINE1 = "Sản xuất ABC"
số dư
string LINE2 = "47 Ngõ Công viên"
string LINE3 = "Omro, WI 54963"
displayAddressInfo ()
đầu ra LINE2
đầu ra "Tổng:",
thăng bằng trở về
khởi đầu
dừng lại
Tuyên bố
tên chuỗi
số dư
tên đầu vào, số dư
displayAddressInfo ()
đầu ra "Khách hàng:", tên
đầu ra "Tổng:", số dư
dừng lại
displayAddressInfo ()
Tuyên bố
string LINE1 = "Sản xuất ABC"
string LINE2 = "47 Ngõ Công viên"
string LINE3 = "Omro, WI 54963"
đầu ra LINE1
đầu ra LINE2
đầu ra LINE3
trở về
Hình 2-5 Chương trình thanh toán với các hằng số được khai báo trong mô-đun
© 2015 Cengage Learning
Trang 22
Các biến và hằng số chỉ có thể sử dụng được trong mô-đun mà chúng được khai báo.
Các nhà lập trình cho biết các mục dữ liệu chỉ hiển thị hoặc trong phạm vi trong mô-đun mà
chúng được khai báo. Điều đó có nghĩa là chương trình chỉ nhận ra chúng ở đó. Lập trình viên cũng
nói rằng các biến và hằng là cục bộ của mô-đun mà chúng được khai báo. Trong khác
từ, khi các chuỗi LINE1 , LINE2 và LINE3 được khai báo trong displayAddressInfo ()
mô-đun trong Hình 2-5, chúng không được nhận dạng và không thể được sử dụng bởi mô-đun chính.
Một trong những động lực để tạo mô-đun là các mô-đun riêng biệt có thể dễ dàng sử dụng lại trong
nhiều chương trình. Nếu mô-đun displayAddressInfo () sẽ được một số chương trình sử dụng
trong tổ chức, có nghĩa là các định nghĩa cho các biến và hằng số của nó
phải đi kèm với nó. Điều này làm cho các mô-đun di động hơn ; nghĩa là, họ sống khép kín
đơn vị dễ dàng vận chuyển.
Bên cạnh các biến cục bộ và hằng số, bạn có thể tạo các biến và hằng số toàn cục. Toàn cầu
các biến và hằng được biết đến với toàn bộ chương trình; họ được cho là được khai báo tại
cấp độ chương trình. Điều đó có nghĩa là chúng có thể nhìn thấy và sử dụng được trong tất cả các mô-đun được gọi bởi
chương trình. Điều ngược lại là không đúng - các biến và hằng số được khai báo trong một mô-đun không
sử dụng được ở nơi khác; chúng chỉ hiển thị với mô-đun đó.
Trong nhiều ngôn ngữ lập trình hiện đại, bản thân chương trình chính là một mô-đun, vì vậy các biến
và các hằng được khai báo ở đó không thể được sử dụng ở nơi khác. Để làm các ví dụ trong cuốn sách này
dễ theo dõi hơn, các biến và hằng được khai báo khi bắt đầu chương trình chính sẽ
được coi là toàn cầu và có thể sử dụng được trong tất cả các mô-đun. Cho đến Chương 9 trong phiên bản toàn diện,
cuốn sách này sẽ chỉ sử dụng các biến và hằng số toàn cục để bạn có thể tập trung vào
logic và chưa quan tâm đến các kỹ thuật cần thiết để tạo dữ liệu của một mô-đun
có sẵn cho người khác. Ví dụ, trong Hình 2-5, tên các biến chương trình chính và
số dư là các biến toàn cục và có thể được sử dụng bởi bất kỳ mô-đun nào.
Nhiều lập trình viên không tán thành việc sử dụng các biến và hằng số toàn cục. Chúng được sử dụng ở đây để bạn có thể
dễ dàng hiểu mô-đun hóa hơn trước khi bạn học các kỹ thuật gửi các biến cục bộ từ một
mô-đun khác. Chương 9 của phiên bản toàn diện của cuốn sách này sẽ mô tả cách bạn có thể thực hiện
mọi biến cục bộ.
Hiểu cấu hình phổ biến nhất cho Logic đường chính
Trong Chương 1, bạn đã biết rằng một chương trình thủ tục chứa các thủ tục tuân theo một
khác trong trình tự. Logic dòng chính của hầu hết mọi chương trình máy tính thủ tục đều có thể
tuân theo một cấu trúc chung bao gồm ba phần riêng biệt:
1. Các công việc vệ sinh bao gồm bất kỳ bước nào bạn phải thực hiện khi bắt đầu
chương trình để sẵn sàng cho phần còn lại của chương trình. Chúng có thể bao gồm các nhiệm vụ như
khai báo biến và hằng số, hiển thị hướng dẫn cho người dùng, hiển thị báo cáo
tiêu đề, mở bất kỳ tệp nào mà chương trình yêu cầu và nhập phần dữ liệu đầu tiên.
Nhập mục dữ liệu đầu tiên luôn là một phần của mô-đun dọn phòng. Bạn sẽ học lý thuyết
đằng sau thực tiễn này trong Chương 3. Chương 7 bao gồm xử lý tệp, bao gồm ý nghĩa của việc mở và
đóng một tệp.
Trang 23
2. Các nhiệm vụ vòng lặp chi tiết thực hiện công việc cốt lõi của chương trình. Khi một chương trình xử lý nhiều
các bản ghi, các tác vụ vòng lặp chi tiết thực thi lặp đi lặp lại cho mỗi tập dữ liệu đầu vào cho đến khi có
không còn nữa. Ví dụ, trong một chương trình tính lương, cùng một tập hợp các phép tính được thực hiện
lặp đi lặp lại cho đến khi kiểm tra được cho từng nhân viên.
3. Nhiệm vụ cuối công việc là các bước bạn thực hiện ở cuối chương trình để hoàn thành
61
ứng dụng. Bạn có thể gọi đây là các nhiệm vụ hoàn thành hoặc dọn dẹp. Chúng có thể bao gồm
hiển thị tổng hoặc các thông báo cuối cùng khác và đóng mọi tệp đang mở.
Hình 2-6 cho thấy mối quan hệ của ba phần chương trình điển hình này. Chú ý làm thế nào
Các tác vụ housekeeping () và endOfJob () chỉ
được thực thi một lần, nhưng các tác vụ detailLoop ()
lặp lại miễn là điều kiện eof chưa được đáp ứng. Lưu đồ sử dụng một dòng để hiển thị
mô-đun detailLoop () lặp lại như thế nào ; các giả sử dụng các từ trong khi và endwhile
để chứa các câu lệnh thực thi trong một vòng lặp. Bạn sẽ tìm hiểu thêm về thời gian và
endwhile điều
khoản trong chương tiếp theo; bây giờ, hãy hiểu rằng chúng là một cách
diễn đạt các hành động lặp đi lặp lại.
khởi đầu
Tuyên bố
khởi đầu
dọn phòng () Tuyên bố
dọn phòng ()
trong khi không có
detailLoop ()
Đúng
không eof? cuối cùng
detailLoop ()
endOfJob ()
dừng lại
Không
endOfJob ()
dừng lại
Hình 2-6 Lưu đồ và mã giả của logic dòng chính cho một chương trình thủ tục điển hình
© 2015 Cengage Learning
Trang 24
62
Nhiều công việc hàng ngày tuân theo định dạng ba mô-đun vừa được mô tả. Ví dụ, một cái kẹo
Nhà máy mở cửa vào buổi sáng, và các máy móc được khởi động và chứa đầy nguyên liệu. Những
Các nhiệm vụ dọn phòng chỉ diễn ra một lần vào đầu ngày. Sau đó, lặp đi lặp lại trong ngày,
kẹo được sản xuất. Quá trình này có thể thực hiện nhiều bước, mỗi bước xảy ra nhiều
lần. Đây là các bước trong vòng lặp chi tiết. Sau đó, vào cuối ngày, máy móc sẽ
làm sạch và tắt. Đây là những nhiệm vụ cuối cùng của công việc.
Không phải tất cả các chương trình đều có định dạng logic như trong Hình 2-6, nhưng nhiều chương trình thì có. Giữ cái này
cấu hình chung khi bạn nghĩ về cách bạn có thể tổ chức nhiều chương trình.
Ví dụ, Hình 2-7 cho thấy một báo cáo tiền lương mẫu cho một công ty nhỏ. Một người dùng nhập
tên nhân viên cho đến khi không còn nữa để nhập, lúc này người dùng nhập XXX.
Miễn là tên đã nhập không phải là XXX, người dùng nhập tổng lương hàng tuần của nhân viên.
Các khoản khấu trừ được tính bằng 25% cố định của tổng lương và số liệu thống kê cho từng
nhân viên là đầu ra. Người dùng nhập tên khác và miễn là nó không phải là XXX,
quá trình tiếp tục. Kiểm tra logic trong Hình 2-8 để xác định các thành phần trong
quản lý nhà, vòng lặp chi tiết và các nhiệm vụ cuối công việc. Bạn sẽ tìm hiểu thêm về bảng lương
chương trình báo cáo trong vài chương tiếp theo. Bây giờ, hãy tập trung vào bức tranh toàn cảnh về cách
một ứng dụng điển hình hoạt động.
Tuyên bố đầu ra
tên chuỗi REPORT_HEADING
num tổng 63
khấu trừ num
num net đầu ra
num RATE = 0,25
COLUMN_HEADING
string QUIT = "XXX"
string REPORT_HEADING = "Báo cáo Bảng lương"
string COLUMN_HEADING = "Tổng Tên
Khấu trừ ròng " tên đầu vào
string END_LINE = "*** Kết thúc báo cáo"
trở về
dọn phòng ()
Đúng
tên không bằng
detailLoop ()
đến QUIT?
Một số lập trình viên sẽ không bận tâm đến
tạo một mô-đun chỉ chứa một hoặc
Không hai câu lệnh. Thay vào đó, họ sẽ giữ
detailLoop ()
các câu lệnh này trong logic dòng chính. Các
mô-đun được hiển thị ở đây để bạn có thể tốt hơn
endOfJob () xem bức tranh lớn về cách dòng chính
logic hoạt động bằng cách sử dụng bắt đầu, lặp lại,
tổng đầu vào
và kết thúc nhiệm vụ.
dừng lại
khấu trừ =
Tổng tỉ lệ endOfJob ()
trở về
tên đầu ra,
tổng, khấu trừ, ròng
trở về
1. Một chương trình gọi sẽ gọi tên của mô-đun khi nó muốn sử dụng mô-đun.
2. Bất cứ khi nào một chương trình chính gọi một mô-đun, logic sẽ chuyển đến mô-đun đó;
khi mô-đun kết thúc, chương trình kết thúc.
3. Các công việc dọn phòng bao gồm bất kỳ bước nào bạn phải thực hiện chỉ một lần tại
bắt đầu một chương trình để sẵn sàng cho phần còn lại của chương trình.
TỐI
NGƯỜI LẬP TRÌNH LẬP TRÌNH
NHÀ ĐIỀU HÀNH
Khi một chương trình có một số mô-đun gọi các mô-đun khác, người lập trình thường sử dụng một chương trình
biểu đồ phân cấp (đôi khi được gọi là biểu đồ cấu trúc) hoạt động theo cách tương tự như
hiển thị bức tranh tổng thể về cách các mô-đun liên quan với nhau. Biểu đồ phân cấp không
cho bạn biết những tác vụ nào sẽ được thực hiện trong một mô-đun, khi các mô-đun được gọi, cách
thực thi mô-đun hoặc tại sao chúng được gọi - thông tin đó nằm trong lưu đồ hoặc mã giả.
Biểu đồ phân cấp chỉ cho bạn biết mô-đun nào tồn tại trong một chương trình và mô-đun nào gọi
Trang 27
khác. Biểu đồ phân cấp cho chương trình trong Hình 2-8 giống như Hình 2-10. Nó cho thấy rằng
mô-đun chính gọi ba mô-đun khác— housekeeping () , detailLoop () và endOfJob () .
Hình 2-10 Biểu đồ phân cấp của chương trình báo cáo tiền lương trong Hình 2-8
© 2015 Cengage Learning
Hình 2-11 cho thấy một ví dụ về biểu đồ phân cấp cho chương trình thanh toán của một đơn đặt hàng qua thư
Công ty. Biểu đồ phân cấp dành cho một chương trình phức tạp hơn, nhưng giống như báo cáo bảng lương
biểu đồ trong Hình 2-10, nó cung cấp tên mô-đun và tổng quan chung về các nhiệm vụ
thực hiện, mà không chỉ định bất kỳ chi tiết.
computeTax ()
Bởi vì các mô-đun chương trình có thể sử dụng lại, một mô-đun cụ thể có thể được gọi từ một số vị trí
trong một chương trình. Ví dụ: trong biểu đồ phân cấp chương trình thanh toán ở Hình 2-11, bạn có thể thấy
rằng mô-đun getOrder () được sử dụng hai lần. Theo quy ước, bạn bôi đen một góc của mỗi hộp
đại diện cho một mô-đun được sử dụng nhiều hơn một lần. Hành động này cảnh báo người đọc rằng bất kỳ thay đổi nào đối với điều này
mô-đun có thể có hậu quả ở nhiều vị trí.
Trang 28
Biểu đồ phân cấp có thể vừa là một công cụ lập kế hoạch để phát triển mối quan hệ tổng thể của
chương trình mô-đun trước khi bạn viết chúng và một công cụ tài liệu để giúp những người khác xem cách
các mô-đun có liên quan sau khi một chương trình được viết. Ví dụ: nếu luật thuế thay đổi,
lập trình viên có thể được yêu cầu viết lại mô-đun computeTax () trong chương trình thanh toán
được vẽ trên hình 2-11. Khi người lập trình thay đổi mô-đun computeTax () ,
biểu đồ phân cấp hiển thị các mô-đun phụ thuộc khác có thể bị ảnh hưởng. Biểu đồ phân cấp là
hữu ích để có được bức tranh toàn cảnh trong một chương trình phức tạp.
Biểu đồ phân cấp được sử dụng trong lập trình thủ tục, nhưng các loại biểu đồ khác thường được sử dụng trong
môi trường hướng đối tượng. Chương 13 của ấn bản toàn diện của cuốn sách này mô tả sự Hợp nhất
Ngôn ngữ mô hình hóa, sử dụng một tập hợp các sơ đồ để mô tả một hệ thống.
1. Bạn có thể sử dụng biểu đồ phân cấp để minh họa mối quan hệ của các mô-đun.
2. Biểu đồ phân cấp cho bạn biết những tác vụ nào sẽ được thực hiện trong một mô-đun.
3. Biểu đồ phân cấp chỉ cho bạn biết mô-đun nào gọi các mô-đun khác.
Cung cấp các bình luận về chương trình nếu thích hợp.
Cố gắng thiết kế các tuyên bố rõ ràng trong các chương trình và mô-đun của bạn.
Viết lời nhắc rõ ràng và đầu vào tiếng vọng.
Tiếp tục duy trì thói quen lập trình tốt khi bạn phát triển kỹ năng lập trình của mình.
Nhận xét chương trình là một loại tài liệu nội bộ. Thuật ngữ này phân biệt chúng với hỗ trợ
tài liệu bên ngoài chương trình, được gọi là tài liệu bên ngoài. Phụ lục C thảo luận về các
các loại tài liệu.
Tuyên bố
num sqFeet
// sqFeet là ước tính do người bán tài sản cung cấp
num pricePerFoot
// pricePerFoot được xác định theo điều kiện thị trường hiện tại
num lotPremium
// lotPremium phụ thuộc vào các tiện nghi, chẳng hạn như lô có phải là mặt nước hay không
Hình 2-12 Mã giả khai báo các biến và bao gồm các chú thích
© 2015 Cengage Learning
Trong sơ đồ, bạn có thể sử dụng biểu tượng chú thích để chứa thông tin mở rộng về những gì
được lưu trữ trong một biểu tượng lưu đồ khác. Một biểu tượng chú thích thường được biểu diễn bằng một
hộp ba mặt được kết nối với bước mà nó tham chiếu bằng một đường đứt nét. Chú thích
các biểu tượng được sử dụng để chứa các bình luận hoặc đôi khi là các câu lệnh quá dài để có thể xếp gọn gàng
thành một biểu tượng lưu đồ. Ví dụ, Hình 2-13 cho thấy cách một lập trình viên có thể sử dụng một số
các ký hiệu chú thích trong một sơ đồ cho một chương trình trả lương.
khởi đầu
Trang 30
Tuyên bố
string PROMPT = "Nhập giờ làm việc:" Lưu ý: RATE dự kiến sẽ
num giờ tăng vào ngày 1 tháng Giêng.
num RATE = 13,00
num trả
đầu ra PROMPT
68
Chương trình giả định tất cả nhân viên
pay = giờ * RATE thực hiện cùng một tiêu chuẩn hàng giờ
tỷ lệ.
trả đầu ra
dừng lại
Bạn có thể sẽ sử dụng nhận xét trong các chương trình được mã hóa của mình thường xuyên hơn so với việc bạn sử dụng chúng trong mã giả
hoặc lưu đồ. Đối với một điều, lưu đồ và mã giả giống tiếng Anh hơn mã trong một số
ngôn ngữ, do đó, các tuyên bố của bạn có thể ít khó hiểu hơn. Ngoài ra, nhận xét của bạn sẽ vẫn còn trong chương trình như
một phần của tài liệu chương trình, nhưng các công cụ lập kế hoạch của bạn có thể bị loại bỏ khi chương trình
đi vào sản xuất.
Việc bao gồm nhận xét chương trình là không cần thiết để tạo chương trình làm việc, nhưng nhận xét
có thể giúp bạn nhớ mục đích của các biến hoặc giải thích các phép tính phức tạp,
đặc biệt là khi bạn quay lại một chương trình vài tháng hoặc vài năm sau khi viết nó. Một số sinh viên
không thích đưa nhận xét vào chương trình của họ vì phải mất thời gian nhập chúng và
chúng không phải là một phần của chương trình "thực", nhưng các chương trình bạn viết trong tương lai có thể sẽ
yêu cầu một số nhận xét. Khi bạn có được công việc lập trình đầu tiên và sửa đổi
chương trình được viết bởi một lập trình viên khác, bạn sẽ đánh giá cao những nhận xét đúng chỗ
giải thích các phần phức tạp của mã.
Trang 31
Một trách nhiệm bổ sung liên quan đến các nhận xét là chúng phải được cập nhật khi một chương trình được sửa đổi.
Nhận xét lỗi thời có thể cung cấp thông tin sai lệch về trạng thái của chương trình.
69
Chọn số nhận dạng
Việc lựa chọn các mã nhận dạng tốt là một yếu tố thường bị bỏ qua trong thiết kế chương trình. Khi bạn
viết chương trình, bạn chọn số nhận dạng cho các biến, hằng số và mô-đun. Bạn đã học được
quy tắc đặt tên biến và mô-đun trước đó trong chương này: Mỗi biến phải là một từ duy nhất với
không có dấu cách nhúng và phải bắt đầu bằng một chữ cái. Những quy tắc đơn giản đó cung cấp rất nhiều thời gian trong
đặt tên cho các phần tử chương trình, nhưng không phải tất cả các số nhận dạng đều tốt như nhau. Chọn số nhận dạng tốt
đơn giản hóa công việc lập trình của bạn và giúp người khác hiểu công việc của bạn dễ dàng hơn.
Sử dụng tên có ý nghĩa. Tạo một mục dữ liệu có tên someData hoặc một mô-đun có tên
firstModule () làm
cho một chương trình khó hiểu. Không chỉ những người khác sẽ cảm thấy khó đọc
nhưng bạn sẽ quên mục đích của những số nhận dạng này ngay cả trong
các chương trình. Tất cả các lập trình viên đôi khi sử dụng các tên ngắn gọn, không mô tả như x hoặc
tạm thời trong một chương trình nhanh chóng; tuy nhiên, trong hầu hết các trường hợp, dữ liệu và tên mô-đun phải là
có ý nghĩa. Các lập trình viên đề cập đến các chương trình có chứa các tên có nghĩa là
tự lập tài liệu . Điều này có nghĩa là ngay cả khi không có thêm tài liệu, chương trình
mã tự giải thích cho người đọc.
Sử dụng tên có thể phát âm. Tên biến như pzf không thể phát âm hoặc
có ý nghĩa. Một cái tên trông có ý nghĩa khi bạn viết nó có thể không có ý nghĩa
khi ai đó đọc nó; ví dụ: readyad () có thể có nghĩa là "Chuẩn bị quảng cáo" cho bạn,
nhưng "Chuẩn bị một bài đọc" cho những người khác. Xem xét tên của bạn một cách nghiêm túc để đảm bảo rằng chúng có thể
phát âm. Các chữ viết tắt rất chuẩn không nhất thiết phải phát âm được. Ví dụ,
hầu hết các doanh nhân sẽ giải thích ssn là một số An sinh Xã hội.
Đừng quên rằng không phải tất cả các lập trình viên đều chia sẻ văn hóa của bạn. Một chữ viết tắt có ý nghĩa
có vẻ như hiển nhiên đối với bạn, có thể khó hiểu đối với một người nào đó ở một nơi khác trên thế giới, hoặc thậm chí
phần khác nhau của đất nước của bạn. Ví dụ: bạn có thể đặt tên một biến là roi để giữ một giá trị
cho lợi tức đầu tư, nhưng một người nói tiếng Pháp có thể hiểu nghĩa là vua.
Hãy thận trọng trong việc sử dụng các chữ viết tắt của bạn. Bạn có thể lưu một vài lần nhấn phím khi tạo
mô-đun được gọi là getStat () , nhưng mục đích của mô-đun là tìm trạng thái trong đó một thành phố
xác định vị trí, nhập một số thống kê hoặc xác định trạng thái của một số biến? Tương tự, là một
biến có tên fn có nghĩa là để chứa tên, số tệp hoặc một cái gì đó khác?
Các từ viết tắt cũng có thể gây nhầm lẫn cho mọi người trong các lĩnh vực công việc khác nhau: AKA có thể đề xuất
nữ sinh (Alpha Kappa Alpha) cho một quản trị viên đại học, một cơ quan đăng ký (American Kennel
Liên kết) với một người nuôi chó, hoặc một bí danh (còn được gọi là) cho một thám tử cảnh sát.
Trang 32
Để tiết kiệm thời gian đánh máy khi bạn phát triển một chương trình, bạn có thể sử dụng một tên ngắn như efn. Sau chương trình
hoạt động chính xác, bạn có thể sử dụng tính năng Tìm kiếm và Thay thế của trình soạn thảo văn bản để thay thế tên mã của bạn bằng
một tên có ý nghĩa hơn chẳng hạn như EmployFirstName. Khi làm việc trong một sự phát triển tích hợp
môi trường, bạn có thể sử dụng kỹ thuật được gọi là tái cấu trúc để đổi tên mọi trường hợp của số nhận dạng.
70
Nhiều IDE hỗ trợ tính năng hoàn thành câu lệnh tự động giúp tiết kiệm thời gian đánh máy. Sau lần đầu tiên bạn
sử dụng tên như workerFirstName, bạn chỉ cần nhập một vài ký tự đầu tiên trước trình biên dịch
trình soạn thảo cung cấp một danh sách các tên có sẵn để chọn. Danh sách được xây dựng từ tất cả những cái tên bạn
đã sử dụng bắt đầu bằng các ký tự giống nhau.
Thông thường, tránh các chữ số trong tên. Số 0 có thể bị nhầm lẫn với chữ O và
chữ l viết thường bị đọc sai thành chữ số 1. Tất nhiên, hãy sử dụng phán đoán của bạn:
BudgetFor2014 có thể sẽ không bị hiểu sai.
Sử dụng các quy tắc mà ngôn ngữ của bạn cho phép để tách các từ trong các tên biến dài, nhiều từ. Đối với
ví dụ: nếu ngôn ngữ lập trình bạn sử dụng cho phép dấu gạch ngang hoặc dấu gạch dưới, thì hãy sử dụng
tên mô-đun như initialize-data () hoặc initialize_data () , dễ đọc hơn
khởi tạo dữ liệu () .
Một tùy chọn khác là sử dụng vỏ lạc đà để tạo mã nhận dạng chẳng hạn như
khởi tạo dữ liệu () .
Nếu bạn sử dụng ngôn ngữ phân biệt chữ hoa chữ thường, ngôn ngữ đó là hợp pháp nhưng dễ gây nhầm lẫn khi sử dụng
tên biến chỉ khác nhau trong trường hợp. Ví dụ: nếu một chương trình có chứa empName ,
EmpName và Empname , chắc chắn sẽ xảy ra sự nhầm lẫn.
Cân nhắc đưa một dạng của động từ to be, chẳng hạn như is hoặc are, vào tên cho các biến
nhằm giữ một trạng thái. Ví dụ: sử dụng isFinishing làm biến chuỗi chứa
Y hoặc N để cho biết tệp đã hết hay chưa. Tên ngắn hơn hoàn thành có nhiều khả năng
bị nhầm lẫn với một mô-đun thực thi khi một chương trình được thực hiện xong. (Nhiều ngôn ngữ
hỗ trợ kiểu dữ liệu Boolean mà bạn gán cho các biến có nghĩa là chỉ giữ đúng hoặc
sai. Sử dụng một dạng của để ở trong số nhận dạng cho các biến Boolean là thích hợp.)
Nhiều lập trình viên tuân theo quy ước đặt tên hằng số bằng cách sử dụng tất cả các chữ hoa
chữ cái, chèn gạch dưới giữa các từ để dễ đọc. Trong chương này bạn đã thấy
ví dụ như SALES_TAX_RATE .
Các tổ chức đôi khi thực thi các quy tắc khác nhau để các lập trình viên tuân theo khi đặt tên
các thành phần của chương trình. Bạn có trách nhiệm tìm ra các quy ước được sử dụng trong
tổ chức và tuân thủ chúng.
Các lập trình viên đôi khi tạo một từ điển dữ liệu, là danh sách của mọi tên biến được sử dụng trong một
chương trình, cùng với loại, kích thước và mô tả của nó. Khi một từ điển dữ liệu được tạo, nó sẽ trở thành một phần của
tài liệu chương trình.
Khi bạn bắt đầu viết chương trình, quá trình xác định biến, hằng số và
các mô-đun bạn cần và đặt tên cho chúng tất cả có vẻ quá sức. Quá trình thiết kế
là rất quan trọng, tuy nhiên. Khi bạn nhận được nhiệm vụ lập trình chuyên nghiệp đầu tiên của mình,
quá trình thiết kế rất có thể đã được hoàn thành. Rất có thể, nhiệm vụ đầu tiên của bạn sẽ là
để viết hoặc sửa đổi một mô-đun thành viên nhỏ của một ứng dụng lớn hơn nhiều. Càng nhiều
các lập trình viên ban đầu tuân thủ các nguyên tắc đặt tên, thiết kế ban đầu càng tốt và
công việc sửa đổi của bạn sẽ dễ dàng hơn.
Trang 33
Sử dụng các biến tạm thời để làm rõ các câu lệnh dài
Khi bạn cần một số phép toán để xác định kết quả, hãy xem xét sử dụng một chuỗi
của các biến tạm thời để giữ các kết quả trung gian. Một biến tạm thời (hoặc biến công việc )
không được sử dụng cho đầu vào hoặc đầu ra, mà thay vào đó chỉ là một biến làm việc mà bạn sử dụng trong
thực hiện chương trình. Ví dụ, Hình 2-14 cho thấy hai cách để tính giá trị cho một giá trị thực
nhân viên kinh doanh bất động sản Biến truyền tải. Mỗi ví dụ đều đạt được kết quả giống nhau —
hoa hồng của nhân viên bán hàng dựa trên bộ vuông nhân với giá mỗi bộ vuông,
cộng với bất kỳ khoản phí bảo hiểm nào cho lô đất có tính năng đặc biệt, chẳng hạn như lô đất có nhiều cây cối hoặc ven sông. Tuy nhiên,
ví dụ thứ hai sử dụng hai biến tạm thời: basePropertyPrice và totalSalePrice .
Khi việc tính toán được chia nhỏ thành các bước riêng lẻ, ít phức tạp hơn, thì việc
xem tổng giá được tính như thế nào. Trong các phép tính với nhiều bước tính toán hơn nữa,
thực hiện số học theo từng giai đoạn sẽ ngày càng trở nên hữu ích.
Hình 2-14 Hai cách để đạt được cùng một nhân viên bán hàng
© 2015 Cengage Learning
Các lập trình viên có thể nói rằng việc sử dụng các biến tạm thời, như ví dụ thứ hai trong Hình 2-14, là rẻ.
Trang 34
Khi thực hiện một câu lệnh số học dài dòng, ngay cả khi bạn không đặt tên rõ ràng cho các biến tạm thời,
trình biên dịch ngôn ngữ lập trình tạo chúng đằng sau hậu trường (mặc dù không có tên mô tả),
vì vậy việc tự khai báo chúng không tốn nhiều chi phí về thời gian thực hiện chương trình.
nhắc nhở cho người dùng. Lời nhắc là một thông báo được hiển thị trên màn hình để yêu cầu người dùng
phản hồi và có thể giải thích cách phản hồi đó nên được định dạng. Lời nhắc được sử dụng cả hai
trong các chương trình tương tác dòng lệnh và GUI.
Ví dụ: giả sử một chương trình yêu cầu người dùng nhập số danh mục cho một mặt hàng mà người dùng
đặt hàng. Lời nhắc sau không hữu ích lắm:
Vui lòng nhập một số.
Vui lòng nhập số thứ tự danh mục gồm năm chữ số.
Khi đầu vào chương trình đến từ tệp được lưu trữ thay vì người dùng, không cần lời nhắc.
Tuy nhiên, khi một chương trình mong đợi phản hồi của người dùng, các lời nhắc sẽ có giá trị. Ví dụ, Hình
2-15 hiển thị lưu đồ và mã giả cho phần bắt đầu của chương trình tạo hóa đơn
được hiển thị trước đó trong chương này. Nếu đầu vào đến từ một tệp dữ liệu, sẽ không có lời nhắc nào
bắt buộc, và logic có thể giống như logic trong Hình 2-15.
khởi đầu
khởi đầu
Tuyên bố
Hình 2-15 Bắt đầu một chương trình chấp nhận tên và số dư làm đầu vào
© 2015 Cengage Learning
Trang 35
Tuy nhiên, nếu đầu vào đến từ người dùng, bao gồm cả lời nhắc sẽ hữu ích. Bạn
có thể cung cấp một lời nhắc đơn lẻ chẳng hạn như Vui lòng nhập tên khách hàng và số dư đến hạn, nhưng
việc chèn nhiều yêu cầu hơn vào lời nhắc thường khiến người dùng ít có khả năng
nhớ nhập đầy đủ các bộ phận hoặc nhập đúng thứ tự. Nó hầu như luôn luôn là tốt nhất để
bao gồm một lời nhắc riêng cho từng mục cần nhập. Hình 2-16 cho thấy một ví dụ.
73
khởi đầu
Tuyên bố
tên chuỗi
số dư
khởi đầu
Tuyên bố
đầu ra "Please
nhập của khách hàng tên chuỗi
Tên " số dư
đầu ra "Vui lòng nhập tên khách hàng"
tên đầu vào
đầu ra "Please
nhập số dư
do "
số dư đầu vào
Hình 2-16 Bắt đầu một chương trình chấp nhận tên và số dư làm đầu vào và sử dụng
nhắc nhở cho từng mục
© 2015 Cengage Learning
Người dùng cũng thấy hữu ích khi bạn lặp lại thông tin đầu vào của họ. Đầu vào tiếng vọng là hành động lặp lại
nhập lại cho người dùng trong lời nhắc tiếp theo hoặc trong đầu ra. Ví dụ, Hình 2-17
cho thấy lời nhắc thứ hai trong Hình 2-16 có thể được cải thiện như thế nào bằng cách lặp lại lời nhắc đầu tiên của người dùng
phần dữ liệu đầu vào trong dấu nhắc thứ hai. Khi người dùng chạy chương trình được khởi động trong
Hình 2-17 và nhập Màu xanh lá cây cho tên khách hàng, lời nhắc thứ hai sẽ không là Vui lòng
nhập số dư đến hạn. Thay vào đó, nó sẽ là Vui lòng nhập số dư đến hạn cho Màu xanh lá cây. Ví dụ, nếu một nhân viên bán hàng
sắp nhập số dư cho khách hàng sai, đề cập đến Màu xanh lá cây có thể là
đủ để cảnh báo cho nhân viên về lỗi tiềm ẩn.
Trang 36
khởi đầu
Tuyên bố
74 tên chuỗi
số dư
khởi đầu
Tuyên bố
đầu ra "Please tên chuỗi
nhập của khách hàng
Tên " số dư
đầu ra "Vui lòng nhập tên khách hàng"
tên đầu vào đầu ra "Vui lòng nhập số dư đến hạn cho", tên
số dư đầu vào
đầu ra "Please
nhập số dư
do ", name
Hình 2-17 Bắt đầu một chương trình chấp nhận tên của khách hàng và sử dụng nó trong lời nhắc thứ hai
1. Nhận xét chương trình là một thông báo được hiển thị trên màn hình để hỏi người dùng 75
để có phản hồi và có thể giải thích cách định dạng phản hồi đó.
2. Thông thường, việc đặt cho mỗi biến một tên có chứa danh từ và để
đặt tên cho mỗi mô-đun có chứa động từ.
3. Đầu vào tiếng vọng có thể giúp người dùng xác nhận rằng một mục dữ liệu đã được nhập chính xác.
Khi bạn tạo một mô-đun, bạn bao gồm một tiêu đề, một nội dung và một câu lệnh trả về .
Một chương trình hoặc mô-đun gọi tên của mô-đun để thực thi nó. Bạn có thể đặt bất kỳ câu lệnh nào
trong các mô-đun, bao gồm các khai báo, là cục bộ của mô-đun. Các biến toàn cục
và hằng số là những thứ mà toàn bộ chương trình đã biết. Logic dòng chính của
hầu hết mọi chương trình máy tính thủ tục đều có thể tuân theo một cấu trúc chung bao gồm
ba phần riêng biệt: nhiệm vụ dọn phòng, nhiệm vụ vòng lặp chi tiết và nhiệm vụ kết thúc công việc.
Biểu đồ phân cấp minh họa các mô-đun và mối quan hệ của chúng; nó cho biết mô-đun nào
tồn tại trong một chương trình và mô-đun nào gọi những người khác.
Khi các chương trình trở nên lớn hơn và phức tạp hơn, nhu cầu lập kế hoạch và thiết kế tốt
tăng. Bạn nên sử dụng các bình luận của chương trình nếu thích hợp. Chọn số nhận dạng
một cách khôn ngoan, cố gắng thiết kế các tuyên bố rõ ràng trong các chương trình và mô-đun của bạn, viết rõ ràng
lời nhắc và đầu vào tiếng vọng, đồng thời tiếp tục duy trì thói quen lập trình tốt khi bạn
phát triển kỹ năng lập trình của bạn.
Một hằng số (hoặc hằng số theo nghĩa đen ) là một giá trị số cụ thể.
Một hằng số chuỗi (hoặc chuỗi liên tục theo nghĩa đen ) là một nhóm cụ thể của nhân vật kèm theo trong vòng
dấu ngoặc kép.
Giá trị chữ và số có thể chứa các ký tự chữ cái, số và dấu chấm câu.
Một hằng số không được đặt tên là một giá trị số hoặc chuỗi theo nghĩa đen.
Một khai báo là một câu lệnh cung cấp một kiểu dữ liệu, một số nhận dạng và, tùy chọn, một
giá trị ban đầu.
Kiểu dữ liệu của mục dữ liệu là một phân loại mô tả những giá trị nào có thể được chỉ định, cách
mục được lưu trữ và những loại thao tác nào có thể được thực hiện với mục đó.
Khởi tạo một biến là hành động gán giá trị đầu tiên của nó, thường là cùng lúc biến
khai báo.
Garbage mô tả giá trị không xác định được lưu trữ trong một biến chưa được gán.
Từ khóa bao gồm tập hợp từ giới hạn được dành riêng cho một ngôn ngữ.
Trang 39
Camel casing là một quy ước đặt tên trong đó ký tự đầu tiên là chữ thường, nhiều từ
các tên được chạy cùng nhau và mỗi từ mới trong tên bắt đầu bằng một chữ cái viết hoa.
Vỏ lạc đà dưới là một tên gọi khác của quy ước đặt tên vỏ lạc đà.
Cách viết hoa trong Pascal là một quy ước đặt tên trong đó chữ cái đầu tiên là chữ hoa, nhiều từ
các tên được chạy cùng nhau và mỗi từ mới trong tên bắt đầu bằng một chữ cái viết hoa.
Vỏ lạc đà trên là một tên gọi khác của quy ước đặt tên vỏ trong Pascal.
Ký hiệu Hungary là quy ước đặt tên trong đó kiểu dữ liệu hoặc thông tin khác
được lưu trữ như một phần của tên.
Vỏ rắn là một quy ước trong đó các phần của tên được phân tách bằng dấu gạch dưới.
Trường hợp hỗn hợp có dấu gạch dưới là một quy ước đặt tên tương tự như cách đặt tên cho rắn, nhưng là các từ mới
bắt đầu bằng một chữ cái viết hoa.
Trường hợp Kebob đôi khi được sử dụng làm tên cho kiểu sử dụng dấu gạch ngang để tách các bộ phận
của một cái tên.
Một câu lệnh gán sẽ gán một giá trị từ bên phải của toán tử gán cho
biến hoặc hằng ở bên trái của toán tử gán.
Các toán tử gán là dấu bằng; nó được sử dụng để gán một giá trị cho biến
hoặc hằng số ở bên trái của nó.
Một nhà điều hành nhị phân là một nhà điều hành mà yêu cầu hai toán hạng-one ở mỗi bên.
Một toán hạng là một giá trị được sử dụng bởi một nhà điều hành.
Thuyết kết hợp phải và liên kết từ phải sang trái mô tả các toán tử đánh giá
biểu thức bên phải đầu tiên.
Giá trị là mã định danh địa chỉ bộ nhớ ở bên trái của toán tử gán.
Một biến số là một trong đó có thể chứa chữ số, đã hoạt động toán học thực hiện
trên đó, và thường có thể chứa một dấu thập phân và một dấu hiệu cho biết dương hoặc âm.
Một biến chuỗi có thể chứa văn bản bao gồm các chữ cái, chữ số và các ký tự đặc biệt như
dấu chấm câu.
An toàn kiểu là tính năng của một số ngôn ngữ lập trình ngăn chặn việc gán các giá trị của
một kiểu dữ liệu không chính xác.
Một hằng số được đặt tên tương tự như một biến, ngoại trừ việc giá trị của nó không thể thay đổi sau giá trị đầu tiên
sự phân công.
Một số ma thuật là một hằng số không có tên mà mục đích của nó không rõ ràng ngay lập tức.
Các quy tắc ưu tiên quy định thứ tự thực hiện các thao tác trong cùng một câu lệnh
thực hiện.
Trang 40
Phép kết hợp trái sang phải mô tả các toán tử đánh giá biểu thức ở bên trái trước tiên.
Các nhà điều hành còn lại là một toán tử số học được sử dụng trong một số ngôn ngữ lập trình;
khi được sử dụng với hai toán hạng số nguyên, nó dẫn đến phần còn lại sau khi chia.
Mô-đun là các đơn vị chương trình nhỏ mà bạn có thể sử dụng cùng nhau để tạo chương trình. Lập trình viên
cũng đề cập đến các mô-đun dưới dạng chương trình con , thủ tục , hàm hoặc phương thức .
Để gọi một mô-đun là sử dụng tên của mô-đun để gọi nó, làm cho nó thực thi.
Mô-đun hóa là quá trình chia nhỏ một chương trình thành các mô-đun.
Phân rã chức năng là hành động giảm một chương trình lớn thành các mô-đun dễ quản lý hơn.
Trừu tượng hóa là quá trình chú ý đến các thuộc tính quan trọng trong khi bỏ qua
chi tiết không cần thiết.
Khả năng tái sử dụng là tính năng của các chương trình mô-đun cho phép các mô-đun riêng lẻ được sử dụng trong một
nhiều ứng dụng.
Độ tin cậy là đặc điểm của các chương trình mô-đun đảm bảo cho bạn một mô-đun đã được thử nghiệm và
được chứng minh là hoạt động chính xác.
Một chương trình chính chạy từ đầu đến dừng và gọi các mô-đun khác.
Các lý đường chính là logic xuất hiện trong mô-đun chính của chương trình; nó gọi các mô-đun khác.
Các tiêu đề mô-đun bao gồm nhận dạng mô-đun và cần thiết có thể khác xác định
thông tin.
Phần thân mô-đun chứa tất cả các câu lệnh trong mô-đun.
Câu lệnh trả về mô-đun đánh dấu sự kết thúc của mô-đun và xác định điểm
tại đó điều khiển quay trở lại chương trình hoặc mô-đun được gọi là mô-đun.
Đóng gói là hành động chứa các lệnh của một tác vụ trong một mô-đun.
Một ngăn xếp là một vị trí bộ nhớ, trong đó máy tính theo dõi bộ nhớ đúng
địa chỉ mà nó sẽ trả về sau khi thực thi một mô-đun.
Sự gắn kết chức năng của một mô-đun là thước đo mức độ mà tất cả các mô-đun
các câu lệnh đóng góp vào cùng một nhiệm vụ.
Hiển thị mô tả các mục dữ liệu khi một mô-đun có thể nhận ra chúng.
Cục bộ mô tả các biến được khai báo trong mô-đun sử dụng chúng.
Một di mô-đun là một trong đó có thể dễ dàng được tái sử dụng trong nhiều chương trình.
Các công việc dọn phòng bao gồm các bước bạn phải thực hiện khi bắt đầu chương trình để có được
sẵn sàng cho phần còn lại của chương trình.
Trang 41
Các nhiệm vụ vòng lặp chi tiết của một chương trình bao gồm các bước được lặp lại cho mỗi tập dữ liệu đầu vào.
Nhiệm vụ cuối công việc giữ các bước bạn thực hiện ở cuối chương trình để hoàn thành ứng dụng.
Một biểu đồ phân cấp là một sơ đồ minh họa mối quan hệ module với nhau.
Nhận xét chương trình là giải thích bằng văn bản không phải là một phần của logic chương trình nhưng 79
phục vụ như tài liệu cho những người đọc chương trình.
Tài liệu nội bộ là tài liệu trong một chương trình được mã hóa.
Tài liệu bên ngoài là tài liệu nằm ngoài một chương trình được mã hóa.
Một biểu tượng chú thích chứa thông tin mở rộng về những gì xuất hiện trong một
ký hiệu lưu đồ; nó thường được đại diện bởi một hộp ba mặt được kết nối
đến bước mà nó tham chiếu bằng một đường đứt nét.
Các chương trình tự lập tài liệu là những chương trình có chứa các số nhận dạng có ý nghĩa mô tả
mục đích.
Một từ điển dữ liệu là một danh sách của tất cả các tên biến được sử dụng trong một chương trình, cùng với loại của nó,
kích thước và mô tả.
Một biến tạm thời (hoặc biến công việc ) là một biến mà bạn sử dụng để giữ các kết quả trung gian
trong quá trình thực hiện chương trình.
Lời nhắc là một thông báo được hiển thị trên màn hình để yêu cầu người dùng phản hồi và
có lẽ giải thích cách phản hồi đó nên được định dạng.
Đầu vào tiếng vọng là hành động lặp lại đầu vào trở lại người dùng trong một lời nhắc tiếp theo
hoặc ở đầu ra.
.
Trang 42 Bài tập
4. Giá trị 3 là a .
80
a. biến số c. biến chuỗi
b. hằng số d. chuỗi không đổi
5. Toán tử chuyển nhượng .
a. là một toán tử nhị phân c. thường được biểu thị bằng dấu hai chấm
b. có sự kết hợp từ trái sang phải d. hai trong số những điều trên
6. Điều nào sau đây là đúng về cấp số cộng?
17. Các câu lệnh không thực thi mà người lập trình đặt trong mã để giải thích là gì
câu lệnh chương trình bằng tiếng anh?
19. Lời khuyên nào sau đây là hợp lệ để đặt tên biến?
a. Để tiết kiệm việc nhập, hãy đặt hầu hết các tên biến có một hoặc hai chữ cái.
b. Để tránh xung đột với các tên mà người khác đang sử dụng, hãy sử dụng các tên khác thường hoặc
tên không phát âm được.
c. Để làm cho tên dễ đọc hơn, hãy tách các tên dài bằng cách sử dụng dấu gạch dưới
hoặc viết hoa cho mỗi từ mới.
d. Để duy trì sự độc lập của bạn, hãy tránh xa các quy ước của
cơ quan.
Trang 44
20. Thông báo yêu cầu người dùng nhập đầu vào là a (n) .
a. bình luận c. tiếng vang
b. lời nhắc d. tờ khai
82
1. Giải thích tại sao mỗi tên sau đây có hoặc không giống như một biến tốt
tên cho bạn.
a. d
b. dsctamt
https://translate.googleusercontent.com/translate_f 39/44
9/7/2021 Khai báo và sử dụng biến và hằng số
c. giảm giá
d. số tiền chiết khấu
e. giảm giá
f. giảm giáAmountForEachNewCustomer
g. giảm giá năm 2015
h. Năm 2015
2. Nếu productCost và productPrice là các biến số, và productName là một
biến chuỗi, câu lệnh nào sau đây là phép gán hợp lệ? Nếu một
tuyên bố không hợp lệ, giải thích tại sao không.
a. productCost = 100
b. productPrice = productCost
c. productPrice = productName
d. productPrice = "24,95"
e. 15,67 = productCost
f. productCost = $ 1,345,52
g. productCost = productPrice - 10
h. productName = "miếng lót chuột"
Tôi. productCost + 20 = productPrice
j. productName = đinh 3 inch
k. productName = 43
l. productName = "44"
m. "99" = productName
n. productName = bàn chải
Trang 45
Bài tập
o. pin = productName
p. productPrice = productPrice
q. productName = productCost
3. Giả sử rằng thu nhập = 8 và chi phí = 6 . Giá trị của mỗi
83
biểu thức sau?
4. Vẽ biểu đồ phân cấp điển hình cho một chương trình tạo hóa đơn hàng tháng cho một
khách hàng điện thoại di động. Hãy thử nghĩ về ít nhất 10 mô-đun riêng biệt có thể
bao gồm. Ví dụ: một mô-đun có thể tính phí cho điện thoại ban ngày
phút đã sử dụng.
5. a. Vẽ biểu đồ phân cấp và sau đó lập kế hoạch logic cho một chương trình cần thiết bởi
giám đốc kinh doanh của The Henry Old Car Dealership. Chương trình sẽ xác định
https://translate.googleusercontent.com/translate_f 40/44
9/7/2021 Khai báo và sử dụng biến và hằng số
lợi nhuận
giá trên
cho một bất kỳ
chiếc chiếcSản
xe hơi. xe lượng
nào đãlàbán.
lợi Đầu vàolàbao
nhuận, giá gồm giáđi
bán trừ bán và giá mua thực tế
giá mua. Sử dụng ba mô-đun. Chương trình chính khai báo các biến toàn cục
và gọi các mô-đun dọn phòng, chi tiết và kết thúc công việc. Công việc dọn phòng
mô-đun nhắc nhở và chấp nhận giá ưu đãi. Mô-đun chi tiết nhắc nhở cho
và chấp nhận giá mua, tính toán lợi nhuận và hiển thị kết quả.
Mô-đun kết thúc công việc hiển thị thông báo Cảm ơn bạn đã sử dụng chương trình này.
b. Sửa đổi chương trình xác định lợi nhuận để nó chạy liên tục cho bất kỳ
số lượng ô tô. Vòng lặp chi tiết thực hiện liên tục trong khi giá bán không phải là 0;
ngoài việc tính toán lợi nhuận, nó còn nhắc người dùng và nhận được lần bán hàng tiếp theo
giá bán. Mô-đun kết thúc công việc thực thi sau khi 0 được nhập cho giá ưu đãi.
6. a. Vẽ biểu đồ phân cấp và sau đó lập kế hoạch logic cho một chương trình tính toán
chỉ số khối cơ thể (BMI) của một người. BMI là một thước đo thống kê so sánh một
cân nặng và chiều cao của người đó. Chương trình sử dụng ba mô-đun. Lời nhắc đầu tiên
người dùng cho và chấp nhận chiều cao của người dùng tính bằng inch. Mô-đun thứ hai chấp nhận
trọng lượng của người dùng tính bằng pound và chuyển đổi chiều cao của người dùng thành mét và cân nặng thành
ki-lô-gam. Sau đó, nó tính BMI bằng trọng lượng theo kg chia cho chiều cao trong
mét bình phương và hiển thị kết quả. Có 2,54 cm trong một inch,
100 cm tính bằng mét, 453,59 gam tính bằng pound và 1.000 gam tính bằng
ki-lô-gam. Sử dụng các biểu tượng được đặt tên bất cứ khi nào bạn nghĩ rằng chúng phù hợp. Cuối cùng
mô-đun hiển thị thông báo Kết thúc công việc.
b. Sửa đổi chương trình xác định BMI để thực thi liên tục cho đến khi người dùng
nhập 0 cho chiều cao tính bằng inch.
Trang 46
7. Vẽ biểu đồ phân cấp và thiết kế logic cho một chương trình tính toán dịch vụ
tính phí cho dịch vụ Dọn dẹp nhà cửa của Hazel. Chương trình bao gồm dịch vụ dọn phòng,
vòng lặp chi tiết và mô-đun kết thúc công việc. Chương trình chính khai báo bất kỳ toàn cục cần thiết nào
biến và hằng số và gọi các mô-đun khác. Mô-đun dọn phòng
hiển thị lời nhắc và chấp nhận họ của khách hàng. Trong khi người dùng không
84 nhập ZZZZ cho tên, vòng lặp chi tiết chấp nhận số lượng phòng tắm và
số lượng các phòng khác cần được dọn dẹp. Phí dịch vụ được tính là $ 40 cộng thêm
$ 15 cho mỗi phòng tắm và $ 10 cho mỗi phòng khác. Vòng lặp chi tiết cũng
hiển thị phí dịch vụ và sau đó nhắc người dùng cho khách hàng tiếp theo
Tên. Mô-đun kết thúc công việc, thực thi sau khi người dùng vào trạm gác
giá trị cho tên, hiển thị thông báo cho biết chương trình đã hoàn tất.
8. Vẽ biểu đồ phân cấp và thiết kế logic cho một chương trình tính toán
chi phí dự kiến của một chuyến đi ô tô. Giả sử rằng ô tô của người dùng đi được quãng đường 20
Miles mỗi gallon khí. Thiết kế một chương trình nhắc người dùng nhập một số
of miles driven and a current cost per gallon. Chương trình tính toán và
hiển thị chi phí của chuyến đi cũng như chi phí nếu giá xăng tăng 10 phần trăm.
Chương trình chấp nhận dữ liệu liên tục cho đến khi nhập số 0 cho số
miles. Sử dụng các mô-đun thích hợp, bao gồm một mô-đun hiển thị Kết thúc chương trình
khi chương trình kết thúc.
9. a. Vẽ biểu đồ phân cấp và thiết kế logic cho một chương trình cần
quản lý của đội bóng mềm Stengel County, người muốn tính toán slugging
phần trăm cho người chơi của mình. Phần trăm slugging là tổng số base kiếm được với
số lần truy cập cơ bản chia cho số con dơi của người chơi. Thiết kế một chương trình
nhắc người dùng về số áo đấu của cầu thủ, số cơ sở kiếm được và
số lượng dơi, và sau đó hiển thị tất cả dữ liệu, bao gồm cả
slugging trung bình. Chương trình nhận người chơi liên tục cho đến khi nhập 0
cho số áo đấu. Sử dụng các mô-đun thích hợp, bao gồm một mô-đun hiển thị
https://translate.googleusercontent.com/translate_f 41/44
9/7/2021 Khai báo và sử dụng biến và hằng số
Kết thúc công việc sau khi người phụ trách được nhập số áo.
b. Sửa đổi chương trình phần trăm trượt để cũng tính toán dựa trên cơ sở của người chơi
tỷ lệ phần trăm. Tỷ lệ phần trăm trên cơ sở được tính bằng cách thêm số lần truy cập của người chơi và
đi bộ, và sau đó chia cho tổng của dơi, đi bộ và ruồi hy sinh.
Nhắc người dùng về tất cả dữ liệu bổ sung cần thiết và hiển thị tất cả dữ liệu cho
mỗi người chơi.
c. Sửa đổi chương trình bóng mềm để nó cũng tính toán tổng sản lượng trung bình
(Điểm trung bình) cho mỗi người chơi. Điểm trung bình được tính bằng cách nhân trên cơ sở của một người chơi
phần trăm của 1,8, sau đó thêm phần trăm trượt của người chơi, và sau đó
chia cho bốn.
10. Vẽ biểu đồ phân cấp và thiết kế logic cho một chương trình cho River Falls
Công ty xây dựng Homes. Thiết kế một chương trình nhắc người dùng về một
số lô trong phân khu River Falls và dữ liệu về ngôi nhà sẽ được xây dựng
ở đó, bao gồm số phòng ngủ, số phòng tắm và số lượng
ô tô các nhà để xe giữ. Đầu ra là giá của ngôi nhà, là cơ sở 50.000 đô la
giá cộng thêm $ 17,000 cho mỗi phòng ngủ, $ 12,500 cho mỗi phòng tắm và $ 6,000 cho
Trang 47
Bài tập
mỗi chiếc xe mà nhà xe giữ. Chương trình nhận số lô liên tục cho đến khi
0 được nhập. Sử dụng các hằng số được đặt tên nếu thích hợp. Ngoài ra, sử dụng thích hợp
mô-đun, bao gồm một mô-đun hiển thị Kết thúc công việc sau khi nhập cảnh sát cho
số lô.
11. Vẽ biểu đồ phân cấp và thiết kế logic cho một chương trình cho Arnie's Appli- 85
dấu ngoặc kép. Thiết kế chương trình nhắc người dùng nhập tên kiểu tủ lạnh và
chiều cao, chiều rộng và chiều sâu của nội thất tính bằng inch. Tính công suất tủ lạnh
tính bằng feet khối trước tiên bằng cách nhân chiều cao, chiều rộng và chiều sâu để có được inch khối,
và sau đó chia cho 1728 (số inch khối trong một foot khối). Các
chương trình chấp nhận tên mô hình liên tục cho đến khi "XXX" được nhập. Sử dụng có tên
hằng số nếu thích hợp. Cũng sử dụng các mô-đun, bao gồm một mô-đun hiển thị Kết thúc
công việc sau khi đã nhập tên mô hình vào mô hình.
1. Tệp có tên MAINTENANCE02-01.txt được bao gồm trong tệp có thể tải xuống của bạn
hồ sơ sinh viên. Giả sử rằng chương trình này là một chương trình làm việc trong tổ chức của bạn-
và nó cần sửa đổi như được mô tả trong các nhận xét (dòng
bắt đầu bằng hai dấu gạch chéo) ở đầu tệp. Công việc của bạn là thay đổi
chương trình để đáp ứng các thông số kỹ thuật mới.
Tìm lỗi
1. Các tệp có thể tải xuống của bạn cho Chương 2 bao gồm DEBUG02-01.txt, DEBUG02-02.
txt và DEBUG02-03.txt. Mỗi tệp bắt đầu với một số nhận xét mô tả
vấn đề. Nhận xét là những dòng bắt đầu bằng hai dấu gạch chéo (//). Theo dõi
nhận xét, mỗi tệp chứa mã giả có một hoặc nhiều lỗi bạn phải
tìm và sửa lại.
2. Các tệp có thể tải xuống của bạn cho Chương 2 bao gồm một tệp có tên DEBUG02-04.jpg
chứa một sơ đồ có lỗi cú pháp và / hoặc lôgic. Kiểm tra lưu đồ và
https://translate.googleusercontent.com/translate_f 42/44
9/7/2021 Khai báo và sử dụng biến và hằng số
sau đó tìm và sửa tất cả các lỗi.
1. Để các trò chơi thu hút sự quan tâm của bạn, chúng hầu như luôn bao gồm một số ngẫu nhiên,
hành vi không thể đoán trước. Ví dụ, một trò chơi mà bạn bắn tiểu hành tinh sẽ thua
một số điều thú vị nếu các tiểu hành tinh đi theo cùng một con đường có thể dự đoán được mỗi khi bạn chơi.
Do đó, việc tạo ra các giá trị ngẫu nhiên là một thành phần quan trọng trong việc tạo ra hầu hết các
trò chơi máy tính esting. Nhiều ngôn ngữ lập trình được tích hợp sẵn
Trang 48
mô-đun bạn có thể sử dụng để tạo số ngẫu nhiên. Cú pháp khác nhau ở mỗi
ngôn ngữ, nhưng nó thường giống như sau:
myRandomNumber = ngẫu nhiên (10)
Trong câu lệnh này, myRandomNumber là một biến số mà bạn đã khai báo và
86 biểu thức ngẫu nhiên (10) có nghĩa là “gọi một phương thức tạo và trả về một
số từ 1 đến 10 ” Theo quy ước, trong sơ đồ, bạn sẽ cảm thấy kinh ngạc
như thế này trong một biểu tượng xử lý với hai sọc dọc ở các cạnh, như được hiển thị bên dưới.
myRandomNumber =
ngẫu nhiên (10)
Tạo lưu đồ hoặc mã giả thể hiện logic cho một chương trình tạo
một số ngẫu nhiên, sau đó yêu cầu người dùng nghĩ về một số từ 1 đến 10.
Sau đó, hiển thị số được tạo ngẫu nhiên để người dùng có thể biết liệu họ
đoán là chính xác. (Trong các chương sau, bạn sẽ cải thiện trò chơi này để người dùng
có thể nhập một dự đoán và chương trình có thể xác định xem người dùng có đúng hay không.)
1. Manyprogrammingstyleguidesarepublishedthe Web.Theseguidessuggestgood
số nhận dạng, giải thích các quy tắc thụt lề chuẩn và xác định các vấn đề về kiểu cụ thể
ngôn ngữ lập trình. Tìm hướng dẫn phong cách cho ít nhất hai ngôn ngữ (đối với
ví dụ, C ++, Java, Visual Basic hoặc C #) và liệt kê bất kỳ sự khác biệt nào bạn nhận thấy.
2. Có những ưu điểm gì khi yêu cầu các biến phải có kiểu dữ liệu?
3. Asthischapter đề cập, một số ngôn ngữ lập trình yêu cầu các hằng số được đặt tên
được gán một giá trị khi chúng được khai báo; các ngôn ngữ khác cho phép giá trị của một hằng số
sẽ được chỉ định sau này trong một chương trình. Bạn nghĩ yêu cầu nào tốt hơn? Tại sao?
4. Nhiều sản phẩm sử dụng vỏ Pascal hoặc vỏ lạc đà trong tên của chúng – ví dụ:
Thẻ MasterCard. Đặt tên càng nhiều càng tốt.
5. Đo khoảng cách là một tình huống trong đó sử dụng phép chia số nguyên và
toán tử còn lại có thể hữu ích. Ví dụ, nếu ngôn ngữ lập trình
hỗ trợ nó, bạn có thể chia số đo 123 inch cho 12 để được 10 feet, sau đó
sử dụng toán tử phần dư để phát hiện ra rằng phép đo là 3 inch trên 10 feet.
Hãy nghĩ đến một số tình huống khác mà bạn có thể thấy toán tử phần dư hữu ích.
6. Bạn muốn tự mình viết một chương trình lớn hay làm việc theo nhóm trong
mà mỗi lập trình viên tạo ra một hay nhiều mô-đun? Tại sao?
https://translate.googleusercontent.com/translate_f 43/44
9/7/2021 Khai báo và sử dụng biến và hằng số
7. Lập trình cực đoan là một hệ thống để phát triển phần mềm nhanh chóng. Một trong những nguyên lý của nó
là tất cả mã sản xuất được viết bởi hai lập trình viên ngồi tại một máy.
Đây có phải là một ý tưởng tốt? Làm việc theo cách này với tư cách là một lập trình viên có hấp dẫn bạn không? Tại sao hay
tại sao không?
https://translate.googleusercontent.com/translate_f 44/44