Tải bản đầy đủ (.ppt) (36 trang)

Bai 10 Cau truc lap

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.42 MB, 36 trang )

<span class='text_page_counter'>(1)</span>TRƯỜNG TRUNG HỌC PHỔ THÔNG. TRẦN HỮU TRANG. TIN HỌC 11. Đặng Hữu Hoàng.

<span class='text_page_counter'>(2)</span> BÀI 10. CẤU TRÚC LẶP. Thời gian 3 tiết.

<span class='text_page_counter'>(3)</span> CÁC BÀI TOÁN ĐẶT VẤN ĐỀ Tính tổng S với a là số nguyên và a>2. Bài toán 1:. 1 1 1 1 S    ...  a a 1 a  2 a  100. Bài toán 2:. 1 1 1 1 S    ...   ... a a 1 a  2 aN cho đến khi. 1  0.0001 aN.

<span class='text_page_counter'>(4)</span> CÙNG TÌM THUẬT TOÁN Xuất phát. Lần 1. Lần 2. Lần N. 1 1 1 S    a a 1 a  2. +…. 1  aN. Mỗi lần thực hiện, giá trị tổng tăng bao nhiêu?. Sau mỗi lần thực hiện phép cộng, giá trị tổng S tăng. 1 a i. ( Với i =1; 2; 3 ; ...;N).

<span class='text_page_counter'>(5)</span> TÌM SỰ KHÁC BIỆT Bài toán 1:. 1 1 1 1 S    ...  a a 1 a  2 a  100. Bài toán 2:. 1 1 1 1 S    ...   ... a a 1 a  2 aN Cho đến khi. Việc tăng giá trị cho tổng S được lặp đi lặp lại 100 lần.  Số lần lặp biết trước. 1  0.0001 aN. Việc tăng giá trị cho tổng S được lặp đi lặp lại cho đến 1 khi  0.0001 aN  Chưa lần lặp chưa biết trước..

<span class='text_page_counter'>(6)</span> 1. LẶP VỚI SỐ LẦN BIẾT TRƯỚC a. Bài toán nêu vấn đề: Lặp chương trình tính tổng sau:. 1 1 1 1 S 1     ...  2 3 4 N 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. Dữ liệu ra (Output) : Tổng S.

<span class='text_page_counter'>(7)</span> PHÂN TÍCH BÀI TOÁN VỚI N=100. 1 1 1 1 S 1     . . .  2 3 4 100 S1 = 1. Nhận xét S2 = S1 + 1/2 S3 = S2 + 1/3 ...... S4 = S3 + 1/4. ..................... S100 = S99 + 1/100. Bắt đầu từ S2 việc tính S1 được lặp đi lặp lại 99 lần theo quy luật Ssau = Strước+ 1/i, Với I chạy từ 2  100.

<span class='text_page_counter'>(8)</span> SƠ ĐỒ THUẬT TOÁN So sánh hai thuật toán sau. Thuật toán Tong_1A. Thuật toán Tong_1b. * 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.. * 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.. •Thuật toán dạng lặp tiến. • Dạng lặp tiến: Biến đếm tự động tăng dần từ giá trị đầu đến giá trị cuối.. •Thuật toán dạng lặp lùi. • Dạng lặp lùi: Biến đếm tự động giảm dần từ giá trị cuối đến giá trị đầu..

<span class='text_page_counter'>(9)</span> CẤU TRÚC DẠNG LẶP TIẾN. Hãy nêu cấu trúc dạng lặp tiến?. For <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>; 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.. Ví dụ S:=1; FOR i:=2 TO 100 DO S:=S+1/i;.

<span class='text_page_counter'>(10)</span> SƠ ĐỒ KHỐI Biến đếm:=giá trị đầu. Sai Biến đếm<=giá trị cuối Quan sát sơ đồ khối, hãy cho biết sự thực hiện của máy?. Đúng Lệnh cần lặp biến đếm tăng 1. • 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.

<span class='text_page_counter'>(11)</span> CẤU TRÚC DẠNG LẶP LÙI. Hãy nêu cấu trúc dạng lặp lùi?. for <biến đếm>:= <giá trị cuối> downto <giá trị đầu> do <câu lệnh>; 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.. Ví dụ. S:=1; FOR i:=100 DOWNTO 2 DO S:=S+1/i;.

<span class='text_page_counter'>(12)</span> SƠ ĐỒ KHỐI Biến đếm:=giá trị đầu. Sai Biến đếm>=giá trị cuối Quan sát sơ đồ khối, hãy cho biết sự thực hiện của máy?. Đúng Lệnh cần lặp biến đếm giảm 1. • 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.

