Bài giảng Tin học Lớp 6 - Bài 9: Làm việc với dãy số - Trường THCS Phong Phú

Trường phát động phong trào tặng sách cũ cho thư viện. Các lớp tiến hành tặng sách cho thư viện và phân

loại theo từng ngăn.

Các ngăn được đánh số thứ tự 1, 2, 3, 4 , 24. (24 lớp)

pdf38 trang | Chia sẻ: Anh Thúy | Ngày: 17/11/2023 | Lượt xem: 99 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học Lớp 6 - Bài 9: Làm việc với dãy số - Trường THCS Phong Phú, để xem tài liệu hoàn chỉnh bạn hãy click vào nút TẢi VỀ
TRÒ CHƠI Ô CHỮ 
P R O G R A M 
P A S C A L 
B I E N 
N G O N N G U L A P T R I N H 
1 
2 
3 
4 
Từ khóa này dùng để khai báo tên chương 
trình 
ên một ngôn ữ dùng để viết 
Đại lượng được đặt tên để lưu trữ dữ liệu
ong chương trình. 
Ngôn ngữ dù g ể viết chương rình máy
ính được gọi là gì? 
M A N G Ô Từ khóa 
Tại sao phải 
xếp hàng? 
Trật tự Nhanh chóng Dễ quản lý 
Em thường thấy 
mọi người xếp 
hàng khi nào? 
TRƯỜNG THCS PHONG PHÚ 
TIN HỌC 8 
BÀI 9: 
LÀM VIỆC VỚI DÃY SỐ 
Dãy số và biến mảng 
Ví dụ về biến mảng 
Tìm giá trị lớn nhất và nhỏ nhất của 
dãy số 
Bài 9: LÀM VIỆC VỚI DÃY SỐ 
1. DÃY SỐ VÀ BIẾN MẢNG 
Bài toán: Quyên góp sách. 
Trường phát động 
phong trào tặng 
sách cũ cho thư 
viện. Các lớp tiến 
hành tặng sách cho 
thư viện và phân 
loại theo từng ngăn. 
Các ngăn được 
đánh số thứ tự 1, 2, 
3, 4, 24. (24 lớp) 
Hãy viết chương trình để nhập và tính tổng 
số sách các lớp quyên góp được. 
- INPUT: Số lượng sách của 24 lớp (lop1, lop2, 
lop3,  .lop24) 
- OUTPUT: Tổng số sách nhận được (Tong) 
Xác định 
Input, Output 
1. DÃY SỐ VÀ BIẾN MẢNG 
1. DÃY SỐ VÀ BIẾN MẢNG 
- Nhập và lưu số lượng sách quyên góp của 1 lớp 
Var lop1: integer; 
. 
Readln(lop1); 
- Nhập và lưu số lượng sách quyên góp của 2 lớp 
Var lop1, lop2: integer; 
. 
Readln(lop1); Read(lop2); 
Khai báo 24 biến. 
1. DÃY SỐ VÀ BIẾN MẢNG 
- Nhập và lưu số lượng sách quyên góp của 24 lớp 
Var lop1, lop2, lop3,., lop24: integer; 
. 
Readln(lop1); Readln(lop2); Readln(lop3); .Readln(lop24); 
Nếu có 50 lớp, 100 lớp thì như thế nào? Chẳng lẽ tạo 
ra 50, 100 biến? 
Vậy nhập và lưu 
số lượng sách của 
24 lớp thì sao? 
1. DÃY SỐ VÀ BIẾN MẢNG 
 Hạn chế: 
