Tải bản đầy đủ (.pdf) (16 trang)

Lập trình cơ bản với c quyển 6

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.4 MB, 16 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI

T ú SÁ C H
KM O A H Ọ C
74-KHTN-2012

BỘ GIÁO TRÌNH TIN HỌC
Chủ biên: Hồ Sĩ Đàm




cơ sở

Q uyển 6

LẬP TRÌNH

ca BẢN
VỚI

Tác giả: Bùi Thế Duy

T T .T V - D K Q G H N

tu-i)(6)
2012
ÕỠ03#


LẬP TRÌNH



Cơ BẢN VỚI c


M Ụ C LỤC

Lời nói đ ầ u ...................................................................................................................... 7

Chương I. Lập trình và ngôn ngữ lập tr ìn h ........................................................... 9
1.1. Giài quyết vấn đ ề ................................................................................................ 9
1.1.1. Giải quyết vấn đề trong cuộc sống hàng n à y ...................................... 9
1.1.2. Giải quyết vấn đề bàng máy tín h .......................................................10
1.1.3. Phân tích bài toán/vấn đ ề ........................................................................ 10
1.2. Lập t r ì n h ............... ...............................................................................................11
1.3. Ngôn ngừ tự nhiên và ngôn ngữ lập t r ì n h .............................................. 12
1.4. Các thành phần cơ bản của ngôn ngữ lập trinh c ................................. 13
1.4.1. Bảng chừ c á i ............................................................................................... 13
1.4.2. Quy tấc cú p h á p ........................................................................................ 14
1.4.3. Ngữ n g h ĩ a ...................................................................................................14
1.5. Kết c h ư ơ n g .........................................................................................................14
Câu hòi và bài t ậ p ................................................................................................... 15
Bài đọc thêm: Những thành công của ngôn ngữ lập trình
16

c .............

Chương 2. Chưo’ng trình máy tính....................................................................... 19
2.1. Khái niệm về chương trình máy tín h ......................................................... 19
2.2. Cấu trúc một chương trình trong ngôn ngữ lập trình c ......................... 20
2.3. Một chương ưình đơn g ià n ............................................................................ 20

2.4. Dịch chương trình............................................................................................. 23
2.5. Liên kết chương t r ì n h ...................................................................................... 23
2.6. Viết inột chương t r ì n h .....................................................................................24
2.6.1. Mô tà vấn đ ề .............................................................................................. 24
2.6.2. Xem xét bài toán....... ............................................................................ 25
2.6.3. Các giai đoạn phát triển chương t r ì n h ............................................. 26
2.6.4. Chiến lược phát triển chương trình phần m ề m ............................. 26
2.7. Kết c h ư ơ n g ......................................................................................................... 29
Câu hỏi và bài t ậ p ..................................................................................................... 30

Chương 3 Biến, hằng và kiểu d ữ liệ u ..................................................................... 31
3.1. Biển.................. ..................................................................................................... 31
3.1,1. Đăt tên b i ế n ................................................................................................. 32


l Ạ p t r Inh c ơ bản v ớ i

C

3.1.2. Câu lệnh g á n .............................................................................................33
3.2. Một số kiểu dừ liệu c h u ẩ n ..............................................................................34
3.3. n Ị i g .......................1 . . . ............................................................................................. 37

3.4. Kết c h ư ơ n g ........................................................................................................ 38
Câu hỏi và bài t ậ p .................................................................................................... 39

Chương 4. Xuất/nhập d ữ l i ệ u ..................................................................................4 1
4.1.
4.2.
4.3.

4.4.
Câu

Xuất dừ liệu ra màn h ì n h ................................................................................41
Nhập dữ liệu từ bàn p h í m .............................................................................. 43
Nhập dữ liệu và k iể u ........................................................................................44
Kết c h ư ơ n g ........................................................................................................ 46
hỏi và bài t ậ p ..................................................................................................47

