Bài giảng Tin học Lớp 8 - Bài 9: Làm việc với dãy số

Trong lập trình cũng vậy nếu biết bố trí dữ liệu theo dãy, việc khai báo và xử lý dữ liệu trở nên đơn giản rất nhiều. Thay vì phải viết nhiều câu lệnh giống nhau, ta có thể dùng vài câu lệnh lặp và nhường lại phần lớn công việc cho máy tính thực hiện.

pptx36 trang | Chia sẻ: Anh Thúy | Ngày: 11/11/2023 | Lượt xem: 177 | 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 8 - Bài 9: Làm việc với dãy số, để xem tài liệu hoàn chỉnh bạn hãy click vào nút TẢi VỀ
Em thường nhìn thấy việc xếp hàng tập thể dục, xếp hàng để mua vé, xếp hàng vào lớp 
Tập thể dục 
Qua những quan sát xếp hàng như trên em thấy sắp xếp công việc có lợi ích gì? 
 Sắp xếp công việc làm cho mọi hoạt động diễn ra một cách trật tự và nhanh chóng 
	Trong lập trình cũng vậy nếu biết bố trí dữ liệu theo dãy, việc khai báo và xử lý dữ liệu trở nên đơn giản rất nhiều. Thay vì phải viết nhiều câu lệnh giống nhau, ta có thể dùng vài câu lệnh lặp và nhường lại phần lớn công việc cho máy tính thực hiện. 
LÀM VIỆC VỚI DÃY SỐ 
BÀI 9 
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 
Xét VD: Viết chương trình nhập điểm kiểm tra môn Tin của các học sinh trong một lớp 
Nhập và lưu điểm cho 1 học sinh 
Var Diem1: real; 
Readln(Diem1); 
Nhập và lưu điểm cho 2 học sinh 
Var Diem1, Diem2: real; 
Readln(Diem1); Readln(Diem2); 
Vậy nhập và lưu điểm cho 45 học sinh trong lớp thì sao? 
Bài 9: 
LÀM VIỆC VỚI DÃY SỐ 
1. Dãy số và biến mảng 
Khai báo 45 biến: 
Var Diem1, Diem2, Diem3, , Diem45: Real; 
Sử dụng 45 câu lệnh nhập điểm: 
Readln(Diem1); Readln(Diem2); Readln(Diem3); .; Readln(Diem45); 
Những hạn chế : 
- Phải khai báo quá nhiều biến 
 Chương trình phải viết khá dài 
 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 với lượng dữ liệu lớn thì có những hạn chế gì? 
Bài 9: 
LÀM VIỆC VỚI DÃY SỐ 
1. Dãy số và biến mảng 
, 
var 
Diem 
1 
Diem 
2 
Diem 
, 
, 
3 
, 
Diem 
23 
: 
Real 
; 
........ 
Diem 
Chỉ số 
- Với i=1 đến 45: hãy nhập Diem_i; 
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 
7 
9 
5 
10 
Dữ liệu kiểu mảng 
Readln(Diem1); Readln(Diem2); Read(Diem3); .; Readln(Diem45); 
Vậy phải khắc phục như thế nào? 
Bài 9: 
LÀM VIỆC VỚI DÃY SỐ 
1. Dãy số và biến mảng 
 * Dữ liệu kiểu mảng: 
 Dữ liệu kiểu mảng là một tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều có cùng một kiểu dữ liệu, gọi là kiểu của phần tử. 
Dữ liệu kiểu mảng là gì? 
A 
i 
1 
2 
3 
4 
5 
6 
8 
12 
5 
9 
3 
17 
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 
17 
Bài 9: 
LÀM VIỆC VỚI DÃY SỐ 
1. Dãy số và biến mảng 
* Biến mảng: 
- Là biến có kiểu dữ liệu là kiểu mảng,các biến có cùng kiểu và 1 tên duy nhất 
- Giá trị của biến mảng là một mảng,tức là một dãy số (số nguyên hoặc số thực) 
- Mỗi số là giá trị của các phần tử tương ứng 
A 
17 
13 
20 
10 
9 
Chỉ số 
1 
2 
3 
4 
5 
Giá trị của mảng 
Biến mảng 
Bài 9: 
LÀM VIỆC VỚI DÃY SỐ 
CÂU HỎI 
Câu hỏi 1: Tương tự như khai báo biến đơn, câu lệnh khai báo mảng phải được thực hiện ở đâu? 
Câu hỏi 2: Khi khai báo biến mảng trong mọi ngôn ngữ lập trình cần chỉ rõ ít nhất yếu tố nào? 
CÂU HỎI 
Câu hỏi 1: Tương tự như khai báo biến đơn, câu lệnh khai báo mảng phải được thực hiện ở đâu? 
 - Khai báo biến mảng trong phần khai báo của chương trình 
