

Các bạn có thể giải thích giúp mình câu lệnh While...Do nó có chức năng gì được không ạ. Với giải thích giúp mình câu lệnh này với ạ: While not eof(f) do
Mỗi lần bạn gọi thủ tục đọc dữ liệu, nó sẽ đọc dòng hiện tại, tức là nếu mở lần đầu tiên thì nó sẽ đọc nguyên dòng đầu tiên nếu dòng này chứa ký tự, còn nếu dòng này chỉ chứa các ký số thì nó sẽ đọc 1 ký số (mỗi ký số cách nhau bằng khoảng trống). Nếu dùng read thì sau khi đọc xong 1 ký số hay là một chuỗi ký tự thì con trỏ vẫn đặt ở dòng đó, cho nên nếu bạn gọi thủ tục read lần thứ hai, nó sẽ không đọc được dữ liệu hoặc là nếu còn dữ liệu trên dòng này thì nó sẽ đọc các dữ liệu đó. Vì vậy nếu bạn muốn đọc dữ liệu ở các dòng tiếp theo, bạn cần dùng thủ tục readln để sau khi đọc xong một dòng thì con trỏ sẽ chuyển xuống dòng dưới và khi đó nếu gọi thủ tục một lần nữa thì bạn có thể đọc được dữ liệu mới ở các dòng tiếp theo.While not eof(f) do
Câu lệnh While do dùng để lặp với số lần không biết trước đó chịCác bạn có thể giải thích giúp mình câu lệnh While...Do nó có chức năng gì được không ạ. Với giải thích giúp mình câu lệnh này với ạ: While not eof(f) do
Mỗi lần bạn gọi thủ tục đọc dữ liệu, nó sẽ đọc dòng hiện tại, tức là nếu mở lần đầu tiên thì nó sẽ đọc nguyên dòng đầu tiên nếu dòng này chứa ký tự, còn nếu dòng này chỉ chứa các ký số thì nó sẽ đọc 1 ký số (mỗi ký số cách nhau bằng khoảng trống). Nếu dùng read thì sau khi đọc xong 1 ký số hay là một chuỗi ký tự thì con trỏ vẫn đặt ở dòng đó, cho nên nếu bạn gọi thủ tục read lần thứ hai, nó sẽ không đọc được dữ liệu hoặc là nếu còn dữ liệu trên dòng này thì nó sẽ đọc các dữ liệu đó. Vì vậy nếu bạn muốn đọc dữ liệu ở các dòng tiếp theo, bạn cần dùng thủ tục readln để sau khi đọc xong một dòng thì con trỏ sẽ chuyển xuống dòng dưới và khi đó nếu gọi thủ tục một lần nữa thì bạn có thể đọc được dữ liệu mới ở các dòng tiếp theo.
Ví dụ: Một tệp có nội dung như sau:
dong 1
dong 2
dong 3
dong 4
Dùng Pascal đọc dữ liệu:
read(f, st); // đây là lần đầu gọi nên st sẽ bằng 'dong 1'
read(f, st); // hông có dữ liệu vì con trỏ vẫn ở dòng đầu
Vì vậy cần sửa lại:
readln(f, st); // st = 'dong 1', sau đó con trỏ xuống dòng
readln(f, st); // sr = 'dong 2', sau đó con trỏ xuống dòng
readln(f, st); //st = 'dong 3', sau đó con trỏ xuống dòng
readln(f, st); //st = 'dong 4', sau đó con trỏ xuống dòng
Với cách dùng liên tiếp các thủ tục readln như thế sẽ giúp đọc hết dữ liệu tệp nhưng nếu số dòng tăng lên lớn thì ghi theo kiểu 'liệt kê' như vậy không khả thi, để giải quyết ta dùng vòng lặp While, lặp cho đến khi hết tệp, tức là hàm eof trả về true.
Mã lệnh:
While not(eof(f)) do
begin
readln(f, st);
// ghi các câu lệnh lưu trữ hay xử lý dữ liệu vừa lấy được
end;
Hàm eof(f) sẽ trả về true nếu con trỏ ở cuối tệp vì vậy đoạn lệnh trên có thể hiều là lặp cho đến khi con trỏ về cuối tệp.
Ví dụ: Đọc dữ liệu từ một tệp chứa các số, mỗi số cách nhau 1 khoảng trắng. Tệp nội dung như sau:
7 11 13 41 5 1
2 32 1 21 51 6 10
2 51 5
14 5 61 90 100
Mã lệnh:
WHILE not(EOF(f)) DO
begin
if not(EOLN(f)) then
read(f, x)
else
readln(f); // xuống dòng
end;
Với cấu trúc trên bạn có thể đọc được hết dữ liệu từ tệp.
* EOLN(f) trả về true nếu con trỏ ở cuối dòng.
Mình chân thành cảm ơn 2 bạn nhiều. Mình vẫn có 1 thắc mắc chữ lặp ở đây có nghĩa đơn giản là gì ạ, lặp lại hay lặp ở đây mang ý nghĩa sao ạCâu lệnh While do dùng để lặp với số lần không biết trước đó chị
Về chức năng thì em nghĩ nó cũng giống với for do thôi chị, nhưng về cấu trúc thì khác
Mình chân thành cảm ơn 2 bạn nhiều. Mình vẫn có 1 thắc mắc chữ lặp ở đây có nghĩa đơn giản là gì ạ, lặp lại hay lặp ở đây mang ý nghĩa sao ạ
Đúng như nghĩa rồi chị, lặp là lặp lạiMình chân thành cảm ơn 2 bạn nhiều. Mình vẫn có 1 thắc mắc chữ lặp ở đây có nghĩa đơn giản là gì ạ, lặp lại hay lặp ở đây mang ý nghĩa sao ạ
nó lặp lại cái gì e ơi, nó vẫn trù tượng sao sao áĐúng như nghĩa rồi chị, lặp là lặp lại
Mình chân thành cảm ơn 2 bạn nhiều. Mình vẫn có 1 thắc mắc chữ lặp ở đây có nghĩa đơn giản là gì ạ, lặp lại hay lặp ở đây mang ý nghĩa sao ạ
lặp có nghĩa là hành động đc lặp lại, ở câu lệnh While...do thì lặp là câu lệnh được lặp lại cho đến khi nào điều kiện sai.nó lặp lại cái gì e ơi, nó vẫn trù tượng sao sao á
Vd em viết:nó lặp lại cái gì e ơi, nó vẫn trù tượng sao sao á