Gi¸o ¸n ®iÖn tö tin häc líp 8 Học cho đến khi thuộc bài Nhặt từng cọng rau cho đến khi hết rau Bài toán: Viết ch ơng trình nhập vào một dãy số cho đến khi gặp 0 thì dừng lại, tính tổng các số vừa nhập Hãy kể tên những hoạt động đ ợc thực hiện lặp đi lặp lại với số lần lặp không thể xác định tr ớc? 1. Các hoạt động lặp với số lần ch a biết tr ớc Bài toán 1: Bài toán 2: NS +++++= 4321 NS +++++= 4321 Cho đến khi S>1000. Cho biết N Tính tổng Tính tổng 2. Ví dụ về lệnh lặp với số lần ch a xác định Xuất phát 0=S 1+ Lần 1 2+ Lần 2 + Lần N N+ Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu? Sau mỗi lần thực hiện giá trị tổng S tăng thêm i đơn vị với i= 1;2;3;.N ? Cùng tìm thuật toán Bài toán 1: Bài toán 2: NS ++++= 321 N++++= 321S Cho đến khi S>1000 Số lần lặp xác định Việc tăng giá trị cho tổng S đ ợc lặp đi lặp lại cho đến khi S>1000 Việc tăng giá trị cho tổng S đ ợc lặp đi lặp lại N lần. Số lần lặp ch a xác định. tìm sự khác biệt WHILE <Điều kiện> DO <Câu lệnh> ; Điều kiện Đúng Câu lệnh Điều kiện : th ờng là một phép so sánh Sai Trong đó: Câu lệnh lặp với số lần lặp ch a xác định trong Pascal: Câu lệnh : là câu lệnh đơn hay câu lệnh ghép Ví dụ: While S<100 do S:= S+1; 3. Lệnh lặp với số lần ch a xác định B1: Khởi tạo S=0; N:=0; B2: Nếu S<= 1000 thì thực hiện tăng N thêm 1 đơn vị, ng ợc lại chuyển tới B4 B3: Cộng N vào S => sang B2 B4: In kết quả: N là số tự nhiên nhỏ nhất sao cho S>1000, Tổng S và kết thúc S:=0; N:=0; WHILE S<=1000 DO Begin N:=N+1; S:=S+N; END; Writeln( Số N nhỏ nhất để S>1000 , N) Writeln( Tổng đầu tiên >1000 ,S); NS +++++= 4321 Thuật toán Ch ơng trình Ví dụ 1 : cho đến khi S>1000. Cho biết N Tính tổng Program Bai_toan; Uses Crt; Var N:Integer; S:Real; BEGIN Clrscr; S:=0;N:=0; WHILE s< = 1000 DO BEGIN N:=N+1; S:=S+N; END; Writeln(‘So N nho nhat de tong >1000 la’,N); Writeln(‘Gia tri cua tong S =',S); Readln; END. H·y hoµn thiÖn ch ¬ng tr×nh gi¶i bµi to¸n trªn? 100 1 4 1 3 1 2 1 1 +++++= S S:=0; For i:=1 to 100 do S:=S + 1/i; Writeln( S = , S:7:2);‘ ’ Dïng lÖnh FOR DO Dïng lÖnh Whie Do S:=0; i:=1; While i<=100 do begin S:=S + 1/i; i:=i+1; end; Writeln( S = , ‘ ’ S:7:2); Cã thÓ sö dông lÖnh While do thay cho c©u lÖnh For Do VÝ dô 2 : TÝnh tæng L u ý: Khi viết ch ơng trình với câu lệnh lặp, điều kiện phải đ ợc thay đổi để ch ơng trình không gặp lỗi lặp vô hạn. Ví dụ : Var a:integer; Begin a:=5; While a<6 do Write(' Chuong t rinh chay mai khong thoat duoc'); End. 4. Lặp vô hạn -Lỗi lập trình cần tránh . 100 1 4 1 3 1 2 1 1 +++++= S S:=0; For i:=1 to 100 do S:=S + 1/i; Writeln( S = , S:7:2);‘ ’ Dïng lÖnh FOR DO Dïng lÖnh Whie Do S:=0; i:=1; While i<=100 do begin S:=S + 1/i; i:=i+1; end; Writeln(. đến khi S>1000. Cho biết N Tính tổng Program Bai_ toan; Uses Crt; Var N:Integer; S:Real; BEGIN Clrscr; S:=0;N:=0; WHILE s< = 1000 DO BEGIN N:=N+1; S:=S+N; END; Writeln(‘So N nho. begin S:=S + 1/i; i:=i+1; end; Writeln( S = , ‘ ’ S:7:2); Cã thÓ sö dông lÖnh While do thay cho c©u lÖnh For Do VÝ dô 2 : TÝnh tæng L u ý: Khi viết ch ơng trình với câu lệnh lặp, điều kiện