5.3. Các lệnh nhập, xuất dữ liệu 5.3.1 Lệnh xuất (in) dữ liệu ra màn hình
5.3.1.1 Ý nghĩa
Để in thông báo, lời mời nhập dữ liệu, kết quả của chương trình... ta dùng các lệnh xuất (lệnh in) dữ liệu. Có nhiều thiết bị để xuất thông tin ra, song trong phần này chúng ta chỉ nghiên cứu các lệnh đưa dữ liệu ra màn hình - thiết bị xuất chuẩn thông tin.
5.3.1.2 Cú pháp
WRITE (mục1, mục2, mục3,...,mụcn); (1)
WRITELN (mục1, mục2, mục3,...,mụcn); (2)
WRITELN; (3)
5.3.1.3 Sự thực hiện
Dạng (1): In lên màn hình các mụci (i=1,n) tại vị trí hiện thời của con trỏ màn hình theo thứ tự liệt kê trong lệnh, từ trái sang phải. Sau đó, con trỏ màn hình đứng ở vị trí sau mục n.
Dạng (2): In lên màn hình các mụci (i=1,n) tại vị trí hiện thời của con trỏ màn hình theo thứ tự liệt kê trong lệnh, từ trái sang phải. Sau đó, con trỏ màn hình được đưa xuống đầu dòng tiếp theo trên màn hình
Dạng (3): Đưa con trỏ màn hình ở vị trí hiện thời về đầu dòng tiếp theo.
5.3.1.4 Chú ý
-
Các mục: mục1, mục2, mục3,...,mụcn có thể là:
-
Xâu ký tự
-
Biến
-
Biểu thức
-
Hàm
-
Hằng
-
Các giá trị thuộc kiểu dữ liệu đơn giản chuẩn
-
Các giá trị thuộc kiểu dữ liệu có cấu trúc, như: kiểu mảng, kiểu xâu
-
Các mục có thể in ra ở dạng không qui cách hoặc có qui cách.
-
Các mục phải đặt cách nhau dấu phẩy (,)
5.3.1.5 Các ví dụ
Ví dụ 5.11: Giả sử có các khai báo hằng, biến sau:
CONST kq=’Ket qua cua chuong trinh’;
so=189.64;
VAR a, b: Integer;
x: Real;
MT: Array[1..10, 1..10] of Real;
a:=5;
b:=17;
x:=0.061;
-
Có thể viết một số lệnh in ra màn hình như sau:
WRITELN(‘Truong Cao dang Dien luc’);
WRITELN(a);
WRITELN(x);
WRITELN(ax+b);
WRITELN(SQRT(2*a*x));
WRITELN(so);
WRITELN(kq);
WRITELN(PI);
WRITELN(1999);
WRITELN(MT[3,2]);
WRITELN(‘So be nhat ’,a,’ so lon nhat ‘,b);
...
5.3.1.6 In dữ liệu ra màn hình có qui cách
a) Đối với số nguyên
Ví dụ 5.12: Xét đoạn chương trình sau:
a:=5;
b:=164;
WRITELN(a);
WRITELN(b);
WRITELN(MAXINT);
-
Kết quả thu được trên màn hình:
5
164
32767
Các số nguyên được in mỗi số trên một dòng nhờ câu lệnh WRITELN. Các số nguyên in không qui cách sẽ căn theo lề bên trái, vì vậy sẽ là in chưa hợp lý nếu cần bố trí in dữ liệu theo dạng cột.
write(I:m); hoặc writeln(I:m);
Trong đó:
-
I là một biến kiểu số nguyên
-
m là số vị trí trên màn hình dành để in số nguyên I, m là một giá trị nguyên.
Ví dụ 5.13: Xét đoạn chương trình sau:
a:=5;
b:=164;
WRITELN(a:6);
WRITELN(b:6);
WRITELN(MAXINT:6);
-
Kết quả thu được trên màn hình:
5
164
32767
Các số nguyên in có qui cách sẽ căn theo lề bên phải, căn cứ vào số chỗ dành để in chúng đã được chỉ ra trong câu lệnh. Nếu thừa chỗ sẽ để trống phía trước (bên trái) số nguyên được in ra. Vì vậy muốn in dữ liệu kiểu nguyên theo dạng cột thì phải in chúng với cùng một qui cách.
b) Đối với số thực
Ví dụ 5.14: Xét đoạn trình sau:
x:=93.61;
y:=-0.0011;
WRITELN(x);
WRITELN(y);
WRITELN(PI);
-
Kết quả thu được trên màn hình:
9.3610000000E+01
-1.1000000000E-03
3.1415926536E+00
Các số thực được in ra theo kiểu dấu phảy động (còn gọi là ký pháp khoa học) theo qui định sau: mỗi số in trong phạm vi 14 vị trí trên màn hình: 1 vị trí dành để in dấu - nếu số thực đó là số âm, nếu không sẽ bỏ trống; tiếp theo là 1 vị trí dành để in phần nguyên của số thực; 10 vị trí tiếp theo sẽ dành để in phần thập phân, nếu không có sẽ in số 0; chữ E được in ở vị trí tiếp theo, sau đó là 1 vị trí cho dấu của phần mũ và 2 vị trí cuối cùng dành để in phần mũ.
Số thực được in như vậy sẽ làm chúng ta khó xem kết quả của chương trình nếu chưa quen.
write(R:m:n);
hay writeln(R:m:n)
Trong đó:
-
R là biến kiểu số thực
-
m là tổng số vị trí trên màn hình dành để in R
-
n là số vị trí dành để in phần thập phân của R hay là số chữ số sau dấu thập phân.
-
m, n là các giá trị nguyên; m>>n., nếu bạn để m<=n thì việc viết theo quy cách là không có ý nghĩa.
Ví dụ 5.15: Xét đoạn chương trình sau:
x:=93.61;
y:=-0.0011;
WRITELN(x:10:4);
WRITELN(y:10:4);
WRITELN(PI:10:4);
-
Kết quả thu được trên màn hình:
|
|
|
9
|
3
|
.
|
6
|
1
|
0
|
0
|
|
|
|
-
|
0
|
.
|
0
|
0
|
1
|
1
|
|
|
|
|
3
|
.
|
1
|
4
|
1
|
6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Các số thực được in ra ở dạng dấu phẩy tĩnh (còn gọi là ký pháp thông thường), so đều phải theo đúng qui cách đã chỉ ra trong câu lệnh. Phần thập phân nếu không sử dụng hết n vị trí sẽ được điền vào đó các số 0; nếu n vị trí không đủ để in hết phần thập phân của số thì phần thập phân sẽ được làm tròn.
Nếu m vị trí không được sử dụng hết thì sẽ để trống phía bên trái số thực được in ra.
Vậy, in các số thực có qui cách sẽ làm cho kết quả trở nên dễ đọc hơn và dữ liệu sẽ được in thành cột nếu mọi số thực đều in với cùng một qui cách.
Nếu in số thực theo qui cách của số nguyên (R:m) thì kết quả vẫn in ở dạng dấu phẩy động nhưng gọn hơn. Lưu ý rằng trong trường hợp này m phải được chon >=8, nếu chọn m<8 thì số thực in ra vẫn chiếm 8 vị trí trên màn hình.
Ví dụ 5.16:
x:=93.61;
y:=-0.0011;
WRITELN(x:10);
WRITELN(y:10);
-
Kết quả thu được trên màn hình:
-
|
9
|
.
|
3
|
6
|
1
|
E
|
+
|
0
|
2
|
-
|
1
|
.
|
1
|
0
|
0
|
E
|
-
|
0
|
3
|
c) Đối với dữ liệu là ký tự, xâu ký tự, logíc
Kết quả thu được: dữ liệu sẽ in từ trái sang phải; mỗi ký tự chiếm 1 vị trí trên màn hình; in hết dữ liệu thuộc biến thì dừng.
Mẫu
CH:m
ST:m
BL:m
Trong đó:
-
CH là biến kiểu kí tự
-
ST là biến kiểu xâu kí tự
-
BL là biến kiểu logíc
-
m là số vị trí trên màn hình dành để in các biến CH, ST, BL
Dữ liệu được in từ phải sang trái căn cứ vào số vị trí dành để in biến theo qui cách đã chỉ ra trong lệnh. Nếu dữ liệu in ra không sử dụng hết m vị trí theo qui cách đã chỉ ra, thì ký tự trống sẽ được điền vào phía trái của dữ liệu được in. Nếu số vị trí m được chỉ ra trong qui cách lại nhỏ hơn số vị trí thực sự để in dữ liệu thì dữ liệu vẫn được in ra đầy đủ.
Ví dụ 5.17: Hãy viết 1 chương trình in ra 2 dòng tuỳ ý; gán tên, tuổi, ngành học vào các biến tương ứng sau đó in các thông tin đó ra màn hình.
Program VIDU1;
Uses Crt; {Khai báo dùng unit chuẩn CRT}
Var Ten, Nganhhoc: String[25];
Tuoi: Byte;
BEGIN
ClrScr; {Xoá màn hình}
WriteLn('Chuong trinh minh hoa');
WriteLn('*********************');
WriteLn;
{Gán dữ liệu cho các biến}
Ten := 'Nguyen Thanh Lam';
Tuoi := 20;
Nganhhoc := 'Tin hoc';
{In thông tin trong các biến ra màn hình}
WriteLn('Tentoi la:',Ten,' nam nay toi',Tuoi:3,' tuoi');
WriteLn('Toi dang hoc nganh ', Nganhhoc);
WriteLn;
WriteLn(' Xin chao cac ban. Hen gap lai');
WriteLn(' Ban hay nhan phim ENTER de ket thuc!');
ReadLn;
END.
8>
Chia sẻ với bạn bè của bạn: |