Xuấtdữliệu,thủtụcWritevàWriteln Các dữ liệu được in lên màn hình nhờ các lệnh sau: Writeln( bt1, bt2 , , btk ); Write( bt1, bt2 , , btk ); ở đây, bt1, bt2, , btk là các biểu thức cầ? phải in gía trị lên màn hình. Trong trường hợp đơn giản, mỗi biểu thức này có thể là một biến, một hằng, hay một hàm. Việc in được thực hiện như sau: tại vị trí hiện thời của con trỏ trên màn hình, in ra gía trị của biểu thức bt1, in tiếp gía trị của biểu thức bt2, , in tiếp gía trị của biểu thức btk. Các gía trị này được in trên một dòng, nếu dài qúa khổ màn hình thì sẽ được in tiếp ở dòng dưới. Ví dụ, lệnh Writeln(3*2+9); sẽ in lên màn hình số 15. Nếu i, j là các biến nguyên thì khi thực hiện các lệnh sau: i :=10 ; j:=15*2 ; Writeln(i, j+1, 678); trên màn hình sẽ hiện: 1031678. Sự khác nhau giữa lệnh WritelnvàWrite là ở chỗ: sau khi in xong giá trị của các biểu thức, lệnh Writeln sẽ đưa con trỏ xuống đầu dòng dưới, còn lệnh Write thì không. Ðiều này chỉ ảnh hưởng đến lệnh in tiếp theo mà thôi. Ví dụ, khi thực hiện hai lệnh sau : Writeln(‘Thao chuong bang ‘); Writeln(‘ngon ngu pascal’); kết qủa trên màn hình sẽ hiện hai dòng : Thao chuong bang ngon ngu pascal Nếu thay lệnh đầu bằng Write như dưới đây: Write(‘Thao chuong bang ‘); Writeln(‘ngon ngu pascal’); thì kết qủa trên màn hình sẽ hiện ra chỉ một dòng: Thao chuong bang ngon ngu pascal 7.3.2.1. In không định dạng: Ðối với các biểu thức kiểu nguyên, kiểu ký tự, kiểu lô gíc hay kiểu chuỗi, thì lệnh : Writeln( biểuthức ) ; sẽ in nguyên văn gía trị của biểu thức. Ví dụ : Lệnh Writen(‘ket qủa x=‘ , 4+15); sẽ in ra: ket qua x=19 Lệnh Writeln(‘A’ , ‘=‘ , 2*3<5); sẽ in ra: A=FALSE vì biểu thức 2*3< 5 có kết qủa là FALSE. Nếu gán: Ho_ten:=‘ Tran Van Thanh’; thì lệnh Writeln(‘Ho va ten: ‘, Ho_ten); sẽ in lên màn hình dòng chữ : Ho va ten: Tran Van Thanh Cần phân biệt hai đại lượng ‘Ho va ten: ‘ và Ho_ten. Chúng khác nhau hoàn toàn: ‘Ho va ten: ‘ là một gía trị chuỗi, tức là một hằng chuỗi nên sẽ được in nguyên văn lên màn hình, còn Ho_ten là một biến kiểu chuỗi nên sẽ in gía trị mà biến này đang chứa. Ðối với các biểu thức kiểu số thực thì lệnh: Writeln( biểuthức ); sẽ in gía trị của biểu thức ra dưới dạng dấu chấm thập phân di động có cả thảy 17 ký số, trong đó có 10 ký số trong phần định trị, như sau: Ở đây ta dùng ký hiệu để chỉ một ký tự trắng, còn X đại diện một ký số . Ví dụ, cho x, y là hai biến thực và gán x:=100/4; y:=-9/300; thì hai lệnh sau : Writeln(‘ x= ‘, x); Writeln(‘ y= ‘, y); sẽ in lên màn hình : x = 2.5000000000E+01 y = -3.0000000000E-02 7.3.2.2. In có định dạng: a). In số thực có định dạng: In các số thực theo cách trên rất khó đọc. Vì thế các số thực thường được in có định dạng, giống như cách viết số thông thường, bằng lệnh: Writeln( biểuthức : n : k ); Ở đây n và k là các số tự nhiên, ấn định dùng n cột để in gía trị của biểu thức, trong đó có k cột dành cho phần thập phân. Nếu số cần in có ít hơn n chữ số thì nó sẽ được in dồn về bên phải và thêm các ký tự trắng ở bên trái cho đủ n cột. Ví dụ, cho x, y là các biến kiểu thực và: x:=100/4; y:=-123.4824; Hai lệnh sau : Writeln(‘ x=‘, x:6:2); Writeln(‘ y=‘, y:10:3); sẽ in lên màn hình: x= 25.00 ( trước số 2 có 1 ký tự trắng) y= -123.482 (trước dấu - có 2 ký tự trắng) Nếu n nhỏ hơn chiều dài của số cần in thì số sẽ được in ra với đầy đủ các chữ số trong phần nguyên. Ví dụ, khi thực hiện các lệnh sau : x:=12345.675; Writeln(‘x= ‘, x:0:2); trên màn hình sẽ hiện : x=12345.68 Ở đây máy đã làm tròn số khi bỏ số lẻ cuối cùng. b). In kiểu nguyên, ký tự, chuỗi và lôgic có định dạng : Dùng lệnh : Writeln(biểuthức : n); trong đó n là số nguyên ấn định số cột dùng để in gía trị của biểu thức. Nếu n lớn hơn độ dài của gía trị cần in thì gía trị sẽ được in dồn về bên phải, và thêm các khoảng trắng ở bên trái cho đủ n cột. Nếu n nhỏ hơn độ dài của gía trị cần in thì gía trị sẽ được in nguyên văn. Ví dụ: Lệnh Write(5+40:4); in ra: 45 (có 2 ký tự trắng trước số 45) Lệnh Write(5+40:1); in ra:45 (in nguyên văn gía trị 45) Lệnh Write(‘Pascal’ :9); in ra: Pascal (có 3 ký tự trắng trước chữ Pascal) Lệnh Write(‘Pascal’ :2); in ra:Pascal (in nguyên văn) Lệnh Write(‘*’:3); in ra: * (có 2 ký tự trắng trước dấu *) Các chú ý: Nhóm ba lệnh: Write(x); Write(y); Write(j); chỉ có tác dụng như một lệnh: Write(x, y, j); Nhóm ba lệnh: Write(x); Write(y); Writeln(j); chỉ có tác dụng như một lệnh: Writeln(x, y, j); Lệnh: Writeln; không in gì cả, chỉ đơn giản là đưa con trỏ xuống dòng dưới. Ví dụ 7.1: Dưới đây là chương trình cho phép nhập họ tên, mã số của một sinh viên, rồi in họ tên, mã số của sinh viên đó trong một cái khung được vẽ bằng các dấu sao *, như hình dưới chẳng hạn : ********************** * Nguyen Van Tuan * * Ma so: 1972508 * ********************** Chương trình cụ thể như sau: PROGRAM VIDU71; Uses CRT; Var Ten : String[18]; Maso : String[11]; Begin CLRSCR; Write(‘ Nhap ho va ten: ‘); Readln(Ten); Write(‘ Nhap ma so sv : ‘); Readln(Maso); Writeln; Writeln(‘ ********************** ’); { in 22 dấu * } Writeln(‘*’, Ten:19, ‘*’:2); { in 1 dấu *, in Ten chiếm 19 cột, in tiếp dấu * chiếm 2 cột } Writeln(‘* Ma so:’ , Maso:12, ‘*’:2); { in * Ma so, in Maso chiếm 12 cột, in tiếp dấu * chiếm 2 cột } Writeln(‘**********************’); { in 22 dấu * } Readln; End. Chạy<VD71.EXE> Chép tập tin nguồn <VD71.PAS> . Xuất dữ liệu, thủ tục Write và Writeln Các dữ liệu được in lên màn hình nhờ các lệnh sau: Writeln( bt1, bt2 , , btk ); Write( bt1, bt2 , , btk ); ở đây,. String[11]; Begin CLRSCR; Write( ‘ Nhap ho va ten: ‘); Readln(Ten); Write( ‘ Nhap ma so sv : ‘); Readln(Maso); Writeln; Writeln( ‘ ********************** ’); { in 22 dấu * } Writeln( ‘*’, Ten:19,. Lệnh Write( ‘*’:3); in ra: * (có 2 ký tự trắng trước dấu *) Các chú ý: Nhóm ba lệnh: Write( x); Write( y); Write( j); chỉ có tác dụng như một lệnh: Write( x, y, j); Nhóm ba lệnh: Write( x); Write( y);