Bài 10 cấu trúc lặp (2 tiết) Thực hiện: lê thị hạnh lớp : 48 atin Bµi to¸n 1: Bµi to¸n 2: 100 1 . 2 1 1 11 + ++ + + + += aaaa S . 1 . 2 1 1 11 + + ++ + + + += Naaaa S đặt vấn đề : tính tổng s với a là số nguyên và a>2 cho ®Õn khi 0001.0 1 < + Na Xut phỏt a S 1 = 1 1 + + a Ln 1 2 1 + + a Ln 2 + Ln n Na + + 1 Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu? 1 Sau mỗi lần thực hiện giá trị tổng S tăng thêm ( với i =1; 2; 3 ; .;N) a + i Tỡm thut toỏn Bài toán 1: Bài toán 2: 100 1 . 2 1 1 11 + ++ + + + += aaaa S . 1 . 2 1 1 11 + + ++ + + + += Naaaa S Cho đến khi 00010 1 .< + Na 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 cho đến khi 0.0001 Na 1 < + Việc tăng giá trị cho tổng S được lặp đi lặp lại 100 lần. tìm sự khác biệt Số lần lặp chưa biết trước. CÊu tróc lÆp 1bi toỏn t vn : - Dữ liệu ra (Output) : Tổng S Lập chương trình tính tổng sau: - Dữ liệu vào (Input) : Nhập N Hãy xác định INPUT và OUTPUT của bài toán trên! I. Lặp với số lần lặp biết trước N 1 . 4 1 3 1 2 1 1S +++++= Phâ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 . S100 = S99 + 1/100 1=S Bắt đầu từ S2 việc tính S được lặp đi lặp lại 99 lần theo quy luật S sau = S trước + 1/i với i chạy từ 2 100 2 1 + 3 1 + 4 1 + . . .+ + 1 100 . . . . . . . . . . . . . . . . . . . . § S NhËp N S:= 1 ; i:= 2 i > N ? S:= S + 1/i §a ra S råi kÕt thóc B1: NhËp N; B2: S:=1; i:=2; B3: NÕu i > N th× ®a ra gi¸ trÞ S => KÕt thóc; B4 : S:= S + 1/i; B5: i := i +1 quay l¹i B3. X©y dùng thuËt to¸n i:= i+1 FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO < câu lệnh>; Ví dụ: S:=0; FOR i:=1 TO 100 DO S:=S+1/i; b. Dạng 2 (dạng lùi) FOR <biến đếm> := <giá trị cuối> DOWNTO <giá trị đầu> DO <câu lệnh >; Ví dụ: S:=1; FOR i:=100 DOWNTO 1 DO S:=S+1/i; a. Dạng 1 (dạng tiến) 2. Lặp với số lần lặp biết trước Giá trị đầu, giá trị cuối là các biểu thứ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ị biến đếm được điều chỉnh tự động, vì vậy câu lệnh sau DO không được thay đổi giá trị biến đếm. Trong đó Biến đếm là biến kiểu số nguyên hoặc kí tự. For i:=3 to 10 do write(i); For i:=a to z do write(i); . với a là số nguyên và a>2 thì dừng lại. Cho đến khi Ch¬ng tr×nh Program Bai_ toan; Uses Crt; Var a,N:Integer; S:Real; BEGIN Clrscr; Write(‘Nhap gia tri