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



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

5.3.2 Lệnh nhập dữ liệu từ bàn phím


5.3.2.1 Ý nghĩa
Để đưa 1 giá trị vào 1 biến, ngoài phép gán rất thuận tiện và dễ sử dụng nhưng phải gán sẵn trong chương trình, ta còn có thể dùng các thủ tục READ và READLN để nhập dữ liệu từ các thiết bị nhập của máy tính. Trong phạm vi chương này, chúng ta chỉ xét việc dùng các lệnh nêu trên để nhập dữ liệu từ bàn phím - thiết bị nhập chuẩn.
5.3.2.2 Cú pháp

READ(biến1, biến2, ..., biếnn); (1)

READLN(biến1, biến2, ..., biếnn); (2)

READLN; (3)
5.3.2.3 Sự thực hiện

Dạng (1): Khi thực hiện chương trình, gặp lệnh này máy tính dừng lại chờ người sử dụng gõ dữ liệu (từ bàn phím) lần lượt cho các biến theo thứ tự đã liệt kê trong câu lệnh. Kết thúc việc nhập, người sử dụng gõ phím ENTER. Với dạng (1) nếu số lượng dữ liệu nhập vào nhiều hơn số lượng biến được chỉ ra trong câu lệnh thì những dữ liệu dư ra vẫn được lưu lại trong vùng đệm và sẽ tự động chuyển vào các biến trong các lệnh READ hoặc READLN tiếp theo trong chương trình.

Dạng (2): Khi thực hiện chương trình, gặp lệnh này máy tính dừng lại chờ người sử dụng gõ dữ liệu (từ bàn phím) lần lượt cho các biến theo thứ tự đã liệt kê trong câu lệnh. Kết thúc việc nhập, người sử dụng gõ phím ENTER. Dạng (2) khác với dạng (1) ở chỗ: nếu số lượng dữ liệu nhập vào nhiều hơn số lượng biến được chỉ ra trong câu lệnh thì những dữ liệu dư ra sẽ bị loại bỏ mà không được lưu lại trong vùng đệm, nên không gây ảnh hưởng gì tới các lệnh READ hoặc READLN tiếp theo trong chương trình.

Dạng (3): Tạm dừng chương trình, chờ người sử dụng gõ phím ENTER để tiếp tục thực hiện các lệnh tiếp theo trong chương trình.
5.3.2.4 Chú ý

  • Các tham số của các lệnh nhập dữ liệu đặt trong dấu ngoặc () chỉ cho phép là các biến mà thôi;

  • Khi nhập dữ liệu từ bàn phím lưu ý dùng ít nhất một dấu cách (khoảng trống) để phân cách các giá trị cần nhập cho các biến khác nhau, không hạn chế số dấu cách.

  • Trong qúa trình nhập dữ liệu, các lệnh nhập đã nêu sẽ tự kiểm tra tính tương thích giữa dữ liệu nhập vào với kiểu của biến đã được khai báo. Nếu không phù hợp về kiểu, máy tính sẽ thông báo lỗi và ngay lập tức cho dừng việc nhập dữ liệu.

  • Biến kiểu Boolean không nhập được bằng hình thức này.

  • Để nhập dữ liệu từ bàn phím người ta thường dùng dạng (2) để tránh việc dữ liệu còn lưu ở vùng đệm tự động chuyển vào biến khi người sử dụng không kiểm soát được.


Ví dụ 5.18 :

VAR a, b, c: INTEGER;

x: REAL;

Nếu dùng dạng (1) ta viết các câu lệnh:

READ(a, b);

READ(x);


và nhập các số từ bàn phím như sau:

164 188 2 ()

5.5 ()

ta thu được dữ liệu trong các biến là:



a = 164

b = 188


x = 2

Vì dữ liệu nhập thừa từ lệnh nhập phía trên đã tự động chuyển vào lệnh nhập ngay tiếp sau, do đó đôi khi ta nhận được dữ liệu không hoàn toàn theo ý muốn.


Trái lại, nếu dùng dạng (2) ta viết các câu lệnh:

READLN(a, b);

READLN(x);

và nhập các số từ bàn phím như sau:

164 188 2 ()

5.5 ()


ta thu được dữ liệu trong các biến là:

a=164


b=188

x=5.5


Vì các dữ liệu nhập thừa từ lệnh nhập trên không còn tác dụng khi lệnh đó kết thúc.
5.3.2.5 Ví dụ

Ví dụ 5.19: Lập chương trình nhập từ bàn phím kích thước 2 cạnh của một hình chữ nhật. Tính chu vi, diện tích của hình chữ nhật đó. In kết quả ra màn hình.
PROGRAM vidu_5_19;

USES Crt;

VAR a,b,cv,dt:Real;

{a: cạnh dai, b: canh ngan, cv: chu vi, dt: dien tich}

BEGIN

