Trong ngôn ngữ lập trình Pascal câu lệnh lặp với số lần biết trước dạng tiến có cú pháp như thế nào

Trong ngôn ngữ lập trình Pascal câu lệnh lặp với số lần biết trước dạng tiến có cú pháp như thế nào?

Dạng FOR … TO … DO …:

Cú pháp: FOR := TO DO

Ý nghĩa: Đầu tiên kiểm tra xem Giá trị đầu <= Giá trị cuối, nếu đúng thì gán Giá trị đầu cho Biến và thực hiện công việc. Sau đó kiểm tra xem giá trị của Biến còn khác Giá trị cuối không, nếu đúng thì tự động tăng Biến lên 1 đơn vị rồi thực hiện công việc. Quá trình được lặp lại cho đến khi giá trị của Biến bằng với Giá trị cuối  thì thực hiện công việc và kết thúc lệnh.

² Các Lưu ý:

     - Biến sau từ khóa FOR thường được gọi là biến đếm hay biến chạy vì mỗi lần lặp nó sẽ tự động tăng lên 1 đơn vị.

     - Biến đếm, Giá trị đầu và Giá trị cuối phải có cùng kiểu đếm được.

     - Trong các câu lệnh của công việc không nên có các lệnh làm thay đổi giá trị của biến đếm.

     - Nếu trong công việc có nhiều hơn 1 câu lệnh thì phải đặt chúng trong cặp từ khóa BEGIN và END (lệnh hợp thành).

     - Số lần lặp = Giá trị cuối – Giá trị đầu + 1

Ví dụ 1: Viết chương trình tính tổng N số nguyên dương đầu tiên, với N được nhập từ bàn phím.

     Var  n, i : integer;

              s : longint;

     Begin

          write(‘Nhập n = ‘);

          readln(n);         

          s := 0;   

          for  i := 1  to  n  do

              s := s + i;

          write(‘Tổng ‘ , n , ‘ số nguyên dương đầu tiên là : ‘, s);

          readln;

 End.

Ví dụ 2: Viết chương trình tính tổng S =              

     Var  n, i : integer;

              s : real;

     Begin

          write(‘Nhập n = ‘);

          readln(n);         

          s := 0;   

          for  i := 1  to  n  do

              s := s + 1/i;

          write(‘Tổng là : ‘, s : 6 : 4);

          readln;

     End.

Dạng FOR … DOWNTO … DO …:

Cú pháp: FOR := DOWNTO DO

Ý nghĩa: Đầu tiên kiểm tra xem Giá trị cuối >= Giá trị đầu, nếu đúng thì gán Giá trị cuối cho Biến và thực hiện công việc. Sau đó kiểm tra xem giá trị của Biến còn khác Giá trị đầu không, nếu đúng thì tự động giảm Biến xuống 1 đơn vị rồi thực hiện công việc. Quá trình được lặp lại cho đến khi giá trị của Biến bằng với Giá trị đầu  thì thực hiện công việc và kết thúc lệnh.

Ví dụ: Viết chương trình in ra tất cả các ước số của số nguyên dương N theo thứ tự giảm dần.

     Var  n, i : integer;

     Begin

          write(‘Nhập số nguyên dương n = ‘);

          readln(n);

          for  i := n  downto  1  do

              if  n  mod  i = 0  then  write(i : 6);

          readln;

            End.

Các câu hỏi liên quan

Câu 1: Vòng lặp While – do kết thúc khi nào

A. Khi một điều kiện cho trước được thỏa mãn

B. Khi đủ số vòng lặp

C. Khi tìm được Output

D. Tất cả các phương án

Hiển thị đáp án

Trả lời: Vòng lặp While – do  là vòng lặp chưa biết trước số lần lặp vì vậy việc lặp chỉ kết thúc khi một điều kiện cho trước được thỏa mãn.

Đáp án: A

Câu 2: Mọi quá trình tính toán đều có thể mô tả và thực hiện dựa trên cấu trúc cơ bản là:

A. Cấu trúc tuần tự

B. Cấu trúc rẽ nhánh

C. Cấu trúc lặp

D. Cả ba cấu trúc

Hiển thị đáp án

Trả lời: Mọi quá trình tính toán đều có thể mô tả và thực hiện dựa trên cấu trúc cơ bản là cấu trúc tuần tự, cấu trúc rẽ nhánh, cấu trúc lặp. Tùy theo từng bài toán mà lựa chọ cấu trúc cho hợp lí.

Đáp án: D

Câu 3: Tính tống S = 1 + 2 + 3 + … + n + … cho đến khi S>108. Điều kiện nào sau đây cho vòng lặp while – do là đúng:

A. While S>=108 do

B. While S < 108 do

C. While S < 1.0E8 do

D. While S >= E8 do

Hiển thị đáp án

Trả lời:  Cấu trúc câu lệnh While- do có dạng:

While <điều kiện> do < câu lệnh>;

Ý nghĩa: Câu lệnh được thực hiện khi điều kiện được thỏa mãn. Do vậy mỗi lần thực hiện câu lệnh nó sẽ kiểm tra điều kiện, đúng sẽ thực hiện, sai thì dừng vòng lặp.