- Phải khai báo quá nhiều biến 
- Chương trình phải viết dài dòng 
- Dễ nhầm lẫn giữa các biến khi viết chương trình 
Khi viết chương trình với 
bài toán cần nhập lượng 
dữ liệu lớn thì có những 
hạn chế gì? 
Vậy làm cách nào 
để khắc phục hạn 
chế này 
Khắc phục hạn chế: 
- Lưu các biến có liên quan thành một dãy và đặt một tên chung 
- Đánh số thứ tự (chỉ số) cho các biến đó 
- Sử dụng câu lệnh lặp để xử lí dữ liệu 
Var lop lop lop , lop : integer 1 2 3 24 
lop 10 15 12 ... 33 
Chỉ số 
Mảng 
1. DÃY SỐ VÀ BIẾN MẢNG 
Hình tượng hóa mối liên hệ giữa kệ sách và mảng trong 
lập trình 
- Kệ sách là tập hợp các 
ngăn có thứ tự 
- Các ngăn có kích thước 
giống nhau, đều dùng 
chứa sách 
- Được đánh số thứ tự từ 1 
đến 24 
- Số sách trong từng ngăn 
có thể khác nhau 
- Mảng là tập hợp hữu hạn 
các phần tử có thứ tự 
- Các phần tử có cùng kiểu 
dữ liệu, chứa dữ liệu có 
kiểu giống nhau 
- Các phần tử có các chỉ số 
từ 1 đến 24 
- Giá trị của từng phần tử 
có thể khác nhau 
1. DÃY SỐ VÀ BIẾN MẢNG 
- Dữ liệu kiểu mảng: là dãy hữu hạn các phần tử có 
cùng kiểu dữ liệu, được sắp xếp thứ tự bằng cách gán 
cho mỗi phần tử một chỉ số. 
Ví dụ: 
8 12 5 9 10 3 A 
i 1 2 3 4 6 5 
Trong đó: 
 Tên mảng: A 
 Chỉ số: i 
 Số phần tử của mảng: 6 
 Kiểu dữ liệu của các phần tử: Kiểu số nguyên 
 Khi tham chiếu đến phần tử thứ i, ta viết A[i] 
Ví dụ: A[5]=17 
1. DÃY SỐ VÀ BIẾN MẢNG 
Chỉ số 1 2 3 4 5 6  24 
Giá trị phần tử 8 12 5 9 10 3  18 
Trong đó: 
Ví dụ 1: Xét mảng số lượng sách mà các lớp quyên góp 
tên mảng là “lop” 
- Số phần tử của mảng là: 
- Kiểu dữ liệu của các phần tử: 
- Giá trị từng phần tử (số lượng sách từng lớp quyên góp): 
lop[1]=8; lop[2]= ; lop[3]= ; lop[4]= ; 
lop[5]= ; lop[6]= ;..lop[24]= 
24 
Kiểu số nguyên 
12 5 9 
10 3 18 
1. DÃY SỐ VÀ BIẾN MẢNG 
Chỉ số 2 3 4 5 6 7 8 
Giá trị phần tử 31.5 32 33.5 34 35 33 35.7 
Ví dụ 2: Xét mảng lưu nhiệt độ của 7 ngày trong tuần tên 
mảng là “nhiet_do” 
Trong đó: 
- Số phần tử của mảng là: 
- Chỉ số đầu trong mảng: Chỉ số cuối: 
- Kiểu dữ liệu của các phần tử: 
- Giá trị từng phần tử (số lượng sách từng lớp quyên góp): 
nhiet_do[2]= ; nhiet_do[3]= ; nhiet_do[4]= ; 
nhiet_do[5]= ; nhiet_do[6]= ; nhiet_do[7]= ; 
nhiet_do[8]= ; 
7 
Kiểu số thực 
31.5 32 33.5 
34 35 33 
35.7 
2 8 
- Nhắc lại cú pháp khai báo biến? Cho ví dụ? 
Hãy xây dựng cú pháp khai báo biến mảng? 
Var so_luong : Array[1..35] of Integer ; 
Var nhiet_do : Array[2..8] of Real ; 
Var diem_tin : Array[1..44] of Real ; 
VD: Var i: integer ; 
 Var x: real; 
