
GI I THI UỚ Ệ
Ngôn ng l p trình C là môn l p trình căn b n. Nó là môn h c b n l cho các môn h c cóữ ậ ậ ả ọ ả ề ọ
liên quan đ n l p trình c a sinh viên s h c sau này. Vì v y nh ng ki n th c h c đ c ngônế ậ ủ ẽ ọ ậ ữ ế ứ ọ ượ ở
ng C là c n thi t cho sinh viên.ữ ầ ế
H c xong môn này, sinh viên c n n m đ c v n đ sau:ọ ầ ắ ượ ấ ề
- Khái ni m v ngôn ng l p trình.ệ ề ữ ậ
- Khái ni m v ki u d li u.ệ ề ể ữ ệ
- T ng quan v ngôn ng C.ổ ề ữ
- Các ki u d li u trong C.ể ữ ệ
- Các l nh có c u trúc.ệ ấ
- Cách thi t k và s d ng các hàm trong C.ế ế ử ụ
Môn l p trình C đ c dùng đ gi ng d y cho các sinh viên sau:ậ ượ ể ả ạ
-Sinh viên năm th 1, h c kỳ 2 chuyên ngành Tin h c.ứ ọ ọ
Đ h c t t môn L p trình C, sinh viên ph i có ki n th c n n t ng sau:ể ọ ố ậ ả ế ứ ề ả
- Ki n th c toán h c.ế ứ ọ
- Ki n th c và k năng thao tác trên máy tính.ế ứ ỹ
Trong th i l ng 120 ti t (30 lý thuy t +90 th c hành), giáo trình đ c c u trúc 2 ph n:ờ ượ ế ế ự ượ ấ ầ
CH NG 1: CÁC KHÁI NI M C B N.ƯƠ Ệ Ơ Ả
Bài 1: Gi i thi u v ngôn ng Cớ ệ ề ữ
Bài 2: Khái ni m v h ng, bi n, hàm, bi u th cệ ề ằ ế ể ứ
Bài 3: T ng quát v ch ng trình và các thao tác vi t ch ng trìnhổ ề ươ ế ươ
CH NG 2: CÁC CÂU L NH ĐI U KHI NƯƠ Ệ Ề Ể
Bài 1: Câu l nh r ệ ẽ nhánh
Bài 2: Câu l nh l pệ ặ
CH NG 3: HÀƯƠ M
Bài 1: Hàm
Bài 2: Các nguyên t c truy n tham sắ ề ố
PH N B: CÁC KI U D LI U M R NGẦ Ể Ữ Ệ Ở Ộ
CH NG 4: KI U D LI U CÓ C U TRÚCƯƠ Ể Ữ Ệ Ấ
Bài 1: D li u ki u m ngữ ệ ể ả
Bài 3: D li u ki u b n ghi structữ ệ ể ả
Bài 4: Danh sách móc n i LIFOố
Bài 5: Danh sách móc n i FIFOố
Bài 6: D u li u ki u t pữ ệ ể ệ
M C L CỤ Ụ
PH N A: T NG QUAN V NGÔN NG CẦ Ổ Ề Ữ 6
CH NG 1: CÁC KHÁI NI M C B N.ƯƠ Ệ Ơ Ả
Bài 1: Gi i thi u v ngôn ng Cớ ệ ề ữ 6

