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

Nội dung chính Show

  • Nhập (đọc) dữ liệu từ bàn phím
  • Nhập dữ liệu dạng xâu ký tự (string)
  • Xuất (ghi) dữ liệu ra màn hình
  • Nhập/xuất dữ liệu từ file văn bản
  • Chuyển thư mục làm việc trong Free Pascal
  • Thủ thuật chuyển đổi linh hoạt giữa nhập xuất dữ liệu từ bàn phím/màn hình và file văn bản
  • Video liên quan

Lệnh nhập dữ liệu từ bàn phím trong PascalTrong những kỳ thi học viên giỏi tin học và những giải lập trình tranh tài, Free Pascal vẫn là một trong ngôn từ chính thức và nhiều lúc là ngôn từ bắt buộc trong những kỳ thi ở cấp nhỏ ( trung học cơ sở ). Bài viết này hướng dẫn cách nhập / xuất dữ liệu với Free Pascal trong những kỳ thi, cũng như trong quy trình làm bài tập hàng ngày của mọi người .Có hai hình thức nhập xuất dữ liệu chính thường được nhu yếu trong những kỳ thi, gồm có :

  • Nhập (đọc) dữ liệu từ stdin (mặc đình là bàn phím) và xuất (ghi) dữ liệu ra stdout (mặc định là màn hình)
  • Đọc/ghi dữ liệu từ tập tin văn bản (text file)

Nhập (đọc) dữ liệu từ bàn phím

Đây là chính sách nhập dữ liệu trong hầu hết những mạng lưới hệ thống chấm bài trực tuyến. Việc nhập dữ liệu được thực thi bởi hai thủ tục read và readln. Khi chạy trên máy tính cá thể, gặp câu lệnh nhập dữ liệu này, chương trình sẽ dừng lại để ta nhập dữ liệu vào từ bàn phím, bấm Enter để kết thúc một thao tác nhập liệu .

Thông tin thêm: trong chế độ chấm, hệ thống chấm bài sẽ không hoạt động như vậy, nó sẽ chuyển hướng stdin để lấy dữ liệu từ file chứa dữ liệu test thay vì dừng lại chờ nhập dữ liệu bằng tay.

  • Thủ tục read(danh_sách_biến); và readln(danh_sách_biến); đều nhập giá trị ngăn cách nhau với một hoặc nhiểu khoảng trống và gán lần lượt cho các biến trong danh_sách_biến.
  • Điểm khác nhau giữa Thủ tục read và readln là sau khi thực hiện việc nhập liệu, lệnh readln sẽ chuyển xuống dòng dưới, bỏ qua các giá trị còn lại trên dòng hiện tại, lệnh read thì không.
  • Trong cả hai trường hợp dùng read hoặc readln, nếu dòng hiện tại không đủ dữ liệu để gán cho danh_sách_biến, chúng sẽ tiến hành đọc tiếp ở các dòng tiếp theo.