1. DÃY SỐ VÀ BIẾN MẢNG 
Var : ; 
- Ví dụ về khai báo biến mảng: 
Biến mảng 
là gì? 
1. DÃY SỐ VÀ BIẾN MẢNG 
 Khi khai báo một biến có kiểu dữ liệu là 
kiểu mảng, biến đó được gọi là biến mảng. 
Var : array[ .. ] of 
; 
 Trong đó: 
- Tên biến mảng: Do người lập trình đặt 
- array, of: Là từ khóa của chương trình 
- Chỉ số đầu, chỉ số cuối: Là 2 số nguyên, thỏa mãn: 
 + Chỉ số đầu ≤ Chỉ số cuối 
 + Giữa hai chỉ số là dấu .. 
- Kiểu dữ liệu: Là kiểu của các phần tử (Integer hoặc 
Real) 
- Số phần tử = chỉ số cuối – chỉ số đầu + 1 
2. VÍ DỤ VỀ BIẾN MẢNG 
Var diem : array[1..40] of real; 
Var A: array[1..10] of integer; 
 B: array[1..10] of integer; 
Hãy khai báo các mảng sau: 
 Var A, B: array[1..10] of integer; 
2. Mảng A, B gồm 10 phần tử thuộc kiểu dữ liệu số 
nguyên? 
 1. Mảng diem gồm 40 phần tử thuộc kiểu dữ liệu số 
thực? 
Hoặc 
Chỉ số 1 2 3 4 5 6  24 
Giá trị phần tử 8 12 5 9 10 3  18 
3. Hãy khai báo biến mảng số lượng sách mà các lớp 
quyên góp tên mảng là “lop” 
2. VÍ DỤ VỀ BIẾN MẢNG 
Var lop : array[1..24] of integer; 
Var N : integer; 
A : array[1..N] of real; 
Không xác định 
KHÔNG 
 Lưu ý: 
- Kích thước của mảng phải được khai báo bằng một 
con số cụ thể 
2. VÍ DỤ VỀ BIẾN MẢNG 
Câu lệnh khai báo biến mảng sau đây máy tính có 
thực hiện được không? 
a)Truy cập đến giá trị phần tử trong mảng: 
Tên biến mảng [Chỉ số] Cú pháp: 
- Truy cập (Tham chiếu) tới giá trị phần tử 
+ Thứ nhất của mảng lop là: lop[1] 
+ Thứ 6 của mảng lop là: 
2. VÍ DỤ VỀ BIẾN MẢNG 
Chỉ số 1 2 3 4 5 6  24 
Giá trị phần tử 8 12 5 9 10 3  18 
Var lop : array[1..24] of integer; 
Ví Dụ: 
lop[6] 
Ví dụ: Cho mảng A chứa các giá trị sau: 
2. VÍ DỤ VỀ BIẾN MẢNG 
2 5 7 1 10 
 3 4 5 6 7 
- Xác định các giá trị của: A[1], A[3], A[5], A[10]? 
A[3]=2; A[5]=4 
A 
i 
A[1], A[10]: không xác định 
A[3]:=2; 
A[4]:=5; 
A[6]:=A[3]+A[4]; 
Giá trị của các phần A[3], A[4], A[6] sẽ là bao nhiêu? 
A[6]=7 
- Có thể gán giá trị, đọc giá trị và thực hiện 
tính toán với các phần tử trong mảng 
Ví dụ: Cho các câu lệnh sau: 
2. VÍ DỤ VỀ BIẾN MẢNG 
A[3]=2 
A[4]=5 
For i:=1 to 24 do 
Readln(Lop[i]); 
Ví dụ: Gán giá trị cho 24 phần tử của mảng Lop 
For i :=  to  do Readln(Tenmang[i]); 
 Lop[1]:=5; 
 Lop[2]:=7; 
Lop[40]:=10; 
Hoặc Readln(Lop[1]); 
 Readln(Lop[2]); 