Câu hỏi 2: Khi khai báo biến mảng trong mọi ngôn ngữ lập trình cần chỉ rõ ít nhất yếu tố nào? 
 Khi khai báo biến mảng trong mọi ngôn ngữ lập trình cần chỉ rõ: 
	+ Tên biến mảng 
	+ Số lượng phần tử	 
	+ kiểu dữ liệu chung của các phần tử 
Ví dụ: 
23 
A 
A[1] 
| | 
19 
A[2] 
| | 
57 
A[3] 
| | 
49 
A[4] 
| | 
85 
A[5] 
| | 
22 
A[6] 
| | 
99 
A[7] 
| | 
 Trong đó: 
Khi tham chiếu đến phần tử thứ i - ta viết A[i]. 
	 Ví dụ: A[6] = 22. 
Tên mảng : A 
Số phần tử của mảng: 7 
Kiểu dữ liệu của các phần tử: Kiểu nguyên 
1 
2 
3 
4 
5 
6 
7 
chỉ số(i) 
6,5 
9,3 
7,5 
7,1 
8,5 
9,6 
5,2 
diem 
 1	 2	 3	 4	 5	 6	7 
 Các thành phần: 
Khi tham chiếu đến phần tử thứ i - ta viết :	 
Tên mảng : 
Số lượng phần tử của mảng: 
Kiểu dữ liệu chung của các phần tử: 
9,6 
7 phần tử 
Kiểu số thực 
diem[ ] 
diem[6] = 
9,6 
i 
i 
diem 
Củng cố 
Củng cố 
Bài tập: Em hãy chọn đáp án đúng: 
A. Dữ liệu kiểu mảng là tập hợp các phần tử không có thứ tự và mọi phần tử có cùng một kiểu dữ liệu. 
B. Dữ liệu kiểu mảng là tập hợp các phần tử có thứ tự và mỗi một phần tử trong mảng có thể có các kiểu dữ liệu khác nhau . 
C. Dữ liệu kiểu mảng là tập hợp các phần tử có thứ tự và mọi phần tử có cùng một kiểu dữ liệu. 
2. Ví dụ về biến mảng 
*Cách khai báo mảng trong Pascal :  
9 
Tuoi 
7 
6 
8 
. 
 1	 2	 3 4	 . 40 
10 
Var Tuoi : 
Chieucao 
 2	 3	 4 5	 . 20 
Var chieucao: array[2..20] of Real; 
Chỉ số 
array 
[1..40] 
of Integer; 
Chỉ số 
Var 
Tên mảng : 
of ; 
array 
[ .. ] 
1.7 
1.5 
1.65 
1.75 
. 
1.8 
Bài 9: 
Làm việc với dãy số 
 
 
2. Ví dụ về biến mảng 
*Khai báo mảng một chiều trong Pascal: 
Var Tên mảng : array[ .. ] of ; 
Trong đó: 
Tê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ử, là Integer hoặc Real 
- Số phần tử = chỉ số cuối – chỉ số đầu + 1 
Bài 9: 
Làm việc với dãy số 
2. Ví dụ về biến mảng 
* Cách khai báo mảng trong Pascal : 
Ví dụ : Cách khai báo đơn giản một biến mảng trong ngôn ngữ Pascal như sau: 
var Tuoi: array[ 21..80 ] of integer; 
Tên biến 
Số lượng phần tử 
Kiểu dữ liệu chung 
Chỉ số đầu 
Chỉ số cuối 
var Chieucao: array[ 1..50 ] of real; 
Bài 9: 
Làm việc với dãy số 
Var Tênmảng: array [..] of ; 
2. Ví dụ về biến mảng 
* Cách khai báo mảng trong Pascal : 
Var diem : array[1..40] of real; 
Var A: array[1..10] of integer; 
 B: array[1..10] of integer; 
Ví dụ : 
 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? 
Hãy khai báo các mảng sau: 
 1/ Mảng Diem gồm 40 phần tử thuộc kiểu dữ liệu số thực? 