Mà điều kiện của bài là S>108 vì vậy nó sẽ kiểm tra S< 108 thì tính tổng đến khi S>108 thì dừng. Trong Pascal S< 108 được viết là S< 1.0E8.

Đáp án: C

Câu 4: Câu lệnh sau giải bài toán nào:

While M <> N do

If M > N then M:=M-N else N:=N-M;

A. Tìm UCLN của M và N

B. Tìm BCNN của M và N

C. Tìm hiệu nhỏ nhất của M và N

D. Tìm hiệu lớn nhất của M và N

Hiển thị đáp án

Trả lời:

Câu lệnh trên giải bài toán tìm UCLN của M và N. Với ý tưởng, kiểm tra xem M, N có giá trị khác nhau không. Nếu có thực hiện kiểm tra giá trị nào lớn hơn. Giá trị lớn hơn sẽ được gán bằng hiệ của số lớn trừ số bé. Việc làm thế cứ lặp đi lặp lại đến khi hai giá trị bằng nhau thì đưa ra UCLN của nó.

Đáp án: A

Câu 5: Đoạn chương trình sau giải bài toán nào?

          For I:=1 to M do

                   If (I mod 3 = 0) and (I mod 5 = 0) then

                             T := T + I;

A. Tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ 1 đến M

B. Tổng các số chia hết cho 3 và 5 trong phạm vi từ 1 đến M

C. Tổng các số chia hết cho 3 trong phạm vi từ 1 đến M

D. Tổng các số chia hết cho 5 trong phạm vi từ 1 đến M

Hiển thị đáp án

Trả lời: Đoạn chương trình

For I:=1 to M do { I chạy trong phạm vi từ 1 đến M}

If (I mod 3 = 0) and (I mod 5 = 0) then  { kiểm tra I chia hết cho 3 và cho 5 không}

T := T + I; {Cộng dồn vào tổng}

Đáp án: B

Câu 6: Cú pháp lệnh lặp For – do dạng lùi:

A. for < biến đếm> = < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

B. for < biến đếm> := < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

C. for < biến đếm> = < Giá trị cuối >down < Giá trị đầu > do < câu lệnh >;

D. for < biến đếm> := < Giá trị đầu >downto < Giá trị cuối > do < câu lệnh>;

Hiển thị đáp án

Trả lời:

+ Cú pháp lệnh lặp For – do dạng lùi:

For < biến đếm> := < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

+ Cú pháp lệnh lặp For – do dạng tiến:

For < biến đếm> := < Giá trị đầu> to < Giá trị cuối> do < câu lệnh >;

Đáp án: B

Câu 7: Cú pháp lệnh lặp For – do dạng tiến:

A. for < biến đếm> = < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

B. for < biến đếm> := < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

C. for < biến đếm> = < Giá trị cuối >down < Giá trị đầu > do < câu lệnh >;

D. for < biến đếm> := < Giá trị đầu > to < Giá trị cuối > do < câu lệnh>;

Hiển thị đáp án

Trả lời:

+ Cú pháp lệnh lặp For – do dạng lùi:

For < biến đếm> := < Giá trị cuối >downto < Giá trị đầu > do < câu lệnh >;

+ Cú pháp lệnh lặp For – do dạng tiến:

For < biến đếm> := < Giá trị đầu> to < Giá trị cuối> do < câu lệnh >;

Đáp án: D

Câu 8: Trong vòng lặp For – do dạng tiến. Giá trị của biến đếm

A. Tự động giảm đi 1

B. Tự động điều chỉnh

C. Chỉ tăng khi có câu lệnh thay đổi giá trị

D. Được giữ nguyên

Hiển thị đáp án

Trả lời: Trong vòng lặp For – do dạng tiến. Giá trị của biến đếm lần lượt nhận giá trị liên tiếp tằng từ giá trị đầu đến giá trị cuối. Giá trị của biến đếm được điề chỉnh tự động vì vậy câu lệnh sau Do không được thay đổi gía trị biến đếm.

Đáp án: B

Câu 9: Kiểu dữ liệu của biến đếm trong lệnh lặp For – do:

A. Cùng kiểu với giá trị đầu và giá trị cuối

B. Chỉ cần khác kiểu với giá trị đầu

C. Cùng kiểu với các biến trong câu lệnh

D. Không cần phải xác định kiểu dữ liệu

Hiển thị đáp án

Trả lời: Kiểu dữ liệu của biến đếm trong lệnh lặp For – do cùng kiểu với giá trị đầu và giá trị cuối. Biến đếm là biến đơn, thường là kiểu nguyên.

Đáp án: A

Câu 10: Trong lệnh lặp For – do: (chọn phương án đúng nhất)

A. Giá trị đầu phải nhỏ hơn giá trị cuối

B. Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối

C. Giá trị đầu phải lớn hơn giá trị cuối

D. Giá trị đầu phải bằng giá trị cuối

Hiển thị đáp án

Trả lời: Trong lệnh lặp For – do Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối. Nếu giá trị đầu lớn hơn giá trị cuối thì vong lặp không được thực hiện.

Đáp án: B