Readln(Lop[40]); 
Viết chương trình quá dài 
2. VÍ DỤ VỀ BIẾN MẢNG 
A 
n 
1. Nhập số phần tử của 
mảng. 
Write(„ Nhap vao so lop:‟); 
Readln(n); 
2. Nhập vào giá trị từng 
phần tử của mảng (A[i]). 
For i:=1 to n do 
 Begin 
 write(„So sach lop thu ‟ ,i, „quyen gop:‟); 
 readln(A[i]); 
 end; 
....... 
Các bước Thể hiện bằng pascal 
 với = 7 
9 10 9 6 8 5 7 
Sử dụng cấu trúc lặp để 
nhập dữ liệu 
 - Sử dụng lệnh Read (Readln) kết hợp với For ... do. 
b) Nhập giá trị cho mảng 
2. VÍ DỤ VỀ BIẾN MẢNG 
For i:=  to  do Writeln(Tenmang[i]); 
Lop[1] = 8 
Ví dụ: In giá trị của 24 phần tử trong mảng Lop 
Lop[4] = 6 
c) In giá trị các phần tử của mảng 
2. VÍ DỤ VỀ BIẾN MẢNG 
For i:=1 to 24 do 
Writeln(Lop[i]); 
Chỉ số 1 2 3 4 5 6  24 
Giá trị phần tử 8 12 5 9 10 3  18 
Writeln(„Sach quyen gop cua cac lop:‟); 
For i:=1 to n do 
 Write(A[i]:5); 
- Thông báo 
 - In giá trị của từng 
phần tử 
Kết quả trên màn hình: 
Sử dụng cấu trúc lặp để in dữ liệu 
 Sử dụng lệnh Write (Writeln) kết hợp với For ... do. 
c) In giá trị các phần tử của mảng 
2. VÍ DỤ VỀ BIẾN MẢNG 
So sach quyen gop cua cac lop: 
 7 5 8 6 9 10 9 
 Sử dụng biến mảng và câu lệnh lặp (thường là 
Fordo) giúp cho việc viết chương trình được ngắn 
ngọn và dễ dàng hơn 
For i := 1 to 24 do if lop[i] > 10 then writeln („Nhan 
giay khen‟); 
Ví dụ: Tìm những lớp quyên góp nhiều hơn 10 quyển 
sách sẽ được nhận giấy khen 
d) Xử lý dữ liệu (tính toán, so sánh, tìm giá trị 
lớn nhất, nhỏ nhất) 
2. VÍ DỤ VỀ BIẾN MẢNG 
d) Xử lý dữ liệu (tính toán, so sánh, tìm giá trị 
lớn nhất, nhỏ nhất) 
Ví dụ: Viết chương trình nhập điểm kiểm tra của 3 môn 
toán, lý, văn sau đó tính điểm trung bình của 3 môn 
 Var DiemToan, DiemVan, DiemLi, DiemTB : array[1..40] of real; 
For i:= 1 to 40 do 
DiemTB[i]:=(DiemToan[i]+DiemVan[i]+DiemLi[i])/3; 
Chỉ số 1 2 3 4  40 
DiemVan 8 7 9 5.5  7.5 
DiemToan 6.5 8 8 9  9 
DiemLy 10 9.5 7 9  7 
Theo em nghĩ trên thực tế: người ta sử dụng biến 
mảng để giải quyết những bài toán lập trình nào? 
- Nhập và tính điểm trung bình các môn học của 
một lớp học 
- Nhập và tính tổng tiền lương hàng tháng, 
hàng năm cho nhân viên của công ty 
- Nhập và tính cước phí điện thoại, dịch vụ 
Internet 
3. TÌM GIÁ TRỊ LỚN NHẤT VÀ NHỎ NHẤT CỦA DÃY SỐ 
Tham khảo sách giáo khoa 
trang 75 
 Input: 
•Dãy số A gồm n số nguyên 
 Output: 