Chương 5. Phép toán, biểu d i ễ n .......................................................................... 49
5.1. Phép t o á n ............................................................................................................49
5.2. Biểu thức..............................................................................................................51
5.2.1. Biểu thức số h ọ c ...................................................................................51
5.2.2. Biểu thức quan h ệ ................................................................................ 53
5.2.3. Biểu thức l o g i c ..................................................................................... 53
5.3. Thứ tự cùa các phép t í n h ............................................................................ 54
5.4. Kiểu cùa biểu t h ứ c .........................................................................................55
5.5. Các hàm toán h ọ c ..........................................................................................56
5.6. Toán từ kết h ợ p .................................................................................................. 57
5.7. Kết c h ư ơ n g ...................................................................................................... 59
Câu hỏi và bài t ậ p .................................................................................................. 60

Chưong 6. c ấ u trúc điều k h i ể n ............................................................................ 63
6.1. Các cấu trúc điều khiển cơ bản trong lập trìn h ...................................... 63
6.1.1. Tuần t ự ........................................................................................................ 63
6.1.2. Rẽ n h á n h .................................................................................................. 63
6.1.3. L ặ p .............................................................................................................64
6.2. Câu lệnh rẽ nhánh trong c .......................................................................... 65
6.2.1. Câu lệnh i f ...............................
.

.
65
6.2.2. Câu lệnh s w i t c h ....................................................................................... 68
6.2.3. Khối chương t r ì n h ..............................................................................70
6.3. Cấu trúc lặp trong c ......................................................................................... 71
6.3.1. Câu lệnh w h ile .......................................................................................... 71
6.3.2. Câu lệnh do., w h ile ..................................................................................75
6.3.3. Câu lệnh f o r ...............................................................................................76


M IX JA)C____________________________________________________________________________________________________ 5

6.3.4. Câu lệnh break và c o n tin u e.................................................................. 79
6.4. Kốt c h ư ơ n g ........................................................................................................ 80
Càu hỏi và bài t ậ p ..................................................................................................... 81

C hương 7. Con trỏ và M ả n g ................................................................................. 85
7.1. Con trò .............. ............................................................................................. 85
7.1.1. Khai báo biến kiểu con t r ỏ ....................................................................86
7.1.2. Lay địa chỉ của một b i ế n ....................................................................... 86
7.1.3. Cấp phát bộ nhớ động............................................................................. 87
7.1.4. Tham chiếu giá trị của con t r ò .............................................................. 88
7.1.5. Gán giá t r ị ...................................................................................................88
7.2. Mảng một c h i ề u .............................................................................................. 89
7.2.1. Khai báo m ảng một chiều...................................................................... 89
7.2.2. Truy cập các phần t ừ ............................................................................... 91
7.2.3. Saojchep m ả n g ..................................................................... .....................93
7.3. Mảng nhiều c h i ề u .............................................................................................94
7.4. Xâu.T................. ............................ . . ........ ..................................................97
7.5. Kết c h ư ơ n g .........................................................................................................99

C âu hòi và bài t ậ p ............................................................................................... 100

C hương 8. Vào/ra với t ệ p ...................................................................................... 103
8.1. Giới th iệ u ......................................................................................................... 103
8.2. Thư viện vào/ra c h u ẩ n ...............................................................................103
8.3. Thao tác trực tiếp với tệ p .......................................................................... 104
8.4. Các thao tác với nội dung t ệ p ..................................................................104
8.4.1. Khai báo t ệ p ......................................................................................... 104
8.4.2. Mở t ệ p ...................................................................................................... 104
8.4.3. Đóng t ệ p ................................................................................................. 106
8.4.4. Đọc và ghi d ữ liệu với tệp văn b ả n ....................................................106
8.5. Vào/ra tệp nhị p h â n ..................................................................................... 107
8.6. Kết c h ư o n g .......................................................................................................108
Câu hòi và bài t ậ p ................................................................................................... 109

C hương 9. H à m ............................................................................................................ 111
9.1.
9.2.
9.3.
9.4.
9.5.

