Bµi 10 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 C¸c bµi to¸n ®Æt vÊn ®Ò : cho ®Õn khi 0001.0 1 < + Na TÝnh tæng S, víi a lµ sè nguyªn vµ a>2 Xuất phát a S 1 = 1 1 + + a Lần 1 2 1 + + a Lần 2 + Lần 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 Cùng tìm thuật 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 0.0001 Na 1 < + 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 1. Bài toán đặt vấn đề - 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:=1; FOR i:=2 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 2 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:=1 to 10 do write(i); For i:=a to z do write(i); [...]... nhập vào hai số nguyên dương M,N Tìm ƯCLN của hai số đó Thuật toán B1: Nhập M,N; B2 : Chừng nào MN nếu M>N thì M:=M-N, ngược lại thì N:=N-M; B3: Đến khi M=N thì => Đưa ra ƯCLN(M,N)=M; => Kết thúc các bước viết chương trình B1: Nhập M,N B2 : While MN DO Begin IF M>N then M:=M-N else N:=N-M; end; B3: In ƯCLN(M,N) Tham khảo: Dạng khác của câu lệnh lặp với số lần lặp không biết trước REPEAT ... bàn phím và a>2) 1 1 1 1 S = + + + + a a +1 a + 2 a + 100 ? Hãy xác định giá trị khởi đầu của S, quy luật thay đổi giá trị của S và số lần lặp Viết chương trình để giải bài toán trên - S:=1/a; - S:= S + 1/(a+i); - i chạy từ 1 đến 100 => Số lần lặp là 100 lần II Lặp với số lần lặp không biết trước 1 Bài toán Tính giá trị 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 Cho... a,N:Integer; S:Real; BEGIN Clrscr; Write(Nhap gia tri cua a= );Readln(a); S:=1/a;N:=1; REPEAT S:=S+1/(a+N); N:=N+1 UNTIL 1/(a+N)< 0.0001; Writeln(Gia tri cua tong S = ,S:8:3); Readln; END {Bat dau lap} {Ket thuc lap} Hãy nhớ! Câu lệnh rẽ nhánh IF THEN ; + Dạng khuyết IF THEN + Dạng đầy đủ ESLE ; FOR TO DO FOR Downto DO While Do ; Câu . của S và số lần lặp. Viết chương trình để giải bài toán trên. - S:=1/a; - S:= S + 1/(a+i); - i chạy từ 1 đến 100 => Số lần lặp là 100 lần. 1. Bài toán. trước. CÊu tróc lÆp 1. Bài toán đặt vấn đề - 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