<span class='text_page_counter'>(13)</span> Lưu ý: + Biến đếm là biến đơn, có kiểu nguyên hoặc kí tự. For i:=1 to 10 do write(i); For i:=‘a’ to ‘z’ do write(i); + 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. For i:= 100 to 200 do write(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.

<span class='text_page_counter'>(14)</span> Quan sát sách giáo khoa trang 44, chương trình cài đặt các thuật toán Tong_1A?.

<span class='text_page_counter'>(15)</span> * 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..

<span class='text_page_counter'>(16)</span> Quan sát sách giáo khoa trang 44, chương trình cài đặt các thuật toán Tong_1B?.

<span class='text_page_counter'>(17)</span> * 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..

<span class='text_page_counter'>(18)</span> Quan 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?.

<span class='text_page_counter'>(19)</span>

<span class='text_page_counter'>(20)</span> Hãy lập trình tính: 50. n Y  n 1 n  1.

<span class='text_page_counter'>(21)</span>

<span class='text_page_counter'>(22)</span> TÌM SỰ KHÁC BIỆT Bài toán 1:. 1 1 1 1 S    ...  a a 1 a  2 a  100. Bài toán 2:. 1 1 1 1 S    ...   ... a a 1 a  2 aN Cho đến khi. Việc tăng giá trị cho tổng S được lặp đi lặp lại 100 lần.  Số lần lặp biết trước. 1  0.0001 aN. Việc tăng giá trị cho tổng S được lặp đi lặp lại cho đến 1 khi  0.0001 aN  Chưa lần lặp chưa biết trước..

<span class='text_page_counter'>(23)</span> 3. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC a. Bài toán nêu vấn đề: Lặp chương trình tính tổng sau:. 1 1 1 1 S    ...   ... a a 1 a  2 aN cho đến khi. 1  0.0001 aN. 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. Dữ liệu ra (Output) : Tổng S.

<span class='text_page_counter'>(24)</span> THUẬT TOÁN * Bước 1: S ← 1/a; N ← 0;. {Khởi tạo S và N}. * Bước 2: Nếu 1/(a + N) < 0,0001 thì chuyển đến bước 5; * Bước 3: N ← N + 1; * 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. Nhận xét thuật toán. 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..

<span class='text_page_counter'>(25)</span> CÂU LỆNH WHILE - DO. Hãy nêu cấu trúc lặp với câu lệnh while - do?. While <điều kiện> do <câu lệnh >; Đ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.

<span class='text_page_counter'>(26)</span> SƠ ĐỒ KHỐI. Sai Điều kiện Đúng Quan sát sơ đồ khối, hãy cho biết sự thực hiện của máy?. Lệnh cần lặp. • 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ì: • thực hiện lệnh cần lặp. • quay lại bước 1.. Chừng nào điều kiện còn đúng thì câu lệnh còn thực hiện..

<span class='text_page_counter'>(27)</span> BÀI TOÁN ĐẶT VẤN ĐỀ Tính tổng S với a là số nguyên và a>2. 1 1 1 1 S    ...   ... a a 1 a  2 aN. 1  0.0001 Cho đến khi aN. Nhận xét While 1/(a + N) >= 0.0001 do Begin S:=S+1/(a+N); N:=N+1; End;. Chừng nào 1/(a + N) >= 0.0001 thì thực hiện: + Tăng giá trị của tổng S thêm 1/(a + N). + Tăng N thêm 1 đơn vị.

<span class='text_page_counter'>(28)</span> Quan sát sách giáo khoa trang 47, chương trình cài đặt thuật toán Tong_2?.

<span class='text_page_counter'>(29)</span> • 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..

<span class='text_page_counter'>(30)</span> Quan 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? ......

<span class='text_page_counter'>(31)</span> THUẬT TOÁN * Bước 1: Nhập M, N; * 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 3: Nếu M > N thì M ← M + N ngược lại N ← N - M ; * Bước 4: Quay lại bước 2; * Bước 5: Đưa ra kết quả ƯCLN rồi kết thúc..

<span class='text_page_counter'>(32)</span> ......

<span class='text_page_counter'>(33)</span> Chừng nào M≠N thì nếu M> N thì M:= M-N ngược lại N:= N-M Đến khi M=N thì đưa ra ƯCLN(M,N)=M kết thúc.

<span class='text_page_counter'>(34)</span> 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 >;.

<span class='text_page_counter'>(35)</span> ......

<span class='text_page_counter'>(36)</span> Thực hiện tháng 8 năm 2007 E_mail:

<span class='text_page_counter'>(37)</span>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×