Nội dung lý thuyết
BÀI 7: CÂU LỆNH LẶP
- 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.
- Ví dụ 2: Tính tổng của 100 số tự nhiên đầu tiên.
- 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.
- Trong pascal câu lệnh lặp có dạng:
For <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
for
, to
, do
là các từ khoá,=> 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.
- 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.
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.