Phép thế Macro:

Một phần của tài liệu Bài Giảng C++ (Trang 153 - 157)

Cú pháp định nghĩa Macro có dạng: #define <biểu thức 1> [biểu thức 2]

Ví dụ 1: #define YES 1

Macro thay hằng YES bởi giá trị 1 có nghĩa là hễ có chỗ nào trong chương trình có xuất hiện hằng YES thì nó sẽ được thay bởi giá trị 1.

Ví dụ 2: Một người lập trình ưa thích PASCAL có thể định nghĩa các macro sau:

#define then #define begin { #define end; }

sau đó ta có thể viết đoạn chương trình như sau trong C: if (i>0) then begin a=i; ... 153

end;

Ta cũng có thể định nghĩa các macro có tham số, do vậy giá trị thay thế sẽ phụ thuộc vào giá trị của các tham số được truyền cho macro.

Ví dụ 3: Định nghĩa macro tính max của hai số như sau:

#define max(a,b) ((a)>(b) ?(a):(b)) việc sử dụng: x=max(p+q,r+s);

tương đương với: x=((p+q)>(r+s) ? (p+q): (r+s));

Chú ý: Không được viết dấu cách giữa tên macro với dấu mở ngoặc bao quanh danh sách đối.

Ví dụ 4: Xét chương trình sau: main() { int x,y,z; x=5; y=10*5; z=x+y; z=x+y+6; z=5*x+y; z=5*(x+y); z=5*((x)+(y)); printf("Z=%d",z); getch(); return; }

Chương trình sử dụng MACRO sẽ như sau: #define BEGIN {

#define END }

#define INTEGER int #define NB 10

#define LIMIT NB*5 #define SUMXY x+y #define SUM1 (x+y) #define SUM2 ((x)+(y)) main() BEGIN INTEGER x,y,z; x=5; y=LIMIT; z=SUMXY; z=5*SUMXY; z=5*SUM1; z=5*SUM2; printf("\n Z=%d",z); getch(); return; END 155

Bài 11: TẬP TIN - FILE 11.1. Khái niệm về tệp tin:

Tệp tin hay tệp dữ liệu là một tập hợp các dữ liệu có liên quan với nhau, được chứa trong một thiết bị nhớ ngoài của máy tính (đĩa cứng, CD, ...) dưới một cái tên nào đó.

Một hình ảnh rõ nét giúp ta hình dung ra tệp là tủ phiếu của thư viện. Một hộp có nhiều phiếu giống nhau về hình thức và tổ chức, song lại khác nhau về nội dung. Mỗi hộp tương đương với một tệp, các lá phiếu là các thành phần của tệp. Trong máy tính, một đĩa cứng, CD, … đóng vai trò chiếc tủ (để chứa nhiều tệp).

Tệp được chứa trong bộ nhớ ngoài, điều đó có nghĩa là tệp được lưu trữ để dùng nhiều lần và tồn tại ngay cả khi chúng ta đã tắt máy tính. Chính vì lý do trên, những dữ liệu nào cần lưu trữ lâu dài (như hồ sơ chẳng hạn) thì ta nên dùng đến tệp.

Tệp là một kiểu dữ liệu có cấu trúc. Định nghĩa tệp có phần nào giống mảng ở chỗ chúng đều là tập hợp của các phần tử dữ liệu cùng kiểu dữ liệu, song mảng thường có số phần tử cố định, số phần tử của tệp không được xác định trong khi định nghĩa.

Có hai kiểu nhập xuất dữ liệu lên tệp: Nhập xuất nhị phân và nhập xuất văn bản.

Nhập/xuất nhị phân:

Dữ liệu được ghi lên tệp theo các byte nhị phân, trong quá trình nhập xuất, dữ liệu không bị biến đổi.

Khi đọc tệp, nếu gặp cuối tệp thì ta nhận được mã kết thúc tệp bằng hằng số EOF (được định nghĩa trong stdio.h bằng -1) và khi đó hàm feof cho giá trị khác 0.

Nhập/xuất văn bản:

Kiểu nhập xuất văn bản chỉ khác kiểu nhị phân khi xử lý ký tự chuyển dòng (mã 10). Mã chuyển dòng được xử lý như sau:

Khi ghi, nếu gặp một ký tự LF (mã 10) thì nó sẽ được chuyển thành hai ký tự CR (mã 13) và LF (mã 10).

Khi đọc, hai ký tự liên tiếp là CR và LF trên tệp chỉ cho ta một ký tự LF

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Bài Giảng C++ (Trang 153 - 157)