Lý do cần quan tâm đến h à m ....................................................................... 111
Cấu trúc cùa một h à m .................................................................................... 112
Thực hiện h à m ............................ .................................................................... 116
Trà về giá trị thông qua tham s ố ................................................................. 118
Khai báo h à m ............................................................................................... 119


l a p t r ìn h c ơ bản v ớ i c


9.6.
9.7.
9.8.
Càu

Biến cục bộ và biến toàn c ụ c ....................................................................
Đệ q u y ................................... ’........................................................................
Kết c h ư ơ n g ....................................................................................................
hỏi và bài t ậ p .................................................................................................

1 19
120
121
122

Chươìĩg 10. Kiểu d ữ liệu có cấu t r ú c ................................................................ 123
10.1. Khai b á o ........................................................................................................ 124
10.2. Truy cập giá t r ị ........................................................................................... 125
10.3. Gán giá t r ị ..................................................................................................... 125
10.4. Một sổ ví dụ ứng d ụ n g .............................................................................. 126
10.5. Kết c h ư ơ n g ..................................................................................................... 131
Câu hỏi và bài t ậ p ................................................................................................. 132

Chương II. L ỗi.......................................................................................................... 133
11.1. GỠIỒL........................................................................................................... 133
11.1.1. Lỗi lúc d ịch ........................................................................................ 133
11.1.2. Lỗi cú p h á p ........................................................................................ 136
11.1.3. Lồi kiểu............................................................................................... 137
11.1.4. Các cảnh báo lúc dịch...................................................................... 138

11.2. Lỗi lúc liên k ế t ............................................................................................ 138
11.3. Lỗi lúc chạy chương trình........................................................................ 139
11.4. Lỗi logic........................................................................................................141
11.5. Gỡ lồi bàng thực n g h iệ m ......................................................................... 141
11.6. Xử lý lỗ i............................ ...........................................................................142
11.7. Các nguyên nhân tạo ra l ỗ i ......................................................................143
11.8. Xử lý lồ i....................................................................................................... 144
11.8.1. Phần mã gọi hàm xử lý lỗi.............................................................. 144
11.8.2. Phần mã hàm xử lý lồi......................................................................146
11.9. Kết c h ư ơ n g .................................................................................................. 147
Tài liệu tham k h ả o .................................................................................................... 149


LỜI NÓI Đ ÀU

Giáo trình được biên soạn theo đề cương môn học “Lập trình cơ bán
với C"’ đã được Đại học Quốc gia Hà Nội phô duyệt. Môn học nhàm cung
cấp các khái niệm cơ bản về lộp trình và ngôn ngừ lập trình bậc cao. Ngôn
ngữ lập trinh

c dược

sử dụng để mô tả, minh họa các khái niệm đồng thời

như là một ngôn ngừ cụ thể để sinh viên rèn luyện kỳ năng lập trình, giải
qiiyếl vấn đề. Mục tiêu của giáo trinh là giúp cho người đọc suy nghĩ như
một người làm Tin học. Cách suy nghĩ này là sự kết hcrp những đặc tính tốt
nhất cùa toán học, kỳ sư, và khoa học tự nhiên. Như một nhà toán học, các
nhà Tin học dùng ngôn ngừ hình thức để thể hiện các ý tường của minh.
Như các kv sư, các nhà Tin học thiết kế, lẳp ráp các thành phần thành các hệ

thống và đánh giá các hệ thống đỏ. N h ư các nhà khoa học, các nhà Tin học
quan sát hành vi của các hệ thống phức tạp, đưa ra các giả thuyết và kiểm
tra các già thuyết dó.

Bùi Thế Duy, HỒ Sĩ Đàm


Chương I

LẬP TRÌNH VÀ N G Ô N NGỮ LẬP T R ÌN H

Kỹ năng cần có cùa naười làm Tin học là khà năng mô tà vấn dề, suy
nghĩ sáng tạo dể giải quvết vấn dề, và trình bày giải pháp một cách rõ ràng
và chính xác. Học lập trinh là một cơ hội rất tốt để thực hành các kỳ năng
giái quvết vấn đề.
1,1. Giải quyết vấn đề

/. 1.1. Giải (Ịuyểt vẩn đề trong cuộc sổng /làng này
ỉ làng ngày, lúc nào chúng ta cũng phủi sử dụng các kỳ năng giải quyết
vấn dề, dưa ra sự lựa chọn và đưa ra quyết định. Ví dụ, ta nên xem ti vi hay
di xem phim, ta sẽ chọn nghề nghiệp nào,... Các phương án giải quyết vấn
dề không lốt, các quyết định không tốt có thể gây ra hậu quà, thậm chí là
nghiêm Irọng. Ví dụ trong kinh doanh, một phương án không tốt, một quyết
dịnh không tốl có ihế gây ra thua lỗ về tiền bạc và mất mát về thời gian.
Cliính vì vậy, biết cách giái quyết vấn đồ, biết cách dưa ru quyết định là một
kv nâng rất quan trọng. Dể giải quyết vấn dồ, chúng ta thường sử dụng các
bước sau;
1. Xác dịnh/hiểu vấn đề; Ncu chúng ta không biết vấn đề là gì, chúng
ta không thể giài quyết nó, chính vì vậy phủi xác định rõ vấn đề
cũne như dầu vào và dầu ra của vấn dề thì mứi giải quyết được;

2. Xác dịnh các giài pháp khác nhau để giải quyết vấn dề; tạo ra một
danh sách càng nhièu càng tốt các cách giải quyết, trao đổi với
những người khác để có nhũng giải pháp mà chúng ta chưa nghĩ
tới. Neu chúng ta chưa có đầy đú các giải pháp, chúng ta chưa thê
đưa ra quyết định tổt;


10_______________________________________________________________________________ l a p t r in h c ơ bần VỚỊ_C

3. ỉ)ánh giá cái được và mất cho mồi giài pháp de chọn ra giai pháp
tốt nhất;
4. Liệt kê các bước cho phép chúng la giái quyết \ an dồ theo giãi
pháp đã được chọn lựa;
5. Thực hiện các bước và đánh giá giải pháp.
T ó m lại, để có thể giải quyết tốt một vấn đề, cần:
• vấn đề được xác định rõ ràng;


các giải pháp khác nhau đều được xcni xét;



đánh giá tính khả thi của giải pháp.

1.1.2. Giải quyết vấn đề bằng máy tính
Như vậy, giải quyết vấn đề là một kỳ năng mà chúng ta phái sừ dụng
hàng ngày. Hãy xem xét hai loại vấn đề mà chúng ta phải gặp hàng ngày:
• Loại vấn đề có giải pháp kiểu thuật toán: đây là các vấn dổ mà
có thể giải quyết bằng một chuồi các hành động.



Loại vấn đề có giải pháp kiểu ơ-ris-tic {heuristic) - các giài pháp
không dưới dạng một chuỗi các bước - ví dụ như làmthế nào

dể

mua chứng khoán tốt nhất?
Các vấn đề loại đầu khá thích hợp đổ giải quyết Ircn máy tính, còn loại
thứ hai đề giải quyết được trên máy tính cần kết hợp nhiều phưcmg pháp
khác nhau.

I.Ỉ.3. p/iãn tích hài toảiưvẩn đề
Dẻ có thể giải quyết tốt một bài toán bàng máy tính, chúng ta cần tiến
hành phân tích bài toán trước khi thực sự trièn khai trên máy. Một phưưng
pháp tốt để phân tích bài toán là tách bài toán ra làm bốn phần: dừ liệu dầu
vào, yêu cầu kết quả, các bước xử lý cần làm, và các giải pháp khác.
Sau đày là mẫu cùa bảng biểu dùng để phân tích bài toán/vấn đè:


11

CHƯONG 1. LẬP TRÌNH VA NGỔN NGỮ LẬP TRlNH

Yẻu cảu kết quả

