Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C
30
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 bp(x+y) 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 (dòng 6-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
(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.
Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
C
31
¾
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).
Chia sẻ với bạn bè của bạn: