Bài 7. Câu lênh lặp

Nội dung lý thuyết

BÀI 7: CÂU LỆNH LẶP

1. Các công việc phải thực hiền nhiều lần

- Công việc không biết trước số lần lặp lại: học bài cho đến khi thuộc hết các bài,

- Công việc đã biết trước số lần lặp: đi học mỗi sáng 5 tiết, mỗi ngày tập 7 bài thể dục buổi sáng, đánh răng mỗi ngày 3 lần,

=> Để chỉ cho máy tính thực hiện đúng công việc, trong nhiều trường hợp khi viết một chương trình máy tính chúng ta cũng phải viết lặp lại nhiều câu lệnh thực hiện một phép tính nhất định.

- Ví dụ 1: Để tính 5 số tự nhiên đầu tiên ta có thể viết như sau:

begin

     i=0; Tong:=0;

     i:=i+1; Tong:=Tong+i;

     i:=i+1; Tong:=Tong+i;

     i:=i+1; Tong:=Tong+i;

     i:=i+1; Tong:=Tong+i;

     i:=i+1; Tong:=Tong+i;

     Readln;

end.

2. Câu lệnh lặp - một lệnh thay cho nhiều lệnh

- Ví dụ 2: Tính tổng của 100 số tự nhiên đầu tiên.

- Thuật toán: 

  • Bước 1: Gán SUM \(\leftarrow\) 0; i \(\leftarrow\) 1.
  • Bước 2: Gán i \(\leftarrow\) i + 1.
  • Bước 3: Nếu i ≤ 100, thì SUM \(\leftarrow\) SUM + i và chuyển lên bước 2. Trong trường hợp ngược lại (i > 100), kết thúc thuật toán.

=> Kết luận: Cách mô tả các hoạt động lặp trong thuật toán như trong ví dụ trên được gọi là cấu trúc lặp.

- Mọi ngôn ngữ lập trình đều có “cách” để chỉ thị cho máy tính thực hiện cấu trúc lặp với một câu lệnh. Đó là câu lệnh lặp.

3. Ví dụ về câu lệnh lặp

- Trong pascal câu lệnh lặp có dạng:

  • Câu lệnh lặp dạng tiến: For <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>

  • Trong đó: 
    • for, to, do là các từ khoá,
    • Biến đếm là biến đơn có kiểu nguyên (có thể là kiểu kí tự hoặc kiểu đoạn con)
    • Giá trị đầu, giá trị cuối là số cụ thể hoặc là biểu thức có kiểu cùng kiểu với biến đếm, giá trị cuối phải lớn hơn giá trị đầu.
    • Câu lệnh có thể là câu lệnh đơn hoặc câu lệnh kép.
    • Câu lệnh sẽ được thực hiện nhiều lần, mỗi lần thực hiện câu lệnh là một lần lặp và sau mỗi lần lặp biến đếm sẽ tự động tăng lên 1 đơn vị, tăng cho đến khi giá trị của biến đếm lớn hơn giá trị cuối thì vòng lặp được dừng lại.
    • Số lần lặp = giá trị cuối-giá trị đầu+1

=> for … do là cấu trúc lặp với số lần lặp biết trước.

- Ví dụ 3: in ra màn hình thứ tự lần lặp

Program lap;

Var i: integer;

Begin

     For i:=1 to 10 do

          Writeln(‘day la lan lap thu’, i);

     Readln;

End.

- Ví dụ 4: Viết chương trình đưa ra màn hình những chữ “0” theo hình trứng rơi.

Program trung_roi;

Uses crt;

Var i: integer;

Begin

     Clrscr;

     For i:=1 to 10 do

     begin

          Writeln(‘0’);

          delay(100);

     end;

     Readln;

End.

- Tập hợp các câu lệnh con được đặt trong cặp từ khoá begin end; được gọi là câu lệnh ghép.

4. Tính tổng và tích bằng câu lệnh lặp

- Ví dụ 5. Tính tổng của N số tự nhiên đầu tiên.

Program tinh_tong; 

Uses crt; 

Var i, n , tong: integer;

Begin 

     Clrscr; 

     Writeln(‘nhap vao n’); readln(n); 

     tong:= 0; 

     For i:= 1 to n do tong:= tong + i; 

     Writeln(‘ket qua la’,tong); 

     readln; 

End. 

- Ví dụ 6. Tính giai thừa của N số tự nhiên đầu tiên.

Program tinh_giai_thua; 

Uses crt; 

Var i, n : integer; kq: longint; 

Begin 

     Clrscr; 

     Writeln(‘nhap vao n’); readln(n); 

     Kq:=1; 

     For i:= 1 to n do Kq:=kq*i; 

     Writeln(‘ket qua la’,kq); 

     readln; 

End. 

5. Bài tập

Bài tập 1: Nhập vào n số nguyên từ bàn phím, tìm số lớn nhất trong dãy số vừa nhập

Program tim_max;

Uses crt;

Var i, n, smax, A : integer;

Begin

     Clrscr;

     Writeln(‘nhap vao n’); readln(n);

     Smax:=-32768;

     For i:= 1 to n do

     Begin

          Writeln(‘nhap vao so thu ’,i); readln(A);

          If Smax < A then Smax:= A;

     End;

     Writeln('So lon nhat la', A);

     Readln;

End.