Xem mẫu

  1. BÀI GIẢNG HỌC PHẦN KỸ THUẬT LẬP TRÌNH CHƯƠNG 2: GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C
  2. Nội dung 2.1. Lịch sử phát triển ngôn ngữ lập trình C 2.2. Môi trường lập trình 2.3. Các phần tử cơ bản của ngôn ngữ lập trình C 2.4. Cấu trúc của chương trình 2
  3. 2.1. Lịch sử phát triển ngôn ngữ lập trình C • Lịch sử phát triển ngôn ngữ lập trình C • Đặc điểm của ngôn ngữ lập trình C 3
  4. Lịch sử phát triển ngôn ngữ lập trình C (1) • Được phát triển bởi Dennis MacAlistair Ritchie và các cộng sự tại phòng thí nghiệm Bell của tập đoàn AT&T (Mỹ) Dennis M. Ritchie (1941-2011). Là một • Giai đoạn phát triển nhà khoa học máy tính, công tác tại Bell khởi đầu: 1969- Labs (Mỹ); được xem là cha đẻ của ngôn ngữ lập trình C và có ảnh hưởng lớn đến 1973, trong đó giai các hệ điều hành Multics, Unix. Các giải thưởng lớn: Giải thưởng Turing (1983), đoạn sáng tạo nhất Huy chương Hamming (1990), Giải là trong năm 1972 thưởng Nhà nước về Công nghệ (1999) 4
  5. Lịch sử phát triển ngôn ngữ lập trình C (2) • C được phát triển dựa trên nền ngôn ngữ B và BCPL. Tên ngôn ngữ C được xem là sự tiếp nối của ngôn ngữ B • Năm 1973, Ritchie & Thompson đã viết lại hệ điều hành UNIX bằng ngôn ngữ C - phiên bản phổ biến và là cơ sở quan trọng nhất để phát triển các hệ điều hành phổ biến hiện nay, điển hình là Linux và Mac OS của Apple • Năm 1978, Ritchie và Brian Kernighan xuất bản cuốn “The C programming language” 5
  6. Lịch sử phát triển ngôn ngữ lập trình C (3) • Sau 1978, C được bổ sung thêm những tính năng mới trong nhiều phiên bản khác nhau nhưng không tương thích với nhau • Năm 1989, Viện tiêu chuẩn quốc gia Hoa Kỳ (ANSI - American National Standards Institue) đã công bố phiên bản chuẩn hóa của ngôn ngữ C: “Programming Language C” ANSI X3.159-1989, phiên bản này thường được nhắc đến với tên gọi ANSI C, còn gọi là C “chuẩn” hay C89. ANSI C được hỗ trợ bởi hầu hết các chương trình dịch 6
  7. Lịch sử phát triển ngôn ngữ lập trình C (4) • Năm 1990, tiêu chuẩn ANSI C đã được tiêu chuẩn hóa bởi Tổ chức Quốc tế về Tiêu chuẩn hóa (ISO): phiên bản ISO/IEC 9899:1990, còn gọi là ISO C hay C99. Phiên bản này được hỗ trợ bởi GCC và nhiều chương trình dịch khác, tuy nhiên không được hỗ trợ bởi các chương trình dịch của Microsoft và Borland • C hiện là một trong những ngôn ngữ lập trình thông dụng và là nguồn gốc xây dựng các ngôn ngữ lập trình “mạnh” và phổ biến khác như C++, Java 7
  8. Đặc điểm của ngôn ngữ lập trình C • Là một ngôn ngữ lập trình có cấu trúc: - Cho phép tập hợp mã lệnh và cấu trúc - Cho phép ẩn lệnh, thông tin khỏi phần còn lại của chương trình để dùng cho tác vụ riêng - Chương trình có thể chia nhỏ thành các hàm (functions) hoặc các khối lệnh (code blocks) • Có tính khả chuyển, linh hoạt cao • Có thế mạnh trong việc xử lý dữ liệu số, văn bản, cơ sở dữ liệu, … • Được xem như ngôn ngữ lập trình hệ thống, sử dụng để xây dựng các chương trình hệ thống, trình điều khiển thiết bị, xử lý ảnh, … 8
  9. 2.2. Môi trường lập trình (1) • Xây dựng chương trình: 9
  10. 2.2. Môi trường lập trình (2) • Môi trường phát triển tích hợp (IDE – Integrated Development Evironment): - Soạn thảo (biên tập chương trình nguồn – edit) - Biên dịch (compile) - Thực thi (runtime) - Sửa lỗi (gỡ rối - debug) • Các môi trường điển hình: - Turbo C++ và Borland C++ của Borland, Inc - MSC và VC của Microsoft Corp - GCC của GNU project - … 10
  11. 2.2. Môi trường lập trình (3) • Lưu ý: - Lập trình viên không bắt buộc phải lập trình trong môi trường IDE - Có thể sử dụng một phần mềm soạn thảo chuyên dụng để tạo file nguồn (ví dụ: Notepad++), sau đó sử dụng trình biên dịch thích hợp (ví dụ: BCC 5.5) để biên dịch và tạo file thực thi 11
  12. 2.3. Các phần tử cơ bản của ngôn ngữ lập trình C • Tập ký tự • Từ khóa • Tên • Hằng • Biến • Hàm • Biểu thức • Toán tử • Câu lệnh • Các kiểu dữ liệu cơ sở 12
  13. Tập ký tự (1) • Là phần tử cơ bản, bắt buộc phải có để tạo nên chương trình: - Tổ hợp các ký tự  từ - Liên kết các từ theo cú pháp  câu lệnh - Tổ chức các câu lệnh  chương trình 13
  14. Tập ký tự (2) • Tập ký tự của ngôn ngữ C gồm: - 26 chữ cái in hoa: A, B, …, Z - 26 chữ cái in thường: a, b, ..., z - 10 chữ số: 0, 1, …, 9 - Các ký hiệu toán học: + - * / = < > … - Ký tự gạch nối _ - Dấu cách - Các ký hiệu đặc biệt: . , ; : ? ! \ & | % # $ () [] {} … 14
  15. Từ khóa • Là các từ dành riêng của ngôn ngữ lập trình, được sử dụng với mục đích xác định • Người lập trình không được phép sử dụng các từ khóa vào các mục đích khác như đặt tên cho các đối tượng mới: biến, hàm, hằng, … • Các từ khóa trong C được viết bằng chữ thường • Một số từ khóa thông dụng: - typedef, const, signed, unsigned, struct, enum, void, sizeof, static - char, int, short, long, float, double - default, if, else, case, switch, for, while, do - break, continue, goto, return, interrupt - … 15
  16. Tên • Tên (định danh): là dãy các ký tự dùng để xác định các đối tượng trong chương trình như: biến, hằng, hàm, kiểu dữ liệu, … • Quy tắc đặt tên: - Không được trùng với các từ khóa - Tên được đặt có tính gợi nhớ - Gồm các ký tự chữ, số và dấu gạch nối, ký tự đầu tiên phải là ký tự chữ hoặc dấu gạch nối Ví dụ đặt tên đúng: a, b, x, y, PI, … Ví dụ đặt tên sai: int, char, tinh giai thua • Lưu ý: ngôn ngữ C phân biệt chữ hoa và chữ thường 16
  17. Hằng (1) • Là đại lượng không đổi trong suốt quá trình thực thi chương trình • Cú pháp khai báo 1: #define tên_hằng giá_trị Ví dụ: #define MAX 100 #define PI 3.14 • Cú pháp khai báo 2: const kiểu_dữ_liệu tên_hằng = giá_trị; Ví dụ: const int MAX=100; const float PI=3.14; 17
  18. Hằng (2) • Lưu ý: - Không thể thay đổi giá trị của hằng trong quá trình thực hiện chương trình - Giá trị của hằng phải được xác định ngay khi khai báo - #define là chỉ thị tiền xử lý (preprocessing directive). Ưu điểm của cú pháp khai báo này: + Dễ đọc, dễ thay đổi + Dễ chuyển đổi giữa các nền tảng phần cứng + Tốc độ nhanh 18
  19. Biến (1) • Là đại lượng do người lập trình định nghĩa, được đặt tên thông qua việc khai báo biến • Dùng để chứa dữ liệu, giá trị của biến có thể bị thay đổi trong quá trình thực thi chương trình • Cú pháp khai báo: kiểu_dữ_liệu tên_biến; hoặc kiểu_dữ_liệu tên_biến1, …, tên_biếnn; Ví dụ: int a,b; float x,y,z; char c; 19
  20. Biến (2) • Lưu ý: - Cần khai báo tất cả các biến trước khi sử dụng - Có thể kết hợp khai báo biến với việc khởi tạo giá trị cho biến theo cú pháp: kiểu_dữ_liệu tên_biến=giá_trị; Ví dụ: int a=4,b=5; float x,y,z=10.9; - Tùy mục đích sử dụng, biến có thể được khai báo ở ngoài hàm, đầu hàm (ngay sau ký hiệu { để bắt đầu thân hàm) hoặc đầu khối lệnh (ngay sau ký hiệu { bắt đầu khối lệnh) 20
nguon tai.lieu . vn