Bài toán: Tìm số nguyên n sao cho tổng các số từ 1 tới n là số nhỏ nhất lớn hơn 1000 Các em có thể giải bài toán này bằng những câu lệnh mình đã học không?... Các hoạt động lặp với số lầ
Trang 21 Nêu cấu trúc của vòng lặp for ?
Vòng lặp for có cấu trúc như sau:
For <biến đếm>:=<giá trị đầu> to <giá trị cuối>
do <câu lệnh>;
2.Viết chương trình tính tổng S là tổng các số tự nhiên từ 1 đến 10
program baitap;
var S,i:byte;
begin S:=0;
for i:=1 to 10 do S:=S+i;
writeln(‘S=',S);
Trang 3Bài toán: Tìm số nguyên n sao cho
tổng các số từ 1 tới n là số nhỏ nhất lớn hơn 1000
Các em có thể giải bài toán này bằng những câu lệnh mình đã học không?
Trang 4BÀI 8:
Trang 51 Các hoạt động lặp với số lần chưa biết trước
Ví Dụ 1:SGK/67
Xảy ra 2 tình huống:
Tình huống 1: Bạn Long gọi cho Trang nhưng không có người nhấc máy và bạn Long quyết định gọi thêm 2 lần nữa, nếu không có người nhấc máy sẽ kết thúc cuộc gọi không gọi nữa Tức là, bạn Long đã xác định (hay biết trước) số lần mình phải gọi điện là 2 lần
Trang 61 Các hoạt động lặp với số lần chưa biết trước
Ví Dụ 1:SGK/67
Tình huống 2: Lần khác bạn Long quyết định sẽ gọi đến khi nào có người bắt máy mới thôi
bạn Long sẽ lặp đi lặp lại công việc : nhấc máy, quay số, gọi cho Trang, Long không biết trước số lần Long sẽ phải gọi
lặp với số lần không xác định Điều kiện ngưng việc lặp : có người bắt máy
Trang 71 Các hoạt động lặp với số lần chưa biết trước
Ví dụ 2:
Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1,2,3,…), ta sẽ được các kết quả T1=1, T2=1+2, T3=1+2+3, …tăng dần Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
Trang 81 Các hoạt động lặp với số lần chưa biết trước
THUẬT TOÁN:
Kí hiệu S là tổng cần tìm, ta có thuật toán sau:
Bước 1: S 0, n 0.
Bước 2: Nếu S<= 1000, n n+1; ngược lại, chuyển
tới bước 4.
Bước 3: S S+n và quay lại bước 2.
Bước 4: In kết quả S và n là số tự nhiên nhỏ nhất sao
cho S > 1000 Kết thúc thuật toán.
Trang 9 SƠ ĐỒ KHỐI:
Trang 101 Các hoạt động lặp với số lần chưa biết trước
Nhận xét: Để viết chương trình chỉ dẫn máy
tính thực hiện các hoạt động lặp như trong
các ví dụ trên, ta có thể sử dụng câu lệnh có dạng lặp với số lần chưa biết trước (While… do)
Trang 112 Ví dụ về lệnh lặp với số lần chưa
biết trước:
Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng:
While <điều kiện> do <câu lệnh>
Trong đó:
- Điều kiện thường là một phép so sánh.
- Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.
Trang 122 Ví dụ về lệnh lặp với số lần chưa
biết trước:
* Câu lệnh này được thực hiện như sau:
B.1: Kiểm tra điều kiện
B.2: Nếu điều kiện Sai , câu lệnh sẽ bị bỏ qua và việc
thực hiện lệnh lặp kết thúc Nếu điều kiện Đúng ,
thực hiện câu lệnh và quay lại bước 1.
Trang 132 Ví dụ về lệnh lặp với số lần chưa
biết trước:
*Một số ví dụ:
VD2: Tìm số nguyên n sao cho tổng từ 1 tới n là số nhỏ nhất lớn hơn 1000
Các em hãy dựa vào thuật toán đã xây dựng cho
ví dụ 2 ở trên để viết chương trình
Trang 142 Ví dụ về lệnh lặp với số lần chưa biết trước:
Chương trình như sau:
program vd3;
var n,s:byte;
begin s:=0;n:=0;
while s<=1000 do begin
n:=n+1;s:=s+n;
end;
writeln('So can tim la: ',n);
writeln(‘Tong tim duoc la:' , S);
Trang 15VD4: Hãy cho biết chương trình sau chạy như thế nào?
program VD4;
var tieptuc:char;
ten:string;
begin
tieptuc:='c';
while tieptuc='c' do
begin
write('nhap ten cua ban: ');
readln(ten);
writeln('chao ban ',ten);
write('Tiep tuc ? c/k: ');
readln(tieptuc);
Trang 16VD4: Hãy cho biết chương trình sau chạy như thế nào?
Đây là chương trình lặp đi lặp lại việc nhập tên và xuất
ra câu chào, việc lặp kết thúc khi nhập kí tự khác “c” từ bàn phím
Trang 17BÀI TẬP Hãy xác định những trường hợp sau có phải là trường hợp lặp với số lần chưa biết trước
hay không:
1.Sửa lỗi một đoạn văn bản sau khi đánh máy 2.Đếm số bước đi từ nhà tới trường
3.Đếm số giây một học sinh giải một bài toán 4.Tìm số n sao cho n là số nguyên dương lớn nhất nhỏ hơn 100
5.Đếm số xe máy chạy ngang qua một đoạn đường trong một ngày
6.Tính tổng n số nguyên dương với n nhập từ
Đ
Đ
Đ
S
Đ
S
Trang 18CHÚC CÁC EM HỌC TỐT