Chương 4 Các thành phần cơ bản của ngôn ngữ lập trình C

C là ngôn ngữ lập trình cấp cao, được sử dụng phổ biến để lập trình hệ thống và phát triển các ứng dụng Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ 20, Dennish Ritchie phát triển ngôn ngữ lập trình C dựa trên ngôn ngữ BCPL và ngôn ngữ B

pdf29 trang | Chia sẻ: lylyngoc | Lượt xem: 1930 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Chương 4 Các thành phần cơ bản của ngôn ngữ lập trình C, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 4 CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH C Lý thuyết ngôn ngữ lập trình Nội dung Tổng quan Bộ chữ viết Từ khóa Định danh Thư viện chuẩn C Các hàm toán học cơ bản trong C Cấu trúc một chương trình C Tổng quan C là ngôn ngữ lập trình cấp cao, được sử dụng phổ biến để lập trình hệ thống và phát triển các ứng dụng Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ 20, Dennish Ritchie phát triển ngôn ngữ lập trình C dựa trên ngôn ngữ BCPL và ngôn ngữ B Ban đầu, C được thiết kế nhằm lập trình trong môi trường của hệ điều hành Unix nhằm hỗ trợ cho các công việc lập trình phức tạp. Nhưng về sau, với những nhu cầu phát triển ngày một tăng của công việc lập trình, C đã vượt qua khuôn khổ của phòng thí nghiệm Bell và nhanh chóng hội nhập vào thế giới lập trình Tổng quan C là ngôn ngữ lập trình hệ thống rất mạnh và “mềm dẻo” C có một thư viện gồm rất nhiều các hàm đã được tạo sẵn, người lập trình có thể tận dụng các hàm này để giải quyết các bài toán mà không cần phải tạo mới. C hỗ trợ rất nhiều phép toán nên phù hợp cho việc giải quyết các bài toán kỹ thuật có nhiều công thức phức tạp. C cũng cho phép người lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tượng khác. C được phổ biến khá rộng rãi và đã trở thành một công cụ lập trình khá mạnh, được sử dụng như là một ngôn ngữ lập trình chủ yếu trong việc xây dựng những phần mềm hiện nay. Tổng quan Ngôn ngữ C có những đặc điểm cơ bản sau: Tính cô đọng (compact) Tính cấu trúc (structured) Tính tương thích (compatible) Tính linh động (flexible) Biên dịch (compile) Bộ chữ viết Bộ chữ viết trong ngôn ngữ C bao gồm những ký tự, ký hiệu sau (phân biệt chữ hoa và chữ thường):  26 chữ cái in hoa A,B,C...Z  26 chữ cái in thường a,b,c ...z.  10 chữ số thập phân 0,1,2...9.  Các ký hiệu toán học: +, -, *, /, =, , (, )  Các ký hiệu đặc biệt: :. , ; " ' _ @ # $ ! ^ [ ] { } ...  Dấu cách hay khoảng trống Từ khóa Từ khóa là từ dành riêng cho ngôn ngữ C cung cấp một thư viện các từ khóa để hỗ trợ cho công việc lập trình Ví dụ: break, char, continue, case, do, double, default, else, float, for, goto, int,if, long, return, struct, switch, unsigned, while, typedef, union voi, volatile,... Lưu ý:  Không được dùng từ khóa đặt tên cho các định danh do người lập trình khai báo (biến, hằng, mảng,… ).  Từ khóa phải được viết bằng chữ thường Từ khóa Ví dụ: #include #include int main () { char ten[50]; printf(“Xin cho biet ten cua ban !”); scanf(“%s”,ten); printf(“Xin chao ban %s\n ”,ten); printf(“Chao mung ban den voi Ngon ngu lap trinh C”); getch(); return 0; } Định danh Định danh (tên) được dùng để đặt cho chương trình, hằng, kiểu, biến, chương trình con... Tên có hai loại là tên chuẩn và tên do người lập trình đặt. Tên chuẩn là tên do C đặt sẵn như:  tên kiểu: int, char, float,…  tên hàm: sin, cos... Định danh Tên do người lập trình tự đặt sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_) để đặt tên Quy tắc đặt tên:  Bắt đầu bằng một chữ cái hoặc dấu gạch dưới.  Không có khoảng trống ở giữa tên.  Không được trùng với từ khóa.  Độ dài tối đa của tên là không giới hạn, tuy nhiên chỉ có 31 ký tự đầu tiên là có ý nghĩa. Ví dụ: Tên hợp lệ: a, i, ho_ten, do_dai Tên không hợp lệ: do dai, 01A Thư viện chuẩn C Thư viện chuẩn C là một tập hợp các tập tin tiêu đề và thư viện các thủ tục được tiêu chuẩn hóa Thư viện chuẩn cung cấp tập hợp cơ bản các hàm toán, điều chỉnh dãy kí tự, chuyển đổi kiểu, và các vào/ra cơ sở Mọi chương trình C khi hoạt động gần như phải phụ thuộc vào thư viện chuẩn Lưu ý: Không được viết hoa tên thư viện chuẩn khi lập trình Thư viện chuẩn C Thư viện chuẩn C bao gồm: : hổ trợ phát hiện các lỗi lô-gíc và các kiểu lỗi khác trong các phiên bản dùng để tìm lỗi của một chương trình. : tập hợp các hàm dùng để điều chỉnh các số phức. : phân lớp các kí tự bởi các kiểu hay dùng để chuyển đổi giữa chữ viết hoa và viết thường. : thử (hay hiển thị) các lỗi được báo cáo từ các hàm thư viện. Thư viện chuẩn C : kiểm soát môi trường chấm động. : gồm định nghĩa các hằng nêu ra các đặc tính xây dựng của thư viện chấm động. : Dùng cho việc chuỷen đổi kiểu chính xác giữa các kiểu nguyên. : Để lập trình trong ISO 646 cho cho các bộ kí tự khác nhau. : Chứa định nghĩa các hằng có đặc tính đặc biệt của các kiểu nguyên : Dùng cho setlocale() và các hằng có liên quan Thư viện chuẩn C : tính các hàm số thông dụng. : dùng trong việc thoát ra nơi không có tính địa phương. : kiểm soát các điều kiện ngoại lệ. : truy cập số lượng khác nhau của các đối số được chuyển vào hàm. : Dùng cho kiểu dữ liệu Bool.  : Dùng trong việc định nghĩa các kiểu nguyên khác nhau. : Cung cấp nhiều kiểu và macro hữu dụng. Thư viện chuẩn C  : Cung cấp khả năng nhập trong C.  : Dùng để xúc tiến nhiều phép toán, bao gồm sự chuyển đổi, các số giả ngầu nhiên, cấp phát vùng nhớ, kiểm soát quá trình, môi trường, tín hiệu, tìm kiếm, và xếp thứ tự.  : Để điều chỉnh nhiều loại dãy kí tự.  : Dùng cho các hàm toán kiểu thông dụng.  : Để chuyển đổi giữa các định dạng khác nhau về thì giờ và ngày tháng.  : Để điều chỉnh độ rộng của các dòng và nhiều loại dãy kí tự sử dụng nhiều kí tự có độ lớn  : Để phân lớp các kí tự có độ lớn. Thư viện chuẩn C Các tập tin thư viện thông dụng:  stdio.h  conio.h  math.h  alloc.h  io.h  graphics.h Các hàm toán học cơ bản trong C abs(int x): tính trị tuyệt đối của số nguyên x fabs(double x): tính trị tuyệt đối của số thực x random(int n): lấy số ngẫu nhiên từ 0 đến n-1 randomize(): khởi đầu bộ tạo số ngẫu nhiên, nên chạy hàm này trước khi dùng hàm random cos(double x), sin(double x), tan(double x): tính cos, sin và tang của x (đơn vị của x là radian chứ không phải là độ, 1 radian bằng khoảng 57 độ, cụ thể là bằng 180/3.14 ) exp(double x): tính e mũ x Các hàm toán học cơ bản trong C log(double x): tính logarit tự nhiên của x (ln(x)) pow(double y,double x): tính y mũ x. Chú ý: y mũ x có thể tính theo công thức: y mũ x = exp(y*log(x)) sqrt(double x): tính căn bậc 2 của x. Chú ý: căn bậc n của x có thể tính theo công thức: pow(x, 1/n) floor(double x): cho số nguyên lớn nhất dưới x. Ví dụ: floor(8.6) là 8 ceil(double x): cho số nguyên bé nhất trên x. Ví dụ: ceil(8.6) là 9 Cấu trúc một chương trình C Một chương trình C có thể bao gồm các phần:  Các chỉ thị tiền xử lý  Khai báo biến ngoài  Các hàm tự tạo  Chương trình chính (hàm main) Các chỉ thị tiền xử lý Sử dụng chỉ thị #include để khai báo tập tin thư viện sẽ dùng:  Cú pháp: #include Hoặc #include “Tên đường dẫn”  Ví dụ: #include Hoặc #include”C:\\TC\\math.h” Sử dụng chỉ thị #define để định nghĩa hằng số:  Cú pháp: #define  Ví dụ: #define MAXINT 32767 Định nghĩa kiểu dữ liệu Là phần không bắt buộc Dùng để đặt tên lại cho một kiểu dữ liệu nào đó hay đặt 1 kiểu dữ liệu riêng dựa trên các kiểu dữ liệu đã có Cú pháp: typedef Ví dụ: typedef int SoNguyen; // Kiểu SoNguyen là kiểu int Khai báo các prototype Khai báo tên hàm, các tham số, kiểu kết quả trả về,… của các hàm sẽ cài đặt trong phần sau Là phần không bắt buộc Chỉ là các khai báo đầu hàm, không phải là phần định nghĩa hàm Cú pháp: Tên hàm (danh sách đối số) Ví dụ: long giaithua (int n); // tính giai thừa của số nguyên n double x_mu_y(float x, float y); /*Hàm tính x mũ y*/ Khai báo các biến ngoài Khai báo các biến toàn cục được sử dụng trong cả chương trình Là phần không bắt buộc Ví dụ: int i; char ten[50]; Chương trình chính Là phần bắt buộc phải có Cú pháp: main() { Các khai báo cục bộ trong hàm main: Các khai báo này chỉ tồn tại trong hàm mà thôi, có thể là khai báo biến hay khai báo kiểu. Các câu lệnh dùng để định nghĩa hàm main return ; // Hàm phải trả về kết quả } Cài đặt các hàm tự tạo Cú pháp: function1( các tham số) { Các khai báo cục bộ trong hàm. Các câu lệnh dùng để định nghĩa hàm return ; } Ví dụ #include #include #include void main() { clrscr(); float a,b,c,delta; printf("Cho biet he so a = "); scanf("%f", &a); printf("Cho biet he so b = "); scanf("%f", &b); printf("Cho biet he so c = "); scanf("%f", &c); delta = b*b - 4*a*c; Ví dụ (tt) if (delta < 0) printf("Phuong trinh vo nghiem"); else if (delta == 0) printf("Phuong trinh co nghiem kep x1 = x2 = %0.2f", -b/(2*a)); else { printf ("Phuong trinh co 2 nghiem phan biet:\n x1 = %0.2f", (-b + sqrt(delta))/(2*a)); printf ("\nx1 = %0.2f", (-b - sqrt(delta))/(2*a)); } getch(); } Cấu trúc một chương trình C Ngoài ra, khi viết chương trình đôi lúc cần phải có vài lời ghi chú về 1 đoạn chương trình nào đó để dễ nhớ và dễ điều chỉnh sau này Phần nội dung ghi chú không thuộc về chương trình (khi biên dịch phần này bị bỏ qua). Trong C, nội dung chú thích được viết trong cặp dấu /* và */ nếu nội dung ghi chú gồm nhiều hàng; hoặc dấu // nếu nội dung ghi chú chỉ có một hàng CÂU HỎI ÔN TẬP CHƯƠNG 4 1. Tìm hiểu và liệt kê (mô tả và cho ví dụ) các hàm thường sử dụng trong ngôn ngữ C. 2. Hãy viết một chương trình C cơ bản để hiển thị ra màn hình câu thông báo: Đây là môn học về lập trình C cơ bản. 3. Hãy viết một chương trình C cơ bản để nhập và xuất ra màn hình họ và tên, ngày tháng năm sinh của một sinh viên bất kỳ. 4. Tìm hiểu các hàm (lệnh) nhập/xuất cơ bản trong C. Liệt kê và cho ví dụ