II Vào dữ liệu: Read và Readln

Một phần của tài liệu tin hoc co ban TH khong chuyen (Trang 49 - 53)

18. II.1. Read và Readln:

Nhờ phép gán ta có thể đa giá trị cho biến (từ một biến khác hay hằng) ở trong chơng trình. Vậy muốn đa một giá trị từ bàn phím (thông qua gõ và dựa vào biến) thì làm thế nào? Thủ tục Read và Readln (Readl Line) sẽ giúp ta làm điều đó. Ba cách viết sau:

READ (Var1, Var2,...,VarN); READLN(Var1, Var2,..., VarN); READLN; (không có tham số)

Trong đó Var1,Var2,... là các biến (không thể hằng) Đã khai báo trong chơng trình. Khi gặp thủ tục này chơng trinh sẽ chờ để chúng ta gõ dữ liệu vào. Dữ liệu gõ vào phải có cùng kiểu với biến, các dữ liệu ngăn cách ít nhất một khoảng trống (Space), sau khi gõ xong dữ liệu hãy gõ tiếp ↵ (Enter).

Ví dụ 1: Var i,j:Integer; a,b,c:Real; begin Readln(i,j); Readln(a,b,c); ... End.

Khi chạy chơng trình (sẽ nói ở phần sau) máy sẽ chờ để chúng ta gõ 2 số nguyên ứng với thủ tục Readln(i,j), ví dụ 4,6 ↵ (Enter). Máy lại chờ để ta gõ vào ba số thực ứng với thủ tục Readln(a,b,c), ví dụ:12.3, 15.5, 20.5 ↵. Sau hai thủ tục đó các biến sẽ có nội dung nh sau:

Nội dung của i là 4 (hay ta cũng có thể nói trong ô nhớ i có 4). Nội dung của j là 6.

Nội dung của b là 15.5. Nội dung của c là 20.5.

Trong khi nhận nội dung từ bàn phím, thủ tục READ và READLN còn kiểm tra xem các dữ liệu gõ vaof có tơng thích với kiểu của biến hay không.

Ví dụ 2:

ở ví dụ 1 ta cũng có thể viết gộp lại nh sau:

Var i,j:Integer; a,b,c:Real; Begin Readln(i,j,a,b,c); ... ... End.

Và gõ dữ liệu vào nh sau: 4, 6, 12.3, 15.5, 20.5↵. Hay cũng có thể tách thành nhiều lệnh nh sau:

Var i,j:Integer; a,b,c:Real; Begin Readln(i); Readln(j); Readln(a); Readln(b); Readln(c); .... End.

Và gõ vào dữ liệu nh sau: 4↵.

6 ↵. 12.3 ↵. 15.5 ↵. 20.5 ↵.

Với các Version khác nhau sẽ có sự phân biệt giữa Read và Readln khác nhau sau khi ấn ( để vào dữ liệu. Ví dụ Version 3.0, Read không chuyển con trỏ xuống dòng tiếp theo nh thủ tục Readln. Nói chung hai thủ tục đó cùng để đọc dữ liệu nhng việc di

chuyển con trỏ có khác nhau sau khi ấn Enter để vào dữ liệu, bạn thử trên máy về Read và Readln sẽ rõ.

Readln; là thủ tục không có tham số, máy tính sẽ chờ đến khi ta ấn Enter thì mới làm tiếp. Readln không tham số đợc sử dụng khi ta muốn chơng trình dừng lại một vị trí nào đó (để chúng ta đọc kết quả chẳng hạn), sau đó lại ấn nút Enter để tiếp tục ch - ơng trình.

19. II. 2. Kết hợp Write và Readln để tạo giao diện ngời - máy.

Khi gặp Readln chơng trình tạm dừng để chờ dữ liệu. Nừu ta không để ý trớc là ở đó có thủ tục Read hoặc Readln thì nhiều khi chúng ta cứ tởng là chơng trình bị treo hoặc có sai sót gì đó. Vì vậy ta có thể kết hợp với thủ tục Write (không nên dùng Writeln) để báo là có việc vào dữ liệu nh sau:

Write(‘Bạn gõ vào một số nguyên i=:’); Readln(i); Write(‘bạn gõ vào một số thực x=?’); Readln(x);

Nếu dùng Writeln thì không thuận lợi và đẹp mắt vì con trỏ màn hình xuống dòng và ít gắn bó với việc gõ dữ liệu vào.

20. II.3. Một số thủ tục nhập đặc biệt:

Hàm ReadKey: có kiểu ký tự, cho giá trị là ký tự nhận vào từ bàn phím

ngay từ khi gõ phím vào mà không cần ấn tiếp Enter. Ví dụ:

Đọc một ký tự từ bàn phím và lu ở biến Chr: Chr:=ReadKey;

Hàm Keypressed: có kiểu Boolean, cho giá trị True nếu ta gõ một ký tự,

False không gõ. Chúng ta sẽ tiếp tục khai thác hàm này.

Câu hỏi và bài tập:

1. Sự khác nhau cơ bản giữa Write và Writeln? 2. Sự khác nhau cơ bản giữa Read và Readln? (adsbygoogle = window.adsbygoogle || []).push({});

3. Viết chơng trình tính tổng, hiệu, thơng, tích hai số a,b nhập từ bàn phím 4. Đoạn chơng trình sau in ra kêt quả nào?

Program Vidu; Var S,i:Integer; Begin i:=10; S:=20;

S:=S*S; Writeln(S); End. 5. Hãy in ra hình sau AAAAAAAAA AAAAAAA AAAAA AAA A 6. Viết chơng trình tính: 3x5 + 5x4 – 4x3 + 12x2 – 6x + 93 z x y x − +

7. Viết các biểu thức sau theo ngôn ngữ Pascal A < X < B ; b2 – 4ac < 0

Chơng 5: Các câu lệnh điều Khiển

Một phần của tài liệu tin hoc co ban TH khong chuyen (Trang 49 - 53)