1.1. B ký t và nh ng quy đ nh c a Cộ ự ữ ị ủ
1.2. Tìm hi u các t khoá th ng dùngể ừ ườ
1.3. Khái ni m và quy đ nh đ t tên s d ngệ ị ặ ử ụ
1.4. L i chú thíchờ
1.5. Ki u d li uể ữ ệ
Bài 2: Khái ni m v h ng, bi n, hàm, bi u th cệ ề ằ ế ể ứ 9
2.1. Khái ni m h ng và cách khai báo h ngệ ằ ằ
2.2. Khái ni m bi n và cách khai báo bi nệ ế ế
2.3. Bi u th c, phép toánể ứ
2.4 .Các hàm vào ra chu nẩ
Bài 3: T ng quát v ch ng trình và các thao tác vi t ch ng trìnhổ ề ươ ế ươ 26
3.1. T ng quát c a m t ch ng trình cổ ủ ộ ươ
3.2. M t s qui t c c n nh khi vi t ch ng trìnhộ ố ắ ầ ớ ế ươ
CH NG 2: CÁC CÂU L NH ĐI U KHI NƯƠ Ệ Ề Ể 29
Bài 1: Câu l nh r nhánhệ ẽ 30
1.1. L nh if-elseệ
1.2. L nh else-ifệ
1.3. Câu l nh switchệ
Bài 2: Câu l nh l pệ ặ 39
2.1. Câu l nh goto, break, continueệ
2.2. Vòng l p forặ
2.3. Vòng l p whileặ
2.4. Vòng l p do …whileặ
CH NG 3: HÀƯƠ M 55
Bài 1: Hàm
1.1. Khái ni m v hàmệ ề
1.2. Cách khai báo hàm
1.3. G i hàmọ
1.4. Hàm không cho các giá trị
1.5. Hàm đ quyệ
Bài 2: Các nguyên t c truy n tham sắ ề ố 64
2.1. Bi n toàn c cế ụ
2.2. Bi n c c b (bi n đ a ph ng)ế ụ ộ ế ị ươ
2.3. Bi n đ a ch , bi n con trế ị ỉ ế ỏ
2.4. Cách truy n tham s cho hàmề ố
H C TRÌNH 4,5Ọ: CÁC KI U D LI U M R NGỂ Ữ Ệ Ở Ộ 71
CH NG 4: KI U D LI U CÓ C U TRÚCƯƠ Ể Ữ Ệ Ấ
Bài 1: D li u ki u m ngữ ệ ể ả
1.1. M ng m t chi uả ộ ề
1.2. M ng nhi u chi uả ề ề

1.3. M ng con trả ỏ
Bài 2: D li u ki u xâu ký tữ ệ ể ự 84
2.1. Khái ni mệ
2.2. Khai báo
2.3. Các thao tác trên xâu ký tự
Bài 3: D li u ki u b n ghi structữ ệ ể ả 88
3.1. Khai báo ki u d li u c u trúc (b n ghi)ể ữ ệ ấ ả
3.2. Khai báo theo m t ki u c u trúc đã đ nh nghĩa.ộ ể ấ ị
3.3. Truy nh p đ n các thành ph n c u trúcậ ế ầ ấ
3.4. M ng c u trúcả ấ
3.5. Kh i đ u m t c u trúcở ầ ộ ấ
3.6. Phép gán c u trúcấ
3.7. Con tr c u trúc và đ a ch c u trúcỏ ấ ị ỉ ấ
Bài 4: Danh sách móc n i ốLIFO 100
4.1 Đ nh nghĩa và khai báo bi n con tr .ị ế ỏ
4.2. T o danh sách m i ạ ớ
4.3. Duy t qua t t c các ph n t c a danh sách ệ ấ ả ầ ử ủ
4.4. Lo i m t c u trúc ra kh i danh sách ạ ộ ấ ỏ
4.5. B sung ho c chèn m t c u trúc vào danh sáchổ ặ ộ ấ
Bài 5: Danh sách móc n i FIFOố107
4.1. Đ nh nghĩa và khai báo bi n con tr .ị ế ỏ
4.2. T o danh sách m i ạ ớ
4.3. Duy t qua t t c các ph n t c a danh sách ệ ấ ả ầ ử ủ
4.4. Lo i m t c u trúc ra kh i danh sách ạ ộ ấ ỏ
4.5. B sung ho c chèn m t c u trúc vào danh sáchổ ặ ộ ấ
Bài 6: Dữ li u ki u t pệ ể ệ 109
6.1. Khái ni m v t p tin ệ ề ệ
6.2. Khai báo s d ng t p - m t s hàm th ng dùng khi thao tác trên t p ử ụ ệ ộ ố ườ ệ