CLRSCR;


READLN(a,b);

cv:=2*(a+b);

dt:=a*b;

WRITELN(‘Chu vi hinh chu nhat = ‘,cv:8:3);

WRITELN(‘Dien tich hinh chu nhat = ‘,dt:8:3):

READLN;


END.

5.3.3 Kết hợp WRITE và READLN khi nhập dữ liệu


5.3.3.1 Ý nghĩa

Trong chương trình nếu chỉ dùng lệnh READLN để nhập dữ liệu từ bàn phím vào biến sẽ có nhược điểm là không có sự chỉ dẫn cho người sử dụng biết cần nhập loại dữ liệu gì, cho biến nào. Để khắc phục nhược điểm trên, ta có thể kết hợp 2 thủ tục WRITE - in ra lời chỉ dẫn và READLN để nhập dữ liệu từ bàn phím vào biến, như vậy sẽ làm cho chương trình trở nên dễ sử dụng và đẹp mắt hơn.


5.3.3.2 Cú pháp

WRITE( Lời chỉ dẫn.......);

READLN(biến1, biến2,..., biếnn);
5.3.3.3 Chú ý

Không nên dùng WRITELN để in ra lời chỉ dẫn nhập dữ liệu vì sau khi in xong lời chỉ dẫn con trỏ màn hình sẽ bị dời xuống đầu dòng tiếp theo.


5.3.3.4 Ví dụ

Ví dụ 5.20: Xét đoạn chương trình 1:

WRITE(‘ Chieu dai cua hinh chu nhat a= ‘);

READLN(a);

WRITE(‘ Chieu rong cua hinh chu nhat b= ‘);

READLN(b);

.....


  • Kết quả khi chạy chương trình:

Chieu dai cua hinh chu nhat a=  {Chờ NSD nhập dữ liệu cho biến a}

Chieu rong cua hinh chu nhat b= _ {Chờ NSD nhập dữ liệu cho biến b}




  • Xét đoạn chương trình 2:

WRITELN(‘ Chieu dai cua hinh chu nhat a= ‘);

READLN(a);

WRITELN(‘ Chieu rong cua hinh chu nhat b= ‘);

READLN(b);

......


  • Kết quả khi chạy chương trình:

Chieu dai cua hinh chu nhat a=

_ {Chờ NSD nhập dữ liệu cho biến a}

Chieu rong cua hinh chu nhat b=

_ {Chờ NSD nhập dữ liệu cho biến b}




  • Nhận xét:

Cả 2 cách thực hiện đều đúng nhưng nên viết theo đoạn chương trình 1 sẽ hợp lý hơn.







BÀI TẬP CHƯƠNG 5



Bài 5.1. Trong một chương trình có các khai báo sau:

Const max = 100;

Var x, y: real;

m, n,: integer;

a: char;

b: boolean;

Cho biết câu lệnh nào sau đây là sai? Vì sao?


x := max * n;

y := -0.1;

max := m+n;

m+n := max;

m := n;

m := x;


x := n;

m := m mod x;

m := max + n;


b := m > n;

b := a +m >n;

a := a + 1;

m := m +1;

inc(m);

inc(x);


readln(x);

readln(a);

readln(m,n,x,y);


readln(m+n,x,y);

readln(a);

read(b);

readln(max,x,y,m,n);

writeln(b);

writeln(m+n);

writeln(x+m>y+n);

writeln(a:8:2);

write(x:8:2,m+n:8);



Bài 5.2. In ra màn hình các dòng sau:

*************************************

* Truong: DAI HOC DIEN LUC *

* Khoa : Cong nghe thong tin *

* Ho ten: Nguyen Thanh Lam *

*************************************


Bài 5.3. Lập trình in họ tên, ngày tháng năm sinh của một sinh viên bất kỳ và hiển thị các thông tin đo lên màn hình theo mẫu:

Sinh vien: ......

Sinh ngay: ...... thang ...... nam ......
Bài 5.4. Giả xử a là biến thực nhận giá trị 21.0547 và b là biến thực nhận giá trị là -16.05308. Cho biết các câu lệnh in có định dang sau sẽ in ra a và b như thế nào.

Writeln(a:8:2);

Writeln(a:5)

Writeln(b:10:3);

Writeln(a:7:0)
Bài 5.5. Nhập từ bàn phím 2 số thực bất kỳ, tính tổng, hiệu, tích của chúng và hiển thị kết quả lên màn hình theo mẫu:

So thu nhat: .....

So thu hai: .....

Tong cua chung la: .....

Hieu cua chung la: .....

Tich cua chung la: .....


Bài 5.6. Nhập x từ bàn phím. Tính và hiển thị lên màn hình giá trị biểu thức sau:

Y= (a3+2a)/ln(b2+21)

Trong đó: a = ex +1

b = |x|+1