Dừ liệu dẩu vảo
- Dữ liệu trong bài toán hoặc cung cấp bởi
người dùng
- Các hảng số dử liệu


Các yêu cầu về kết quả đầu ra

Các bưởc xử lý cần lám

Các giải pháp khác

Danh sách các bước xử lý cản ỉám. các công
thừc (vi dụ. các kỹ thuật tìm kiếm hay sắp xếp.
các thuặt toán)

Danh sách các giải pháp khảc

........ ...... .....



Ví dụ, với bài toán tính tổng sổ tiền phải trả cho người lao động theo
giừ theo công thức;
Tồng tiền phải trả = Tổng số giờ đã làm * Định mức trả theo giờ
chúng ta có Ihề phân tích như trong bảng sau;
Dữ liệu đâu vào

Yồu cầu kếỉ quả

Tống số giờ đã làm
Định mửc trả theo giờ

Tổng số tiền phải trả

Các bước xừ lý cần ỉàm


Các giải pháp khác

Tỏng tiền phải trả = Tồng số giờ đã làm • Định
mức trả theo giờ

Coi định mửc trả theo giờ là hằng số

1.2. Lập trình
Trên máy tính, chúng ta có thể lập trình giải các bài toán có thuật toán
giài sau khi xác định dừ liệu vào và dữ liệu ra của bài toán.

Lập trình là lựa chọn và sử dụng các cấu trúc dừ liệu thích hợp và các
câu lệnh của một ngôn ngừ lập trình cụ thể đế mô tả dữ liệu (dừ liệu
vào, dữ liệu ra và dữ liệu trung gian) và các thao tác cùa thuật toán.
Giáo trình này coi việc dạy lập trình là ưu tiên nhất và việc dạy ngôn
ngữ lập trình, như là một công cụ, chi là ưu tiên thứ hai. Mục tiêu chính là
giúp người đọc hiểu những khái niệm, những nguyên tẳc, và những kỹ thuật
chung, ví dụ như các kỳ thuật cơ bản để viết mã không bị lồi, cách viết mã
một cách logic và đơn giản, cách sử dụng cách hàng số, hay cách tách phần