Xét ví dụ sau :Nếu nhập vào dữ liệu như sau :Thì hiệu quả sẽ được a = 1, b = 2 và c = 4 ( giá trị 3 bị bỏ lỡ bởi thủ tục readln tiên phong .Nếu nhập vào dữ liệu như sau :Thì tác dụng sẽ được a = 1, b = 2 và c = 3 ( thủ tục readln tiên phong đọc dữ liệu trên cả hai dòng đầu, do dòng tiên phong không đủ dữ liệu ) .

Nhập dữ liệu dạng xâu ký tự (string)

Đối với biến kiểu xâu ký tự, lệnh read và readln luôn đọc cả dòng dữ liệu và gán cho xâu ( không tách theo khoảng trống như ví dụ trên ) .Xét ví dụ sau :

Với nhập vào dữ liệu như sau :Xâu s sẽ được gán giá trị cả dòng dữ liệu này : s = ‘ Hello Pascal from Thuc ‘ .Nếu nhập hai xâu trên một dòng, xâu thứ nhất sẽ chứa hàng loạt dòng, xâu thứ hai sẽ rỗng .Với nhập vào dữ liệu như sau :Xâu s sẽ được gán giá trị cả dòng dữ liệu này : s = ‘ Hello Pascal from Thuc ‘, s2 = ‘ ‘, chương trình sẽ in ra :

Lưu ý: Kiểu dữ liệu string trong Free Pascal mặc định là ShortString, với độ dài tối đa là 255 ký tự. Với ví dụ trên, nếu dòng nhập vào có nhiều hơn 255 ký tự thì 255 ký tự đầu sẽ được gán cho s1, phần còn lại sẽ được gán cho s2 (cũng tối đa 255 ký tự). Để nhập vào xâu ký tự dài hơn 255 ký tự, ta cần sử dụng kiểu dữ liệu AnsiString thay vì String mặc định.

Xuất (ghi) dữ liệu ra màn hình

Tương tự, đây là chính sách xuất dữ liệu trong hầu hết những mạng lưới hệ thống chấm bài trực tuyến. Việc nhập dữ liệu được thực thi bởi hai thủ tục write và writeln .

  • Thủ tục write(danh_sách_giá_trị); và writeln(danh_sách_giá_trị); đều xuất (ghi, in) các giá trị trong danh_sách_giá_trị, không có khoảng trống ở giữa. Ở đây, danh_sách_giá_trị có thể là danh sách các hằng, các biến, các biểu thức hoặc hỗn hợp giữa chúng.
  • Điểm khác nhau giữa Thủ tục write và writeln là sau khi thực hiện việc xuất dữ liệu, lệnh writeln sẽ viết thêm một dấu xuống dòng để chuyển xuống dòng dưới (các lệnh xuất dữ liệu tiếp theo sẽ ghi từ dòng bên dưới dòng hiện tại). Còn với lệnh write thì các lệnh xuất dữ liệu tiếp theo sẽ ghi dữ liệu tiếp vào cuối dòng hiện tại.

Xét chương trình sau :Kết quả thực thi chương trình trên sẽ như sau :

Nhập/xuất dữ liệu từ file văn bản

Đây là chế độ nhập dữ liệu thường gặp trong các kỳ thi học sinh giỏi trong chương trình phổ thông, trong đó dữ liệu nhập vào được ghi sẵn trong một file văn bản (text file), các file này có thể được soạn thảo bằng các ứng dụng soạn thảo văn bản như Notepad, Notepad++, và thường có phần mở rộng là .txt, hoặc cũng có thể soạn sảo trực tiếp bằng Free Pascal IDE.

Trong quá trình học và thực hành, hình thức nhập dữ liệu từ file văn bản cũng thường được dùng để tránh việc phải nhập đi nhập lại các dữ liệu đầu vào khi phải chạy thử chương trình nhiều lần lúc lập trình, nhất là với những bài có dữ liệu vào nhiều và phức tạp.

Trước khi làm việc với file, cần đảm bảo chắc chắn bạn nắm rõ mình đang làm việc ở thư mục nào, file dữ liệu được đọc/ghi sẽ nằm ở đâu trên ổ đĩa cứng và file chương trình (.pas) sẽ nằm ở đâu. (Xem phần Chuyển thư mục làm việc trong Free Pascal bên dưới)

Các bước để nhập / xuất dữ liệu từ file văn bản như sau :

1. Khai báo biến file có kiểu là text, thông thường ta sẽ cần hai biến, một biến cho file input (để nhập dữ liệu) và một biến cho file output (để xuất dữ liệu)

2. Gán biến file cho một đường dẫn đến file sẽ đọc/ghi với lệnh assign. Nếu đường dẫn chỉ gồm tên file thì file này sẽ nắm trong thư mục hiện hành (Xem phần Chuyển thư mục làm việc trong Free Pascal bên dưới).

3. Mở file để đọc với lệnh reset, hoặc mở file để ghi với lệnh rewrite:

4. Tiến hành đọc/ghi với lệnh read/readln và write/writeln giống như ở trên, chỉ thêm tham số đầu tiên là tên biến file cần đọc/ghi

Lưu ý:

  • Khi đọc từ file, file cần phải tồn tại nếu không sẽ báo lỗi.
  • Khi ghi file, file trùng tên nếu đã tồn tại sẽ bị ghi đè.

5. Đóng file sau khi đọc/ghi. Thao tác này hết sức quan trọng nhưng lại hay bị quên. Việc quên đóng file sau khi ghi có thể dẫn đến việc dữ liệu file bị thiếu. Để đóng file, ta dùng lệnh close:

Toàn bộ chương trình như sau :Để chạy chương trình, ta tạo file input.txt ở cạnh file chương trình (. pas ) bằng Notepad và gõ vào hai số nguyên nào đó, rồi ghi file lại. Chạy chương trình bằng tổng hợp phím Ctrl + F9, ta sẽ thấy file output.txt được tạo ra, mở file này ta sẽ thấy hiệu quả mà chương trình ghi ra .Lệnh nhập dữ liệu từ bàn phím trong Pascal

Nội dung file input.txt :Lệnh nhập dữ liệu từ bàn phím trong PascalNội dung file output.txtsau khi chạy chương trình :Lệnh nhập dữ liệu từ bàn phím trong PascalNếu quen thuộc với Free Pascal IDE, những bạn hoàn toàn có thể làm soạn thảo trực tiếp file input và xem file output ngay bên trong Free Pascal :Lệnh nhập dữ liệu từ bàn phím trong PascalLệnh nhập dữ liệu từ bàn phím trong Pascal

Chuyển thư mục làm việc trong Free Pascal

Khi thao tác với file, và cả khi lưu lại chương trình của mình, những bạn cần nắm rất rõ ta đang thao tác tại thư mục nào của ổ đĩa cứng, và sẽ lưu file chương trình, đọc file input và ghi file output ở thư mục nào .

Vì vậy ngay khi bắt đầu làm việc với Free Pascal, hãy kiểm tra chắc chắn bạn đang làm việc tại thư mục mong muốn. Để xem và chuyển thư mục làm việc, ta vào menu File, chọn Change Dir…

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

Tại cửa sổ Change Directory được mở ra, hãy chọn đến thư mục mong muốn, và bấm chọn Chdir, sau đó bấm ok.

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

Thủ thuật chuyển đổi linh hoạt giữa nhập xuất dữ liệu từ bàn phím/màn hình và file văn bản

Trong 1 số ít trường hợp tất cả chúng ta cần quy đổi qua lại giữa việc nhập xuất dữ liệu từ bàn phím / màn hình hiển thị qua dạng nhập xuất từ file. Một ví dụ nổi bật là khi chạy thử nghiệm ở máy tính cá thể, thường thì ta dùng file để tránh việc nhập đi nhập lại dữ liệu nguồn vào qua những lần chạy, còn khi nộp bài lên những mạng lưới hệ thống chấm tự động hóa ta lại phải chuyển về nhập xuất từ stdin và stdout .

Xem lại các bước ở trên, ngoài các bước chuẩn bị, mở file và đóng file, thì điểm khác biệt chính ở hai cách nhập xuất này là tham số đầu tiên của các thủ tục read, readln, write, writeln là tên biến file.

Như vậy khi chuyển từ dạng nhập / xuất thông thường qua nhập / xuất từ file, ta cần thêm tham số tên biến file cho toàn bộ những lệnh read / write. Ngược lại, khi chuyển từ dạng nhập / xuất từ file qua nhập / xuất từ bàn phím / màn hình hiển thị, ta lại phải xóa tham số này ở toàn bộ những lệnh read / write .Để tránh việc chuyển qua chuyển lại này, tất cả chúng ta hoàn toàn có thể dẫn hướng stdin và stdout sang file thay vì nhập / xuất từ bàn phím / màn hình hiển thị bằng cách ghi đè biến input và output sẵn có của Pascal như sau :Lưu ý là khi dẫn hướng lại stdin và stdout như trên, những lệnh read, write không cần biến hóa nữa ( không cần thêm tên biến file vào tham số tiên phong ) .Như vậy, khi muốn chuyển quan chuyển lại giữa 2 kiểu nhập / xuất dữ liệu, ta chỉ cần thêm hoặc xóa ( hoặc chuyển thành chú thích ) 4 dòng bôi đậm ở trên và không cần sửa đổi gì thêm .

Cụ thể, khi muốn xuất nhập từ bàn phìm/màn hình:

Và khi muốn xuất / nhập từ file :Chúc những bạn thành công xuất sắc .


Có thể bạn quan tâm
© Copyright 2008 - 2016 Dịch Vụ Bách khoa Sửa Chữa Chuyên nghiệp.
Alternate Text Gọi ngay