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