_[2_______________________________________________________________________________ l a p TRINH CƠ BAN v ờ i c

khai báo ra khỏi phần cài dặt thực sự. Tuy nhiên, cũng không thể hièu
những vấn dề này mà không có ngôn ngữ lập trình. Ví dụ, chi tiết vè cú
pháp, cách thức triển khai những khái niệm, những nguyên tăc của các niíỏn
ngừ lập trình khác nhau cỏ thể khác nhau. 1'hC'm vào dó, các kỹ ihuật lập
trình và thiết kế phài được học thông qua việc sử dụng một ngôn n e ữ lập
trình. Thiết kế, tổ chức mã, và gỡ lỗi không phải là các kỹ nãng mà ta có thế

thu được một cách trừu tượng, c ầ n phải viết mã trong niột ntìôn nizừ lạp
trình nào đó và thu được kinh nghiệm thực tế từ đó. Diều này có nghĩa là
phải tìm hiểu những vấn đề căn bản cùa một ngôn ngữ lập trình.
1.3. Ngôn n gữ tự nhiên và ngôn ngữ lập trình
Ngôn ngừ tự nhiên là ngôn ngữ mà con người dùng đê giao liếp với
nhau, ví dụ như tiếng Việt, tiếng Anh, và tiếng Nhật. Ngôn ngữ lự nhicn
được hình thành và phát triển cùng với sự phát triẻn cùa loài người. Ngôn
ngữ hình thức là các ngôn ngữ được thiết kế bởi con người cho những ứng
dụng nhất định. Ví dụ, các công thức và ký hiệu mà các nhà toán học dùng
là một ligôn ngừ hình thức để ghi lại mối quan hệ giừa các số và biếu lượng.
Các nhà hóa học dùng ngôn ngừ hình thức cùa họ để thể hiện cấu trúc hóa
học của các phân tử. Và có lẽ quan trọng nhất, ngôn ngữ lập trinh là các
ngôn ngữ hình thức được thiết kế để thể hiện các lính toán.

Ngôn ngữ lập trình là ngôn ngữ do con người thiết kế đế mõ tả dữ liệu
và thuật toán d ư ớ i d ạ n g mà m á y tính hoặc trực tiêp h oặc gián íiêp

"hiểu ” được.
Mặc dù ngôn ngữ lập trình có nhiều điểm giống ngôn ngữ lự nhiên,
tuy nhiên cũng có rất nhiều điềm khác nhau:
-

Sự nhập nhàng: Ngôn ngừ tự nhiên chứa đựng rất nhiều sự nliập
nhàng. Con ngưừi xử lý những sự nhập nhàng này bằng cách sừ
dụng các thông tin tình huống. Trong các ngôn ngừ lập trình không
có sự nhập nhàng. Điều đó có nghĩa là mồi câu chỉ mang đúng rnột
ý nghĩa bất kể tình huống nào.

-


Sự dư thừa: Đẻ giảm bớt sự khó hiểu cũng như vì các lý do giao
tiếp, ngôn ngừ tự nhiên thường có thêm nhiều thành phần dư thừa.


13

CHƯƠNG 1. LẬP TRÌNH VẢ NGỔN NGỮLẢP TRÌNH

Trong khi đó, ngôn ngừ lập trình rất cô đọng và không chứa sự
dư thừa.
- Ngừ nghĩa; Ngôn ngữ tự nhiên thường sử dụng nhiều thành ngữ và
phép ẩn dụ, do vậy một câu có thể mang nghĩa đen và nhiều nghĩa
bóng. Trong ngôn ngữ lập trinh, một câu chi mang đúng một nghĩa
mà thôi.
Chính vl vậy, chúng ta cần phải lưu ý những điểm sau khi đọc hiểu các
cliLumu trinh máy tính. Tarớc hết, cần lưu ý ràng ngôn ngừ hinh thức cô đọng
hơn ngôn ngừ tự nhiên, do vậy, cần nhiều thời gian để đọc hơn. Nhớ ràng các
chi tiết rất quan trọng irong một chương trinh máy tính. Các lồi rất nhỏ như
đặt sai chấm phẩy có thể dễ dàng được bỏ qua trong ngôn ngữ tự nhiên,
nliưng lại lạo ra các khác biệt rất lớn trong các chương trình máy tính.
1.4. C á c thành phần cơ bản của ngôn ngữ lập trình c
Mỗi ngôn ngừ lập trình được xác định bởi ba thành phần cơ bản là;
bàng chữ cái, quy tấc cú pháp và ngừ nghĩa các khái niệm.

1.4. ỉ. Bảng chữ cái
Bàng chừ cái là tập hợp các ký tự dùng để viết chương trình. Nhìn
chung bảng chừ cái của các ngôn ngữ lập trình không khác nhau nhiều.
Bùiig chừ cái của ngôn ngữ lập trình c bao gồm:
• Các chừ cái thường và chữ cái hoa của bảng chừ cái tiếng Anh:
abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ
• 10 chữ số Ảrập:
0123456789
• Các ký tự đặc biệt:
+

-

}

#

*

/

\

=

<

>

í

]

A


$

!

&

(

)

{

}

dấu cách (mă ASCII 32)

_ (dấu gạch dưới)

, (dấu phẩy)
' (dấu nháy)
“ (dâu nháy kép)


J 4 ___________________________________________

LAP TRiNH CƠ BẢN_vớl^

1.4.2. Quy tắc cú pháp
Quy tác cú pháp là bộ quy tắc được sừ dụng để viết chương trinh. Dựa
vào bộ quy tẩc đó, người lập trình xây dựng các tồ hợp một cách hợp lệ dể

mô tà chính xác thuật toán để máy thực hiện.

