MỤC ĐÍCH, YÊU CẦU: Hiểu được nhu cầu của cấu trúc lặp trong biểu diễn thuật toán; Hiểu được cấu trúc lặp với số lần cho trước, cấu trúc lặp kiểm tra điều kiện trước; Biết cách vậ
Trang 1Sinh viên thực hiện: Phương Thị Chang Lớp: K56A-CNTT
Trang 2Cấu Trúc Lặp (tiết 2)
I MỤC ĐÍCH, YÊU CẦU:
Hiểu được nhu cầu của cấu trúc lặp trong biểu diễn thuật toán;
Hiểu được cấu trúc lặp với số lần cho
trước, cấu trúc lặp kiểm tra điều kiện trước;
Biết cách vận dụng đúng đắn cấu trúc lặp trước vào tình huống cụ thể;
Trang 3I MỤC ĐÍCH, YÊU CẦU:
Mô tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp với số lần lặp cho trước;
Viết đúng các lệnh lặp với số lần biết trước;
Viết được thuật toán của bài toán đơn giản
sử dụng cấu trúc lặp trên
Trang 4II Mở đầu
Cấu trúc lặp trước có ý nghĩa rất quan
trọng trong lập trình trong ngôn ngữ lập trình pascal cũng vậy Muốn cho việc viết chương trình thực thi được dễ dàng thì ta phải xây
dựng thuật toán Tiết trước chúng ta đã xem xét hai thuật toán của hai dạng lặp với số lần biết trước, tiết này chúng ta dựa trên hai
thuật toán đó để xây dựng chương trình sử dụng cú pháp lặp với số lần cho trước
Trang 5III Nội dung
1 Chương trình xây dựng dựa trên thuật toán tong_1a:
Program tong_1a;
Uses crt;
Var s: real;
N, a: integer;
Begin
clrscr;
Trang 6Write (‘ nhap vao gia tri cua a’); Readln(a);
S := 1.0/a; { bước1 }
For N := 1 to 100 do
S:= S + 1/(a+N); { bước 2, 3, 4 }
Write (‘ tong s la:’, s:8:4); { bước 5 }
Readln
End
Chương trình xây dựng dựa trên thuật toán tong_1a:
Trang 7Phân tích và giải thích các lệnh trong chương trình:
Chương trình này xây dựng dựa trên thuật toán tong_1a (dạng lặp tiến của cấu trúc lặp) với số lần biết trước trong đó biến điều khiển
là N, N cho biết số lần lặp Khi 1<= N <=100 thì thực hiện lặp, sau lần lặp thứ 100 thì kết thúc lặp
Bước 1 của thuật toán:
s:= 1.0/a;
Trang 8Phân tích và giải thích các lệnh trong chương trình:
For N:= 1 to 100 do
S:= S + 1/(a+N);
Câu lệnh lặp này đã bao gồm cả ba bước 2,
3, 4 của thuật toán Đầu tiên N nhận giá trị là
1, sau đó thực hiện lệnh trong vòng for, cộng vào tổng s một số hạng 1/ (a+N)
Trang 9Phân tích và giải thích các lệnh trong chương trình:
Sau khi tính toán hoàn tất thì biến đếm
được tự động tăng lên giá trị tiếp theo và mỗi lần tăng giá trị biến đếm là một lần thực hiện lệnh trong vòng lặp
Write (‘ tong s la:’, s:8:4);
Đây là bước thứ 5 của thuật toán, ta đưa
ra màn hình giá trị của s và sau đó kết thúc chương trình với từ end
Trang 12Chương trình xây dựng dựa trên thuật toán tong_1b
Program tong_1b;
Uses crt;
Var s: real;
N, a: integer;
Begin
Clrscr;
Write( ‘ dua vao gia tri a’);
Readln(a);
S:= 1.0/a; { bước 1}
Trang 13
Chương trình xây dựng dựa trên thuật toán tong_1b
For N:= 100 downto 1 do
{bước 2 và bước 3}
S:= S + 1/(a + N);
{bước 4}
Write(‘ tong la:’, s: 8:4); {bước 5}
Readln
End
Trang 14Nhận xét về chương trình
Chương trình này chỉ khác chương trình
trên ở trình tự thực hiện vòng lặp Ở trên thì biến điều khiển được tự động tăng, còn ở
dưới thì biến điều khiển được tự động giảm
từ 100 xuống 1 và cũng tương tự như trên
thì mỗi lần biến điều khiển giảm thì là một lần câu lệnh trong vòng for được thực hiện và
nó kết thúc khi biến đếm I nhận giá trị bằng 1
Trang 15Ví dụ khác:
Viết chương trình thực hiện nhập từ bàn
phím hai số nguyên dương M và N (M < N), tính và đưa ra màn hình tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ M đến N
Nhận thấy chương trình của bài toán sử
dụng cấu trúc lặp với số lần lặp biết trước Biến đếm nhận giá trị từ M đến N
Trang 16Chương trình :
Program vi_du_2;
Uses crt;
Var M, N, I: integer; T: longint;
Begin
Clrscr;
Writeln (‘nhap vao so M nho hon so N’); { Bước 1}
Write (‘M = ‘); Readln (M);
Write (‘N = ‘); Readln (N);
Trang 17Chương trình :
T := 0; {Bước 2}
For I := M to N do {Bước 3, Bước 4}
If (I mod 3 = 0) or (I mod 5 = 0) then
T := T + I; {Bước 5}
Writeln (‘ket qua: ‘, T) {Bước 6}
Readln
End