GamesCapNhat.Wap.Sh
HOME - Lập Trình đồng hồ gỗ ĐỨC PHỔ WAP LẬP TRÌNH
Xem Thêm >>
Lập Trình C

Cấu Trúc Của 1 Chương Trình C

III.1. Cấu trúc chương trình

 Một chương trình C nói chung có dạng như sau 

1: [ các bao hàm tệp ] 

2: [ các khai báo nguyên mẫu hàm của người dùng ]

3: [ các định nghĩa kiểu ] 

4: [ các định nghĩa macro ] 

5: [ các định nghĩa biến, hằng ]

 6: <kiểu_hàm> main ( [khai báo tham số ] ) 

7:     {   

 8:                < thân hàm main> 

9:     } 

10: [ các định nghĩa hàm của người dùng] 

( trong cú pháp trên chúng ta thêm số hiệu dòng và dấu: để cho việc giải thích  được thuận lợi, các thành phần trong ngoặc [] là các thành phần tuỳ chọn)

 a. Các bao hàm tệp (dòng 1)  

Trong chương trình C (trong hàm main cũng như các hàm khác do người lập trình viết) có thể sử dụng các hàm,  hằng, kiểu dữ liệu,..(gọi chung là các thành phần) đã được định nghĩa trong thư viện của C. Để sử dụng các thành phần này chúng ta phải chỉ dẫn cho chương trình dịch biết các thông tin về các thành cần sử dụng, các thông tin đó được khai báo trong tệp gọi là tệp tiêu đề (có phần mở rộng là H –  viết tắt của header). Và phần các bao hàm tệp là các chỉ dẫn để chương trình gộp các tệp này vào chương trình của chúng ta. trong một chương trình chúng ta có thể không  dùng hoặc dùng nhiều tệp tiêu đề.  

Cú pháp của một dòng bao hàm tệp:  

 #include <tên_tệp>   

hoặc    #include “tên_tệp” 

trong đó tên_tệp  là tên có thể có cả đường dẫn của tệp tiêu đề (.H) mà chúng ta cần sử dụng, mỗi lệnh bao hàm tệp trên một dòng. 

 Ví dụ: 

  #include <stdio.h>

   #include <conio.h> 

 #include “phanso.h”

 Sự khác nhau giữa cặp  <> và  “”

bao quanh tên tệp là với cặp <> chương trình dịch tìm tên tệp tiêu đề trong thư m ục ngầm định xác định bởi đường dẫn trong mục Option/Directories, còn với cặp “” chương trình dịch tìm tệp trong thư mục hiện tại, nếu không có mới tìm trong thư mục các tệp tiêu đề ngầm định như trường hợp <>. b. Các khai báo nguyên mẫu và định nghĩa  hàm của người dùng Trong phần này chúng tôi nêu một số thông tin về khai báo nguyên mẫu và định nghĩa hàm để giải thích cấu trúc chương trình chứ không có ý định trình bày về hàm, chi tiết về hàm sẽ được trình bày trong phần về hàm.

 • Các nguyên mẫu (dòng 2)

Nguyên mẫu một hàm là dòng khai báo cung cấp các thông tin: tên hàm, kiểu hàm, số đối số và kiểu từng đối số của hàm.

 Cú pháp khai báo nguyên mẫu <kiểu_hàm> <tên_hàm> ([ khai báo đối ]); 

 Ví dụ:    int min (int, int);  

 float binhphuong (float y);  

 float giatri(int , float);

 Lưu ý: Phần khai báo đối của nguyên mẫu, mục đích là xác định số đối số và kiểu của từng đối số, do vậy bạn có thể không viết tên của đối số nhưng kiểu của chúng thì phải có và bạn phải liệt kê đầy đủ kiểu của từng đối.

 • Các định nghĩa  hàm của người dùng (dòng 10)

