Xem mẫu

  1. 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Ê
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. ■ 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
  9. 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
  10. 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;
  11. 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
  12. 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
  13. 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
  14. • 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
  15. 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
  16. 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
  17. 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
  18. • 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
  19. 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