• Số lớn nhất và nhỏ nhất của dãy a1, a2, an. 
Xác định Input, 
Output của bài 
toán? 
Bài toán: Viết chương trình nhập N số nguyên từ bàn 
phím và in ra màn hình số nhỏ nhất và số lớn nhất. 
Bước 1: Nhập N và dãy a1, a2, , an. 
Bước 2: Max ← a1, i ← 2. 
Bước 3: Nếu i > N thì đưa ra giá trị Max rồi kết thúc. 
Bước 4: Nếu ai > Max thì Max ← ai. 
Bước 5: i ← i + 1. Quay lại bước 3. 
- Ta gán Max = a1 
- Lần lượt cho i chạy từ 2 đến n rồi so sánh với Max. 
- Nếu Max > a[i] thì max nhận giá trị mới là ai 
* Thuật toán tìm giá trị lớn nhất của dãy số 
* Ý tưởng tìm max của dãy số: 
MAX 
Nêu các bước tìm ra con thỏ lớn nhất trong 4 
con thỏ? 
Cho dãy số, hãy thực hiện các bước của thuật 
toán để tìm ra số lớn nhất của dãy số? 
Max 
Ai > max 
i > n 
i 
9 15 7 3 5 Dãy số N=5 
1 
5 
2 
? 
? 
S 
S 
5 
3 
S 
Đ 
7 
4 
S 
Đ 
15 
5 
S 
S 
15 
6 
Đ 
Dừng 
For i:=2 to N do 
Max:=A[1]; 
IF (A[i] > Max) then Max:=A[i]; 
Thể hiện bằng pascal Các bước thực hiện 
Khai báo biến mảng và 
các biến cần dùng 
Nhập số phần tử cho 
mảng 
Nhập các giá trị cho 
từng phần tử của mảng 
Xử lí tìm số lớn nhất của 
mảng 
Xuất giá trị lớn nhất của 
mảng vừa nhập 
var i,n,max:integer; 
 A: array[1..20] of integer; 
 Writeln( „nhap so phan tu cua day‟); 
 Readln(n); 
For i:=1 to n do 
Begin 
 Writeln( „Nhap gia tri a[„ ,i, ‟]=„); 
 Readln(a[i]); 
End; 
Writeln('gia tri max cua mang=‟, max); 
Max:=a[1]; 
For i:=2 to n do 
If max<a[i] then max:=a[i]; 
Readln 
End. 
begin 
Đoạn chương trình tìm giá trị lớn nhất của dãy số vừa nhập 
Tên biến mảng ? 
Số phần tử của mảng ? 
Kiểu dữ liệu của các phần tử: 
so 
15 
Kiểu số nguyên. 
Chỉ số đầu, chỉ số cuối của mảng? Đầu=1; Cuối = 15 
Giá trị của phần tử thứ 5? 
Ví dụ: Var so : ARRAY[1 .. 15] OF integer; 
Khi truy cập phần tử thứ 5 ta viết? so[5] 
Quan sát câu lệnh khai báo biến mảng sau trả lời các câu hỏi 
5 7 19 14 21 4 6 8 54 76 23 18 21 34 42 
1 2 3 4 5 6 7 8 9 12 11 12 13 14 15 
21 
1. Cho dãy số như hình vẽ dưới đây, hãy thực hiện 
các bước của thuật toán để tìm ra số nhỏ nhất của 
dãy số 
Min 
Ai<min 
i>n 
i 
21 -3 8 12 6 Dãy số 
2. Hãy minh hoạ các bước để giải bài toán tìm ra số 
nhỏ nhất của dãy số bằng sơ đồ tư duy? 
MIN=-3 
-3 -3 6 6 6 
Dừng 
S Đ S S 
Đ S S S S 
6 5 4 3 2 1 I
3. Hãy hoàn thành đoạn chương trình còn thiếu trên 
phiếu học tập để có tìm ra số nhỏ nhất của dãy số? 

File đính kèm:

  • pdfbai_giang_tin_hoc_lop_6_bai_9_lam_viec_voi_day_so_truong_thc.pdf