ỉ . 4.3. Ngữ nghĩa
Ngữ nghĩa xác định ý nghĩa của các thao tác cần phải thực hiện ứng
với tổ hợp kí tự dựa vào ngữ cảnh cùa nó.
Ví dụ, với hai biểu thức dưới đây:
x -y

(1)

m -n

(2)

với giả thiết x,y là các đại lượng nhận giá trị thực còn m,n là các đại lưựng
nhận giá trị nguyên. Khi đó dấu - trong biểu thức (1) được hiểu là trừ hai số
thực còn trong biểu thức (2) được hiểu là trừ hai số nguyên. Cũng là dấu trừ
nhưng ở hai ngữ cảnh khác nhau có ý nghĩa khác nhau.
1.5.

Kết c h ư ơ ng
Trong chưong này, chúng ta đã đề cập đến các vấn đề:
-

Giải quyết vẩn đề bằng máy tính như ihế nào?

-

Thế nào là lập trinh và ngôn ngừ lập trình?


-

Giới thiệu về ngôn ngừ lập trinh
no.
/

c và

các thành phần cư bàn của


CHƯƠNG 1. l a p TRlNH VÀ NGỔN NGƠLAP TRINH______________________________________________________ [5

Câu hỏi và bài tập

1. Chúng ta có thể giải quvết trên máy tính những bài toán như thế nào?
2. Ngôn ngừ lập trình dùng để làm gì?
3. Những điểm khác biệt chính giữa ngôn ngữ tự nhiên và ngôn ngừ lập
trình là gì?
4. Sự không nhập nhàng của một ngôn ngừ lập trình được thể hiện như thế
nào trong ngôn ngữ lập trình

c.

5. Chúng ta cần giải trên máy tính phương trình bậc hai a x ^ b x + c = 0. Hãy
phân tích bài toán theo các phần: dữ liệu đau vào, yêu cầu kết quả, các
bước xử Iv càn làm, và các giài pháp khác.


16______________________________________________________________________________


l Ạ p t r ìn h c o b ầ n v ờ i c

Bài đọc thêm

Những thành công của ngôn ngữ lập trình

c

c là một ngôn ngữ lập trình đáng ghi nhận. Từ thiết kố ban đầu do
Dennis Ritchie, một nhà khoa học làm việc tại phòng thí nghiệm AT & 'I'
Bell ở New Jersey, với số lượng người dùng ngày càng tăng, c có thể là
một trong những ngôn ngữ máy tính phổ biến nhất dược viết trên thế giới.
Sự thành công của c là do một sổ yếu tố. Không yếu tố nào là chù chốt,
nhưng đều quan trọng. Có lỗ quan trọng nhất trong tất cá là c được phát
triển bời các nhà lập trình viên thực sự và được thiết kế để sử dụng Ihực tế
hàng ngày, không phải để trưng bày hay trình diễn. Giống như bất kỳ công
cụ được thiết kế tốt, nó dễ dàng được các nhà lập Irình đón nhận, rhay vì
cung cấp các ràng buộc, các kiểm tra và các giới hạn nghiêm ngặt, ngôn ngữ
lập trình c tập trung vào cung cấp sức mạnh. Bởi vì điều này, nó phù hcĩp
hơn cho các chuyên gia hơn là người mới bắt đầu.
Không chi là c phổ biến và là một tài sản mạnh mẽ trong kho vũ khí
của các lập trình viên nghiêm túc, có những lý do khác cho sự thành cóng
cùa ngôn ngừ này. Nó đã luôn luôn được gan kết với hệ điều hành UNIX và
đã hưởng lợi từ sự phổ biến ngày càng lăng của hộ diều hành này. Mặc dù
nó không phủi là lựa chọn đầu tiên cho các ứng dụng xử lý dừ liệu thương
mại lớn, c có lợi thế lớn là luôn có sẵn trên các triển khai thương mại của
UNIX. UNIX được viết bàng c , do đó, bất cứ khi nào UNIX dược triển
khai trên một loại phần cứng mới, nhiệm vụ đầu tiên là phài biên dịch được
c trên hệ thống đó. Ket quả là gần như không thể tim thấy niột hệ thống

UNIX mà không cần hỗ trợ cho c . Do đó, các nhà cung cấp phần mềm
muốn nhắm mục tiêu thị trường UNIX thấy ràiig c là đặt cược tốt nhát nếu
họ muốn phù được các hệ thống đang săn. Trên thực tế, c là sự lựa chọn
đầu tiên cho tính khả chuyển của phần mềm trong môi trường UNIX.


CHƯƠNG 1. la p t r ìn h Và ng ổ n n g ữ LAP TRINH_________________ ____ ________________________________ \J_

c cũng đưực sừ dụng đáng kể từ sự bùng nổ của thị trường máy tính
cá nhân, c dã suýt được thiết kế đặc biệt cho việc phát triển phần mềm cho
PC' các nhà phát triển phần mềm không chỉ có được khả nãng dễ đọc và
nãim suất cùa một ngôn ngữ bậc cao, mà còn nhận được sức mạnh để nhận
truy cập dến kiến trúc hệ thống mà không cần đến hợp ngữ. c là ngôn ngừ
duy nhất có tính năng ở cà hai mức ngôn ngữ lập trình: lập trình bậc cao và
lập trình bậc thấp; vừa cung cấp các luồng điều khiển mức cao, các cấu Irúc
dữ liệu và các thù lục - tất cà các công cụ cần có trong một ngôn ngừ bậc
cao hiện đại. Nó cũng cho phép các nhà lập trình hộ thốna đánh địa chi các
dưn vị ihỏng tin trên máy, thao tác bit và tiến gàn tới các phần cứng phía
dưới nếu họ muốn. Sự kết hcrp của tính năng như vậy là rất cần thiết trong
một thị trường phần mềm PC cạnh tranh và kết quà là một số lượng ngày
càng tãng các nhà phát triển phần mềrn đã chọn c là ngôn ngừ lập trình
chính cùa họ.
Cuối cùng, khả năng mở rộng của c đă góp phần không nhỏ đến sự
phô biên của nó. Nhiều ngôn ngừ khác đã không cung cấp một cách linh
hoạt việc trưy cập tệp và các tính năng vào ra cơ bản cần thiết cho các ứng
dụng công nghiệp. Thường thì trong các ngôn ngừ này chức năng vào ra
đirực xây dựng sẵn và hiểu được bởi trinh biên dịch. Một điếm nhấn chính
trong thiết kế của c (và cũng rất thủ vị, cũng là một trong những điểm mạnh
của hộ thống UNIX) là ở quan điểm nếu chúng ta không biết làm thế nào dể
cung cấp một giải pháp hoàn chinh cho một yêu cầu chung chung, thay vì

cung cấp một nửa một giải pháp (mà luôn không làm vui lòng ai), ta nên
cho phép người dùng xây dựng giải pháp riêng cùa họ. Các nhà thiết kế
phần mềm trôn toàn the giới có cái để học hỏi từ điều này! Đó là cách tiếp
cận đà dưực thực hiện bởi c , và không chi cho việc vào ra. Thông qua việc
sừ dụng các hàm thư viện, bạn có thể m ở rộng ngôn ngữ theo nhiều cách để
cung cấp các tính năng mà các nhà thiết kế không nghĩ đến. Bằng chúmg về
diêu này chính là thư viện vào ra chuẩn stdio, phát tricn chậm hơn so với
ngôn ngữ c , nhưng bản thân đã trở thành tiêu chuẩn trước khi được ử y ban
Tiêu chuẩn ban hành. Nó dã chứng minh rằng có thề phát triển một mô hình
vào ra tập tin và các tính nãng liên quan mà có tính khà chuyển cho nhiều
hệ điều hành khác ngoài UNIX.

— ------- -------- :-----------------r—
ĐAI HOC QUỐC GiA HÂ NỘI
TRUNG TẰM THÔNG TIN ĨHƯ ViẸN



×