Trong phần này chúng ta định nghĩa các hàm của người dùng, một định nghĩa hàm bao gồm dòng tiêu đề của hàm và thân của hàm, với cú pháp như sau:

 <kiểu_hàm> <tên_hàm> ([ khai báo đối ])  {   < thân  hàm >  } 

  Ví dụ:   int min(int a, int b)  {     if(a>=b)        return b;     else return a;    }  

Lưu ý:

  -  Tiêu đề hàm trong định nghĩa hàm phải tương ứng với nguyên mẫu hàm

 -   Nếu trong chương trình định nghĩa hàm xuất hiện trước khi gặp lời gọi hàm đó thì có  thể không nhất thiết phải có dòng khai báo nguyên mẫu hàm.

 c. Định nghĩa kiểu mới (dòng 4)

Ngoài những kiểu chuẩn đã được cung cấp sẵn của ngôn ngữ, người lập trình có thể định nghĩa ra các  kiểu mới từ những kiểu đã có bằng cách sử dụng từ khoá typedef (type define) Với cú pháp như sau

 typedef <mô_tả_kiểu> <tên_kiểu_mới>; 

 Trong đó <tên_kiểu_mới> là  tên kiểu cần tạo do người lập trình đặt theo quy tắc về tên của ngôn ngữ, và <mô_tả_kiểu> là phần chúng ta định nghĩa các thành phần cấu  thành lên kiểu mới. 

 Ví dụ:   

 typedef unsigned char byte;  

  typedef long  nguyendai; 

 Sau định nghĩa này các tên mới byte được dùng với ý nghĩa là tên kiểu dữ liệu nó tương tự như unsigned char, và nguyendai tương tự như long. 

 Ví dụ: chúng ta có thể định nghĩa biến a, b kiểu byte như sau    byte a,b; 

d. Định nghĩa macro (dòng 5) 

 Khái niệm macro là gì?

Giả sử như bạn có một nội dung (giá trị) nào đó và bạn muốn sử dụng nó nhiều lần trong chương trình, nhưng bạn không muốn viết trực tiếp nó vào chương trình lúc bạn soạn thảo vì một vài lý do nào đó (chẳng hạn như nó sẽ làm chương trình khó đọc, khó hiểu, hoặc khi thay đổi sẽ khó,..). Lúc này bạn hãy gán cho nội dung đó một  ‘tên’ và bạn sử dụng ‘tên’ đó để viết trong chương trình nguồn. Khi biên dịch chương trình, chương trình  dịch sẽ tự động thay thế nội dung  của ‘tên’ vào đúng vị trí của ‘tên’ đó. Thao tác này gọi là phép thế macro và chúng ta gọi ‘tên’ là tên của macro và nội dung của nó được gọi là nội dung của macro. Một macro được định nghĩa như sau:  

   #define tên_macro nội_dung 

 Trong đó tên macro là một tên hợp lệ, nội dung (giá trị) của macro được coi thuần tuý là 1 xâu cần thay thế vào vị trí xuất hiện tên của macro tương ứng, giữa tên và nội dung cách nhau 1 hay nhiều khoảng trống (dấu cách). Nội dung của macro bắt đầu từ kí tự khác dấu trống đầu tiên sau tên macro cho tới hết dòng.   

Ví dụ : 

    # define SOCOT 20 

    # define max(a,b) (a>?b a:b)

 Với hai ví dụ trên, khi gặp tên SOCOT chương trình dịch sẽ tự động thay thế bởi 20 và max(a,b) sẽ được  thay thế bởi (a>b?a:b)

 Chú ý:

 −    Phép thay thế macro đơn giản chỉ là thay nội dung macro vào vị trí tên của nó do vậy sẽ không có cơ chế kiểm tra kiểu.

 −    Khi định nghĩa các macro có ‘tham số’ có thể sau khi thay thế biểu thức mới  thu được có trật tự tính toán không như bạn mong muốn.

 Ví dụ  ta có macro tính bình phương 1 số như sau:     

  # define bp(a) a*a 

 và bạn có câu lệnh bp0 sẽ được  thay là x+y*x+y và kết quả không như ta mong      đợi. Trong trường hợp này bạn nên sử dụng dấu ngoặc cho các tham số của macro  # define bp(a) ( a)*(a)

 e.  Định nghĩa biến, hằng  (dòng 5) 