Bài 5.7. Nhập vào từ bàn phím 2 biến X,Y. Hãy hoán vị X,Y và in kết quả trước và sau khi hoán vị.
Bài 5.8. Một quả bóng được ném theo phương ngang với vận tốc ban đầu là V. Thời gian kể từ khi ném tới khi bóng chạm đất là T.

Lập trình nhập V (m/s) và T (s) từ bàn phím. Tính tầm xa S(m) và độ cao H(m) mà bóng đạt được. Chạy thử với V=25; T=3;



Gợi ý: S=V.T; H=gt2/2.
Bài 5.9. Lãi xuất tiết kiệm hàng tháng của ngân hàng A là k = 1.25%. Tính số tiền có được sau t tháng gửi nếu biết số tiền ban đầu là x.
Bài 5.10. Cho ba điểm A(xa,ya), B(xb,yb), C(xc,yc) tạo thành một tam giác. Tính chu vi và diện tích tam giác ABC.

Chương 6

CÁC CÂU LỆNH CÓ CẤU TRÚC

6.1. Câu lệnh ghép (khối lệnh)


Khối lệnh là một nhóm các lệnh bắt đầu bởi từ khóa BEGIN và kết thúc bởi từ khóa END; nhằm thực hiện một công việc chung nào đó.

Cú pháp: BEGIN

Câu lệnh 1;

Câu lệnh 2;

... ...


Câu lệnh n;

END;


Thực hiện: Các câu lệnh bên trong vẫn thực hiện tuần tự như thông thường. Tuy nhiên câu lệnh ghép có tác dụng nhóm nhiều lệnh lại thành một khối lệnh (được coi như một câu lệnh duy nhất) để phù hợp với các cú pháp của các cấu trúc điều khiển sau này.

6.2. Các câu lệnh rẽ nhánh và lựa chọn

6.2.1. Lệnh rẽ nhánh IF


6.2.1.1 Ý nghĩa

Lệnh rẽ nhánh IF được dùng để giải quyết tình huống các công việc có được thực hiện hay không là tuỳ thuộc vào kết quả của biểu thức logic (biểu thức điều kiện).



6.1.1.2 Cú pháp

Turbo Pascal cung cấp 2 mẫu câu lệnh rẽ nhánh sau:




Dạng khuyết




Dạng đủ

If <điều kiện> then

;




If <điềukiện> then

Else


;

Trong đó:

- <Điều kiện> là biểu thức logic

- có thể là 1 lệnh đơn giản hoặc 1 khối lệnh. Nếu 1 khối lệnh phải được đặt trong Begin..End;


6.2.1.3 Sự hoạt động

Dạng khuyết




Dạng đủ

Nếu <Điều kiện> có giá trị TRUE thì thực hiện ;

Nếu <Điều kiện> có giá trị FALSE thì ra khỏi lệnh IF mà không làm gì.






Nếu <Điều kiện> có giá trị TRUE thì thực hiện ;

Nếu <Điều kiện> có giá trị FALSE thì thực hiện ;



6.2.1.4 Lưu đồ minh họa câu lệnh

Dạng khuyết

Dạng đủ



6.2.1.5 Ví dụ:

Ví dụ 6.1: Viết chương trình giải phương trình bậc nhất ax+b=0 với các hệ số a, b nhập từ bàn phím.

Program giai_phuong_trinh_bac_nhat;

Uses Crt;

Var a, b, x: Real;

BEGIN

ClrScr;


Write('Nhap he so a= '); ReadLn(a);

Write('Nhap he so b= '); ReadLn(b);

If a<>0 then

Begin


x:=-b/a;

WriteLn('Phuong trinh co nghiem x= ',x:8:3);

End

Else {a = 0}



If b=0 then

WriteLn('Phuong trinh co vo so nghiem')

Else {a = 0, b <> 0}

WriteLn('Phuong trinh vo nghiem ');

ReadLn;

END.


6.2.1.6 Chú ý

- Câu lệnh ngay trước từ khoá ELSE của lệnh IF không có dấu ;

- Trong trường hợp dùng các lệnh IF lồng nhau, nên viết IF ... THEN ... ELSE thành khối để tiện kiểm tra khi có lỗi logic.

Chẳng hạn ta có thể viết một lệnh IF lồng nhau theo cấu trúc sau:

IF <Điều kiện 1> THEN

ELSE


IF <Điều kiện 2> THEN

ELSE ;


- Cần nắm được qui ước sau đây để hiểu ELSE đi với IF nào “ELSE gắn với IF gần nhất với nó ngoài cặp BEGIN .. END sát nó.

- Nên trình bày chương trình khoa học, các lệnh tương ứng ngang hàng nhau, lệnh nào nằm trong điều kiện thì nên lui vào một chút so với câu điều kiện của nó, bạn sẽ dễ đọc chương trình và chỉnh sửa lỗi.


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