Xem mẫu
- TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
Chủ biên: TS. Nguyễn Thị Thu Thủy
Ths. Đinh Thị Hà
Giáo trình
co sở LẬP TRÌNH
NHÀ XUẤT BẢN THỐNG KÊ
- TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HỆ THỐNG THÔNG TIN KINH TÉ
Chủ biên: TS. Nguyễn Thị Thu Thủy
Ths. Đinh Thị Hà
Giáo trình
Ctf sft lập trinh
NHÀ XUẤT BẢN THỐNG KÊ
Hà Nội-2014
- LỜI NÓI ĐẰU
Tư duy thuật toán và khả năng lập trình cơ bản là một trong những
yêu cầu cơ bản đổi với các sinh viên thuộc các lĩnh vực có liên quan đến
Tin học như quản trị hệ thổng thông tin; thương mại điện tử,... Đe
nâng cao tỉnh tự học, niềm đam mê, yêu thích viết chương trình cho
máy tính, cũng như rèn luyện cho mình thói quen tư duy của một người
lập trình chuyên nghiệp, tập thể giảng viên của Bộ môn Tin học, Khoa
Hệ thống Thông tin Kinh tế biên soạn và trân trọng giới thiệu cuốn
“Giáo trĩnh Cơ sở lập trình”.
Giáo trình cơ sở lập trình được biên soạn làm giáo trình cho sinh
viên hệ đại học chuyên ngành Quản trị hệ thống thông tin thị trường và
thương mại thuộc Khoa Hệ thống Thông tin Kinh tế của trường Đại học
Thương mại; đồng thời là tài liệu tham khảo cho các giáo viên trong quá
trĩnh giảng dạy môn học. Hơn thể nữa giáo trình còn làm tài liệu tham
khảo cho các sinh viên có chuyên ngành gần như thương mại điện tứ,
hay cho các sinh viên yêu thích môn học lập trình.
Nội dung giảo trình gồm 5 chương như sau:
Chương 1: Tổng quan về cơ sở lập trình. Chương này trình bày
các khái niệm chung về cơ sở lập trình, tổng quan về
ngôn ngữ c. Các cách thiết kế chương trình,...
Chương 2: Các thành phần cơ sở. Chương này trình bày các yếu
tổ cơ bản của ngôn ngữ lập trình, và câu lệnh có cấu
trúc trong c, bao gồm câu lệnh rẽ nhảnh và các câu
lệnh lặp.
Chương 3: Mảng, xâu ký tự và con trỏ. Chương này trình bày các
kiến thức về dữ liệu mảng, xâu ki tự và con trỏ.
Chương 4: Hàm. Chương này giới thiệu về hàm và cách truyền
các tham so cho hàm.
3
- Chương 5: Kiểu dữ liệu có cấu trúc. Chương này trình bày về kiểu
dữ liệu struct, kiểu tệp bao gồm tệp nhị phân và tệp
văn bản.
Tập thể tác giả biên soạn đã bám sát với đề cương được soạn theo
chương trình khung của Bộ Giáo dục và Đào tạo ban hành, đồng thời có
tham khảo và biên soạn sao cho có tỉnh cập nhật các kiến thức theo
chuyên ngành và đặc thù của trường kinh tế cho phù hợp với tình hình
thực tiễn của xã hội. Tham gia biên soạn giáo trình gồm các tác giả:
• TS. Nguyễn Thị Thu Thủy, chủ biên và biên soạn chương 1,
chương 2 và tham gia vào các chương còn lại
• Ths Đinh Thị Hà biên soạn các chương 3, chương 4 và chương 5
• Ngoài ra còn có sự đóng góp ỷ kiến, nhận xét của các giảng viên
khác trong bộ môn.
Chủng tôi xin cảm ơn các đồng nghiệp đã công bổ các giáo trình,
sách và tài liệu liên quan để chúng tôi có thể tham khảo cho giáo trình
của mình trong quá trình biên soạn. Mặc dù đã cổ gắng hoàn chỉnh giáo
trình, tuy nhiên không thể tránh khỏi thiếu sót. Rất mong các đồng
nghiệp, sinh viên đóng góp ỷ kiến để giảo trình ngày càng hoàn thiện hơn.
TẬP THẺ TÁC GIẢ
4
- Chương 1
TÔNG QUAN VÈ cơ SỞ LẬP TRÌNH
Chương này bao gồm các kiến thức về thuật toán, tính chất thuật
toán, sơ đồ khối và các khái niệm về chương trình và ngôn ngữ lập trình.
Đồng thời chương này còn bao gồm cả việc giới thiệu về các phương
pháp lập trình và các kỹ thuật thiết kế chương trình như kỹ thuật chương
trình con và kỹ thuật đệ quy.
1.1. THUẬT TOÁN
1.1.1. Khái niệm
Thuật toán là một tập hữu hạn các bước lệnh đã được xác định theo
một thứ tự nhất định để theo đó máy tính có thể thực hiện được một cách
tự động nhằm mục đích giải một bài toán hay một nhiệm vụ nào đó.
Thông thường các lệnh ở các bước chính là các phép vào thông tin, phép
xử lý hoặc ra thông tin. Thuật toán phải được thể hiện rõ ràng trong các
bước của nó và khi thuật toán được thực hiện thông qua dãy hữu hạn các
bước thì phải đảm bảo dừng và cho ra kết quà theo mong muốn của
người sử dụng.
Ví dụ 1.1.1: Viết thuật toán giải phương trinh bậc hai ax2+bx+c=0
(aoO)
Bước 1: Nhập các giá trị của 3 hệ số a, b, c
Bước 2: Nếu a=0 thì
2.1. Yêu cầu đầu vào không đảm bảo.
2.2. Chuyển đến bước 4
Bước 3: Trường hợp a khác 0 thì
3.1. Tính giá trị D = b2 - 4ac
5
- 3.2. Nếu D > 0 thì
3.2.1. Phương trình có hai nghiệm phân biệt X] và x2
3.2.2. Giá fri của hai nghiệm được tính theo công thức sau
3.2.3. Chuyển đến bước 4.
3.3. Nếu D = 0 thì
3.3.1. Phương trình có nghiệm kép x0
3.3.2. Giá trị của nghiệm kép là
„ -b
x°~ 2a
3.3.3. Chuyển đến bước 4
3.4. Nếu D < 0 thì
3.4.1. Phương trình vô nghiệm.
3.4.2. Chuyu. đến bước 4
Bước 4: Kết thúc
1.1.2. Tính chất của thuật toán
Trong khuôn khổ giáo trình một số tính chất cơ bản sẽ được giới
thiệu bao gồm:
■ Tính xác định: Tính chất này có nghĩa là các bước của thuật toán
phải rõ ràng, chính xác, không gây nên sự nhập nhằng, đa nghĩa. Thực
hiện đúng các bước của thuật toán thì với một bộ dữ liệu vào, chỉ cho
duy nhất một bộ kết quả ra.
Ví dụ: Ở ví dụ giải phương trình bậc 2 nói trên, việc tính D = b2-4ac
và phân chia các trường hợp của D để đảm bảo rằng trong mọi trường
6
- hợp của D thì thuật toán luôn có câu trả lời kết quả tương ứng (Có 2
nghiệm riêng biệt; có nghiệm kép; hay vô nghiệm).
■ Tính dừng: Tính chất này có nghĩa là khi áp dụng thuật toán cho
một bộ dữ liệu cụ thể thì sau hữu hạn bước thực hiện sẽ cho kết quà và
kết thúc.
Tính dừng là một trong các tính chất dễ bị vi phạm khi trình bày các
bước của thuật toán. Điều đó có nghĩa là khi thực hiện hết các bước của
thuật toán, người sử dụng sẽ nhận được kết quả mong muốn. Tuy nhiên,
có những thuật toán mà khi thực thi nó sẽ “chạy mãi không dừng” (hay
còn gọi là “lặp vô tận”) thì chúng sẽ được gọi là thuật toán “vi phạm tính
dừng”.
Ví dụ: Viết thuật toán để tính tổng các sổ nguyên dương lẻ < n (n
nhập từ bàn phím). Thuật toán như sau:
Bước 1. Nhập n.
Bước 2. s = 0
Bước 3. i = 0
Bước 4. Nếu i = n+1 thì sang Bước 8, ngược lại sang Bước 5
Bước 5. s=s+i
Bước 6. I=i+2
Bước 7. Quay lại bước Bước 4.
Bước 8. In ra s
Rõ ràng, thuật toán kết thúc khi giá trị của i vượt quá n, nhưng điều
kiện "i=n+l" không phải lúc nào cũng đạt được. Vì nếu n là số chẵn thì
n+1 là một số lẻ thì sau một số hữu hạn bước, i sẽ bằng n+1. Tuy nhiên,
nếu n là một số lẻ thì n+l là một số chẵn nên không đạt được i= n+1.
Hay nói cách khác thuật toán sẽ không dừng.
7
- ■ Tính phổ dụng: Tính chất này có nghĩa ỉà thuật toán không chỉ
giải cho một bài toán mà giải cho một lớp các bài toán và có thể làm việc
trên các dữ liệu khác nhau.
■ Tính đúng: Tính chất này có nghĩa là sau khi thực hiện tất cả các
bước của thuật toán theo đúng trình tự, ta phải được kết quả mong muốn
với mọi bộ dữ liệu đầu vào. Kết quả đó được kiểm chứng bằng yêu cầu
của bài toán.
■ Tính khả thi: Tính chất hày thể hiện ưên ba yêu cầu sau:
- Kích thước phải đủ nhỏ. Một thuật toán sẽ có tính hiệu quả bằng 0
nếu lượng bộ nhớ mà nó yêu cầu vượt quá khà năng lưu trữ của hệ thống
máy tính.
- Thuật toán phải được máy tính thực hiện trong thời gian cho phép.
Ví dụ như xếp thời khóa biểu thì không thể cho máy tính chạy lâu tới
mức mà việc xếp thời khóa biểu chỉ có thể áp dụng cho các kì tiếp theo.
- Thuật toán phải dễ hiểu và dễ cài đặt.
1.2. Sơ ĐÒ KHỐI
1.2.1. Khái niệm
Đổ thể hiện thuật toán người ta có thể dùng nhiều phương pháp để
biểu diễn, ví dụ như cách viết ở trên (mục 1.1) được gọi là phương pháp
liệt kê theo các bước. Ngoài ra, một trong các phương pháp thể hiện thuật
toán thường được dùng là sơ đồ khối.
Vậy, sơ đồ khối là cách thể hiện thuật toán bàng các hình khối hình
học nối với nhau bằng các đường đi có hướng. Ở đây, chúng ta quy ước
trong sơ đồ khối sử dụng các hình khối như sau:
8
- Khối kiểm tra điều kiện Hướng thực hiện Khối vào ra
1.2.2. Các dạng cấu trúc cơ bản của sơ đồ khối
Sơ đồ khối thể hiện thuật toán thường được thể hiện ở 3 dạng cơ bản
như sau:
• Sơ đồ khối dạng tuần tự: Là sơ đồ khối thể hiện thuật toán gồm n
khối mà khi thực hiện thuật toán với một bộ dữ liệu cụ thể sẽ lần lượt
thực hiện từ khối đầu tiên đến khối cuối cùng theo thứ tự viết của nó.
• Sơ đồ khối dạng rẽ nhánh: Là sơ đồ khối thể hiện thuật toán gồm
n nhánh mà khi thực hiện thuật toán với một bộ dữ liệu cụ thể sẽ thực
hiện một trong n nhánh mà thôi.
1.2.3. Ví dụ
Ví dụ 1.2.1: Vẽ sơ đồ khối thể hiện thuật toán để giải bài toán giải
phương trình bậc hai nói trên.
9
- Hình 1.1: Sơ đồ khối giải phương trình bậc hai ax2+bx+c=0 (aoO)
• Sơ đồ khối dạng chu trình: Là sơ đồ khối thể hiện thuật toán gồm n
khối mà khi thực hiện thuật toán với một bộ dữ liệu cụ thể sẽ có một số khối
lặp đi lặp lại nhiều lần phụ thuộc vào một điều kiện nào đó vẫn thỏa mãn.
Ví dụ 1.2.2: Cho một dãy A gồm N số nguyên khác nhau ab a2,
aN. Tìm và in ra chỉ số I và giá trị aj, mà ai chia hết cho k (k nguyên, và
nhập từ bàn phím) hoặc thông báo không có số hạng nào của dãy A mà
chia hết cho k.
Trên thực tế, sơ đồ khối dùng để giải bài toán nào đó có thể được sử
dụng một cách hỗn hợp với 3 dạng cơ bản nói trên. Nghĩa là trong sơ đồ
10;
- khối, có thể đoạn khối này là tuần tự, đoạn khác là rẽ nhánh, và đoạn
khác nữa là chu trình, hoặc trong đoạn khối rẽ nhánh lại chứa đoạn khối
rẽ nhánh, hoặc trong đoạn khối chu trình lại chứa chu trình v.v...
Hình 1.2. Sơ đồ khối thể hiện bài toán ờ ví dụ 1.2.2
11
- Giả mã (Pseudo Code)
Mặc dù sơ đồ khối thể hiện rất rõ quá trình xử lý Tuy nhiên, để có
thể chuyển hóa từ sơ đồ thành ngôn ngữ lập trình là việc không hề dễ
dàng. Vì thế, khi thể hiện thuật toán bằng cách thức giả lập mã, cách viết
này sẽ minh họa dưới dạng sử dụng các cú pháp của một ngôn ngữ lập
trình nào đó để thể hiện thuật toán. Điều này giúp cho việc vừa tận dụng
được các khái niệm trong ngôn ngữ lập trình, vừa giúp người cài đặt dễ
dàng nắm bắt nội dung thuật toán.
Ví dụ một đoạn giả mã của thuật toán giải phưoìig trình bậc hai
Neu delta > 0 thì làm các việc:
X1 =(-b-sqrt(delta))/(2 *a)
x2=(-b+sqrt(delta))/(2*a)
In ra màn hình: phương trình có hai nghiệm là X] và x2
Ngược lại
Neu delta = 0 thực hiện:
In ra kết quả: phương trình có nghiệm kép là -b/(2*a)
Ngược lại {delta < 0 }
In ra kết quả: phương trình vô nghiệm
1.3. CHƯƠNG TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
1.3.1. Khái niệm chương trình
Chương trình là một tập hợp các lệnh để thể hiện một thuật toán giải
quyết một bài toán hay một nhiệm vụ nào đó. Trong đó, lệnh chính là
một chỉ thị cho máy tính để theo đó máy tính có thể thực hiện một cách
tự động.
Ví dụ như việc viết các dòng lệnh để máy tính có thể giải phương
trình bậc 2: ax2 + bx +c =0 (a#0) một cách tự động mà không cần có sự
can thiệp của con người trong quá trình xử lý.
12
- 1.3.2. Ngôn ngữ lập trình
Ngôn ngữ lập trình là ngôn ngữ để viết chương trình. Có nhiều loại
ngôn ngữ lập trình khác nhau mà sự liên quan của chúng phụ thuộc vào
kiến trúc và hoạt động của máy tính. Có thể phân chia chúng thành các
mức:
• Ngôn ngữ máy: Là ngôn ngữ chương trình được viết ở dưới dạng
nhị phân hoặc ở dạng hexa, mà máy tính có thể hiểu được một cách trực
tiếp và thực hiện được. Tuy nhiên, nó không thuận lợi cho con người
trong việc hiểu và viết chương trình.
• Họp ngữ: Là ngôn ngữ cấp thấp mà con người có thể sử dụng
được để viết chương trình. Điểm không thuận lợi của ngôn ngữ này là
chúng phụ thuộc chặt chẽ vào kiến trúc của máy tính.
• Ngôn ngữ lập trình bậc cao: Là ngôn ngữ mà câu lệnh của nó
gần gũi với ngôn ngữ tự nhiên. Chúng có tính độc lập, nghĩa là không
phụ thuộc vào một loại máy cụ thể nào. Ngôn ngữ lập trình phải bao gồm
các yếu tố sau đây:
• Tập các ký tự; Tập hợp từ vựng.
• Tập hợp các quy tắc ngữ pháp và quy tắc viết các lệnh.
Đối với các chương trình viết bằng họp ngữ hoặc ngôn ngữ lập trình
bậc cao thì chúng cần có một chương trình dịch tương ứng để dịch chúng
sang ngôn ngữ máy. Chương trình dịch cho hợp ngữ gọi là hợp dịch
(dịch từ ngôn ngữ cấp thấp ra ngôn ngữ máy). Để dịch chương trình viết
bằng ngôn ngữ lập trình bậc cao sang ngôn ngữ máy gồm có trình biên
dịch (dịch từ ngôn ngữ bậc cao sang ngôn ngữ cấp thấp) và hợp dịch
(dịch tiếp ra ngôn ngữ máy).
1.3.3. Quy trình giải bài toán trên máy tính điện tử
Việc giải bài toán trên máy tính điện tử thường được tiến hành qua
các bước sau đây:
13
- • Bước 1: Xác định bài toán: Phải xác định mục đích của bài toán,
xác định dữ liệu vào, xác định cách xử lý và dữ liệu đưa ra.
• Bước 2: Tìm cấu trúc biểu diễn bài toán: Phải định nghĩa tập dữ
liệu để mô tả, biểu diễn các thông tin của bài toán cũng như các thao tác
có thể thực hiện trong thuật toán. Đây là bước không thể tách rời bước
tìm kiếm thuật toán để giải quyết vấn đề.
• Bước 3: Tìm thuật toán để giải bài toán.
• Bước 4: Lập trình giải bài toán: Chọn ngôn ngữ lập trình thích hợp
để thể hiện thuật toán thành chương trình.
• Bước 5: Thử nghiệm chương trình: Thực hiện chương trình với
những bộ dữ liệu giả định và đánh giá kết quả.
• Bước 6: Tối ưu chương trình. Một chương trình chạy đúng không
có nghĩa là việc lập trình đã xong mà cần phải sửa đổi một số chi tiết để
chương trình có thể chạy nhanh hơn, hiệu quả hơn.
1.3.4. Đánh giá chất lưựng chương trình
về cơ bản một chương trình được đánh giá thông qua các yếu tố sau:
• Chất lượng output: Tùy thuộc vào yêu cầu của người sử dụng mà
kết quả thu được của chương trình phải thỏa mãn về các yêu cầu này (tối
ưu nhất có thể được).
• Thuật toán: Thuật toán của chương trình phải càng được đơn giản
càng tốt, vì nếu thuật toán quá phức tạp dẫn đến việc gây khó khăn trong
việc kiểm thử (nếu chương trình bị lỗi khi thực thi).
• Thời gian thực hiện: Càng nhanh càng tốt
• Tiết kiệm bộ nhớ: Mặc dù vấn đề bộ nhớ không phải là yêu cầu
hàng đầu bong thời đại công nghệ bộ nhớ được cải thiện nhiều như hiện
nay. Tuy nhiên, một chương trình mà sử dụng lãng phí bộ nhớ cũng
không được coi là tối ưu, nhất là khi kĩ thuật xử lí qua mạng, tốc độ kết
nối, tải, duyệt,... là một bong những ưu tiên hàng đầu hiện nay.
14
- 1.4. CÁC PHƯƠNG PHÁP LẬP TRÌNH
Có hai phương pháp lập trình cơ bàn như sau:
1.4.1. Lập trình hướng thủ tục
Phương pháp này còn được biết đến là cách thực hiện phương pháp
hướng chức năng. Phương pháp hướng thủ tục chia một chương trình
(chức năng) lớn thành các khối chức năng hay hàm (thủ tục) đủ nhỏ để
dễ lập trình và kiểm ưa.
Trong một hệ thống chương trình, cạc biến có các phạm vi mà nó có
thể hoạt động nhất định. Dữ liệu hoạt động độc lập và được chuyển đổi
qua lại thông qua các tham số gọi hàm.
1.4.2. Lập trình hướng đối tưựng
Là kĩ thuật lập trình hỗ ượ công nghệ đối tượng. Nghĩa là việc tổ
chức chương trình được xây dựng dựa ưên các đối tượng mà nó cần xử
lý. Những đổi tượng ưong một ngôn ngữ lập trình hướng đôi tượng là các
két hợp giữa mã và dữ liệu mà chúng được nhìn nhận như là một đơn vị
duy nhất. Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu
đến đối tượng đó được tiến hành qua tên của nó. Như vậy, mỗi đối tượng
có khả năng nhận vào các thông báo, xử lý dữ liệu (bên ưong của nó), và
gửi ra hay ưả lời đến các đối tượng khác hay đến môi trường. Nghĩa là
lập ưình hướng đối tựợng cho phép phân tích bài toán thành các thực thể
được gọi là đối tượng và sau đó xây dựng các dữ liệu cùng các hàm xung
quanh các đối tượng đó. Các đối tượng có thể tác động, frao đổi thông tin
với nhau thông qua cơ chế thông báo (message) thông qua các phương
thức (hàm). ?
1.5. KỸ THUẬT THIÉT KÉ CHƯƠNG TRÌNH
1.5.1. Kỹ thuật thiết kế trên xuống (top-down design)
Kỹ thuật này chính là cách thiết kế chương trình mô tả cách thức giải
quyết bài toán theo chiến lược “chia để trị” và phương pháp tinh chỉnh
15
- từng bước. Đó là cách phân tích tổng quát toàn bộ vấn đề, xuất phát từ dữ
kiện và các mục tiêu đặt ra, để đề ra những công việc chủ yếu, rồi sau đó
mới đi dần vào giải quyết các phần cụ thể một cách chi tiết hơn. Vì vậy,
ban đầu giải thuật được trình bày bằng ngôn ngữ tự nhiên, phản ánh ý
chính của công việc cần làm. Từ các bước sau, các ý đó sẽ được chi tiết
hóa dần dần tương ứng với các công việc nhỏ hơn mà ta gọi đó là các
bước tinh chỉnh. Sự tinh chỉnh này sẽ hướng đến bước cuối cùng là đặc tà
các ý, các chi tiết đó bằng các câu lệnh của ngôn ngữ lập trình để tạo
thành chương trình hoàn chỉnh.
1.5.2. Kỹ thuật chương trình con (lập trình cấu trúc)
Một chương trình con thường được viết mã sao cho nó có thể được
chạy (hay được gọi) nhiều lần từ nhiều nơi trong chương trình lớn hơn,
thậm chí có thể được gọi bởi chính nó. Việc sử dụng họp lý chương trinh
con sẽ dẫn đến việc giảm đáng kể kích thước và chi phí của một chương
trình, đồng thời nâng cao tính dễ đọc và độ tin cậy của chương trình. Các
chương trình con hay sử dụng còn được tập trung thành các thư viện
chương trình để có thể chia sẻ và tái sử dụng mã nhiều lần.
1.5.3. Kỹ thuật đệ quỵ
Là kỹ thuật mà chia các bài toán thành các bài toán đơn giản hơn
cùng loại. Trong lập trình, một chương trình con (hàm, thủ tục) được gọi
là đệ qui nếu trong quá trình thực hiện nó có phần phải gọi đến chính nó.
Thông thường một chương trình con đệ qui cơ bản gồm hai phần:
• Phần cơ sở: Phần này chứa các tác động của hàm hoặc thủ tục với
một số giá trị cụ thể ban đầu của tham số;
• Phần đệ qui: Phần này định nghĩa các tác động cần được thực
hiện cho giá trị hiện thời của các tham sổ bằng các tác động dẫ được định
nghĩa trước đây với kích thước tham số nhỏ hơn.
16
- Chương 2
CÁC THÀNH PHÀN cơ SỞ
Tổng quan về ngôn ngữ lập trình c
c là ngôn ngữ lập trình được thiết kế bởi Dennis Ritchie tại phòng
thí nghiệm Bell Telephone 1972 và được viết ra với mục tiêu xây dựng
hệ điều hành UNIX. Vì vậy, ban đầu nó không hướng tới sự tiện dụng
cho người lập trình. Ngôn ngữ c được phát triển trên nền ngôn ngữ B (là
ngôn ngữ được viết bời Ken Thompson tại Bell labs). cỏ thể nói, c là
ngôn ngữ mạnh, mềm dẻo, linh hoạt và nó nhanh chóng trở thành một
ngôn ngữ phổ biến không chi trong phạm vi cùa Bell. Hơn thế nữa, c đã
được các lập trình viên sử dụng để viết nhiều loại ứng dụng ở các mức độ
khác nhau.
Cũng chính vì ngôn ngữ c được sử dụng ở nhiều nơi, nên các phiên
bản phát triển ngôn ngữ c là không thống nhất. Đổ giải quyết vấn đề này,
vào năm 1983, viện tiêu chuẩn Mĩ (ANSI) đã thiết lập một chuẩn và hoàn
thành năm 1989, gọi là chuẩn ANSI-C (ANSI Standard C) dành riêng
cho ngôn ngữ c. Nói chung các chương trình dịch c hiện nay đều tuân
theo chuẩn này ngoại trừ một số ít điểm khác biệt nhỏ.
Nhìn chung ngôn ngữ c ngày nay được phổ biến bởi vì nó có các
đặc điểm sau:
• c là ngôn ngữ mạnh, mềm dẻo, đặc biệt phù hợp trong các bài toán
lập trình hệ thống, hệ điều hành, đồ họa, chương trình dịch v.v...
• c có tính linh hoạt: Tức là nếu ngôn ngữ c được viết trên một hệ
thống này thì chúng có thể dễ dàng dịch lại và chạy lại trên một hệ
thống khác.
• c là ngôn ngữ cô đọng vì số lượng từ khóa không nhiều (32 từ
khóa chuẩn).
17
- • c là ngôn ngữ lập trình cấu trúc định kiểu mạnh: Chương trình
gồm các hàm 1 mức, không có thủ tục, không có định nghĩa hàm này
ữong hàm kia. Trừ khai báo biến, mọi câu lệnh, biểu thức, phép toán đều
phải thực hiện ứong một hàm nào đó. Các hàm của c có thể được sử
dụng lại không chỉ trong một chương trình mà ở cả các chương trình khác.
2.1. CÁC YÉU TÓ Cơ BẢN CỦA NGÔN NGỮ LẬP TRÌNH
2.1.1. Bảng chữ cái (Bộ ký tự)
Bộ kí tự mà c sử dụng là các ký tự trong bộ kí tự ASCII 256 kí tự.
Đó là:
• Chữ cái: A—> z, a->z
• Dấu gạch nối: _
• số: 0 -> 9
• Các dấu phép toán số học: 4-, -, *, / ...
• Các cặp dấu ngoặc (){}[]
Mỗi kí tự tương ứng với một số nguyên duy nhất gọi là mã, trong đó
có 128 kí tự đầu (mã từ 0 tới 127) là kí tự cố định và 128 kí tự còn lại
(mã từ 128 tới 255) là các kí tự mở rộng, tức là nó có thể thay đổi tùy
theo ngôn ngữ của mỗi quốc gia sử dụng.
2.1.2. Từ khóa
Mỗi một ngôn ngữ đều có một tập các từ riêng với ý nghĩa đặc biệt
của nó. Đó còn gọi là tập từ khóa. Tập các từ khóa được dùng cho mục
đích định trước như tên kiểu dữ liệu, tên toán tử v.v...
Sau đây là danh sách tất cả các từ khóa của ANSI c chuẩn:
Auto Int
Break long
Case registered
18
- Char return
Const short
Continue signed
Default sizeof
Do static
Double struct
Else switch
Enum typedef
Extern union
Float unsigned
For void
Goto volatile
If while
2.1.3. Ten ggi
Be dinh danh cac yeu td dugc su dung trong cac ngon ngtr nhu bien,
hang, ham,... chung se dugc ddt ten thong qua cac quy tdc dat ten. Ten la
mgt day cac ky tu dat canh nhau bao gom cac chu cai, chu so, dau gach
ndi _ va thuong dugc dat mang tinh chat ggi nhd gdn lien vdi chuc ndng
cua no. Trong ngon ngu C, ten dugc dat theo cac quy tdc sau:
• Ten chi dugc chua cac chu cai, chu so va diu gach ndi _.
• Ten phai bat ddu bang chu cai hodc ddu gach ndi
• Khong dugc trung vdi tu khoa
• Phan bi?t gitra chu hoa va chu thuong. Vi dy, ten bien “HANOI”
khac vdi biAn “Hanoi” hay “hanoi”.
• Do dai toi da cua ten mac dinh la 32
19
nguon tai.lieu . vn