- Để viết chương trình chỉ dẫn máy tính thực hiện xác hoạt động lặp mà chưa xác định trước được số lần lặp, ta có thể sử dụng câu lệnh có dạng lặp với số lần chưa xác định.. + Câu lệnh:[r]
(1)- Sau học môn tin học khối tuần 3, 4, 5, học kỳ mà trường nghỉ để phòng dịch Covid-19
- Học sinh cố gắng đọc sách ghi trước Khi học lại thầy (cô) giảng sau - Giáo viên có hướng dẫn tập thực hành Các em cố gắng làm - Nếu có thắc mắc em liên hệ giáo viên phụ trách: thầy Phạm Anh Tú ĐT: 0919945053
Bài 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC A Lý thuyết
1 Lệnh lặp với số lần chưa biết trước
- Để viết chương trình dẫn máy tính thực xác hoạt động lặp mà chưa xác định trước số lần lặp, ta sử dụng câu lệnh có dạng lặp với số lần chưa xác định - Cú pháp: while <điều kiện> <câu lệnh>; đó:
+ Điều kiện: thường phép so sánh
+ Câu lệnh: câu lệnh đơn giản hay câu lệnh ghép 2 Sơ đồ khối
(2)- B2: điều kiện SAI, câu lệnh bị bỏ qua việc thực lệnh lặp kết thúc Nếu điều kiện đúng, thực câu lệnh quay lại bước
Kết luận: việc lặp lại nhóm hoạt động với số lần chưa xác định trước phụ thuộc vào điều kiện cụ thể dừng lại điều kiện không thỏa mãn
3 Ví dụ số lần lặp khơng biết trước
Ví dụ 1: Nếu cộng n số tự nhiên (n = 1, 2, 3, ), cần cộng số tự nhiên để ta nhận tổng Tn nhỏ lớn 1000?
Điều kiện: Khi tổng Tn nhỏ lớn 1000 kết thúc hoạt động lặp Mơ tả thuật tốn liệt kê:
- B1: S 0, n
- B2: Nếu S ≤ 1000, n n + 1; ngược lại chuyển tới Bước - B3: S S + n quay lại Bước
(3)Ví dụ 2: Chúng ta biết rằng, n ( n >0) lớn 1/n nhỏ, ln lớn Với giá trị n 1/n < 0.005 1/n < 0.003? chương trình tìm số n nhỏ để 1/n nhỏ sai số cho trước
4 Lặp vô hạn lần – lỗi lập trình cần tránh
- Khi viết chương trình cần tránh việc tạo lên vịng lặp vơ tận, điều làm cho chương trình chạy không dừng không kết mong muốn
- Có trường hợp phải sử dụng vịng lặp vơ hạn để tính tốn, tốn nhiều tài nguyên
(4)B Trắc nghiệm
Câu 1:Vòng lặp While – kết thúc A Khi điều kiện cho trước thỏa mãn B Khi đủ số vòng lặp
C Khi tìm Output D Tất phương án
Câu 2:Việc mà câu lệnh While cần thực gì? A Thực < câu lệnh > sau từ khóa Do
B Kiểm tra giá trị < điều kiện > C Thực câu lệnh sau từ khóa Then D Kiểm tra < câu lệnh >
Câu 3:Cho biết câu lệnh sau Do thực lần đoạn chương trình sau: i := 5;
While i>=1 i := i – 1; A lần
(5)Câu 4:Hãy cho biết kết đoạn chương trình đây: a:=10; While a < 11 write (a);
A Trên hình xuất số 10 B Trên hình xuất 10 chữ a C Trên hình xuất số 11 D Chương trình bị lặp vơ tận
Câu 5:Câu lệnh sau giải tốn nào: While M <> N
If M > N then M:=M-N else N:=N-M; A Tìm UCLN M N
B Tìm BCNN M N
C Tìm hiệu nhỏ M N D Tìm hiệu lớn M N
Câu 6:Hoạt động sau lặp với số lần lặp chưa biết trước? A Ngày tắm hai lần
B Học thuộc C Mỗi tuần nhà sách lần D Ngày đánh lần
Câu 7:cú pháp lệnh lặp với số lần chưa biết trước: A While < điều kiện > to < câu lệnh >;
B While < điều kiện > to < câu lệnh > < câu lệnh >; C While < điều kiện > ;< câu lệnh >;
(6)Câu 8:Tính tống S = + + + … + n + … S>108 Điều kiện sau cho vòng lặp while – đúng:
A While S>=108 B While S < 108 C While S < 1.0E8 D While S >= E8
Câu 9:Pascal sử dụng câu lệnh lặp sau để lặp với số lần chưa biết trước: A For…do
B While…do C If then
D If…then…else
Câu 10:Hãy đưa kết đoạn lệnh: x:=1; While x<=5 write(‘Hoa hau’); A x:=1
B X>=5 C Hoa hau
D Khơng có kết C Bài tập:
Bài (trang 66 sgk Tin học lớp 8): Nêu vài ví dụ hoạt động lặp với số lần chưa biết trước
Trả lời:
– Tập biết
(7)Bài (trang 66 sgk Tin học lớp 8): Hãy phát biểu khác biệt câu lệnh lặp với số lần lặp cho trước câu lệnh lặp với số lần lặp chưa biết trước
Trả lời:
Câu lệnh lặp với số lần biết trước :
– Chỉ thị cho máy tính thực lệnh hay nhóm lệnh với số lần xác định từ trước
– Điều kiện giá trị biến đếm có giá trị nguyên Câu lệnh lặp với số lần chưa biết trước :
– Chỉ thị cho máy tính thực lệnh hay nhóm lệnh với số lần lặp chưa biết trước – Điều kiện tổng quát hơn, kiểm tra giá trị có thực, điều kiện tổng quát khác
Bài (trang 66 sgk Tin học lớp 8): Hãy tìm hiểu thuật tốn sau cho biết khi thực thuật toán, máy tính thực vịng lặp? Khi kết thúc, giá trị S bao nhiêu? Viết chương trình Pascal thể thuật tốn
a) Thuật toán
Bước S ← 10, x ← 0.5
Bước Nếu S ≤ 5.2, chuyển tới bước Bước S ← S – x quay lại bước Bước Thơng báo S kết thúc thuật tốn b) Thuật toán
Bước S ←10, n ←
Bước Nếu S ≥ 10, chuyển tới bước
(8)a) Thuật toán 1:
– Kết thuật tốn có 10 vịng lặp, giá trị S=5 – Chương trình Pascal:
b) Thuật toán 2:
– Kết thuật toán có vịng lặp điều kiện vịng lặp khơng thỏa mãn, giá trị S=10 – Chương trình Pascal:
Bài (trang 67 sgk Tin học lớp 8): Hãy tìm hiểu đoạn chương trình Pascal sau đây cho biết với đoạn lệnh chương trình thực vòng lặp Hãy rút ra nhận xét em
a) S:=0; n:=0; while S <= 10
begin n:= n+1; S:= S+n end; b) S:= 0; n:= 0;
while S >=10 n:= n+1; S:=S+n; Trả lời:
a) Chương trình thực 10 vịng lặp
b) Chương trình thực vơ hạn vịng lặp giá trị S luôn nhỏ 10
Nhận xét: Cần ý lỗi vịng lặp vơ hạn Ở phần b thiếu đoạn begin end để đóng mở nên sau lệnh lặp thực lệnh tăng n lên 1, cịn lệnh tăng S lên khơng thực Do S ln ban đầu Lỗi lặp vơ hạn xuất
Tìm hiểu mở rộng (trang 67 sgk Tin học lớp 8): Câu lệnh lặp Repeat… until
(9)repeat
<câu lệnh 1>; <câu lệnh 2>;…; <câu lệnh k>;
until <điều kiện>;
Khi gặp câu lệnh chương trình thực câu lệnh nằm hai từ khóa repeat until, sau kiểm tra <điều kiện kiện>, <điều kiện> sai tiếp tục thực vịng lặp Q trình lăp lặp lại <điều kiện> kết thúc
Đoạn chương trình sau cho kết ví dụ trên: T:= 0;
i:= 1; repeat
T:= T+1/i; i:= i+1; until i>100; writeln(T);
1 Em viết chương trình Pascal với câu lệnh repeat…until thể thuật tính tính số n ví dụ
2 Hãy tìm hiểu rút điểm giống khác câu lệnh lặp While… Repeat … until
Trả lời:
(10)2 Điểm giống khác câu lệnh lặp While… Repeat … until Câu lệnh repeat…until: Chương trình thực câu lệnh nằm hai từ khóa repeat until, sau kiểm tra điều kiện, điều kiện sai tiếp tục thực vịng lặp Nếu kết thúc
Câu lệnh lặp while … do: Kiểm tra điều kiện Nếu điều kiện sai câu lệnh bị bỏ qua thực lệnh kết thúc Nếu điều kiện đúng, thực câu lệnh quay lại kiểm tra điều kiện
Giống: Đều lệnh lặp với số lần chưa biết trước
Khác: Repeat… until thực lệnh kiểm tra while… kiểm tra thực lệnh
Bài thực hành 6: SỬ DỤNG LỆNH LẶP WHILE DO
Bài (trang 68 sgk Tin học lớp 8): Viết chương trình sử dụng lệnh lặp while để tính trung bình n số thực x1, x2…xn Các số n x1, x2…xn nhập từ bàn phím
a Mơ tả thuật tốn
b Gõ chương trình lưu với tên Tinh_TB.pas;
c Đọc tìm ý nghĩ lệnh Dịch sửa lỗi có Chạy chương trình d Viết lại chương trình lệnh for thay cho while
Trả lời:
a Thuật toán:
(11)- Bước 2: Khai báo gán giá trị biến dem, tb=0;
- Bước 3: Bắt đầu vịng lặp, dem<n vịng lặp thực đến bước Nếu khơng đến bước
- Bước 4: Tăng đếm lên 1, giá trị biến tb tb + x - Bước 5: tb tb/n để tính giá trị tổng trung bình - Bước 6: In giá trị tb
- Bước 7: Kết thúc thuật toán
b Chương trình ý nghĩa câu lệnh:
(12)Bài (trang 69 sgk Tin học lớp 8): Tìm hiểu chương trình nhận biết số tự nhiên N nhập vào từ bàn phím có phải số nguyên tố hay không
a Đọc tìm ý nghĩa câu lệnh b Gõ, dịch chạy thử chương trình Trả lời:
a Chương trình ý nghĩa câu lệnh
(13)Bài 9: LÀM VIỆC VỚI DÃY SỐ A Lý thuyết
1 Dãy số biến mảng
- Dữ liệu kiểu mảng tập hợp hữu hạn phần tử có thứ tự, phần tử có chung kiểu liệu, gọi kiểu phần tử việc xếp thứ tự thực cách gán cho phần tử số
- Khi khai báo biến có kiểu liệu kiểu mảng, biến gọi biến mảng - Ưu điểm sử dụng biến mảng: kiểu mảng để lưu nhiều liệu liên quan đến biến đánh số thứ tự cho liệu giúp cho việc xử lí liệu đơn giản
- Trong ví dụ trên, ta có: + Tên mảng: A
+ Chỉ số: i
+ Số phần tử mảng:
+ Kiểu liệu phần tử: Kiểu số nguyên
(14)2 Ví dụ biến mảng
- Biến mảng làm việc với kiểu số nguyên số thực - Cú pháp khai báo:
Var <tên biến mảng> : array[<chỉ số đầu> <chỉ số cuối>] of<kiểu liệu>; Lưu ý: số đầu <= số cuối kiểu liệu integer real - Ví dụ: var Chieucao: array[1 20] of real;
+ Tên mảng: Chieucao + Kiểu liệu: real + Số phần tử: 20 + Chỉ số đầu: + Chỉ số cuối: 20
3 Truy cập tới phần tử mạng
- Việc truy cập tới phần tử mảng thực thông qua số tương ứng phần tử mảng
- Việc truy cập bao gồm hành động: gán giá trị, đọc giá trị thực tính tốn với giá trị
- Ví dụ: khai báo biến mảng sau var Chieucao: array[1 20] of real;
+Chieucao[2] := 5, gán giá trị cho phần tử thứ mảng Chieucao Ta nhập giá trị từ bàn phím
+ Writeln(‘Chieu cao cua ban thu la: ’,Chieucao[1]); lấy giá trị phần tử thứ mảng Chieucao in hình
+ TB:= (Chieucao[1] + Chieucao[2])/2, sử dụng giá trị phần tử thứ thứ mảng Chieucao để tính chiều cao trung bình
(15)(16)4 Tìm giá trị lớn nhỏ dãy số
Ví dụ 3: viết chương trình nhập N số ngun từ bàn phím in hình số nhỏ số lơn độ lệch giá trị so với giá trung bình N số nhập N nhập từ bàn phím
Gợi ý:
- Khai báo biến n để nhập số nguyên nhập vào - Nhập vào biến mảng A
- Khai báo biến I biến đếm, biến MAX, MIN số lớn nhỏ mảng
- Kích thước mảng hay số cuối phải khai báo rõ ràng phải số cụ thể
Chương trình:
(17)B Trắc nghiệm
Câu 1:Số phần tử khai báo bao nhiêu? Var hocsinh : array[12 80] of integer;
A 80 B 70 C 69 D 68
Câu 2:Khai báo mảng khai báo sau đây: A var tuoi : array[1 15] of integer;
B var tuoi : array[1.5 10.5] of integer; C var tuoi : aray[1 15] of real;
D var tuoi : array[1 … 15 ] of integer;
Câu 3:Cú pháp khai báo dãy số sau nhất?
(18)Câu 4:Để nhập liệu từ bàn phím cho mảng A có 10 phần tử số nguyên ta dùng lệnh sau đây?
A For i:=1 to 10 Readln(A[i]); B For i:= to 10 Writeln(A[i]); C Dùng 10 lệnh Readln(A);
D Cả (A), (B), (C) sai
Câu 5:Các cách nhập liệu cho biến mảng sau, cách nhập không hợp lệ? A readln(B[1]);
B readln(dientich[i]); C readln(B5);
D read(dayso[9]);
Câu 6:Em chọn phát biểu nói liệu kiểu mảng:
A Dữ liệu kiểu mảng tập hợp phần tử khơng có thứ tự phần tử có kiểu liệu
B Dữ liệu kiểu mảng tập hợp phần tử có thứ tự phần tử mảng có kiểu liệu khác
C Dữ liệu kiểu mảng tập hợp phần tử có thứ tự phần tử có kiểu liệu
D Tất ý sai
Câu 7:Cách khai báo biến mảng sau đúng? A Var X: Array[3 4.8] of Integer;
B Var X: Array[10 1] of Integer; C Var X: Array[4 10] of Real; D Var X: Array[10 , 13] of Real;
(19)A Dùng để truy cập đến phần tử mảng B Dùng để quản lí kích thước mảng
C Dùng vòng lặp với mảng
D Dùng vịng lặp với mảng để quản lí kích thước mảng Câu 9:Chọn câu phát biểu kiểu liệu mảng?
A Có thể dùng tất kiểu liệu để làm kiểu liệu mảng
B Kiểu liệu mảng kiểu số nguyên, số thực, kiểu logic, kiểu ký tự
C Kiểu liệu mảng kiểu phần tử mảng, Integer Real D Kiểu liệu mảng phải định nghĩa trước thơng qua từ khóa VAR Câu 10:Cho khai báo mảng sau: Var a : array[0 30] of integer ;
Để in giá trị phần tử thứ 20 mảng chiều A hình ta viết: A Write(A[20]);
B Write(A(20)); C Readln(A[20]); D Write([20]);
Bài thực hành 7: XỬ LÍ DÃY SỐ TRONG CHƯƠNG TRÌNH
Bài (trang 77 sgk Tin học lớp 8): Viết chương trình nhập điểm bạn lớp Sau in hình số bạn đạt kết học tập loại giỏi, khá, trung bình kemms (theo tiêu chuẩn >8 điểm: Giỏi, từ 6.5 điểm đến 7.9 điểm: Khá, từ điểm đến 6.5 điểm: Trung bình điểm: Kém)
a Xem lại ví dụ ví dụ 3, Bài cách sử dụng khai báo biến mảng Pascal
b Liệt kê biến dự định sử dụng chương trình Tìm hiểu phần khai báo tìm hiểu tác dụng loại biến:
(20)Uses crt;
Var i, n, Gioi, Kha, trungbinh, Kem: integer; A: array[1 100] of real;
c Gõ phần khai báo vào máy tính, lưu tên Phanloai.pas Tim hiểu câu lệnh phần thần chương trình
d Gõ tiếp phần chương trình vào máy tính sau phần khai báo Dịch chạy chương trình
Trả lời:
a Lật lại xem ví dụ 2,3
b Các biến sử dụng là: biến mảng, biến trỏ, biến số lượng học sinh lớp, biến đại diển cho số điểm Giỏi, khá, trung bình
- Các biến phần khai báo có ý nghĩa là:
Một mảng a thuộc kiểu liệu số thực kèm theo biến trỏ i, biến n số lượng phần tử mảng thuộc kiểu liệu số nguyên
Các biến Gioi, Kha, Trungbinh, Kem biến đại diện cho số học sinh có điểm Giỏi, Khá, Trung bình Chúng thuộc kiểu liệu số nguyên
c Tìm hiểu câu lệnh
Học sinh tự tìm hiểu viết ghi bên cạnh câu lệnh d Chạy chương trình:
Dịch chạy thử chương trình
Bài (trang 78 sgk Tin học lớp 8): Bổ sung chỉnh sửa chương trình để nhập hai loại điểm Tốn Ngữ văn bạn, sau in hình điểm trung bình bạn lớp(theo cơng thức điểm trung bình =(điểm tốn+điểm ngữ văn)/2, điểm trung bình lớp theo mơn tốn ngữ văn
a Tim hiểu ý nghĩa câu lệnh
b Bổ sung câu lệnh vao vị trí thích hợp chương trình Thêm lệnh cần thiết, dịch chạy chương trình:
(21)a Ý nghĩa câu lệnh:
b Chương trình sửa:
(22)