Slide tin học 11 bài kiểu mảng một chiều _H.L Hương tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn...
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO TỈNH ĐIỆN BIÊN
Cuộc thi Thiết kế bài giảng điện tử E – learning
-Bài giảng KIỂU MẢNG MỘT CHIỀU Chương trình Tin học 11
Giáo Viên: Hà Lan Phương
Email: phuonghl.thptdtntdb@gmail.com
TRƯỜNG PT DTNT THPT HUYỆN ĐIỆN BIÊN
Trang 2Bài 12: KIỂU MẢNG
Trang 3Nhập vào nhiệt độ (trung bình) của mỗi ngày trong tuần Tính và đưa ra màn hình nhiệt độ trung bình của tuần và số lượng ngày có nhiệt độ TB cao hơn nhiệt trung bình trong tuần?
* Dữ liệu nhập vào (INPUT): t1,t2,t3,t4,t5,t6,t7
* Dữ cần tính và in ra (OUTPUT): tb, dem
Hãy xác định Input, Output và viết chương trình giải bài toán trên ?
Bài toán đặt vấn đề:
Trang 5Quan sát chương trình, hãy cho biết nếu muốn tính nhiệt
độ trung bình của N ngày trong năm (VD:
N=365) thì sẽ gặp khó
khăn gì ?
Khai báo quá lớn (t1,t2,t3, ,t365) và chương trình quá dài (với 365 lệnh
IF) !!!!!
Để khắc phục khó khăn
đó ta sử dụng kiểu dữ liệu mảng một chiều.
Bài toán đặt vấn đề:
Trang 6Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu.
Mảng được đặt tên và mỗi phần tử của nó có một chỉ số
1 Khái niệm
Để mô tả mảng một chiều, các ngôn ngữ lập trình cho phép xác định:
-Tên kiểu mảng một chiều;
-Số lượng phần tử;
-Kiểu dữ liệu của phần tử;
-Cách khai báo biến mảng;
-Cách tham chiếu (truy xuất) đến các phần tử
Trang 7Khai báo mảng 1 chiều
Trang 82 Khai báo mảng một chiều trong PASCAL
* Cách 1: Khai báo gián tiếp
TYPE <tên kiểu mảng> = array[< kiểu chỉ số>] of <kiểuphần tử>;
Var <ds biến mảng> : <tên kiểu mảng>;
Ví dụ: TYPE nhietdo = array[1 365] of integer;
Var A: nhietdo;
Trong đó : Kiểu chỉ số thường là đoạn số nguyên liên tục có dạng n1 n2
với n1, n2 là các hằng hoặc biểu thức nguyên xác định chỉ số đầu và chỉ số cuối (n1 ≤ n2);
Kiểu phần tử là các kiểu của các phần tử mảng.
* Cách 2: Khai báo trực tiếp
Var <Ds biến mảng> : array[< kiểu chỉ số >] of <kiểuphần tử>;
Var A,B : array[1 100] of real;
Ví dụ: Var nhietdo : array[1 365] of integer;
Trang 92 Khai báo mảng một chiều trong PASCAL
Ví dụ: Khai báo kiểu mảng sau đây là hợp lệ:
Type
arrReal = array [-50 50] of real;
arrBool = array [-n+1 n+1] of boolean; (n là hằng số)
arrInt = array [0 100] of integer;
Khi tham chiếu đến phần tử thứ i ta viết A[i].
Trang 10Trong khai báo kiểu mảng ta biết được:
Correct - Click anywhere to
continue
Correct - Click anywhere to
continue Incorrect - Click anywhere to continue
Incorrect - Click anywhere to
continue
You answered this correctly!
Your answer:
The correct answer is:
You did not answer this question completely
You did not answer this question completely
You must answer the question
before continuing
You must answer the question
before continuing ĐÁP ÁN LÀM LẠI
A) tên kiểu mảng.
B) số lượng phần tử tối đa trong mảng.
C) kiểu dữ liệu của chỉ số(của các phần tử
Trang 11Trong khai báo biến mảng một chiều sau:
Var A:array[1 100] of longint;
(Nối 2 ý ở hai cột trên để được một câu đúng)
Correct - Click anywhere to
continue Incorrect - Click anywhere to continue
Incorrect - Click anywhere to
continue
You answered this correctly!
Your answer:
The correct answer is:
You did not answer this question completely
You did not answer this question completely
You must answer the question
before continuing
You must answer the question
before continuing ĐÁP ÁNĐÁP ÁN LÀM LẠILÀM LẠI
Trang 12write(‘nhiet do ngay thu’ ,i, ’ : ’); readln(nhietdo[i]);
19 21
18 20
17
Ví dụ: Nhập nhiệt độ n ngày
Các thao tác xử lí trong mảng một chiều
Trang 13Các thao tác xử lí trong mảng một chiều
Trang 14* Đếm các phần tử trong mảng thoả mãn điều kiện cho trước
dem :=0;
For i :=1 to n do
IF nhietdo[i]>trungbinh then dem:=dem+1;
c Các thao tác xử lí khác
Ví dụ: Đếm số ngày có nhiệt độ cao
hơn nhiệt độ TB của tuần
TB = 18.7
Dem=0
7 6
5 4
3 2
1 i
19 17
19 21
18 20
Trang 15Khai báo mảng 1 chiều
Nhập mảng 1 chiều Tính tổng
Đếm số phần tử thoả mãn điều kiện
Trang 1617 20 18 21 19 17 19
Chương trình chạy và cho kết quả như sau:
Các thao tác xử lí trong mảng một chiều
Bạn có thể chạy thử chương trình trên với bộ input khác
Trang 17Bài 1 Tìm phần tử lớn nhất của dãy số nguyên (với n ≤ 250 và A[i] ≤ 500).
Hãy xác định Input, Output và nêu thuật toán tìm
Max?
* INPUT: Nhập số nguyên dương n và dãy n số nguyên dương a1,a2, ,an
* OUTPUT: Chỉ số và giá trị của phần tử lớn nhất trong dãy
4 Một số ví dụ
Trang 18MAX
Trang 191 Nhập n và dãy a1, ,an;
2 Max ← a1 ; i ← 2; csmax ← 1
3 Nếu i>N đưa ra MAX và
csmax rồi Kết thúc;
4 Nếu a[i]>max thì max←a[i],
5 i ← i+1; quay lại bước 3.
Trang 2017 20 18 21 19 17 19
Chương trình chạy và cho kết quả như sau:
Thực hiện CT
Bạn có thể chạy thử chương trình trên với bộ input khác
Mời bạn nhấn vào nút Thực hiện CT
Trang 21Hãy cho biết xác định bài toán trên đúng hay sai?
Input: nhập số nguyên dương n và dãy A.
Output: dãy số A đã được sắp xếp thành dãy không giảm.
Correct - Click anywhere to
continue
Correct - Click anywhere to
continue Incorrect - Click anywhere to continue
Incorrect - Click anywhere to
continue
You answered this correctly!
Your answer:
The correct answer is:
You did not answer this question completely
You did not answer this question completely
You must answer the question
before continuing
You must answer the question
before continuing ĐÁP ÁNĐÁP ÁN LÀM LẠILÀM LẠI
Bài 2 Nhập vào một dãy số nguyên, sắp xếp dãy theo trình tự không giảm
A) Đúng B) Sai
Trang 22Em hãy cho biết để
giải bài toán trên, ở
lớp 10 chúng ta dùng thuật toán gì?
Thuật toán tráo
đổi
Bài 2 Nhập vào một dãy số nguyên, sắp xếp dãy theo trình tự không giảm
* INPUT: Nhập số nguyên dương n và dãy n số nguyên dương a1,a2, ,an
* OUTPUT: Dãy số được sắp xếp theo trình tự không giảm
Trang 23i chạy từ đầu dãy đến vị trí [cuối
dãy - 2] (bỏ qua phần tử cuối).
Sau lượt thứ hai bọt nước có trọng lượng lớn thứ hai nằm sát trên bọt nước lớn nhất
• Quá trình duyệt, tráo đổi được lặp đi lặp lại cho đến khi chỉ còn duyệt hai phần tử và thu được dãy không giảm.
Trang 24Số phần tử ở các lượt duyệt (j) sẽ giảm
từ n xuống hai phần tử.
Tại mỗi lượt duyệt:
- Cho i chạy từ 1 đến số phần tử -1,
nếu A[i]>A[i+1] thì
tráo đổi vị trí A[i] và A[i+1]
thông qua biến trung gian (Tg).
Các em hãy cho biết trong Pascal nhận xét 1 được thể hiện bằng lệnh
Trang 25Khai báo mảng 1 chiều
Nhập mảng 1 chiều
Xử lí mảng bằng thuật
toán nổi bọt
In kết quả
Trang 2617 20 18 21 19 17 19
Chương trình chạy và cho kết quả như sau:
Thực hiện CT
Bạn có thể chạy thử chương trình trên với bộ input khác
Bạn có thể chạy thử chương trình trên với bộ input khác
Mời bạn nhấn vào nút Thực hiện CT
Trang 27Trong chương trình sapxep thể hiện thuật toán sắp xếp không giảm, nếu đổi điều kiện a[i] > a[i+1] thành điều kiện
a[i]< a[i+1] thì:
Correct - Click anywhere to
continue
Correct - Click anywhere to
continue Incorrect - Click anywhere to continue
Incorrect - Click anywhere to
continue
You answered this correctly!
Your answer:
The correct answer is:
You did not answer this question completely
You did not answer this question completely
You must answer the question
before continuing
You must answer the question
before continuing ĐÁP ÁNĐÁP ÁN LÀM LẠILÀM LẠI
A) chương trình sẽ không thể hiện một thuật toán sắp
xếp nào.
B) thuật toán mà chương trình thể hiện chuyển từ sắp
xếp không giảm thành sắp xếp không tăng C) chương trình sẽ chuyển thành thể hiện thuật toán
tìm phần tử lớn nhất trong dãy số D) chương trình dịch sẽ báo lỗi thuật toán
Trang 28Trong thuật toán sắp xếp bằng tráo đổi mà ta
đã tìm hiểu ở ví dụ trước, biến t có vai trò:
Correct - Click anywhere to
continue
Correct - Click anywhere to
continue Incorrect - Click anywhere to continue
Incorrect - Click anywhere to
continue
You answered this correctly!
Your answer:
The correct answer is:
You did not answer this question completely
You did not answer this question completely
You must answer the question
before continuing
You must answer the question
before continuing ĐÁP ÁNĐÁP ÁN LÀM LẠILÀM LẠI
A) thu hẹp phạm vi xem xét là một dãy con a[1],
a[2], , a[t] để tìm phần tử lớn nhất và chuyển về cuối dãy con này.
B) kiểm tra xem việc sắp xếp mảng đã hoàn tất hay
chưa?
C) Kết hợp với biến i để điều khiển quá trình lặp trong
thuật toán.
D) điều khiển việc đổi chỗ cặp phần tử a[i] và a[i+1]
trong thuật toán.
Trang 29Your Score {score}
Max Score {max-score}
Trang 31H·y nhí!
-Ôn lại bài học hôm nay;
-Làm bài tập 5, 6, 7 trong SGK trang 79-Chuẩn bị trước bài tập và thực hành 3
Trang 32TÀI LIỆU THAM KHẢO
1 Sách giáo khoa Tin học 11, sách Giáo viên Tin học 11_Nhà xuất bản Giáo dục
2 Sách bài tập Tin học 11_Nhà xuất bản Giáo dục.
3 Sách dạy học theo chuẩn kiến thức,kĩ năng Tin học 11_ Nhà xuất bản Đại học
sư phạm.
4 Giáo trình Pascal.
5 Một số tư liệu khác từ Website: Google.vn; Violet.vn.
6 Một số phần mềm: Camtasia studio; Total video converted.