1. Trang chủ
  2. » Giáo án - Bài giảng

bai 10:cau truc lap

22 566 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 0,98 MB

Nội dung

Bài 10 (Tit 11) Giáo án điện tử tin học lớp 11 Các toán đặt vấn đề : Tính tổng S, với a số nguyên a>2 Bài toán 1: 1 1 S= + + + . + a a +1 a + a + 100 Bài toán 2: 1 1 S= + + + . + + . a a +1 a + a+N < 0.0001 a+N Cùng tìm thuật toán Xuất phát Lần Lần Lần N 1 S = + + a a +1 a + + + a+N thêm bao nhiêu? lầnthực thực tổng S tăng SauMỗi lần hiệnhiện giá trịgiá tổngtrị S tăng thêm ( với i =1; 2; ; .;N) a+i tìm khác biệt Bài toán 1: 1 1 S= + + + . + a a +1 a + a + 100 Bài toán 2: S= 1 1 + + + . + + . a a +1 a + a+N Cho đến Việc tăng giá trị cho tổng S lặp lặp lại 100 lần. < 0.0001 a+N Việc tăng giá trị cho tổng S lặp lặp lại < 0.0001 a+N Số lần lặp biết trước. Số lần lặp chưa biết trước. Cấu trúc lặp I. Lặp với số lần lặp biết trước 1. Bài toán đặt vấn đề Lập chương trình tính tổng sau: 1 1 S =1 + + + + . + N Hãy xác định INPUT - Dữ liệuOUTPUT vào (Input) : toán trên! Nhập N - Dữ liệu (Output) : Tổng S Phân tích toán với N = 100 1 1 S =1+ + + + . . . + 100 S1 = S2 = S1 + 1/2 S3 = S2 + 1/3 S4 = S3 + 1/4 . S100 = S99 + 1/100 Nhận xét: Bắt đầu từ S2 việc tính S lặp lặp lại 99 lần theo quy luật Ssau = Strước+ 1/i với i chạy từ 100 Xây dựng thuật toán B1: Nhập N; Nhập N B2: S:=1; i:=2; S:= ; i:= i>N? B3: Nếu i > N đưa giá trị S => Kết thúc; Đ Đưa S kết thúc S S:= S + 1/i i:= i+1 B4 : S:= S + 1/i; B5: i := i +1 quay lại B3. 2. Lặp với số lần lặp biết trước a. Dạng (dạng tiến) FOR := TO DO < câu lệnh>; Ví dụ: S:=1; FOR i:=2 TO 100 DO S:=S+1/i; b. Dạng (dạng lùi) FOR := DOWNTO DO ; Ví dụ: S:=1; FOR i:=100 DOWNTO DO S:=S+1/i; Trong Biến đếm biến kiểu số nguyên kí tự. For i:=1 to 10 write(i); For i:=a to z write(i); Giá trị đầu, giá trị cuối biểu thức kiểu với biến đếm, giá trị đầu phải nhỏ giá trị cuối. For i:= 100 to 200 write(i); Giá trị biến đếm điều chỉnh tự động, câu lệnh sau DO không thay đổi giá trị biến đếm. Lập chương trình tính tổng sau: 1 1 S =1 + + + + . + N Program Tinh_tong; Uses crt; Var i,N : Integer; S : real; Hãy áp dụng câu BEGIN S:=1; lệnh lặp dạng tiến để viết chư ơng trình giải toán đặt vấn đề. Write( Nhap vao gia tri cua N :);readln(N); FOR i:=2 to N S := S+1/i; Writeln( Tong S =,S:8:3); END. Readln; Mô thuật toán Với Nhập N= N5 i Lượt S 1.5 1.83 2.08 2.28 S := ; i := 2; i >N? 6>5 2>5 3>5 4>5 5>5 SS S S S SS:= := := :=1.83+1/4 2.08+1/5; 1.5+1/3 S +1/2 +1/ i ;;; i :=ii := := +1; 2i +1; +1; Đ Tổng In Tổng S=2.28 S KT 3. Ví dụ Tính tổng S (với a số nguyên nhập vào từ bàn phím a>2). 1 1 S = + + + . + a a +1 a +2 a +100 ? Hãy xác định giá trị khởi đầu S, quy luật thay đổi giá trị S số lần lặp. Viết chương trình để giải toán trên. - S:=1/a; - S:= S + 1/(a+i); - i chạy từ đến 100 => Số lần lặp 100 lần. II. Lặp với số lần lặp trước 1. Bài toán Tính giá trị tổng S, với a số nguyên a>2. 1 1 S= + + + . + + . a a +1 a + a+N Cho đến < 0.0001 dừng lại. a+N Dữ liệu vào (Input) : Nhập a Hãy xác định INPUT, OUTPUT Dữ liệu (Output) : Tổng S nêu thuật toán giải toán trên? thuật toán Bước 1: Nhập a. Bước 2: S:=1/a; N:=1; {Khởi tạo S N} Bước 3: Nếu 1/(a+N) < 0.0001 => Bước Bước 4: S:=S+1/(a+N); N:=N+1; => quay lại bước Nhập a S:=1/a ; N:=1 S 1/(a+N) >= 0.0001 Đ S:= S+1/(a+N); N:= N+1; Bước 5: In S => Kết thúc. Vòng lặp dừng 1/(a+N) Kết thúc 2. Lặp với số lần lặp trước WHILE DO ; Trong đó: Điều kiện: Là biểu thức quan hệ lôgic. Câu lệnh: Là câu lệnh Pascal. Điều kiện Sa i Đúng Câu lệnh Chừng điều kiện câu lệnh thực hiện. 3. Một số ví dụ a Bài toán đặt vấn đề: Tính giá trị tổng S, với a số nguyên a>2 1 1 S= + + + . + + . a a +1 a + a+N Cho đến < 0.0001 dừng lại. a+N Nhận xét: Chừng 1/(a+N)>=0.0001 thực hiện: + Tăng giá trị tổng S thêm 1/(a+N). WHILE 1/(a+N) >= 0.0001 DO Begin S:=S+1/(a+N); + Tăng N thêm đơn vị. N:=N+1; END; Chương trình Program Bai_toan; Uses Crt; Var a,N:Integer; S:Real; BEGIN Clrscr; Write(Nhap gia tri cua a= );Readln(a); S:=1/a;N:=1; WHILE 1/(a+N)>=0.0001 DO BEGIN S:=S+1/(a+N); N:=N+1; END; Writeln(Gia tri cua tong S = ,S:8:3); Readln; END. b Lập chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN hai số đó. Thuật toán B1: Nhập M,N; B2 : Chừng MN M>N M:=M-N, ngược lại N:=N-M; B3: Đến M=N => Đưa ƯCLN(M,N)=M; => Kết thú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âu lệnh lặp với số lần lặp trước REPEAT UNTIL ; Câu lệnh Sai Điều kiện Đúng Bài toán đặt vấn đề: Program Bai_toan; Uses Crt; Var 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 . . Downto . DO FOR . While Do ; Câu lệnh lặp + Lặp với số lần lặp biết trước. + Lặp với số lần lặp trước. [...]... lệnh> UNTIL ; Câu lệnh Sai Điều kiện Đúng Bài toán đặt vấn đề: Program Bai_ toan; Uses Crt; Var 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... a+N Nhận xét: Chừng nào 1/(a+N)>=0.0001 thì còn thực hiện: + Tăng giá trị của tổng S thêm 1/(a+N) WHILE 1/(a+N) >= 0.0001 DO Begin S:=S+1/(a+N); + Tăng N thêm 1 đơn vị N:=N+1; END; Chương trình Program Bai_ toan; Uses Crt; Var a,N:Integer; S:Real; BEGIN Clrscr; Write(Nhap gia tri cua a= );Readln(a); S:=1/a;N:=1; WHILE 1/(a+N)>=0.0001 DO BEGIN S:=S+1/(a+N); N:=N+1; END; Writeln(Gia tri cua tong S = ,S:8:3); . N < + Tính giá trị tổng S, với a là số nguyên và a>2 EKU0- ( ;<= Program Bai_ toan; Uses Crt; Var a,N:Integer; S:Real; BEGIN Clrscr; Write(‘Nhap gia tri cua a= ‘);Readln(a);

Ngày đăng: 21/09/2015, 01:03

TỪ KHÓA LIÊN QUAN

w