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)
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:
bai_giang_tin_hoc_lop_6_bai_9_lam_viec_voi_day_so_truong_thc.pdf



