+ Số lượng các phần tử + Kiểu dữ liệu của các phần tử + Cách khai báo biến mảng + Cách tham chiếu đến phần tử VD: Xét bài toán nhập vào nhiệt độ Trung bình mỗi ngày trong tuần.. Kiến Thứ
Trang 1Tuần: 20 Ngày soạn: 24/12/2011
Chương IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
III TIẾN TRÌNH LÊN LỚP
1 Ổn Định Lớp : ổn định trật tự, lớp trưởng báo cáo sĩ số
2 Kiểm Tra Bài Cũ
3 Nội Dung
Ở chương III chúng ta đã được nghiên cứu về cấu trúc rẽ nhánh, cấu trúc lặp Mặt khác chúng ta cũng đã làm quen với các kiểu dữ liệu chuẩn như số nguyên, số thực, kiểu logic… Tuy nhiên với những kiểu dữ liệu này thì làm thế nào để lưu trữ
và xử lý một dãy số? lưu trữ và xử lý họ và tên một người?? các kiểu dữ liệu
chuẩn không đủ để biểu diễn dữ liệu của các bài toán trên
Chương này chúng ta sẽ tìm hiểu một số kiểu dữ liệu trong ngôn ngữ Pascal để xử
lý những vấn đề trên Với bài toán xử lý một dãy số ta dùng kiểu dữ liệu chuẩn Vậy mảng là gì? Sử dụng kiểu mảng như thế nào? Bài học hôm nay chúng ta sẽ tìm hiểu “Kiểu Mảng”
Gv: Thuyết trình
Trong lập trình thường có 2 loại
1 Kiểu Mảng Một Chiều Mảng một chiều là dãy hữu hạn các phần tử cùng
Trang 2Hs: Trật tự ghi bài đầy đủ
GV: yêu cầu học sinh đọc ví dụ
trong SGK trang 53
Hs: Trật tự tập trung làm việc theo
nhóm
Gv: Gợi ý cho Hs dùng 7 biến thực
để lưu trữ nhiệt độ của các ngày
trong tuần (t1, t2, t3, t4, t5, t6, t7),
một biến tính giá trị trung bình TB
và một biến để đếm số ngày có
nhiệt độ cao hơn TB là dem
kiểu Mảng được đặt tên và mỗi phần tử có một chỉ
số Để mô tả mảng một chiều cần xác định kiểu các phần tử và đánh số các phần tử của nó
- Để lập trình có thể xây dựng và sử dụng kiểu mảng một chiều, các ngôn ngữ lập trình có quy tắc, cách thức cho phép xác định:
+ Tên kiểu mảng một chiều
+ Số lượng các phần tử + Kiểu dữ liệu của các phần tử + Cách khai báo biến mảng + Cách tham chiếu đến phần tử
VD: Xét bài toán nhập vào nhiệt độ( Trung bình) mỗi ngày trong tuần Tính và đưa ra màn hình nhiệt
độ trung bình của cả tuần và đếm số ngày có nhiệt độ cao hơn trung bình
Nhiệt độ trung bình của các ngày trong tuần được tính theo công thức:
Trang 3bài toán If t2> Tb then Dem:= Dem+1;
If t3> Tb then Dem:= Dem+1;
If t4> Tb then Dem:= Dem+1;
If t5> Tb then Dem:= Dem+1;
If t6> Tb then Dem:= Dem+1;
If t7> Tb then Dem:= Dem+1;
Writeln(‘Nhiet do trung binh tuan:’, Tb:4:2);Writeln(‘So ngay co nhiet do cao hon TB’, Dem);Readln
- Với chương trình tính nhiệt độ trung bình trên khi cần giải bài toán trên với
N ngày thì ta làm như thế nào? Có theo cách trên không hay có một phương pháp gọn hơn
Trang 4Tuần: 20 Ngày soạn: 24/12/2011
Chương IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
11 KIỂU MẢNG(T2)
I.MỤC TIÊU
1 Kiến Thức
- Cách khai báo mảng một chiều
- Biết cách xác định biến, cách tham chiếu đến các phần tử mảng
III TIẾN TRÌNH LÊN LỚP
1Ổn Định Lớp : ổn định trật tự, lớp trưởng báo cáo sĩ số
2 Kiểm Tra Bài Cũ
- Khái niệm mảng một chiều Nêu các cách thức cho phép xác định.?
3 Nội Dung
Gv: Bài học hôm trước chúng ta đã tìm
hiểu chương trình tính nhiệt độ trung
bình các ngày trong tuần Hôm nay
chúng ta sẽ tìm hiểu làm như thế nào để
giải bài toán trên với N ngày Ta sẽ sử
dụng kiểu dữ liệu mảng một chiều để mô
tả
Gv: Giải thích về khai báo mảng Khai
báo biến mảng một chiều gồm Max số
- Khai báo biến mảng một chiều(thông qua phần khai báo biến mảng) như sau:
Type Kmang1 = array [1 Max] of real;Var Nhietdo: Kmang1;
* Chương trình giải bài tập như sau:
Program Nhietdo_Nngay;
Trang 5Hs: chú ý lắng nghe Nghĩ cách viết
chương trình để giải bài toán
Gv: Nêu câu hỏi điều kiện N phải như
thế nào?
Hs: N<= 366
Gv: giải thích:
Biến i lần lượt nhận các giá trị chỉ số của
mảng Tương ứng mỗi giá trị của i, một
phần tử của mảng được xác định bởi
Nhietdo[i] có thể được thực hiện các
thao tác nhập xuất hay xử lý trên phần tử
này
Như vậy, khi sử dụng một biến mảng,
với câu lệnh for- do chương trình được
viết ngắn gọn dễ hiểu hơn
Hs: chú ý lắng nghe và viết chương trình
theo nhóm
Gv: thuyết trình về khai báo mảng
Hs: :Lắng nghe ghi bài đầy đủ
- Hỏi: Dựa vào ví dụ trang 55 SGK, cho
biết:
Type Kmang1 = array [1 Max] of real;
Var Nhietdo: Kmang1;
Dem, I, N : byte;
Tong, Trung_binh: real;
Begin Write(‘Nhap so ngay: ’);
Readln(N);
Tong:= 0;
For i:= 1 to N do Begin
Write(‘Nhap nhiet do ngay thu’, i, ‘:’); Readln(Nhietdo[i]);
Tong:= Tong+ Nhietdo[i];
a Khai báo (Có hai cách) Cách 1: Khai báo trực tiếp:
Var <tên biến mảng>: array[kiểu chỉ số] of
Trang 6+ Kiểu phần tử là kiểu dl của các phần tử của mảng.
Ví dụ 1:
Var Nhietdo: array [1 Max] Of real;
Ví dụ 2: Khai báo mảng tối đa 100 số nguyên (chỉ số đầu tiên là 1)
Var a: Array[1 Nmax] Of integer;
* Tham chiếu tới phần tử cuả mảng
Tên_biến[chỉ số]
4 Cũng Cố
Cách khai báo mảng một chiều
- Câu hỏi trắc nghiệm
1 Trong các khai báo biến mảng một chiều sau đây Những kiểu khai báo nào
là không hợp lệ
a Type m= array [-100 100] of real;
b Type m = array [1.5 10.5] of real;
c Type m= array [0 100] of integer;
d Type m= array[‘a’ ’z’] of boolean;
Trang 7Tuần: 21 Ngày soạn: 29/12/2011
BÀI THỰC HÀNH SỐ 3 – T1
I MỤC TIÊU:
- Kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng.
- Kỹ năng: Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn
hình chỉ số và giá trị của các phần tử mảng
+ Duyệt qua phần tử của mảng để xử lý từng phần tử
- Về tư duy và Thái độ: rèn luyện tư duy lập trình, tác phong của người lập trình.
II PHƯƠNG TIỆN DẠY HỌC:
- GV: Phòng máy tính, máy chiếu Projector
CT mẫu bài 1a HS: Xem bài mẫu được trình chiếu.
?1: MyArray là tên kiểu
dữ liệu hay tên biến?
HS: Tên kiểu dữ liệu.
GV: Nhận xét.
?2: Vai trò của nmax và n
khác nhau như thế nào? n là số lượng phần tử của mảng, nmax là là số lượng pt lớn nhất có thể có của mảng
?3: Dòng lệnh nào dùng để
tạo biến mảng A?
VAR A: MyArray
Trang 9?8: Đưa biến Posi và Neg
vào vị trí nào trong câu 1a?
GV: Yêu cầu HS chạy
chương trình và báo cáo kết
quả
HS: Lưu và chạy chương trình, báo cáo KQ
4) Củng cố:
Trang 10Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử
từ bàn phím
5) Dặn dò:
- HS về nhà làm bài tập 4.15 trong sách bài tập
- Chuẩn bị chương trình bài 2 bài thực hành 3 chương IV trong SGK
IV RÚT KINH NGHIỆM, BỔ SUNG:
Trang 11
Tuần: 21 Ngày soạn: 2/1/2011
BÀI THỰC HÀNH SỐ 3 – T2
I MỤC TIÊU:
- Về Kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng.
- Về Kỹ năng: Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn
hình chỉ số và giá trị của các phần tử mảng
+ Duyệt qua phần tử của mảng để xử lý từng phần tử
- Về tư duy và Thái độ: rèn luyện tư duy lập trình, tác phong của người lập trình.
II PHƯƠNG TIỆN DẠY HỌC:
- GV: Phòng máy tính, máy chiếu Projector
- HS: SGK, bài tập
III HOẠT ĐỘNG DẠY VÀ HỌC
1 Ổn định tổ chức: Kiểm tra sĩ số lớp.
2 Kiểm tra bài cũ: Khi nào ta nên khai báo biến mảng gián tiếp –
thông qua định nghĩa kiểu?
3 Nội Dung
1 Nêu đề bài toán (Nội dung)
Y/cầu hs xác định In/Output của
+ Cho biết số ptử của mảng A
+ Nhập giá trị cho các ptử của
Write(‘Nhap n = ’); readln(n);
{tao mang}
For i:=1 To n Do begin
write(‘phan tu thu ’,i,’ =’);
Trang 12HS Lên bảng trình bày
Var S, N, k: integer;
A: array[1 100] of integer;
5 Tiếp tục y/cầu hs lên viết phần
chtrình tạo giá trị cho các ptử của
6 Để viết tiếp đoạn chtrình còn lại
(tính tổng) theo thuật toán ta phải
kiểm tra lần lượt tất cả các ptử của
mảng từ A[1] đến A[n] vậy ta sử
Var n, i : integer;
am, duong : integer;
A : array[1 100] of integer; Begin
Write(‘Nhap n = ’); readln(n);
{tao mang}
For i:=1 To n Do begin
write(‘phan tu thu ’,i,’ =’);
End.
IV Cñng cè
- Nh¾c l¹i c¸c kh¸i niÖm cÇn lu ý
Trang 13- bµi tËp vÒ nhµ: ViÕt ch¬ng tr×nh nhËp 1 m¶ng mét chiÒu A gåm 20 phÇn tö vµ nhËp 1 sè x §Õm sè lîng sè trong A cã gi¸ trÞ b»ng x
T.T DuyệtNgày2/1/2012
Nguyễn Hữu Quyền
Trang 14Tuần: 22 Ngày soạn: 7/1/2011
11 KIỂU MẢNG(T3)I.MỤC TIÊU
1 Kiến Thức
- Cách khai báo mảng một chiều
- Biết cách xác định biến, cách tham chiếu đến các phần tử mảng
III TIẾN TRÌNH LÊN LỚP
1Ổn Định Lớp : ổn định trật tự, lớp trưởng báo cáo sĩ số
2 Kiểm Tra Bài Cũ
- Nêu các cách khai báo mảng một chiều? Cho ví dụ về khai báo kiểu gián tiếp?
Hs: trả lời input, out put
Gv: ý tưởng của thuật toán là gì?
Số nguyên dương N (N≤250) và dãy A gồm N số nguyên dương, mỗi số đều không vượt quá 500 Hãy sắp xếp dãy A thành dãy không giảm.:
In: N (N≤250), dãy A (A[i]<500)
Out: dãy A không giảm
2.Thuật toán
B1: Nhập N, dãy A ;B2: jN;
B3: nếu j<2 thì đưa ra dãy đã được sắp xếp, KT;
B4: jj-1; i1;
B5: Nếu i>j thì Qlại B3;
B6: Nếu A[i]>A[i+1] thì tráo đổi A[i]
Trang 15Gv: chia nhóm phân công tìm thuật toán
của bài toán và cách viết chương trình,
* Chốt lại các nội dung chính cần viết
GV: Yêu cầu từng hs lên bảng viết từng
nội dung của chương trình
GV: Khai báo những biến gì?
GV Làm thế nào để tráo đổi giá trị 2
biến cho nhau (a[i] và a[i+1])?
HS: sử dụng thêm biến trung gian t:
write(‘phan tu thu ’,i,’ =’); readln(A[i]);
end;
{sap xep mang}
For j := N Downto 1 Do for i:=1 to j - 1 do
If a[i] > a[i+1] then begin
t:=a[i]; a[i]:=a[i+1];
a[i+1] :=t;
end;
{dua ra mang da sap xep}
Writeln (‘Mang da duoc sap xep ’);
For i :=1 To N Do write (a[i]:4);
Trang 16Tuần: 22 Ngày soạn: 12/1/2011
11 KIỂU MẢNG(T3)
I.MỤC TIÊU
1 Kiến Thức
- Cách khai báo mảng một chiều
- Biết cách xác định biến, cách tham chiếu đến các phần tử mảng
III TIẾN TRÌNH LÊN LỚP
1Ổn Định Lớp : ổn định trật tự, lớp trưởng báo cáo sĩ số
2 Kiểm Tra Bài Cũ
- Nêu các cách khai báo mảng một chiều? Cho ví dụ về khai báo kiểu gián tiếp?
3 Nội Dung
Gv: trong bài toán trên thì input là gì?
Output là gì?
Hs: trả lời input, out put
Gv: ý tưởng của thuật toán là gì?
Hs: trả lời ý tưởng
Gv: chia nhóm phân công tìm thuật toán
của bài toán và cách viết chương trình,
Cac so am la:
-7 vi tri la: 3-20 vi tri la: 5
Trang 17* Chốt lại các nội dung chính cần viết.
GV: Yêu cầu từng hs lên bảng viết từng
nội dung của chương trình
GV: Khai báo những biến gì?
từng phần tử trong mảng xem có bé hơn
0 hay không Nếu bé hơn thì đưa ra kết
quả
- Đưa mảng ra màn hình
USES CRT;
VAR A: ARRAY[1 100] OF INTEGER;
I,N: INTEGER;
BEGIN WRITELN('NHAP SL PHAN TU: ');
READLN(N);
FOR I:=1 TO N DO BEGIN
WRITELN('NHAP SO THU: ',I,' ');
READLN(A[I]);
END;
WRITELN('CAC SO AM LA: '); FOR I:=1 TO N DO
IF A[I] < 0 THEN BEGIN
WRITE(A[I]:4);
WRITELN(' VI TRI LA: ',I); END;
READLNEND
Trang 18Tuần: 23 Ngày soạn: 14/1/2011
BÀI THỰC HÀNH SỐ 4 T1
I Mục tiêu
1 Kiến thức
- Củng cố kiến thức về dữ liệu kiểu mảng
- Xây dựng cấu trúc dữ liệu, hiểu thuật toán sắp xếp bằng tráo đổi
2 Kĩ năng
- Biết chỉnh sữa lỗi trong chương trình
- Tự nhập các bộ dữ liệu để hiểu ý nghĩa một số câu lệnh
Gv : Nêu cách khai báo kiểu mảng 1
End;
Đề: Sắp xếp dãy số nguyên bằng thuật
toán tráo đổi với các giá trị khác nhau của
• Ý tưởng: Với mỗi cặp số hạng đứng liền
kề trong dãy, nếu số trước lớn hơn số sau thì ta đổi chỗ chúng cho nhau Việc đó
Trang 19* Tìm hiểu chương trình
GV:Vai trò của biến i, j trong CT?
Hs : Dùng làm biến chỉ số.
Gv: Đoạn lệnh nào thực hiện tráo đổi
giá trị 2 phần tử liền kề của mảng?
Giúp hs phát hiện và sữa lỗi
Thuật toán trên tiến hành đưa số lớn
- B6: Nếu i > M thì quay lại bước 3;
- B7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;
- B8: Quay lại bước 5
Chương trìnhSGK trang 65
4) Củng cố : Thuật toán sắp xếp bằng tráo đổi Đếm số lần tráo đổi
Nhập vào số nguyên K, tìm xem K có trong dãy không? Nếu có thì đưa ra các
vị trí của nó trong dãy Nếu không thì thông báo “Không tìm thấy”
Vd: Dãy A gồm 5 phần tử: 1 5 6 12 5
Nhap so can tim: 5
Cac vi tri cua 5 la: 2 5
Trang 20Tuần: 23 Ngày soạn: 14/1/2011
BÀI THỰC HÀNH SỐ 4 T2
I Mục tiêu:
1 Kiến thức:
- Củng cố lại kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng.
- Làm quen với một số bài toán liên quan
SGK, sách bài tập và vở bài tập đã viết ở nhà
III Hoạt động dạy học
Hoạt động 1: Rèn luyện kỹ năng nhận xét, phân tích và đề xuất cách giải bài
toán sao cho chơng trình chạy nhanh hơn
1 Mục tiêu:
- Học sinh biết sử dụng kiểu mảng để lập trình giải một bài toán Biết nhận xét phân tích để đề xuất phơng án giải này.
2 Nội dung:
Cho mảng A gồm n phần tử Viết chơng trình tạo mảng B[1 n], trong đó B[i]
là tổng giá trị của i phần tử đầu tiên của mảng A.
Trang 21For i:=1 to n do write(a[i]:5);
liệu vào, dữ liệu ra?
- Gợi ý để học sinh viết
để học sinh biết thời gian thực
hiện chơng trình và kết quả của
toán, có thể có nhiều cách giải
quyết khác nhau Ngời lập trình
1 Quan sát bài và trả lời câu hỏi.
- Thay đoạn lệnh:
For J:=1 to i do B[i] : =B[i] + A[i];
Soạn chơng trình vào máy, thực hiện chơng trình và thông báo kết quả.
Nhận xét
Trang 22Hoạt động của GV Hoạt động của HS
cần chọn cách sao cho máy thực
hiện nhanh nhất.