Các biến và hằng được định nghĩa tại đây sẽ trở thành biến và hằng toàn cục. Ý nghĩa về biến, hằng, cú pháp định nghĩa đã được trình bày trong mục biến và hằng.

 f. Hàm main -9

 Đây là thành phần bắt buộc duy nhất trong một chương trình C,  thân của hàm main bắt đầu từ sau dấu mở móc { (dòng 7) cho tới dấu đóng móc } (dòng 8). Không giống như chương trình  của Pascal luôn có phần chương trình chính,  chương trình  trong C được phân thành các hàm độc lập các hàm có cú pháp như nhau và cùng mức, và một hàm đảm nhiệm phần thân chính của chương trình, tức là  chương trình sẽ bắt đầu được thực hiện  từ dòng lệnh đầu tiên và kết thúc sau lệnh cuối cùng trong thân hàm main  .   Trong định nghĩa một hàm nói chung đều có hai phần đó là tiêu đề của hàm, dòng này bao gồm các thông tin : Tên hàm, kiểu hàm (kiểu giá trị hàm trả về), các tham số hình thức (tên tham số và kiểu của chúng).  Phần thứ hai là thân của hàm, đây là tập các lệnh (hoặc khai báo) thực hiện các thao tác theo yêu cầu về chức năng của hàm đó. Hàm main cũng chỉ là một trường hợp riêng của hàm nhưng có tên cố định là main, có thể có hoặc không có các đối số, và có thể trả về giá trị cho hệ điều hành, kiểu của giá trị này được xác định bởi <kiểu_hàm>  (dòng 6) – chi tiết về đối, kiểu của hàm main sẽ được đề cập kỹ hơn trong các phần sau.  Thân hàm main được  bao bởi cặp {(dòng 7), và } (dòng 9) có thể gồm các lệnh, các khai báo  hoặc định nghĩa  biến, hằng, kiểu, các thành phần này trở thành cục bộ trong hàm main - vấn đề cục bộ, toàn cục sẽ đề cập tới trong phần phạm vi.  

 Lưu ý:

 • Các thành phần của chương trình mà chúng ta vừa nêu trừ hàm main là thành phần phải có và duy nhất trong một chương trình C, còn các thành phần khác là tuỳ chọn, có thể không có hoặc có nhiều.

 • Thứ tự các thành phần không bắt buộc theo trật tự  như trên mà chúng có thể xuất hiện theo trật tự tuỳ ý nhưng phải đảm bảo yêu cầu mọi thành phần phải được khai báo hay định nghĩa  trước khi sử dụng.

 • Các biến, hằng khai báo ngoài mọi hàm có phạm vi sử dụng là toàn cục (tức là có thể sử dụng từ sau lệnh khai báo cho tới hết file chương trình). Các hằng, biến khai báo trong 1 hàm (hoặc trong 1 khối) là thành phần cụ bộ (có phạm vi sử dụng trong hàm hoặc trong khối đó mà thôi).

 • Các hàm trong C là một mức (tức là trong hàm không chứa định nghĩa hàm khác).  

<< Bài Viết Khác
Danh mục
Game Mobile
Phần Mềm - Ứng Dụng
Hình Nền Đẹp
Kinh Nghiệm Thủ Thuật
Giải Trí Thư Giản
Phim Tổng Hợp
Hổ Trợ Học Tập
Tiện Ích Wap Online
Điện Thoại Bạn Có Chưa?
game online - kinh nghiem thu thuat - app android - game android - phim hanh dong - lap trinh c - lap trinh pascal - giai tri
U-ON

Ring ring