1
TRẦN THỊ HỒNG NHUNG
2
Bài toán đặt vấn đềNhập vào nhiệt độ của mỗi ngày trong tuần. Tính và xuất ra màn hình nhiệt độ trung bình của tuần và số ngày có nhiệt độ cao hơn nhiệt độ trung bình của tuần.
1. Xác định Input, Output 2. Viết chương trình bài toán trên?
Input: t1, t2, t3, t4, t5, t6, t7
Output: tb, dem
3
4
Xét bài toán nhập vào nhiệt độ của mỗi ngày trong năm, tính và đưa ra nhiệt độ trung bình của năm.
Khi N lớn thì chương trình có những hạn chế nào?
Phải khai báo quá nhiều biến
(366)
Chương trình tính toán phải
viết khá dài
5
Pascal cho phép tạo ra các kiểu dữ liệu có cấu trúc trên cơ sở các kiểu dữ liệu chuẩn theo một số kĩ thuật tạo kiểu do ngôn ngữ lập trình quy định. Hay KDL có cấu trúc là KDL do người dùng tự định nghĩa dựa trên các KDL chuẩn và cú pháp có sẵn
Kiểu mảng một chiều là kiểu dữ liệu có cấu trúc
Kiểu dữ liệu mảng một chiều sẽ giúp ta giải quyết vấn đề trên
6
1. KHÁI NIỆM MẢNG MỘT CHIỀU
Một số quy tắc xác định kiểu mảng một chiều:
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 đến phần tử: <Tên biến mảng> [Chỉ số] = Giá trị tại chỉ số
Mảng một chiều là 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ố.
7
20.5 18 19.2 26 25 21.4 17 20
Trong đó
Khi tham chiếu đến phần tử thứ i - ta viết A[i]
Tên mảng :
Số phần tử của mảng:
Ví dụ: một dãy NhietDo gồm 8 số
Kiểu dữ liệu của các phần tử:
21.4
8
2. KHAI BÁO KIỂU MẢNG MỘT CHIỀU
Có mấy cách khai báo mảng một chiều? Đó là những cách nào?
Có 2 cách khai báo: trực tiếp và gián tiếp
Có gì khác nhau giữa 2 cách?? Trông chúng
như thế nào?
9
Var <tên biến mảng>: array[<chỉ số đầu>..<chỉ số cuối>] of <kiểu phần tử>;
Chỉ số đầu, chỉ số cuối: là các hằng hoặc biểu thức nguyên
Chỉ số đầu ≤ chỉ số cuốiGiữa hai chỉ số là dấu ..
VD1: Var nhietdo : array[1..366] of integer;
VD2: var MangKytu:array[Byte] of Char;
VD3: Var b : array[1..100] of integer;
Kiểu phần tử: kiểu của các phần tử mảng
2. KHAI BÁO KIỂU MẢNG MỘT CHIỀUĐây là cách khai báo trực tiếp ^^
10
TYPE <tên kiểu mảng> = array[<chỉ số đầu>..<chỉ số cuối>] of <kiểu phần tử>;
Var <tên biến mảng> : <tên kiểu mảng>;
VD1: TYPE nhietdo = array[1..366] of integer;
Var A:nhietdo;VD2: Type mang1c = array[1..20] of real;Var a, b: mang1c;
2. KHAI BÁO KIỂU MẢNG MỘT CHIỀUCòn đây là cách khai
báo gián tiếp ^^
Chỉ số đầu, chỉ số cuối: là các hằng hoặc biểu thức nguyênChỉ số đầu ≤ chỉ số cuốiGiữa hai chỉ số là dấu ..Kiểu phần tử: kiểu của các phần tử mảng
Tại sao không dùng khai báo trực tiếp
11
A[1] A[2] A[3] . . . A[N-1] A[N]
1 2 3 N-1 N
A
KẾT QUẢ
Mảng có tên và số phần tử Các số trong mảng có cùng kiểu dữ liệu
12
<Tên biến mảng> [chỉ số] = Giá trị tại chỉ số
A[2] = 8A[4] = 26A[7] = 7
Ví dụ:
3. 1 THAM CHIẾU ĐẾN PHẦN TỬ CỦA MẢNG
20 8 19 26 -3 15 7 -10A 1 2 3 4 5 6 7 8
13
3.2 NHẬP PHẦN TỬ CỦA MẢNG
For i:=1 to n doBegin
Write(‘A[’,i, ‘]:’);Readln (A[i]);
End;
14
3.3 XUẤT PHẦN TỬ CỦA MẢNG
For i:=1 to n doWrite(‘ ‘, A[i]);
15
3.4 XỬ LÍ CÁC PHẦN TỬ
For i:=1 to n doBegin
If <điều kiện> then<câu lệnh 1>;<câu lệnh 2>;<câu lệnh…>
End;
16
17
Khai báo mảng t (lưu trữ nhiệt độ từng ngày trong năm) bằng cách gián tiếp
Type t=array [1..366] of real;Var A: t;
18
Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm N phần tử. (N<=200)
4. BÀI TẬP NHỎ
• Input: • Dãy N số nguyên dương A1, A2,…, AN
(N<=200)• Output: • Chỉ số và giá trị của phần tử lớn
nhất trong dãy số đã cho.
19
• Nhóm 2 học sinh ngồi cùng bàn • Thời gian thảo luận (5 phút)• Đọc kĩ yêu cầu bài toán; xác định input, output; các
bước giải bài toán• Viết chương trình hoàn chỉnh • Nhóm làm xong trước nhất lên bảng giải; các nhóm
còn lại nộp lại bài cho GV, GV coi bài (3’)• Bài đúng, chính xác (cộng điểm bài kiểm tra 15’ tới) • GV nhận xét, sửa bài, cộng điểm các nhóm (2’)
QUY TẮC LÀM VIỆC NHÓM
20
1. Nhập N và dãy a1,...,an; Write(‘ Nhap vao so luong phan tu:’);
Readln(N);
For i:=1 to N do begin write(‘ Phan tu thu ’ ,i, ’ = ’); readln(a[i]) end;
2. max a1 ; i 1; max:=a[1]; chiso:=1;
For i:=2 to n do
If a[i]>max then begin max:=a[i]; chiso:=i;end;
3. Nếu i >N đưa ra MAX và chỉ số i => kết thúc;
4. Nếu a[i] >max thì maxa[i],
i i+1 => quay lại bước 3.
21
Khái niệm Hai cách khai báo, tham chiếu phần tử Thao tác nhập, xuất, xử lí trên mảng một chiềuBTVN Học lí thuyết, làm bài tập trong PBT http://
itmenteachers.blogspot.com/2011/12/trac-nghiem-tong-hop-mang-1-chieu.html làm bài tập trên trang web
Viết lại chương trình tính nhiệt độ năm, tìm max Xem bài mới
5. CỦNG CỐ - DẶN DÒ
22
23
Hết tiết 1