Bài 1
Mục t
i
K
ết thú
¾ P
h
¾ Biế
¾ Nê
¾ Nắ
¾ Hi
¾ V
ẽ
¾ Liệ
Giới t
h
Ngày
n
điều hư
nghệ T
viên cầ
Ðầu ti
(Progr
a
1.1 R
Khi mộ
hình. Ð
tính. H
máy t
này, h
ệ
đưa ra
hay n
h
lệnh tạ
Để rõ
h
sữa dâu
sau :
1.
2.
3.
Bây gi
Chúng
¾
¾
1
iêu:
úc bài học này
hân biệt sự khá
ết được quá tr
ên dùng C khi
ắm được cấu t
ểu rõ khái niệ
ẽ lưu đồ (flow
ệt kê các ký h
hiệu
nay, khoa học
ướng sự phát
Thông tin và l
ần phải biết. V
ên chúng ta
am) và Phần m
Ra lệnh cho m
ột máy tính đ
Ðiều này diễn
Hệ điều hành
ính và thi
ết l
ệ điều hành p
lời giải cho m
hiều vấn đề. M
ạo thành một c
hơn, chúng ta
u. Anh ta thấy
Lấy một ít s
Đổ nước ép
Trộn hỗn hợ
ờ nếu bạn của
ta hãy phân t
Lệnh đầu ti
Lệnh thứ h
a
y, bạn có thể:
ác nhau giữa
rình hình thàn
i nào và tại sa
trúc một chươ
ệm giải thuật
wchart)
hiệu dùng tron
c máy tính th
t triển thế giớ
lập trình nói c
Vì thế, trong
tìm hi
ểu sự
mềm (Softwa
máy tính làm
được khởi độ
n ra thế nào?
(operating s
y
lập các thông
phải được cấu
một hay nhiề
Mỗi chương tr
chương trình
a hãy xem xét
y ngon miệng
sữa.
p dâu vào.
ợp này và làm
a chúng ta the
tích chỉ thị (lệ
ên : Lệnh này
ai : Một lần nữ
:
Câu lệnh, C
h
nh C
ao
ơng trình C
(algorithms)
ng lưu đồ
âm nhập vào
ới. Bất cứ ng
chung. Cụ thể
giáo trình nà
khác nhau c
are).
việc
ộng, nó sẽ tự
Câu t
rả lời đ
ystem) được x
g số ban đầu t
u tạo từ một t
u bài toán nà
rình là tập hợ
và một nhóm
t một thí dụ :
g và muốn xin
m lạnh.
eo những chỉ
ệnh) ở trên
y hoàn chỉnh c
ữa, lệnh này k
Những k
hương trình và
mọi lĩnh vực
gành nghề nào
ể, C là một n
ày, chúng ta s
của những kh
động thực th
đơn giản là nh
xem như phầ
trước khi trao
tập hợp các c
ào đóMọi chư
ợp các câu lện
m các chương
Một người
b
n công thức là
dẫn này, họ c
chưa ? Nó có
không nói rõ
khái niệm
à Phần mềm
c. Tự động hó
o cũng cần p
ngôn ngữ lập
ẽ nghiên cứ
u
hái niệm: Lệ
hi một số tiến
hờ vào Hệ đi
n mềm hệ th
o quyền cho n
hương trình.
ương trình cố
nh giải quyết
trình tạo thà
n
bạn đến nhà c
àm. Chúng ta
cũng có thể tạ
ó trả lời được
nước ép dâu
m cơ bản về
óa hiện đang
phải hiểu biết
trình cấp cao
u chi tiết cấu
ệnh (Comman
n trình và xu
iều hành cài đ
ống. Phần mề
người dùng.
Mọi chương
g
ắng đưa ra
một bài toán
nh một phần m
chúng ta chơi
a hướng dẫn c
ạo ra món sữa
câu hỏi lấy sữ
để ‘ở đâu’.
ề ngôn ngữ
là ngành chủ
t ít nhiều về
o mà mọi lập
trúc n
gôn ng
nd), Chương
uất kết quả ra
đặt bên trong
ềm này khởi
Để làm đượ
c
trình đều cố
giải pháp ch
o
cụ thể. Một n
mềm.
và được mờ
i
cho anh ta làm
a dâu tuyệt vờ
ữa ‘ở đâu’ ?.
ữ C
ủ chốt
Công
t
rình
gữ C.
trình
a màn
g máy
động
c điều
g
ắng
o một
nhóm
i món
m như
ời.
2 Lập trình cơ bản C
May mắn là bạn của chúng ta đủ thông minh để hiểu được công thức pha chế nói trên, dù rằng còn
nhiều điểm chưa rõ ràng. Do vậy nếu chúng ta muốn phổ biến cách làm, chúng ta cần bổ sung các
bước như sau :
1. Rót một ly sữa vào máy trộn.
2. Đổ thêm vào một ít nước dâu ép.
3. Ðóng nắp máy trộn
4. Mở điện và bắt đầu trộn
5. Dừng máy trộn lại
6. Nế
u đã trộn đều thì tắt máy, ngược lại thì trộn tiếp.
7. Khi đã trộn xong, rót hỗn hợp vào tô và đặt vào tủ lạnh.
8. Ðể lạnh một lúc rồi lấy ra dùng.
So sánh hai cách hướng dẫn nêu trên, hướng dẫn thứ hai chắc chắn hoàn chỉnh, rõ ràng hơn, ai cũng có
thể đọc và hiểu được.
Tương tự, máy tính cũng xử lý dữ liệu dựa vào tập lệnh mà nó nhận được. Ðương nhiên các chỉ thị
đưa cho máy vi tính cũng cần phải hoàn chỉnh và có ý nghĩa rõ ràng. Những chỉ thị này cần phải tuân
thủ các quy tắc:
1. Tuần tự
2. Có giới hạn
3.
Chính xác.
Mỗi chỉ thị trong tập chỉ thị được gọi là “câu lệnh” và tập các câu lệnh được gọi là “chương trình”.
Chúng ta hãy xét trường hợp chương trình hướng dẫn máy tính cộng hai số.
Các lệnh trong chương trình có thể là :
1. Nhập số thứ nhất và nhớ nó.
2. Nhập số thứ hai và nhớ nó.
3. Thực hiện phép cộng giữa số thứ nhất và số thứ hai, nhớ
kết quả phép cộng.
4. Hiển thị kết quả.
5. Kết thúc.
Tập lệnh trên tuân thủ tất cả các quy tắc đã đề cập. Vì vậy, tập lệnh này là một chương trình và nó sẽ
thực hiện thành công việc cộng hai số trên máy tính.
Ghi chú: Khả năng nhớ của con người được biết đến như là trí nhớ, khả năng nhớ dữ liệu
được đưa vào máy tính được gọi là “bộ nhớ”. Máy tính nhận dữ liệu tại một thời điểm và
làm việc với dữ liệu đó vào thời điểm khác, nghĩa là máy tính ghi dữ liệu vào trong bộ
nhớ rồi sau đó đọc ra để truy xuất các giá trị dữ liệu và làm việc với chúng.
Khi khối lượng công việc giao cho máy tính ngày càng nên nhiều và phức tạp thì tất cả các
câu lệnh không thể được đưa vào một chương trình, chúng cần được chia ra thành một số
chương trình nhỏ hơn. Tất cả các chương trình này cuối cùng được tích hợp lại để chúng có
thể làm việc với nhau. Một tập hợp các chương trình như thế được gọi là phần mềm.
Mối q
bằng s
1.2
N
Vào đ
ầ
dụng lầ
Martin
người k
Trong
ki
ểu dữ
C liên
hành
n
C cũn
g
hành c
trình so
hành U
Trình b
thể đượ
dịch C
C khi
t
hàm m
lý dễ d
1.2.1
C
C đượ
c
những
của m
á
loại m
nhưng
ki
ểu dữ
dùng c
1.2.2
C
quan hệ giữa
sơ đồ trong h
Ngôn ngữ C
ầu những năm
ần đầu trên m
n Richards ph
khởi thủy ra C
khi BCPL v
ữ liệu chính g
kết chặt chẽ v
nào. C rất hiệu
g được dùng đ
của máy tính
oạn thảo (Ed
UNIX được ph
biên dịch (co
ợc biên dịch v
dịch nhanh v
thực thi cũng
mà chúng sẽ đ
dàng mà tốn rấ
C – Ngôn ngữ
c hiểu là ngô
chức năng củ
áy tính như b
áy tính này c
nó không đư
ữ liệu. Nó cho
ho lập trình m
C - Ngôn ngữ
a ba khái niệ
hình 1.1:
Hình
m 70 tại phòng
một hệ thống
át tri
ển. BCP
C.
và B không h
gồm : kiểu ký
với hệ thống
u quả để viết c
để lập trình h
h hay những t
ditors), chươn
hát triển dựa v
mpiler) C có
và chạy trên m
và cho ra mã
r
ất nhanh nh
được tái sử dụ
ất ít công sức
ữ bậc trung
ôn ngữ bậc tru
ủa hợp ngữ (n
bits, bytes, địa
có thể chạy t
ược xem ngan
o phép thao tá
mức hệ thống
ữ cấu trúc
P
Commands
ệm câu lệnh
1.1: Phần mề
g thí nghiệm B
cài đặt hệ đi
L sau đó đã đ
hỗ trợ kiểu dữ
tự (character
UNIX nhưng
các chương tr
hệ thống. Một
tiện ích hỗ trợ
ng trình Hợp
vào C. C đan
sẵn cho hầu
máy khác chỉ
đối tượng kh
ư hợp ngữ (A
ụng cho chươ
.
ung bởi vì nó
ngôn ngữ cấp
a chỉ…. Hơn
trên một loại
ng hàng với ng
ác trực tiếp tr
.
Program 1
s
h, chương trì
ềm, chương t
Bell, Dennis
iều hành UN
được Ken Th
ữ liệu, thì C đ
r), kiểu số ngu
g không bị tró
rình thuộc nhi
t chương trình
ợ nó. Hệ điều
Ngữ (Assem
ng được sử dụ
hết các máy
ỉ cần thay đổi
hông lỗi.
Assembly). Lậ
ơng trình khác
ó kết hợp nhữ
thấp). C cho
nữa, mã C r
ấ
máy tính kh
gôn ngữ cao
rên bits, bytes
Software
Command
ình và phần
trình và câu
Ritchie đã ph
NIX. C có ngu
ompson phát
đã có nhiều k
uyên (interger
ói buộc vào b
iều những lĩn
h hệ thống có
u hành (OS),
mbly) là các c
ụng rộng rãi b
tính. Mã lệ
n
i rất ít hoặc k
ập trình viên c
c. Do đó, nhữ
ững yếu tố củ
phép thao tác
ất dễ di chuy
hác. Mặc dù C
cấp về mặt ki
s, word và con
Program 2
ds
mềm có thể
lệnh
hát triển ngôn
uồn gốc từ ng
triển thành n
kiểu dữ liệu k
r) và kiểu số t
ất cứ một má
nh vực khác n
ó ý nghĩa liên
trình thông d
hương trình h
ởi vì tính hiệu
nh viết bằng C
không thay đổ
có thể tạo ra
ững dự án lớn
ủa những ngô
c trên những
ển nghĩa là p
C có năm kiể
iểu dữ liệu. C
n trỏ (pointer
2
Commands
ể được biểu
n ngữ C. C đư
gôn ngữ BCP
ngôn ngữ B, đ
khác nhau. N
thực (float).
áy tính hay hệ
nhau.
n quan đến hệ
dịch (Interpre
hệ thống. Hệ
u quả và linh
C trên máy n
ổi gì cả. Trình
và bảo trì thư
n có thể được
ôn ngữ cấp ca
thành phần cơ
phần mềm viế
ểu dữ liệu cơ
C cho phép ch
r). Vì vậy, nó
s
diễn
ược sử
PL do
đây là
Những
ệ điều
ệ điều
eters),
ệ điều
hoạt.
ày có
h biên
ư viện
quản
ao và
ơ bản
ết cho
ơ bản,
huyển
được
4 Lập trình cơ bản C
Thuật ngữ ngôn ngữ cấu trúc khối (block-structured language) không áp dụng với C. Ngôn ngữ cấu
trúc khối cho phép thủ tục (procedures) hay hàm (functions) được khai báo bên trong các thủ tục và
hàm khác. C không cho phép việc tạo hàm trong hàm nên nó không phải là ngôn ngữ cấu trúc khối.
Tuy nhiên, nó được xem là ngôn ngữ cấu trúc vì nó có nhiều điểm giống với ngôn ngữ cấu trúc
ALGOL, Pascal và một số ngôn ngữ tương tự khác.
C cho phép có sự tổng hợp của mã lệnh và dữ liệu. Ðiều này là một đặc đi
ểm riêng biệt của ngôn ngữ
cấu trúc. Nó liên quan đến khả năng tập hợp cũng như ẩn dấu tất cả thông tin và các lệnh khỏi phần
còn lại của chương trình để dùng cho những tác vụ riêng biệt. Ðiều này có thể thực hiện qua việc dùng
các hàm hay các khối mã lệnh (Code Block). Các hàm được dùng để định nghĩa hay tách rời những
tác vụ được yêu cầu trong chương trình. Ðiều này cho phép những chương trình hoạt
động như trong
một đơn vị thống nhất. Khối mã lệnh là một nhóm các câu lệnh chương trình được nối kết với nhau
theo một trật tự logic nào đó và cũng được xem như một đơn vị thống nhất. Một khối mã lệnh được
tạo bởi một tập hợp nhiều câu lệnh tuần tự giữa dấu ngoặc mở và đóng xoắn như d
ưới đây
:
do
{
i = i + 1;
.
.
.
} while (i < 40);
Ngôn ngữ cấu trúc hỗ trợ nhiều cấu trúc dùng cho vòng lặp (loop) như là while, do-while, và for.
Những cấu trúc lặp này giúp lập trình viên điều khiển hướng thực thi trong chương trình.
1.3 Cấu trúc chương trình C
C có một số từ khóa, chính xác là 32. Những từ khóa này kết hợp với cú pháp của C hình thành ngôn
ngữ C. Nhưng nhiều trình biên dịch cho C đã thêm vào những từ khóa dùng cho việc tổ chức bộ nhớ ở
những giai đoạn tiền xử lý nhất định.
Vài quy tắc khi lập trình C như sau :
- Tất cả từ khóa là chữ thường (không in hoa)
- Ðoạn mã trong chương trình C có phân biệt chữ thường và chữ hoa. Ví dụ : do while thì khác
với DO WHILE
- Từ khóa không thể dùng cho các mục đích khác như đặt tên biến (variable name) hoặc tên hàm
(function name)
- Hàm main() luôn là hàm đầu tiên được gọi đến khi một chương trình bắt đầu chạy (chúng ta sẽ
xem xét kỹ hơn ở phần sau)
Xem xét đoạn mã chương trình:
main ()
{
/* This is a sample program */
int i = 0;
i = i + 1;
.
.
}
Ghi c
xem
1.3.1
Ð
Chươ
n
main()
thi. Tê
n
những
1.3.2
D
Sau đị
n
ngoặc
đánh
d
mã lện
Hơn n
ữ
cho cấu
1.3.3 D
Dòng
k
ết thú
phím s
một hà
thúc bằ
1.3.4
D
Nhữn
g
chương
thúc bằ
hiệu nà
sample
Ví dụ:
int a =
1.3.5 T
T
ất cả
đặt C
đ
Khi lập
Một hà
chương
khi số
1.4
B
Nhữn
g
hiện nh
¾
So
chú: Những k
như là đoạn m
Ðịnh nghĩa H
ng trình C đư
. Hệ điều hàn
n hàm luôn đ
tham số (para
Dấu phân cá
nh nghĩa hàm
xoắn đóng }
dấu điểm bắt đ
nh đó. Trong đ
ữa, đối với hà
u trúc vòng lặ
Dấu kết thúc
int i = 0
úc bằng dấu c
spacebar hay
àng nhưng mỗ
ằng dấu chấm
Dòng chú thí
g chú thích th
g trình. Trình
ằng */. Trườn
ày, toàn bộ ch
e program" là
0; // Biến ‘a’
Thư viện C (
trình biên dị
đặt thư viện t
p trình, những
àm (được viế
g trình khi đư
khác lại yêu c
Biên dịch và
g bước khác n
hư sau :
ạn thảo/Xử
l
khía cạnh khác
mã mẫu, nó sẽ
Hàm
ược chia thàn
nh luôn trao q
được theo sau
ameters).
ch (Delimite
m sẽ là dấu ng
sau câu lệnh
đầu của một
đoạn mã mẫu
àm, dấu ngoặc
ặp và lệnh điề
c câu lệnh (T
0
; trong đoạn
hấm phẩy (;)
một khoảng
ỗi câu lệnh ph
m phẩy được x
ích (Commen
hường được v
h biên dịch sẽ
ng hợp chú th
hương trình sẽ
à dòng chú th
đã được kha
Librar
y)
ch C chứa
m
trong một tập
g hàm được c
ết bởi một lập
ược yêu cầu. V
cầu tạo một th
thực thi một
nhau của việc
lý từ
c nhau của chư
được dùng lại
nh từng đơn v
quyền điều k
là cặp dấu ng
rs)
goặc xoắn mở
h cuối trong h
khối mã lệnh
có 2 câu lệnh
c xoắn cũng d
ều kiện..
erminator)
n mã mẫu là m
). C không hiể
cách do dùng
hải được kết
xem như một
nt)
viết để mô tả
không dịch
c
hích có nhiều
ẽ bị coi như l
hích. Trong trư
i báo như là m
một thư viện h
p tin (file) lớn
chứa trong thư
p trình viên)
Vài trình biên
hư viện riêng
t chương trìn
c dịch một ch
ương trình C đ
i trong suốt ph
vị gọi là hàm
khiển cho hàm
goặc đơn (). T
ở {. Nó thông
hàm chỉ ra đi
h, dấu ngoặc x
h giữa 2 dấu n
dùng để phân
một câu lệnh
ểu việc xuống
g phím tab. C
thúc bằng dấ
câu lệnh sai.
ả công việc củ
chúng. Trong
u dòng, ta ph
là một chú thí
ường hợp chú
một kiểu số n
hàm chuẩn dù
n trong khi đa
ư viện có thể
có thể được
n dịch cho ph
.
nh (Compilin
hương trình C
được xem xét
hần còn lại của
m. Ð
oạn mã m
m main() khi
Trong dấu ngo
g báo điểm b
iểm kết thúc
xoắn đóng đá
ngoặc xoắn.
định những
đ
h (statement).
g dòng dùng p
Có thể có nhi
ấu chấm phẩy
ủa một lệnh đ
g C, chú thích
ải chú ý ký h
ích. Trong đo
ú thích chỉ trê
guyên (interg
ùng cho nhữn
a số còn lại ch
được dùng ch
đặt trong thư
ép hàm được
ng and Runn
C từ mã nguồ
qua đoạn mã t
a giáo trình nà
mẫu
chỉ có d
một chương
oặc đơn có th
ắt đầu của hà
của hàm. Dấ
ánh dấu điểm
đoạn mã trong
Một câu lệnh
phím Enter, k
ều hơn một c
y. Một câu lện
đặc biệt, một
h bắt đầu bằng
hiệu kết thúc
oạn mã mẫu d
ên một dòng
ger)
ng tác vụ chun
hứa nó trong
ho nhiều loại
ư viện và đượ
thêm vào thư
ning)
ồn thành mã t
trên. Ðoạn mã
ày.
duy nhất một
trình C được
hể có hay khôn
àm. Tương tự
ấu ngoặc xoắ
m kết thúc của
g trường hợp
h trong C thì
khoảng trắng
câu lệnh trên
nh không đượ
t hàm hay toà
g ký hiệu /* v
(*/), nếu thiế
dòng chữ "Thi
ta có thể dùn
ng. Một vài b
nhiều tập tin
tác vụ khác n
ợc dùng bởi n
ư viện chuẩn
thực thi được
ã này
t hàm
c thực
ng có
ự, dấu
ắn mở
a khối
dùng
được
dùng
cùng
ợc kết
àn bộ
và kết
ếu ký
is is a
ng //.
bộ cài
n nhỏ.
nhau.
nhiều
trong
c thực
6 Lập trình cơ bản C
Ta dùng một trình xử lý từ (word processor) hay trình soạn thảo (editor) để viết mã nguồn (source
code). C chỉ chấp nhận loại mã nguồn viết dưới dạng tập tin văn bản chuẩn. Vài trình biên dịch
(compiler) cung cấp môi trường lập trình (xem phụ lục) gồm trình soạn thảo.
¾ Mã nguồn
Ðây là đoạn văn bản của chương trình mà người dùng có thể đọc. Nó là đầu vào của trình biên
dịch C
.
¾ Bộ tiền xử lý C
Từ mã nguồn, bước đầu tiên là chuyển nó qua bộ tiền xử lý của C. Bộ tiền xử lý này sẽ xem xét
những câu lệnh bắt đầu bằng dấu #. Những câu lệnh này gọi là các chỉ thị tiền biên dịch
(directives). Điều này sẽ được giải thích sau. Chỉ thị tiền biên dịch thường được đặt nơi bắt đầu
chương trình mặc dù nó có thể
được đặt bất cứ nơi nào khác. Chỉ thị tiền biên dịch là những tên
ngắn gọn được gán cho một tập mã lệnh.
¾ Mã nguồn mở rộng C
Bộ tiền xử lý của C khai triển các chỉ thị tiền biên dịch và đưa ra kết quả. Ðây gọi là mã nguồn C
mở rộng, sau đó nó được chuyển cho trình biên dịch C.
¾ Trình biên dịch C (Compiler)
Trình biên dịch C dịch mã nguồn mở
rộng thành ngôn ngữ máy để máy tính hiểu được.
Nếu chương trình quá lớn nó có thể được chia thành những tập tin riêng biệt và mỗi tập tin có thể
được biên dịch riêng rẽ. Ðiều này giúp ích khi mà một tập tin bị thay đổi, toàn chương trình không
phải biên dịch lại.
¾ Bộ liên kết (Linker)
Mã đối tượng cùng với những thủ tục hỗ trợ trong thư viện chuẩn và những hàm được dịch riêng
lẻ khác k
ết nối lại bởi Bộ liên kết để cho ra mã có thể thực thi được.
¾
Bộ
M
ã
Ti
ế
1.5
Chúng
trước
r
Giả s
ử
chúng
BƯỚ
C
BƯỚC
BƯỚC
BƯỚC
Thủ tụ
tập hợ
p
Một g
i
giải qu
Qua p
h
đó, kế
m
ẩu th
ộ nạp (Loade
ã thực thi đượ
ến trình trên đ
Các bước l
ta thường gặ
rồi sau đó mớ
ử chúng ta mu
ta cần hiểu n
C 1 : Rời phòn
C 2 : Ðến cầu
C 3 : Xuống tầ
C 4 : Ði tiếp đ
c trên liệt kê
p các bước nh
iải thuật (còn
uyết vấn đề. N
hần trên, chún
đến chúng ta
hông tin đó. C
# include
Tập tin thê
Library
Thư việ
er)
ợc thi hành bở
được mô tả qu
Hình 1
ập trình giả
i
ặp phải những
ới hoạch định
uốn đi từ phò
nó rồi tìm ra c
ng
thang
ầng hầm
ến quán ăn tự
tập hợp các b
hư vậy gọi là
n gọi là thuật
Nó gồm một tậ
ng ta thấy rõ
a cần tập hợp
Cuối cùng, chú
e file
êm vào
File
ện
ởi bộ nạp của
ua lưu đồ 1.2
.2: Biên dịc
h
i quyết vấn đ
g bài toán. Đ
các bước c
ần
òng học đến
ác bước
giải
ự phục vụ
bước thực hiệ
giải thuật (Al
toán) có thể
ập hợp các bư
ràng để giải
p tất cả nhữn
úng ta cho ra
So
Chươ
Co
Trìn
Ob
Tập t
L
Bộ
Exec
Tập
hệ thống.
sau :
h và thực thi
đề
ể giải quyết n
n làm .
quán ăn tự
p
quyết trước
ện được xác đ
lgorithm hay
được định n
g
ước giúp đạt đ
quyết được m
g thông tin li
lời giải của b
ource file
ơng trình gốc
ompiler
h biên dịch
bject File
in đối tượng
Linker
ộ liên kết
cutable File
tin thực thi
một chương
những bài toá
phục vụ ở tần
khi thực thi c
định rõ ràng c
gọi vắn tắt là
ghĩa như là m
được lời giải.
một bài toán,
iên quan tới n
bài toán đó.
t
trình
án đó, chúng
ng hầm. Ðể t
các bước đó:
cho việc giải
à algo ).
một thủ tục, cô
trước tiên ta
nó. Bước kế
Other Use
generate
Object Fi
Các tập tin t
thi khác của n
dùng
ta cần hiểu c
hực hiện việc
quyết vấn đề
ông thức hay
phải hiểu bài
sẽ là xử lý n
er-
ed
ile
thực
người
chúng
c này
. Một
y cách
i toán
những
8 Lập trình cơ bản C
Giải thuật chúng ta có là một tập hợp các bước được liệt kê dưới dạng ngôn ngữ đơn giản. Rất có thể
rằng các bước trên do hai người khác nhau viết vẫn tương tự nhau nhưng ngôn ngữ dùng diễn tả các
bước có thể khác nhau. Do đó, cần thiết có những phương pháp chuẩn mực cho việc viết giải thuật để
mọi người dễ dàng hiểu nó. Chính vì vậy , giải thuật được viế
t bằng cách dùng hai phương pháp chuẩn
là mã giả (pseudo code) và lưu đồ (flowchart).
Cả hai phương pháp này đều dùng để xác định một tập hợp các bước cần được thi hành để có được lời
giải. Liên hệ tới vấn đề đi đến quán ăn tự phục vụ trên, chúng ta đã vạch ra một kế hoạch (thuật toán)
để đến đích. Tuy nhiên, để đến nơi, chúng ta phải cần thi hành những bước này thật s
ự. Tương tự, mã
giả và lưu đồ chỉ đưa ra những bước cần làm. Lập trình viên phải viết mã cho việc thực thi những
bước này qua việc dùng một ngôn ngữ nào đó.
Chi tiết về về mã giả và lưu đồ được trình bày dưới đây.
1.5.1 Mã giả (pseudo code)
Nhớ rằng mã giả không phải là mã thật. Mã giả sử dụng một tập hợp những từ tương tự như mã thật
nhưng nó không thể được biên dịch và thực thi như mã thật.
Chúng ta hãy xem xét mã giả qua ví dụ sau.Ví dụ này sẽ hiển thị câu 'Hello World!'.
Ví dụ 1:
BEGIN
DISPLAY 'Hello World!'
END
Qua ví dụ trên, mỗi đoạn mã giả phải bắt đầu với từ BEGIN hoặc START, và kết thúc vớ
i từ END hay
STOP. Ðể hiển thị giá trị nào đó, từ DISPLAY hoặc WRITE được dùng. Khi giá trị được hiển thị là
một giá trị hằng (không đổi), trong trường hợp này là (Hello World), nó được đặt bên trong dấu nháy.
Tương tự, để nhận một giá trị của người dùng, từ INPUT hay READ được dùng.
Ðể hiểu điều này rõ hơn, chúng ta xem xét ví dụ 2, ở ví dụ này ta sẽ nhập hai số và máy sẽ hiển thị
tổng c
ủa hai số.
Ví dụ 2:
BEGIN
INPUT A, B
DISPLAY A + B
END
Trong đoạn mã giả này, người dùng nhập vào hai giá trị, hai giá trị này được lưu trong bộ nhớ và có
thể được truy xuất như là A và B theo thứ tự. Những vị trí được đặt tên như vậy trong bộ nhớ gọi là
biến. Chi tiết về biến sẽ được giải thích trong phần sau của chương này. Bước kế tiếp trong đoạn mã
gi
ả sẽ hiển thị tổng của hai giá trị trong biến A và B.
Tuy nhiên, cũng đoạn mã trên, ta có thể bổ sung để lưu tổng của hai biến trong một biến thứ ba rồi
hiển thị giá trị biến này như trong ví dụ 3 sau đây.
Ví dụ 3:
BEGIN
INPUT A, B