Bài 9: 
Làm việc với dãy số 
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? 
Var N : integer; 
A : array[1..N] of real; 
Không xác định 
2. Ví dụ về biến mảng 
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ể 
* Cách khai báo mảng trong Pascal : 
Bài 9: 
Làm việc với dãy số 
Lưu ý: 
Kích thước của mảng phải được khai báo bằng một con số cụ thể 
Bài 9: 
Làm việc với dãy số 
2. Ví dụ về biến mảng 
* Cách khai báo mảng trong Pascal : 
* Truy cập đến giá trị phần tử trong mảng : 
Tên mảng [Chỉ số] 
Cú pháp: 
Tênmảng: array [..] of ; 
VD: DiemTin[1] 
	 Tham chiếu tới phần tử thứ nhất của mảng DiemTin 
Bài 9: 
Làm việc với dãy số 
2. Ví dụ về biến mảng 
* Truy cập đến giá trị phần tử trong mảng : 
Tên mảng [Chỉ số] 
Cú pháp: 
2 
5 
7 
1 
10 
 3 4 5 6 7 
Cho mảng A chứa các giá trị sau: 
Ví dụ1 : 
- Xác định các giá trị của: A[1], A[3], A[5], A[10] ? 
A[1], A[10]: không xác định 
A[3]=2; A[5]=4 
Bài 9: 
Làm việc với dãy số 
2. Ví dụ về biến mảng 
* Truy cập đến giá trị phần tử trong mảng : 
Tên mảng [Chỉ số] 
Cú pháp: 
A[3]:=2; 
A[4]:=5; 
A[6]:=A[3]+A[4]; 
Ví dụ 2 : 
Cho các câu lệnh sau: 
Giá trị của các phần A[3], A[4], A[6] sẽ là bao nhiêu? 
A[3]=2 
A[4]=5 
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 
Có thể thực hiện các thao tác nào với các phần tử trong mảng? 
Bài 9: 
Làm việc với dãy số 
2. Ví dụ về biến mảng 
For i:=1 to 45 do 
Begin 
Write(‘Nhap diem ban thu ‘, i ,’:’); 
Readln(DiemTin[i]); 
End; 
Ví dụ: Gán giá trị cho 40 phần tử của mảng DiemTin 
For i :=  to  do 
Begin 
 write( ); 
 Readln(Tenmang[i]); 
End; 
	DiemTin[1]:=5; 
 DiemTin[45]:= 10; 
