TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA HỆ THỐNG THÔNG TIN KINH TẾ
NGUYỄN VĂN HUÂN
VŨ XUÂN NAM
NGUYỄN VĂN GIÁP
ĐỖ VĂN ĐẠI
BÀI GIẢNG
C
CƠ
Ơ
S
S
L
L
P
P
T
TR
RÌ
ÌN
NH
H
NGÀNH HỆ THỐNG THÔNG TIN QUẢN LÝ
THÁI NGUYÊN, NĂM 2012
2
MỤC LỤC
Chương 1: GIỚI THIỆU CƠ SỞ LẬP TRÌNH TRONG KINH T ............................. 5
1.1. Các khái niệm cơ bn ........................................................................................... 5
1.1.1. Ngôn ngữ máy ................................................................................................. 5
1.1.2. Ngôn ngữ lập trình ........................................................................................... 5
1.1.3. Chương trình .................................................................................................... 6
1.2. Sơ lược về cơ sở lập trình trong kinh tế ............................................................... 8
1.2.1. Khái niệm ........................................................................................................ 8
1.2.2. Tìm hiu một s bài toán kinh tế điển hình ....................................................... 9
1.2.3. Bài toán phục vụ đám đông ............................................................................ 11
1.2.4. Bài toán dự trữ ............................................................................................... 12
Chương 2: CƠ SỞ LẬP TRÌNH NGÔN NGỮ C ......................................................... 15
2.1. Giới thiệu về ngôn ngữ C .................................................................................... 15
2.1.1. Lch sử hình thành và phát triển ngôn ngữ C .................................................. 15
2.1.2. Các tính chất đặc trưng của ngôn ngữ C ......................................................... 16
2.2. Những khái niệm và nguyên lý cơ bản của lập trình ......................................... 20
2.2.1. Hệ thng ký hiệu và từ kh ........................................................................... 20
2.2.2. Khái niệm biến, hng, biểu thức, u lệnh ...................................................... 22
2.2.3. Các kiểu d liệu ............................................................................................. 27
2.2.4.. Các phép toán ............................................................................................... 34
2.3. Các cấu trúc điều khiển ...................................................................................... 37
2.3.1. Lệnh vào/ra .................................................................................................... 37
2.3.2. Lệnh lựa chọn if ............................................................................................. 41
2.3.3. Lệnh switch ................................................................................................... 44
2.3.4. Vòng lặp xác định for (biết trước s lần lặp)................................................... 45
2.3.5. Vòng lặp không xác định do ... while .. .......................................................... 49
2.3.6. Vòng lặp không xác định while ... .................................................................. 51
2.3.7. Các lệnh rẽ nhánh vô điều kiện....................................................................... 53
2.4. Cấu trúc mng .................................................................................................... 56
2.4.1. Khái niệm ...................................................................................................... 56
2.4.2. Truy nhập đến các phần tử ca mảng.............................................................. 57
2.4.3. u kí tvà mảng .......................................................................................... 59
2.5. Con tr ................................................................................................................ 64
2.5.1. Khái nim con trỏ........................................................................................... 64
2.5.2. Khai báo con tr ............................................................................................. 64
2.5.3. Các phép toán trên con tr .............................................................................. 67
2.5.4. Con trỏ và xâu ký t ....................................................................................... 68
2.6. Liên hệ giữa con trỏ và mng ............................................................................. 70
2.6.1. Con trỏ và mảng một chiều ............................................................................ 70
2.6.2. Con trỏ và mảng hai chiều .............................................................................. 71
2.6.3. Con trỏ và mảng nhiều chiều .......................................................................... 72
2.6.4. Sử dụng biến trung gian ................................................................................. 73
2.6.5. Mng các con trỏ ............................................................................................ 74
2.6.5. Cấp phát động con trỏ .................................................................................... 76
2.7. Kiểu cấu trúc ....................................................................................................... 83
2.7.1. Khái niệm và định nghĩa cấu trúc ................................................................... 83
2.7.2. Khai báo cấu trúc ........................................................................................... 84
2.7.3. Truy cập các phần tử của cấu trúc ................................................................. 86
3
2.7.4. Mng các cấu trúc .......................................................................................... 87
2.7.5. Con trỏ cấu trúc.............................................................................................. 90
2.8. Hàm và chương trình con ................................................................................... 92
2.8.1. Giới thiệu ....................................................................................................... 92
2.8.2. Các module chương trình trong C................................................................... 93
2.8.3. Thư viện các hàm chun ................................................................................. 93
2.8.4. Các hàm ......................................................................................................... 95
2.8.5. Các cơ chế truyền tham s .............................................................................. 99
2.8.6. Cấp lưu trữ và phạm vi hoạt động của các đối tượng .................................... 100
2.8.7. Con trỏ hàm ................................................................................................. 101
2.8.8. m đ qui .................................................................................................. 103
2.9. Các thao tác trên file văn bản ........................................................................... 105
2.9.1. Mfile văn bản mới để cất dữ liệu .............................................................. 106
2.9.2. Đọc một file văn bản đã có ........................................................................... 106
2.9.3. Các thao tác vào/ra file mức thấp ................................................................. 109
2.9.4. Tạo file nhị phân để ghi................................................................................ 110
2.9.5. Đọc một file dữ liệu nhị phân ....................................................................... 112
2.9.6. Ghi file dữ liệu có cấu trúc (struct) ............................................................... 113
2.9.7. Đọc file dữ liệu cấu tc ............................................................................... 115
2.9.8. Truy nhập trực tiếp file dữ liệu nhị phân....................................................... 116
2.9.9. So sánh và chn phương án sử dụng ............................................................. 118
Chương 3: LP TRÌNH TRONG KINH T.............................................................. 120
3.1. Bài toán lãi suất................................................................................................. 120
3.1.1. Phát biểu bài toán ......................................................................................... 120
3.1.2. Xây dng chương trình ................................................................................ 120
3.2. Bài toán dự trữ .................................................................................................. 123
3.2.1. Mô hình quản lý dự trữ Wilson (tiêu thụ đều, bổ sung tức thời) .................... 123
3.2.2. Mô hình dự trữ tiêu thụ đều, b sung dần ..................................................... 125
3.3. Bài toán quy hoạch tuyến tính .......................................................................... 126
3.4. Bài toán phục vụ công cng .............................................................................. 128
4
Lời nói đầu
sở lập trình môn hc quan trọng đối với sinh viên ngành H thống
thông tin quản lý. Nhằm giúp các em sinh viên lam quen dần với lập trình và định
ớng vào các bài toán kinh tế, môn học này trang bcho sinh viên những kiến thức
k năng lập trình s dng như một công cụ đgiải quyết những bài toán
kinh tế ph biến hiện nay. Mặc dù đã ra đời và phát triển qua nhiều thế h, song
nn nglập trình C ngôn ngrất phù hp cho việc thiết kế và phát triển các
chương trình tính từ đơn giản đến phức tạp, tnhững bài toán đơn thuần đến những
tính toán khoa hc phức tạp. Đc tng cơ bn của C tốc đthực hin chương trình
nhanh, linh hot và d dàng cài đặt cũng như sử dụng.
Với thời ợng chương trình cho phép không nhiều nên bài giảng này chtập
trung vào những vấn đề rất cơ bn của cơ cở lập trình trong kinh tế với 3 cơng :
Cơng 1 : Nghiên cứu tng quan về cơ sở lập trình và giới thiệu lược
một số dạng toán kinh tế cơ bản.
Chương 2 : Nghiên cứu về ngôn ngữ lập trình C từ cơ bản đến chuyên sâu.
Chương 3 : Tìm hiểu những bài toán kinh tế phổ biến và xây dựng chương
trình cho những bài toán da trên việc s dụng ngôn ngữ lập trình C.
Đây là bài giảng phục vcho sinh viên ngành Hệ thống thông tin qun với
mục tiêu ng dẫn sinh viên nắm vững một ngôn ngữ lập trình cơ sở và cách
thc vận dụng nó đlập trình giải các bài toán kinh tế ph biến nên mang nh chất
đặc thu riêng. Tuy nhiên, trong quá trình hc tập sinh viên th tham khảo giáo
trình i giảng liên quan khác đxây dựng và giải quyết bài toán của mình mt
cách tối ưu nhất.
Mặc dù các tác giđã nhiều cgắng nhưng chắc chắn không tránh khỏi
những sai t, những phn chưa được hoàn chỉnh trongi ging này. Chúng i rất
mong nhn được các ý kiến đóng góp của bạn đọc để chúng tôi thể chỉnh sửa, bổ
sung go trình hoàn chỉnh phục vụ tốt hơn cho công tác giảng dạy, hc tập của giáo
viên và sinh viên.
Thái Nguyên, tháng 02 năm 2012
Bn Thương mại điện t
5
Chương 1
GIỚI THIỆU CƠ SỞ LẬP TRÌNH TRONG KINH T
1.1. Các khái niệm cơ bản
1.1.1. Ngôn ngữ máy
Ngôn ngmáy (machine language hay machine code) một loại ngôn ng
lập trình trong đó, mọi chỉ thị đều được biểu diễn bằng các con s nhphân 0 và 1.
Đây là ngôn nglập trình thế hệ đầu tiên. Tuy khó đọc và khó sử dụng, nhưng ngôn
ngữ máy là ngôn ngữ duy nhất mà bvi xử lí có thể nhận biếtthc hiện một cách
trực tiếp (tức không cần dịch sang bất kì ngôn ngnào kc). Li điểm chính của
các chương trình viết bằng ngôn ngữ y là thđược thực thi một cách nhanh
chóng (nhvi xử có thxử các chthviết bằng ngôn ngữ máy mt cách trực
tiếp), dù vy, nó lại không độc lập nền (platform-independent) – tc khi đem qua
một máy loại vi xử khác, chương trình thkhông thực thi được, do vi xử
khác loại có thể có các tập lệnh khác.
1.1.2. Ngôn nglập trình
Ngôn nglập trình (programming language) một tập con của ngôn ngữ
máy tính. Đây là mt dng ngôn ngữ được chuẩn hóa (đối lập với ngôn ng tự
nhiên). Nó được dùng để miêu tnhững quá trình, những ngữ cảnh một cách rất chi
tiết.
Định nghĩa (theo [Loud 94], T.3): Ngôn ng lập trình một hthống được
hiệu hóa để miêu tnhững tính toán (qua máy tính) trong một dng mà c con
người và máy đều có thể đọc và hiểu được.
Theo định nghĩa trên thì một ngôn ngữ lập trình phải thỏa mãn được hai
điều kiện cơ bản là:
1. Nó phải dễ hiểu và dễ sử dụng đi với người lập trình, để con người có thể
dùng giải quyết các bài toán khác.
2. phải miêu tả một cách đầy đvà ràng các tiến trình (process), đ
thể chạy được trên các máy tính khác.
Mt tập hợp các chỉ thị được biểu thị nhờ ngôn ngữ lập trình để thực hin các
thao tác y tính nào đó thông qua một chương trình. Các tên khác ca ki niệm
này nếu không bị lầm lẫn là chương trình máy tính hay chương trình điện toán.
Lưu ý: Khái nim chương trình (program) viết cho máy vi tính nhằm giải
quyết một vấn đế nào đó thường được gọi là phần mềm máy tính. (Thí dchương