Ch ng 1ươ
CÁC KHÁI NI M C B NỆ Ơ Ả
Trong ch ng này s gi i thi u nh ng thành ph n c b n c a ngôn ng l p trình C đó là:ươ ẽ ớ ệ ữ ầ ơ ả ủ ữ ậ
b ký t , t khoá và tên. Đ có th l p đ c m t ch ng trình đ y đ , s trình bày đôi đi u vộ ự ừ ể ể ậ ượ ộ ươ ầ ủ ẽ ề ề
câu l nh gán, các câu l nh vào ra, toán t #include và nh ng qui t c c n l u ý khi vi t ch ngệ ệ ử ữ ắ ầ ư ế ươ
trình.
BÀI 1: NGÔN NG L P TRÌNH VÀ PH NG PHÁP L P TRÌNHỮ Ậ ƯƠ Ậ
1.1. NGÔN NG ỮLẬP TRÌNH (PROGRAMMING LANGUAGE)
Phần này chúng ta sẽ tìm hiểu một s khái nốiệm căn b nả về thuật toán, chưngơ trình,
ngôn ng l p trình. Thuữ ậ ật ng "thữuật giải" và "thuật toán" dĩ nhiên có s khác nhau song tựrong
nhiều tr ngườ hợp chúng có cùng nghĩa.
1.1.1. Thuật giải (Algorithm)
Là một dãy các thao tác xác đ nhị trên một đối tượng, sao cho sau khi thực hiện một số
hữu hạn các b c thìướ đ t ạđưc ợmục tiêu. Theo R.A.Kowalski thì b n cảhất của thuật giải: Thuật
giải = Logic + Điều khiển
* Logic: Đây là phần khá quan trọng, nó trả l iờ câu hỏi "Thuật giải làm gì, giải
quyết vấn đ ề gì?", nh ng ữ yếu t ố trong bài toán có quan h ệ v i ớ nhau nh ư thế
nào v.v… Ở đây bao gồm những kiến thức chuyên môn mà bạn ph iả biết để có thể
tiến hành giải bài toán.
Ví
dụ : Để giải một bài toán tính diện tích hình cầu, mà bạn không còn nhớ công thức tính
hình cầu thì bạn không thể viết chương trình cho máy đ giể ải bài toán này đưc.ợ
* Điều khiển: Thành phần này trả l iờ câu hỏi: giải thuật phải làm như thế nào?. Chính là
cách thức ti n hếành áp dụng thành phần logic đ giể ải quyết vấn đ .ề
1.1.2. Chương trình (Program)
Là một t pậ hợp các mô tả, các phát biểu, nằm trong một hệ thống qui cướ về ý nghĩa và
th t ứ ự thực hiện, nhằm điều khiển máy tính làm việc. Theo Niklaus Wirth thì:
Chương trình = Thuật toán + Cấu trúc d liữ ệu
Các thuật toán và chưng trìnhơ đ u có cề ấu trúc dựa trên 3 c ấ u trúc đ i ề u kh iể n

cơ bả n :
* Tuần tự (Sequential): Các bước thực hiện tuần tự một cách chính xác từ trên xuống,
mỗi b cướ ch tỉhực hiện đúng một lần.
* Chọn lọc (Selection): Chọn 1 trong 2 hay nhiều thao tác đ tểhực hiện.
* Lặp lại (Repetition): Một hay nhiều b cướ đưc tợhực hiện lặp lại một s lố ần.
Muốn trở thành lập trình viên chuyên nghiệp bạn hãy làm đúng trình tự để có thói quen tốt
và thuận lợi sau này trên nhiều mặt của một người làm máy tính. Bạn hãy làm theo các bước sau:
Tìm, xây dựng thuật gi i (trên gảiấy) → viết chưng trình trên máyơ
→ d ch chị ư ng trìnhơ → chạy và th cửhương trình
1.1.3. Ngôn ng ữlập trình (Programming language)
Ngôn ngữ lập trình là hệ thống các ký hiệu tuân theo các qui ưcớ về ngữ pháp và ngữ
nghĩa, dùng để xây dựng thành các chương trình cho máy tính.
Một chương trình được viết bằng một ngôn ngữ lập trình cụ thể (ví dụ Pascal, C…)
gọi là chưng ơ trình nguồn, chưng ơ trình d ch ị làm nhiệm v ụ d ch ị chưng ơ trình nguồn
thành chương trình thực thi đ c trên ượ máy tính.
1.2. CÁC B C L P TRÌNHƯỚ Ậ
B cướ 1: Phân tích vấn đ và xácề đ nh các ịđ cặ điểm. (xác đ nh I-P-O) ị
B cướ 2: Lập ra giải pháp. (đưa ra thuật gi i)ả
B cướ 3: Cài đ t. (viặ ết chưng trình)ơ
B cướ 4: Chạy th ửchưng trình. (ơd ch chị ương trình)
B cướ 5: Kiểm ch nứg và hoàn thiện chương trình. (thử nghiệm bằng nhiều số liệu
và đánh giá)
1.3. K THỸUẬT L P TRÌNHẬ
1.3.1. I-P-O Cycle (Input-Pprocess-Output Cycle) (Quy trình nhập-x lý-xuử ất)
Quy trình x lý c ử ơ bản của máy tính gồm I-P-O.
Input Output