Bài giảng Môn Tin học lớp 11 - Bài 10 - Cấu trúc lặp
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);
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.
Bài 10 cấu trúc lặpGiáo án điện tử tin học lớp 11(2 tiết)Bài toán 1:Bài toán 2: Các bài toán đặt vấn đề : Tính tổng S, với a là số nguyên và a>2cho đến khi Xuất phát Lần 1Lần 2+…Lần N Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu? 1Sau 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: Cho đến khi 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 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ặpI. Lặp với số lần lặp biết trướcII. Lặp với số lần lặp không biết trước1. 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 Phân tích bài toán với N = 100 Nhận xét:S1 = 1S2 = S1 + 1/2S3 = S2 + 1/3S4 = S3 + 1/4 ..... S100 = S99 + 1/100 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 Ssau = Strước+ 1/ivới i chạy từ 2 100 . . . . . . . . . . . . . . . . . . . . ĐSNhập N S:= 1 ; i:= 2i > 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+1FOR := TO DO ;Ví dụ: S:=1; FOR i:=2 TO 100 DO S:=S+1/i;b. Dạng 2 (dạng lùi)FOR := DOWNTO DO ;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); Uses crt;Var i,N : Integer; S : real;BEGIN Readln;END.S:=1;FOR i:=2 to N do S := S+1/i;Writeln(‘ Tong S =’,S:8:3);Write(‘ Nhap vao gia tri cua N :’);readln(N);Program Tinh_tong;Hãy áp dụng câu lệnh lặp dạng tiến để viết chương trình giải bài toán đặt vấn đề.Lập chương trình tính tổng sau: S := 1 ; i := 2;i >NKTS := S +1/ i ; i := i +1;2.081.831.51432LượtiS2.285Nhập NS := 1 ; i := 2;2>5 ?SSS := 1 +1/2 ; i := 2 +1;3>5 ?S := 1.5+1/3 ; i := 3 +1;4>5 ?S := 1.83+1/4 ; i := 4 +1;5>5 ?S := 2.08+1/5; i := 5 +1;6SSS6>5 ?In Tổng STổng S=2.28Với N = 52.28ĐĐMô phỏng thuật toán 3. Ví dụTính tổng S (với a là số nguyên nhập vào từ bàn phím và a>2).? 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.1. Bài toán Dữ liệu ra (Output) : Tổng S Dữ liệu vào (Input) : Nhập a Hãy xác định INPUT, OUTPUT và nêu thuật toán giải bài toán trên?Cho đến khi Tính giá trị tổng S, với a là số nguyên và a>2. thì dừng lại. II. Lặp với số lần lặp không biết trước Bước 2: S:=1/a; N:=1; {Khởi tạo S và N} Bước 3: Nếu 1/(a+N) Bước 5 Bước 4: S:=S+1/(a+N); N:=N+1; => quay lại bước 3thuật toán Bước 1: Nhập a.S:=1/a ; N:=1Đưa ra S => Kết thúc S:= S+1/(a+N);N:= N+1; Vòng lặp chỉ dừng khi 1/(a+N)= 0.0001 Bước 5: In S => Kết thúc.WHILE DO ;Điều kiệnĐúngCâu lệnhĐiều kiện: Là biểu thức quan hệ hoặc lôgic. Câu lệnh: Là một câu lệnh của Pascal.Sai2. Lặp với số lần lặp không biết trướcTrong đó:Chừng nào điều kiện còn đúng thì câu lệnh còn được thực hiện.WHILE 1/(a+N) >= 0.0001 DO Begin S:=S+1/(a+N); N:=N+1; END;3. Một số ví dụaBài toán đặt vấ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). + Tăng N thêm 1 đơn vị. Tính giá trị tổng S, 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 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.bLập chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN của hai số đó.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. 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)Thuật toáncác bước viết chương trìnhTham 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ướcREPEAT UNTIL ;Điều kiệnSaiCâu lệnhĐúngBà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 {Bat dau lap} S:=S+1/(a+N); N:=N+1 UNTIL 1/(a+N) THEN ;trong pascalFOR ... TO ... DO ...…IF THEN ESLE ;FOR ... Downto ... DO ...While Do ;Dạng khuyết.Dạng đầy đủ.Lặp với số lần lặp biết trước.Lặp với số lần lặp không biết trước.
File đính kèm:
- Bai10-Cau truc lap - Tin11.ppt