Giáo trình Nhập môn Tin học LỜi nóI ĐẦU



tải về 4.67 Mb.
trang46/63
Chuyển đổi dữ liệu20.05.2018
Kích4.67 Mb.
1   ...   42   43   44   45   46   47   48   49   ...   63

5.2. Câu lệnh trong chương trình Pascal

5.2.1 Phân loại câu lệnh


Câu lệnh là một dãy các ký tự cơ bản được xây dựng theo một quy tắc nhất định (gọi là cú pháp) nhằm chỉ thị cho máy thực hiện một công việc xác định. Các câu lệnh được chia ra hai loại: câu lệnh đơn giản và câu lệnh có cấu trúc.

Lệnh gán và lời gọi thủ tục được xếp vào loại đơn giản.

Ví dụ 5.5:

k := 20;


Clrscr ;

Writeln(k) ;

Các lệnh rẽ nhánh và lệnh lặp được xếp vào loại có cấu trúc, chúng được xây dựng từ các lệnh đơn giản.

Ví dụ 5.6:

If k>=0 then Writeln(k)

else

Writeln( -k) ;



Hai hay nhiều lệnh đơn giản được gom lại và đặt giữa hai từ khóa BEGIN và END tạo thành một câu lệnh ghép, câu lệnh ghép cũng là lệnh có cấu trúc.

Ví dụ 5.7:

Begin


Write(‘ nhập k :’);

Readln(k);

End;

Từ các lệnh đơn giản và các lệnh có cấu trúc đã có lại có thể xây dựng được các lệnh có cấu trúc phức tạp hơn.



Ví dụ 5.8:

If k>= 0 then Writeln(k)

else

Begin


Writeln(‘ k âm, xin nhập lại : ‘);

Readln(k);

End;

Sau đây sẽ trình bày kỹ về một lệnh đơn giản và thông dụng : lệnh gán.


5.2.2. Lệnh gán


+ Lệnh gán có cú pháp như sau :

Tên_Biến := Biểu_thức ;

+ Ý nghĩa : tính toán biểu thức bên phải, rồi lưu kết quả tính được vào biến ở vế trái.

- Biểu thức bên vế phải có thể là một biến, một hằng, một hàm, hay một biểu thức,



Ví dụ 5.9: cho khai báo :

Var A, B : Real;

K : Integer;

Khi dùng lệnh các lệnh:

K := 10 ;

B := K* 3+5.5;

thì biến K có giá trị là 10, biến B có giá trị là 35.5.

Nếu thực hiện tiếp lệnh gán :

B:= 17/2;

thì giá trị của B bây giờ sẽ là 8.5.

 Như vậy nếu một biến được gán nhiều lần thì nó sẽ lấy giá trị của lần gán sau cùng, tính đến thời điểm đang xét.

Đặc biệt, lệnh: B:=B +1;

có tác dụng tăng giá trị của biến B lên 1 đơn vị, kết quả là B có giá trị bằng 9.5.

Cách thực hiện lệnh B:=B+1 là như sau: lấy giá trị hiện thời của biến B (là 8.5) cộng thêm 1 (được 9.5), rồi đem kết quả gán cho chính biến B.

Tương tự, lệnh B:=B-1; có tác dụng giảm B đi 1 đơn vị.

Yêu cầu để cho lệnh gán thực hiện được là kiểu dữ liệu của biểu thức ở vế phải phải phù hợp với kiểu dữ liệu của biến ở vế trái, nếu không phù hợp thì khi dịch (Compile) chương trình, Turbo Pascal sẽ thông báo lỗi : "Error 26 : Type mismatch". Ví dụ, lệnh gán dưới đây là sai vì vế trái là kiểu thực còn vế phải là kiểu chuỗi :

A:=‘Pascal’;

Chú ý rằng một số nguyên có thể gán cho một biến thực, (chẳng hạn lệnh A:=10; là đúng ), nhưng một số thực không thể gán cho một biến nguyên. Ví dụ lệnh K:=10/4; là sai vì biến K có kiểu nguyên, còn vế phải cho kết quả là một số thực (=2.5).

Xét thêm ví dụ về các kiểu dữ liệu khác :

Ví dụ 5.10: Cho khai báo

Var Ch : Char ;

St: String[20];

Khi đó:


Lệnh St:=‘A’; là đúng.

Lệnh St:=‘100’; là đúng.

Lệnh Ch:=‘ABCD’; là sai vì vế phải là một chuỗi.

Lệnh St:= 100; là sai vì vế phải là một số.

Lệnh Ch:=‘1’ ; là đúng.

Lệnh Ch:=St ; là sai vì vế phải là một chuỗi.

Lệnh St:=Ch; là đúng

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;



  • Có các phép gán:

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

  • In không qui cách:

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

  • Nhận xét:

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.

  • In có qui cách:

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

  • Nhận xét:

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

  • In không qui cách:

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


  • Nhận xét:

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.



  • In có qui cách:

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



















































  • Nhận xét:

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.


  • 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ét đoạn trình sau:

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

  • Viết không qui cách:

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.


  • Viết có qui cách:

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

  • Kết quả thu được:

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.
1   ...   42   43   44   45   46   47   48   49   ...   63


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương