So sánh hai thuật toán sauSƠ ĐỒ THUẬT TOÁN Thuật toán Tong_1A Thuật toán Tong_1b dần từ giá trị đầu đến giá trị cuối.. Biến đếm: biến kiểu nguyên, kí tự hoặc miền con Giá trị đầu, giá tr
Trang 21 1
a a
S
1
2
1 1
a a
a S
N a
Bài toán 1:
Trang 3
Sau mỗi lần thực hiện phép cộng, giá trị tổng S tăng ( Với i =1; 2; 3 ; ;N)
Trang 4TÌM SỰ KHÁC BIỆT
100
1
2
1 1
a a
2
1 1
a a
a S
Cho đến khi 1 0.0001
N a
Số lần lặp biết trước
Việc tăng giá trị cho tổng S
được lặp đi lặp lại 100 lần.
Chưa lần lặp chưa biết trước.
Việc tăng giá trị cho tổng S được lặp đi lặp lại cho đến khi
0.0001 N
a
1
Trang 51 LẶP VỚI SỐ LẦN BIẾT TRƯỚC
a Bài toán nêu vấn đề:
Dữ liệu ra (Output) : Tổng S
Lặp chương trình tính tổng sau:
N
1
4
1 3
1 2
1 1
Hãy xác định INPUT và OUTPUT của bài toán trên?
Dữ liệu vào (Input) : Nhập N
Trang 6PHÂN TÍCH BÀI TOÁN VỚI N=100
Nhận xét
S1 = 1 S2 = S1 + 1/2 S3 = S2 + 1/3
S4 = S3 + 1/4
S sau = S trước + 1/i,
Trang 7So sánh hai thuật toán sau
SƠ ĐỒ THUẬT TOÁN
Thuật toán Tong_1A Thuật toán Tong_1b
dần từ giá trị đầu đến giá trị cuối.
dần từ giá trị cuối đến giá trị đầu.
Trang 8CẤU TRÚC DẠNG LẶP TIẾN
Hãy nêu cấu trúc dạng lặp tiến?
Biến đếm: biến kiểu nguyên, kí tự hoặc miền con Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
For <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
For < biến đếm >:= < giá trị đầu > to < giá trị cuối > do < câu lệnh >;
Ví dụ S:=1;
FOR i:=2 TO 100 DO S:=S+1/i;
Trang 9SƠ ĐỒ KHỐI
Biến đếm:=giá trị đầu
Biến đếm<=giá trị cuối
hiện của máy?
• Bước 1: tính giá trị đầu, gán cho biến đếm.
• Bước 2: Nếu biến đếm <= giá trị cuối thì:
• thực hiện lệnh cần lặp.
• tăng biến đếm 1 đơn vị, quay lại bước 2
Trang 10CẤU TRÚC DẠNG LẶP LÙI
Hãy nêu cấu trúc dạng lặp lùi?
Biến đếm: biến kiểu nguyên, kí tự hoặc miền con Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm.
Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
for <biến đếm>:= <giá trị cuối> downto <giá trị đầu> do <câu lệnh>;
for < biến đếm >:= < giá trị cuối > downto < giá trị đầu > do < câu lệnh >;
Ví dụ S:=1;
Trang 11SƠ ĐỒ KHỐI
Biến đếm:=giá trị đầu
Biến đếm>=giá trị cuối
• Bước 1: tính giá trị đầu, gán cho biến đếm.
• Bước 2: Nếu biến đếm >= giá trị cuối thì:
• thực hiện lệnh cần lặp.
• giảm biến đếm 1 đơn vị, quay lại bước 2
Trang 12Lưu ý:
+ Biến đếm là biến đơn, có kiểu nguyên hoặc kí tự
+ Giá trị đầu, giá trị cuối là các biểu thức có cùng kiểu với biến
đếm Giá trị đầu phải nhỏ hơn giá trị cuối
+ Giá trị của biến đếm được điều chỉnh tự động, vì vậy câu lệnh viết sau DO không được thay đổi giá trị biến đếm
For i:=1 to 10 do write(i);
For i:=‘a’ to ‘z’ do write(i);
For i:= 100 to 200 do write(i);
Trang 13Quan sát sách giáo khoa trang 44, chương trình cài đặt các thuật toán
Tong_1A?
Trang 14* Bước 1: S ← 1/a; N ← 0;
* Bước 2: N ← N + 1;
* Bước 3: Nếu N > 100 thì chuyển đến bước 5;
* Bước 4: S ← S + 1/(a + N) rồi quay lại bước 2;
* Bước 5: Đưa S ra màn hình, rồi kết thúc.
Trang 15Quan sát sách giáo khoa trang 44, chương trình cài đặt các thuật toán
Tong_1B?
Trang 16* Bước 1: S ← 1/a; N ← 101;
* Bước 2: N ← N - 1;
* Bước 3: Nếu N < 1 thì chuyển đến bước 5;
* Bước 4: S ← S + 1/(a + N) rồi quay lại bước 2;
* Bước 5: Đưa S ra màn hình, rồi kết thúc.
Trang 17Quan sát sách giáo khoa trang 45, chương trình thực hiện việc 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?
Trang 21TÌM SỰ KHÁC BIỆT
100
1
2
1 1
a a
2
1 1
a a
a S
Cho đến khi 1 0.0001
N a
Số lần lặp biết trước
Việc tăng giá trị cho tổng S
được lặp đi lặp lại 100 lần.
Chưa lần lặp chưa biết trước.
Việc tăng giá trị cho tổng S được lặp đi lặp lại cho đến khi
0.0001 N
a
1
Trang 223 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
a Bài toán nêu vấn đề:
Dữ liệu ra (Output) : Tổng S
Lặp chương trình tính tổng sau:
Hãy xác định INPUT và OUTPUT của bài toán trên?
Dữ liệu vào (Input) : Nhập N
1
2
1 1
a a
a S
cho đến khi
0001
0
1
N a
Trang 23THUẬT TOÁN
Nhận xét thuật toán.
* Bước 5: Đưa S ra màn hình, rồi kết thúc.
* Bước 1: S ← 1/a; N ← 0; {Khởi tạo S và N}
* Bước 3: N ← N + 1;
* Bước 2: Nếu 1/(a + N) < 0,0001 thì chuyển đến bước 5;
* Bước 4: S ← S + 1/(a + N) rồi quay lại bước 2;
Từ bước 2 đến bước 4 được lặp lại nhiều lần nếu điều kiện 1/(a + N) < 0.0001 chưa được thoả mãn
Trang 24CÂU LỆNH WHILE - DO
Hãy nêu cấu trúc lặp với câu lệnh while - do?
Điều kiện: biểu thức quan hệ hoặc biểu thức logic Câu lệnh: là môt câu lệnh trong Pascal
While <điều kiện> do <câu lệnh >;
Trang 25Quan sát sơ đồ
khối, hãy cho
biết sự thực
hiện của máy?
• Bước 1: tính giá trị của <điều kiện>.
• Bước 2: Nếu <điều kiện> có giá trị đúng thì:
Trang 26BÀI TOÁN ĐẶT VẤN ĐỀ
Tính tổng S với a là số nguyên và a>2
1
2
1 1
a a
a
N a
+ Tăng giá trị của tổng S thêm 1/(a + N).
+ Tăng N thêm 1 đơn vị
Trang 27Quan sát sách giáo khoa trang 47, chương trình cài đặt thuật toán
Tong_2?
Trang 28• Tính giá trị của <điều kiện>.
• Nếu <điều kiện> có giá trị đúng thì:
• thực hiện lệnh cần lặp.
• quay lại bước 1.
Trang 29Quan sát sách giáo khoa trang 47, chương trình cài đặt thuật toán “ Tìm ước số chung lớn nhất của hai
số nguyên dương M và N?
Trang 30THUẬT TOÁN
* Bước 5: Đưa ra kết quả ƯCLN rồi kết thúc.
* Bước 1: Nhập M, N;
* Bước 3: Nếu M > N thì M ← M + N ngược lại N ← N - M ;
* Bước 2: Nếu M = N thì lấy giá trị chung này làm ƯCLN rồi chuyển đến bước 5;
* Bước 4: Quay lại bước 2;
Trang 31Trang 33
CÂU LỆNH REPEAT - UNTIL
Hãy nêu cấu trúc lặp với câu lệnh repeat - until?
Repeat <câu lệnh> until <điều kiện >;
Trang 34