Chương 2. Các kiểu dữ liệu đơn giản chuẩn
4.2. Các lệnh nhập dữ liệu
Dữ liệu có thể đ−ợc nhập từ bàn phím hoặc từ File. Nếu nhập dữ
liệu từ File thì tr−ớc danh sách các biến sẽ nhận dữ liệu phải có tên File đã đ−ợc mở ra và dữ liệu sẽ đ−ợc đọc từ File đó. Có thể dùng biến chuỗi ký tự để nhận tên File chứa dữ liệu cần nhập. Dạng lệnh:
Read(X1, X2,..Xn);
Readln(X1, X2,..Xn);
Các thủ tục trên cho phép nhập dữ liệu từ bàn phím gán cho các
đối số X1, X2, ..., Xn. Trong đó X1, X2, ..., Xn có thể là các biến (hay phần tử mảng) nguyên, thực, ký tự, hoặc chuỗi. Các dữ liệu gõ vào từ bàn phím đ−ợc cách nhau bởi dấu cách với số l−ợng dấu cách không
quan trọng, song ít nhất phải là một đ−ợc dùng để ngăn cách các số liệu khi đọc.
Trong khi đọc dữ liệu, thủ tục này còn kiểm tra xem các dữ liệu gõ vào có t−ơng thích với kiểu dữ liệu của biến hay không. Từ Version 4.0 trở đi, nếu ta ch−a gõ dữ liệu t−ơng ứng cho các biến trong thủ tục Readln thì máy sẽ vẫn tiếp tục chờ, cho dù đã gõ phím Enter nhiều lần.
Kết thúc việc nhập dữ liệu nhấn phím Enter. Thủ tục này cũng cho phép nhập dữ liệu từ File, nh−ng sau mỗi lần thực hiện lệnh, con trỏ sẽ tiếp tục chuyển xuống dòng tiếp theo của File để đọc dữ liệu thuộc dòng dưới ngay cả khi tại dòng đó vẫn còn dữ liệu chưa được đọc.
Khi gặp các câu lệnh này, máy dừng để đợi nạp số liệu. Quy tắc thu nhận ký tự của từng kiểu biến nh− sau:
- Mỗi phím sẽ cho một ký tự, riêng phím Enter cho 2 ký tự: CR (mã 13) và LF (mã 10).
- Biến số (nguyên, thực) bỏ qua CR, LF và dấu cách (Space). Sau khi đã nhận đ−ợc một chữ số thì nhấn phím Space hoặc Enter sẽ kết thúc việc nhận số liệu của biến số. Các ký tự do phím này tạo ra sẽ dành cho biến tiếp theo.
Chú ý: Biến nguyên chỉ nhận đ−ợc dãy ký tự biểu diễn các giá trị nguyên trong phạm vi biểu diễn của nó. Với biến kiểu số, máy chỉ ra khỏi lệnh này khi đã bấm một số ký tự đủ để cung cấp giá trị cho tất cả
các biến và phải bấm thêm phím Enter. Các ký tự thừa sẽ bị bỏ qua (không đ−ợc xét đến trong các thủ tục Readln hay Read tiếp theo).
- Biến ký tự (char) chỉ nhận đúng một ký tự. Các ký tự còn lại dành cho biến tiếp theo.
- Biến chuỗi nhận đ−ợc một số ký tự không v−ợt quá độ dài của nó. Các ký tự còn lại dành cho biến tiếp theo. Phím Enter kết thúc việc nhận số liệu của một dãy liên tiếp các biến chuỗi. Biến nào ch−a kịp nhận gì sẽ chứa xâu rỗng. Các ký tự do phím Enter phát ra sẽ dành cho biến số hoặc biến ký tự đứng ngay sau dãy các biến chuỗi nói trên.
Ch−ơng 4: Thủ tục nhập - xuất dữ liệu 35
Chú ý: Thủ tục Read(X1, X2,..Xn) chỉ khác thủ tục Readln(X1, X2,..Xn) ở một điểm là: Các giá trị nạp từ bàn phím sau khi đã lần l−ợt gán cho các đối số X1, X2,..Xn thì các ký tự d− thừa sẽ dành lại cho thủ tục Read hay Readln tiếp theo.
Ghi chú: Việc dùng thủ tục Read(X1, X2,..Xn) cũng nh− dùng nhiều kiểu biến trong thủ tục Readln(X1, X2,..Xn) th−ờng dẫn tới những tình huống rắc rối. Bởi vậy để việc nạp dữ liệu đ−ợc chính xác chỉ nên dùng thủ tục Readln(X1, X2,..Xn). Và trong một thủ tục chỉ nên dùng một biến kiểu String hoặc một biến kiểu Char, chỉ dùng nhiều biến với kiểu số nguyên và thực.
Readln: Dừng chương trình, đợi phím Enter mới tiếp tục.
Hàm ReadKey: Hàm này buộc máy tạm dừng để đợi nhận một ký tự từ bàn phím. Không cần bấm Enter trong trường hợp này để xác nhận, ký tự đ−ợc nhập vào không hiển thị lên màn hình.
Hàm Keypressed: Hàm này có kiểu Boolean, cho giá trị là True nếu có một phím đ−ợc bấm và False nếu ng−ợc lại. Ký tự đ−ợc bấm không hiển thị lên màn hình nh−ng có thể nhận đ−ợc nhờ một hàm Readkey viết sau hàm Keypressed.
Bài tập chương 4
Bμi 1: Viết ch−ơng trình nhập họ và tên, bậc l−ơng, ngày công trong tháng, phụ cấp, hệ số trách nhiệm, tạm ứng. In ra màn hình họ tên, tiền l−ơng và tiền còn đ−ợc lĩnh; biết rằng công thức đ−ợc tính toán nh− sau:
Tiền l−ơng = Bậc l−ơng/30 * Ngày công * Hệ số trách nhiệm + Phô cÊp
Tiền còn đ−ợc lĩnh = Tiền l−ơng - Tạm ứng
Bμi 2: Viết ch−ơng trình nhập vào chu vi của một hình chữ nhật, sau
đó tính diện tích lớn nhất mà hình chữ nhật đó có thể có đ−ợc; biết rằng trong các hình chữ nhật có chu vi bằng nhau thì hình vuông có diện tích lớn nhất.
Bμi 3: Viết các ch−ơng trình nhập vào hai số nguyên không có 3 chữ
số, rồi in kết quả phép tính nhân hai số đó theo dạng:
567 14 --- 7938
Bμi 4: Viết chương trình đọc vào 3 cạnh của một tam giác rồi tính diện tích theo công thức Hêrông:
S= p(p a)(p b)(p c)− − − víi a b c
p 2
= + +
Bμi 5: Viết ch−ơng trình nhập x từ bàn phím, tính và đ−a ra màn hình giá trị của biểu thức sau:
3 0,2011
x
(x sin b e )(cos3x 0, 20345)
A 15,172 5
+ − +
= +
Ch−ơng 5: Kiểu vô h−ớng liệt kê vμ kiểu khoảng con 37
Chương 5
KIỂU VÔ HƯỚNG LIỆT KÊ VÀ KIỂU KHOẢNG CON