Bài 8. Lặp với số lần chưa biết trước

Chia sẻ bởi Đinh Công Hoàng | Ngày 24/10/2018 | 40

Chia sẻ tài liệu: Bài 8. Lặp với số lần chưa biết trước thuộc Tin học 8

Nội dung tài liệu:

CHÀO MỪNG
QUÝ THẦY CÔ GIÁO ĐẾN DỰ GIỜ THĂM LỚP
Giáo viên: Đinh thị ngọc ánh
I. Kiểm tra bài cũ

Câu 1: Em hãy trình bày cú pháp của câu lệnh lặp với số lần chưa biết trước?
Trả lời:
Cú pháp:   while <điều kiện> do ;
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.
Câu 2: nêu các bước thực hiện câu lệnh
Trả lời:

Bước1:Kiểm tra điều kiện:
Bước2:
Nếu điều kiện SAI, câu lệnh sẽ bị bỏ qua và 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 )
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
II. Nội dung
1. Các hoạt động lặp với số lần chưa biết trước
2. Ví dụ về lệnh lặp với số lần chưa biết trước
Ví dụ 3: chúng ta biết rằng, nếu n(n>0) càng lớn thì 1/n càng nhỏ,nhưng luôn luôn lớn hơn 0.
Với giá trị nào của n thì 1/n < 0.005 hoặc 1/n<0.003?

Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
2. Ví dụ về lệnh lặp với số lần chưa biết trước
Phân tích bài toán:
x=1/n
1
X1=1/1
Đúng
2
X2=1/2
Đúng
…..
………………
…………….
m
Xm=1/m ( Đk 1/m<0.003)
Sai,kết thúc quá trình lặp
n
Điều kiện x>0.003
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT(t2)
Uses crt;
Var x: Real;
n: Integer;
Const Sai_So=0.003;
Begin
Clrscr;
x:=1; n:=1;
While x >= Sai_So do
Begin
n:=n+1;
x:=1/n;
End;
Writeln(‘So n nho nhat de 1/n < ‘,Sai_So:6:4, ‘ la ‘,n);
Readln;
End.
Chương trình tính số n nhỏ nhất để 1/n nhỏ hơn một sai số cho trước:
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
2. Ví dụ về lệnh lặp với số lần chưa biết trước
Ví dụ 5: Viết chương trình tính tổng
Bài toán này lặp với số lần biết trước hay chưa biết trước?
 Bài toán lặp với số lần biết trước
Tìm input và output của bài toán:
Input: 1+1/2+1/3+…+1/100
Output: Tổng T
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
Chương trình sử dụng lệnh lặp
với số lần biết trước
Chương trình sử dụng câu lệnh lặp
với số lần chưa biết trước:
Program vidu5_1;
Var i: integer;
T: real;
Begin
T:=0;
For i:=1 to 100 do T:=T+1/i;
Writeln (T);
Readln;
End.
Program vidu5_2;
Var i: integer;
T: real;
Begin
T:=0;
i:=1;
while i<=100 do
begin
T:=T+1/i;
i:=i+1;
end;
Writeln(T);
Readln;
end.
Kết quả hai chương trình như nhau.
* Lưu ý:
- Chúng ta có thể sử dụng câu lệnh while…do thay cho câu lệnh for…to…do.
- Tùy trường hợp mà chúng ta sử dụng câu lệnh while…do… thay cho câu lệnh for…to…do… Vì lệnh lặp while…do… phù hợp cho bài toán với số lần lặp chưa biết trước còn câu lệnh for…to…do phù hợp với bài toán có số lần lặp biết trước.
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
3. Lặp vô hạn lần – lỗi lập trình cần tránh
Var a:Integer;
Begin
a:=5;
While a < 6 do
Writeln(‘A’);
End.
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
?Tại sao chương trình này lại rơi vào vòng lặp vô tận?
Trả lời: giá trị ban đầu của a được gán bằng 5. điều kiện đặt ra là: nếu a<6
thì thực hiện: in ra màn hình số a ,điều kiện này luôn đúng (5<6)
nên câu lệnh được thực hiện lặp đi lặp lại không ngừng
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
Do vậy,khi thực hiện vòng lặp, điều kiện trong câu lệnh phải được thay đổi để sớm
hay muộn giá trị của điều kiện được chuyển từ đúng sang sai. Chỉ như thế chương
trình mới không “rơi” vào những “vòng lặp vô tận”
?vậy với chương trình trên ta thay đổi điều kiện như thế nào để chương
trình không là chương trình với vòng lặp vô tận nữa?
Chương trình sau khi thay đổi điều kiện:
Var a:integer;
Begin
a:=5;
While a<6 do
Begin
Writeln(‘A’);
A:=a+1;
End;
End.
Để thoát khỏi vòng lặp vô hạn ta dùng tổ hợp
phím ctrl+break sau đó gõ phím F9
2.Để ngắt chương trình pascal đang chạy ta thực hiện:
nhấn tổ hợp phím Ctrl+Alt+Delete
Cách sử lý khi chương trình bị rơi vào vòng lặp vô hạn
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
GHI NHỚ:
Ngoài cấu trúc lặp với số lần lặp biết trước, các ngôn ngữ
lập trình còn có các câu lệnh lặp với số lần chưa biết trước.
2. While…do... là câu lệnh lặp với số lần chưa biết trước trong
pascal.
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC(t2)
Bài tập(sgk-71)

Bài 5: hãy chỉ ra lỗi trong các câu lệnh sau đây
a, X:=10; while X:=10 do X:=X+5;
Đáp án: điều kiện thường là phép so sánh không thể là phép gán
b, X:=10;while X=10 do X=X+5;
Đáp án:câu lệnh không thể là phép so sánh mà phải là phép gán
c, S:=0; n:=0; while S<=10 do n:=n+1; S:=S+n;
Đáp án: câu lệnh ghép phải được đặt trong cặp từ khoá begin…end;
III. Dặn dò
- Trả lời các câu hỏi và bài tập còn lại trang 71 SGK.
- Chú ý cú pháp và các bài tập về câu lệnh lặp với số lần chưa biết trước để tiết sau thực hành
Tiết 50 – Bài 8
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Bài học đã
KẾT THÚC
Thân ái chào các em
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Đinh Công Hoàng
Dung lượng: | Lượt tài: 2
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)