Hoặc 	 
Write(‘Nhap diem ban thu 1:’); 
Readln(DiemTin[1 ]); 
Write (‘Nhap diem ban thu 45:’); 
Readln(DiemTin([45]); 
Bài 9: 
Làm việc với dãy số 
* Truy cập đến giá trị phần tử trong mảng : 
Chương trình quá dài 
Giải pháp 
A 
n 
1. Nhập số phần tử của mảng. 
Write(‘ Nhap vao so HS:’); 
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(‘Diem cho HS thu ’ ,i, ’ : ’); 
 readln(A[i]); 
 end; 
....... 
Các bước 
Thể hiện bằng pascal 
 với n = 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. 
2. Ví dụ về biến mảng 
*Nhập giá trị cho mảng 
Bài 9: 
Làm việc với dãy số 
2. Ví dụ về biến mảng 
*In giá trị các phần tử của mảng: 
For i :=  to  do Writeln(Tenmang[i]); 
For i:=1 to 40 do Writeln(DiemTin[i]); 
8 
6 
7 
6 
. 
. 
. 
. 
1 
2 
3 
4 
. 
i 
. 
40 
DiemTin 
Chỉ số 
DiemTin[1] 
= 8 
8 
Ví dụ: In giá trị của 40 phần tử trong mảng DiemTin 
DiemTin[4] 
= 6 
6 
Bài 9: 
Làm việc với dãy số 
Writeln(‘ Điểm của lớp : ’); 
For i:=1 to n do 
 Write(A[i]:7); 
Điểm của lớp: 
- Thông báo 
 - In giá trị của từng phần tử 
 7 5 8 6 9 10 9 
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. 
2. Ví dụ về biến mảng 
*In giá trị các phần tử của mảng: 
Bài 9: 
Làm việc với dãy số (Tiết 1) 
Bài 9: 
Làm việc với dãy số 
3. T ìm giá trị lớn nhất và giá trị nhỏ nhất của dãy số: 
 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. 
Em hãy nêu thuật toán để tìm số nhỏ nhất và số lớn nhất trong dãy số? 
THUẬT TOÁN 
B1: max:=a; min:=a; i:=1; 
B2: i:= i+1; 
B3: Nếu i > n, chuyển đến bước 5. 
B4: Nếu a i > max thì max:=a i ; a i < min thì min :=a i .Quay lai bước 2. 
B5: Kết thúc thuật toán. 
Program vd1; 
Uses crt; 
Var 
	i, n, Max, Min: integer ; 
	A: Array[1..100] of Integer ; 
BEGIN 
	Clrscr; 
	write(‘ Nhap so phan tu cua day so: n= ’) ; readln(n) ; 
	 For i := 1 to n do 
	Begin 
	 write(‘ Nhap so thu ‘,i,’ : ‘) ; 
	 readln(A[i]) ; 
	 	End; 
	 Max:=A[1]; 
	 For i := 2 to n do 
	If A[i]>Max Then Max := A[i]; 
	 Writeln(‘ So lon nhat la max = ', Max) ; 
 Min:=A[1]; 
	 For i := 2 to n do 
	If A[i]<Min Then Min := A[i]; 
	 Writeln(‘ So nho nhat la Min = ', Min) ; 
 	 Readln ; 
END. 
Khai báo biến mảng 
Nhập giá trị cho mảng 
Tìm số lớn nhất và nhỏ nhất 
Nhap so phan tu cua day so: n= 
7 
Nhap so thu 1 : 
7 
Nhap so thu 2 : 
9 
Nhap so thu 3 : 
4 
Nhap so thu 4 : 
6 
Nhap so thu 5 : 
9 
Nhap so thu 6 : 
8 
Nhap so thu 7 : 
5 
So lon nhat la Max = 9 
So nho nhat la Min = 4 
Ch­¬ng tr×nh ch¹y vµ cho kÕt qu¶ nh­ sau: 
Củng cố 
Kiến thức cần nhớ 
Bài tập củng cố 
Bài 1: Em hãy chọn đáp án đúng: 
A. Dữ liệu kiểu mảng là tập hợp các phần tử không có thứ tự và mọi phần tử có cùng một kiểu dữ liệu. 
B. Dữ liệu kiểu mảng là tập hợp các phần tử có thứ tự và mỗi một phần tử trong mảng có thể có các kiểu dữ liệu khác nhau . 
C. Dữ liệu kiểu mảng là tập hợp các phần tử có thứ tự và mọi phần tử có cùng một kiểu dữ liệu. 
Bài 9: 
Làm việc với dãy số 
b) Var X: Array[3.. 4.8] of Integer; 
c) Var X: Array[10 .. 1] of Integer; 
d) Var X: Array[4 .. 10] of Real; 
a) Var X: Array[10 , 13] of Real; 
Bài 2: Cách khai báo biến mảng sau đây đúng hay sai? Khoanh tròn vào chỗ sai (nếu có). 
a) Sửa dấu , thành dấu .. 
b) Sửa 4.8 thành số nguyên 
c) Chỉ số cuối phải >= chỉ số đầu 
d) Đúng 
Bài 9: 
Củng cố 
Làm việc với dãy số 
V 
A 
R 
R 
E 
A 
D 
R 
E 
A 
L 
M 
A 
X 
N 
G 
U 
Y 
Ê 
N 
1 
2 
3 
4 
5 
Câu 1: Có 3 chữ cái: Là từ khóa để khai báo biến 
trong chương trình Pascal? 
Câu 2: Có 4 chữ cái: Là câu lệnh trong chương trình Pascal 
dùng để dừng chương trình chờ ta nhập giá trị cho biến? 
Câu 3: Có 4 chữ cái: Là từ khóa trong chương trình Pascal 
dùng để thể hiện những biến kiểu thực? 
Câu 4: Có 3 chữ cái: Là tên của hàm tìm giá trị lớn nhất? 
Câu 5: Có 6 chữ cái: Chỉ số đầu, chỉ số cuối trong khai báo mảng 
Thường là những số.? 
HỌC MÀ VUI - VUI MÀ HỌC 
- Học bài cũ 
- Tìm hiểu thuật toán tìm giá trị lớn nhất, nhỏ nhất của dãy số (xem lại ví dụ 6 trang 43 SGK) 
- Về nhà làm các bài tập 2, 4, 5 trang 79 SGK 
Bài 9: 
HƯỚNG DẪN VỀ NHÀ 
Làm việc với dãy số 
Tiết học kết thúc 
Xin chân thành cảm ơn sự chú ý theo dõi của các học sinh 

File đính kèm:

  • pptxbai_giang_tin_hoc_lop_8_bai_9_lam_viec_voi_day_so.pptx