Kĩ năng -Biết được các thành phần trong khai báo kiểu mảng một chiều; -Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình; -Biết cách khai báo mảng
Trang 1-Rèn luyện kỹ năng vận dụng và linh hoạt trong việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp
để giải quyết bài toán đặt ra
3 Tư duy, thái độ:
-Rèn luyện ý thức tự giác học tập tích cực, ham thích tìm hiểu, chủ động trong giải quyết các bài tập.Rèn luyện tư duy khoa học, tư duy logic
II Chuẩn bị của giáo viên và học sinh
GV: - Soạn giáo án.
HS: - Học bài cũ và chuẩn bị bài tập.
III Phương pháp dạy học
Gợi mở và thuyết trình
IV Tiến trình bài dạy:
1 Hoạt động 1: Kiểm tra bài cũ
Câu hỏi 1(H1): Trình bày cấu trúc câu lệnh rẽ nhánh và cấu trúc lặp ?
2 Hoạt động 2: Giải bài tập 4
Câu hỏi 1(H1): Sử dụng lệnh If này gồm mấy nhánh ?
Câu hỏi 2(H2): Hàm lấy giá trị tuyệt đối của biểu thức hay biến ?
Hoạt động 1:
- GV gọi 1 HS lên bảng
giải câu 4a) - 1 HS lên bảng giải câu 4a) Câu 4a) If (sqrt(x) + sqrt(y)) <=1 then z:= sqrt(x)
- GV gọi 1 HS lên trả lời
- Cả lớp theo dõi và nhận xét bổ sung (nếu có)
-Rẽ nhánh
If <btđk > then <lệnh 1> else <lệnh 2>;
Trang 2- 1 HS lên bảng giải câu 4b)
- 1 HS trả lời H2
+ sqrt(y) Else
If y>=x then z:= x+y Else z:= 0.5;
Câu 4b)
If (sqr(x-a) + sqr(y-b)) <= sqr(r) then z:=abs(x) +abs(y)
Else z:= x+y;
3 Hoạt động 3: Giải bài tập 5
Câu hỏi 1(H1): Hãy khai triển biểu thức Y =∑
Câu hỏi 4(H4): Sử sụng cấu trúc điều khiển lặp nào là phù hợp ?
- 1 HS trả lời H2
- 1 HS trả lời H3
- 1 HS trả lời H4
- 1 HS lên bảng giải bài 5a
- Các HS còn lại theo dõi và nhận xét
bổ sung (nếu có)
Y =
51
504
33
22
1 + + ++
Câu 5a) Uses crt;
Var y: real;
n: byte;
Begin Clrscr;
y:=0;
for n:=1 to 50 do y:= y + n/(n+1);
Trang 4-Biết được một kiểu dữ liệu mới là kiểu mảng một chiều
-Biết được một loại biến có chỉ số;
-Biết cấu trúc tạo mảng một chiều, cách khai báo biến kiểu mảng một chiều
2 Kĩ năng
-Biết được các thành phần trong khai báo kiểu mảng một chiều;
-Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình;
-Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên;
-Biết cách tham chiếu đến các phần tử của mảng một chiều
3 Tư duy và thái độ:
Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức
IV Hoạt động dạy học
1 Hoạt động 1: Khởi động bài mới
Hoạt động của GV Hoạt động của HS Nội dung ghi bảng
1 Nêu bài toán mở đầu Y/cầu
hs đọc, tìm hiểu chương trình
giải quyết bài toán đó Và trả lời
các câu hỏi sau:
- Nhận giá trị nhiệt độ của 7 ngày trong tuần
Cùng kiểu thực (real)
- dem: để đếm số
ngày tron tuần có nđộ lớn hơn nđộ trung bình
- Để kiểm tra lần lượt các ngày, nđộ ngày nào lớn hơn nđộ trung bình
2 Bản chất thuật toán
không có gì thay đổi nhưng việc viết chương trình gặp khó khăn do cần dùng rất nhiều biến và đoạn các câu lệnh tính toán
Trang 53 Để khắc phục hạn chế trên
người ta thường ghép chung 7
biến trên thành một dãy và đặt
cho nó chung 1 tên và đánh cho
chiều và kiếu mảng hai chiều
4 Y/cầu hs tham khảo sgk và
hỏi: Em hiểu như thế nào về
tử cùng kiểu dữ liệu
Các ptử trong mảng cùng tên và phân biệt nhau bởi chỉ số
- Trả lời:
+ Kiểu của các p/tử
+ Cách đánh số các p/tử
BÀI 11 KIỂU MẢNG 1.Kiếu mảng một chiều
a K/n 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 kiểu dữ liệu Các ptử trong mảng cùng tên và phân biệt nhau bởi chỉ số
Để mô tả mảng một chiều, ta cần xác định:
+ Kiểu của các p/tử
+ Cách đánh số các p/tử
2 Hoạt động 2:Tạo kiểu mảng một chiều và khai báo biến mảng
Hoạt động của GV Hoạt động của HS Nội dung ghi bảng
1 Y/cầu hs tìm hiểu phần khai
báo một lời giải khác cho bài
toán trên trong trường hợp tổng
quát (N ngày), có sử dụng mảng
1 chiều
Hỏi: Chỉ ra phần khai báo mảng
trong phần khi báo của chương
-Khái quát hoá, ta có cú pháp
khái báo biến mảng một chiều
of real;
Var Nhietdo: Kmang1;
b Khai báo (Có hai cách)
+ Kbáo gián tiếp: (sgk)+ Kbáo trực tiếp: (sgk)
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)
Ta có các cách sau:
Trang 63 Y/cầu cho ví dụ khai báo
mảng?
Gọi hs khác: Ý nghĩa của khai
báo bạn vừa viết?
.ArrayReal
.301 phần tử.Real
a[2] p/tử ở vị trí thứ 2 của mảng a
a[i] p/tử ở vị trí i của mảng a
hs trả lời câu hỏi
+ Những khai báo nào là đúng?
+ Biến a trong khai báo trên
chiếm dung lượng bộ nhớ là bao
array[-of boolean;
+ Trả lời: a chiếm 400 byte trong bộ nhớ
Type
Arrayr = array[1 200] of
integer;Arrayr = array[byte] of real;Arrayb = array[-100 100] of
Trang 7IV Hoạt dộng dạy học
1 Hoạt động 1: Kiểm tra bài cũ
1 Trình bày các cách khai báo kiểu mảng
trong NNLT Pascal?
2 Khai báo mảng gồm N số nguyên (N≤500)
(theo 2 cách: trực tiếp và gián tiếp)
Gọi lần lượt hs trả lời
Gọi hs khác nhận xét Nội dung trên bảng
Đánh giá, cho điểm
Hs1: Đứng tại chổ trả lời Hs2: (lên bảng)
Const N = 500;
C1: Var M : array[1 N] of integer;
C2: Type Mnguyen = array[1 N] of
Hoạt động của GV Hoạt động của HS Nội dung ghi bảng
1 Nêu đề bài toán (ghi bảng)
Y/cầu hs xác định In/Output
của bài toán
2 Ở lớp 10 ta đã xây dựng
t/toán cho bài toán này rồi
Y/cầu hs nhắc lại t/toán
3 Y/cầu hs cho biết các việc
Bài 1: Viết CT tạo mảng A gồm
N (N≤100) số nguyên Tính tổng các phần tử của mảng là bội của
một số nguyên dương k cho
trước
Trang 8chính cần sử dụng là gì?
- Y/cầu hs khác lên viết phần
khai báo các biến đó?
5 Tiếp tục y/cầu hs lên viết
phần chương trình tạo giá trị
cho các ptử của mảng A (lưu
thêm gì không? (GV bổ sung)
- Y/cầu hs khác lên viết đoạn
chương trình còn lại?
** Chuẩn hoá lại chương trình
* Chạy thử chương trình với 1
bộ giá trị:
+ Tính tổng
4 suy nghĩ và trả lời
- mảng Abiến đơn: N, k, S
Đứng tại chổ n/xét, (bổ sung nếu sai sót)
6 Chú ý sự dẫn dắt
vấn đề của gv, suy nghĩ và trả lời: Sử dụng cấu trúc lặp For
Write(‘Nhap n = ’); readln(n);
{tao mang}
For i:=1 To n Do begin
write(‘phan tu thu ’,i,’ =’); readln(A[i]);
Hãy đưa các câu lệnh đó vào những vị trí thích hợp trong chương trình bài 1, để có được
chương trình đưa ra số các số dương và số các số âm trong mảng
Trang 10b Các bước tiến hành:
Hoạt động của GV Hoạt động của HS Nội dung ghi bảng
(Treo bảng) chứa Nội dung câu
lệnh cần thêm vào chương trình ở
lệnh vào cho phù hợp để chương
trình đếm được số dương, số âm
3 Y/cầu hs lên hoàn chỉnh lại
chương trình?
** Chuẩn hoá lại chương trình
* Chạy thử chương trình với 1 bộ
- Đếm số dương hoặc đếm số âm
- Số các số dương, số các số âm
2 Chỉ ra vị trí cần bổ
sung và các câu lệnh cần loại bỏ bớt
Write(‘Nhap n = ’); readln(n);
{tao mang}
For i:=1 To n Do begin
write(‘phan tu thu ’,i,’
Else if A[i]<0 Then
am := am + 1;Writeln(duong: 4, am:4);
- Tính tổng các phần tử trong mảng thoả mãn một điều kiện
- Đếm số phần tử trong mảng thoả mãn một điều kiện
2 Câu hỏi, bài tập về nhà
- Cho 2 mảng A, B gồm n (n<=250) số nguyên Hãy viết chương trình xây dựng mảng C[1 n], trong đó C[i] là tổng của 2 phần tử thứ i thuộc mảng A và mảng B (tức là: C[i] = A[i] + B[i])
- Xem trước vídụ 2 và ví dụ 3/trang 57, 58 sgk
Trang 11- Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng
- Củng cố và làm hs hiểu sâu hơn thuật toán sắp xếp đã được học ở lớp 10
2 Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản.
3 Tư duy và thái độ:
-Rèn luyện tác phong, tư duy lập trình, tự giác , tích cực, chủ động và sáng tạo trong tìm kiếm kiến thức
II Đồ dùng dạy học
1 Giáo viên: giáo án, bảng phụ, sgk
2 Học sinh: sgk
III Phương pháp
IV Hoạt động dạy học
1 Hoạt động 1: Kiểm tra bài cũ
Gọi 2 Hs lên bảng trình bày bài tập cho về
nhà tiết trước
Gọi hs khác nhận xét
Đánh giá cho điểm
2 hs lên bảng trình bàyNhận xét
2 Hoạt động 2: Phân tích bài toán trước khi viết chương trình
a Nội dung : Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
b Các bước tiến hành:
1 Nêu bài toán, y/cầu hs xác
định In/Output của bài toán
2 Y/cầu hs trình bày lại thuật
toán sắp xếp tráo đổi (Đã học ở
lớp 10)
3 Y/cầu cả lớp n/cứu lại t/toán
và trả lời các câu hỏi:
- Biến j sẽ nhận các giá trị trong
phạm vi nào? Tương tự với biến
i?
1 Đọc đề và xác định
bài toán
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;
Trang 123 Hoạt động 3: Vận dụng kiểu dữ liệu mảng một chiều để mô tả t/toán trên trong Pascal
2 Yêu cầu từng hs lên bảng viết
từng Nội dung của chương trình
- Khai báo những biến gì?
- Tạo mảng là làm những gì?
- Sắp xếp mảng
Hỏi: Làm thế nào để tráo đổi giá
trị 2 biến cho nhau (a[i] và
+Đưa mảng A đã sắp xếp ra màn hình
2 Lên bảng trình bày từng Nội dung
- mảng A, biến đơn N, i, j
- Nhập sl p/tử của mảng
và nhập giá trị cho các p/tử trong mảng
For i:=1 To n Do begin
write(‘phan tu thu ’,i,’
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 ’);
-Cách phân tích và viết chương trình cho một bài toán.
2 Câu hỏi, bài tập về nhà
-Xem lại các bài tập về mảng đã giải ở tiết 20
-Xem trước bài: Bài thực hành số 3
Trang 13-Bài tập: Cho mảng A gồm N phần tử hãy viết chương trình tạo ra mảng B cũng gồm N phần
tử, trong đó B[i] bằng tổng của i phần tử đầu tiên trong mảng A (B[i]= A[1]+A[2]+ +A[i])
- Hiểu được khái niệm mảng hai chiều
- Hiểu cách khai báo và tham chiếu đến các phần tử của mảng hai chiều
2 Kĩ năng
- Thực hiện được khai báo mảng hai chiều, cách tham chiếu đến một phần tử của mảng hai chiều
- Thực hiện được việc tính toán các phần tử trong mảng hai chiều
3 Tư duy, thái độ
- Xây dựng lòng yêu thích giải toán bằng lập trình trên máy tính
- Luôn muốn cải tiến chương trình nhằm nâng cao hiệu quả chương trình
IV Hoạt động dạy học
1 Hoạt động 1: Kiểm tra bài cũ
Viết CT tạo và in ra màn hình mảng A gồm
n phần tử 10 phần tử Mỗi phần tử là một số
nguyên Cho biết có bao nhiêu phần tử trong
mảng có giá trị bằng số nguyên k
2 Hoạt động 2: Tìm hiểu ý nghĩa của mảng hai chiều.
Đặt vấn đề: Ở tiết trước, chúng ta đã tìm hiểu cách khai báo mảng, cách tạo mảng và truy cập
đến một phần tử trong mảng một chiều Hôm nay, chúng ta sẽ tìm hiểu các vấn đề đó đối với mảng hai chiều
- GV yêu cầu HS xem bảng nhân
- Với cách lưu trữ như vậy, ta
phải khai báo bao nhiêu biến
mảng?
- Xem bảng nhân ở SGK trang 59
- Sử dụng 9 mảng một chiều, mỗi mảng lưu một hàng của bảng
- TL: Khai báo 9 biến mảng một chiều
§11 KIỂU MẢNG (tiết 4)
2 Kiểu mảng hai chiều:
a Xét bài toán: Bảng nhân
(SGK)
Trang 14- Khai báo như vậy có những hạn
tử Như vậy, ta có thể biểu diễn
bảng nhân bằng kiểu dữ liệu
mảng hai chiều
- Yêu cầu HS nhận xét về mảng
hai chiều?
- Nêu khái niệm mảng hai chiều
- Để mô tả kiểu mảng hai chiều,
cần xác định những yếu tố nào?
- TL: Phải khai báo nhiều biến, chương trình phải viết nhiều lệnh để tạo và in giá trị của mảng
- Chú ý lắng nghe
- TL: Nếu coi mỗi hàng của mảng hai chiều là một phần tử thì ta có thể coi mảng hai chiều là mảng một chiều mà mỗi phần tử của nó là mảng một chiều
- HS trả lời
- Tham khảo SGK và trả lời
* Khái niệm mảng hai chiều: (SGK)
- GV đưa ra hai cách khai báo
biến mảng hai chiều
- GV giải thích các thành phần
trong khai báo
- Gọi HS nêu cách khai báo gián
tiếp biến B để lưu trữ bảng nhân
- TL: Tênbiến[chỉ số]
b Khai báo:
♦ C1: Trực tiếp:
Var <tênbiếnmảng>:array [kiểu chỉ số hàng, kiểu chỉ số cột] of <kiểu phần tử>;
♦ C2: Gián tiếp:
Type <tên kiểu mảng> = array[kiểu chỉ số hàng, kiểu chỉ số cột] of <kiểu ptử>;
Var <tên biến mảng>:<tên kiểu mảng>;
Ví dụ:
var A:array [1 50,1 100] of integer;
ii) type mang2c = array [1 9,1 10] of byte;
var B: mang2c;
c.Tham chiếu đến một phần
tử của mảng hai chiều:
Tênbiến[chỉ số hàng,chỉ số cột]
i) A[i,j] → phần tử ở hàng i, cột j
Trang 15- Gọi HS nêu cách tham chiếu
đến số 81 trong bảng nhân?
- TL: B[9,9] = 81
của mảng A
ii) B[9,9] → phần tử ở hàng 9, cột 9 của bảng nhân B
4 Hoạt động 4: Tìm hiểu cách viết chương trình đơn giản.
- GV hướng dẫn HS cách tạo
mảng hai chiều có m hàng, n cột
- GV hướng dẫn HS cách in
mảng hai chiều vừa tạo
- Gọi HS lên bảng sửa lại phần
khai báo và các câu lệnh nhập
cho phù hợp với bài này
- HS lên bảng làm
+ Không khai báo m,n
+ Khai báo thêm biến T
+ Viết hai vòng for của
lệnh tạo và in mảng là:
for i := 1 to 5 do for j := 1 to 7 do
program Tao_in_mang;
var i, j, m, n: integer;
A: array [1 100,1 100] of integer;
for j := 1 to n do write (A[i , j]:4);
T:= 0;
for i := 1 to 5 do for j := 1 to 7 do
T := T + A[i,j];
IV Củng cố bài học
Trang 161 Nội dung đã học
- Cách khai báo biến mảng hai chiều
- Cách tạo mảng hai chiều
- Cách tính toán các phần tử trong mảng hai chiều
2 Câu hỏi, bài tập về nhà : Xem các ví dụ còn lại trong SGK.
Bài tập
I Mục tiêu:
1 Về kiến thức: Củng cố các kiến thức về:
- Các quy tắc kiểu dữ liệu có cấu trúc để thực hiện dữ liệu thực tế
- Kiểu dữ liệu có cấu trúc được xây dựng từ những kiểu dữ liệu cơ sở theo một số cách thức tạo kiểu do ngôn ngữ lập trình Pascal quy định
- Mỗi kiểu dữ liệu có cấu trúc thường hữu ích trong việc giải quyết một số bài tập
- Trong ngôn ngữ Pascal dùng mô tả kiểu dữ liệu mới với từ khoá Type
2 Về kĩ năng:
- Rèn luyện kĩ năng khai báo kiểu dữ liệu có cấu trúc (với Pascal, sử dụng thành thạo các từ khoá Var, Type)
- Sử dụng thành thạo các thao tác vào/ ra và các phép toán trên các thành phần cơ sở
3 Về tư duy và thái độ:
IV Tiến trình hoạt động:
Hoạt động 1: Giải bài tập số 6 trang 79 Sách GK Tin học lớp 11
trong dãy thì tìm số lượng số lẻ
được hay không? - Nếu được
- Trả lời:
Kiểu mảng một chiều:
Var A:array [1 100] of integer;
- Trình bày lên bảng:
TL: Chia hết cho 2.
- Nếu có số lượng số chẵn trong dãy thì tìm số lượng lẻ bằng cách: n -
Chính xác hoá bài 6/tr79
Trang 17Hoạt động của GV Hoạt động của HS Ghi bảng
thì tìm bằng cách nào?
H4: Sử dụng câu lệnh nào để
viết?
- Yêu cầu HS hoàn thành
chương trình của câu a
- Nhận xét, chỉnh sửa bài làm
của HS
HĐTP 2:
H1: Nêu thuật toán kiểm tra 1
số có phải là số nguyên tố hay
không?
- Yêu cầu HS viết chương
trình dựa theo thuật toán
+ Hoạt động 2: Giải bài tập 7 trang 79 Sách GK Tin học lớp 11
- Yêu cầu HS liệt kê 6 số hạng
đầu của dãy Fiponaci
- Gợi ý: Để viết chương trình
này ta cần bao nhiêu biến phụ?
H3: sử dụng câu lệnh nào
trong bài này?
- Yêu cầu HS viết chương
Cấu trúc lệnh: While do và For do
Về nhà làm các bài tập tiếp theo
*************************
Trang 18PPCT: 26-27 Ngày soạn: 10/12/2009
BÀI THỰC HÀNH SỐ 3 I.Mục tiêu:
1.Kiến thức:
- Củng cố lại kiến thức cơ bản về kiểu dữ liệu mảng, cụ thể là mảng một chiều.Qua đó cung
cấp cho học sinh các thuật toán cơ bản thường gặp với kiểu dữ liệu mảng
2.Kĩ năng:
- Rèn luyện cho học sinh một số kĩ năng làm việc với mảng như:
+Khai báo kiểu dữ liệu mảng một chiều,
+ Nhập/ xuất dữ liệu,
+Duyệt qua các phần tử của mảng,
-Qua đó giúp học sinh biết cách giải một số bài toán cơ bản thường gặp như:
+Tính tổng các phần tử thoả mãn điều kiện nào đó,
+Đếm số các phần tử thoả mãn điều kiện nào đó,
+Một số chương trình cài sẵn trong USB hoặc đĩa mềm,
+Máy chiếu hoặc bảng phụ,
-Hướng dẫn học sinh các bước thực hiện một số chương trình
IV.Tiến trình bài dạy:
Hoạt động 1: Kiểm tra bài cũ
Câu hỏi: Có mấy cách khai báo mảng một chiều? Cho ví dụ.
-Lắng nghe câu hỏi
-Học sinh trả lời câu
hỏi Cả lớp theo dõi,
nhận xét
-Nêu câu hỏi
-Gọi học sinh lên trả lời
-Giáo viên nhận xét, cho điểm
Có hai cách khai báo:
a/Khai báo trực tiếp:
Var < tên biến mảng > : array [ kiểu chỉ số ] of < kiểu phần tử>;
b/ Khai báo gián tiếp
Type < tên kiểu mảng > : array [ kiểu chỉ số ] of < kiểu phần tử>;Var < tên biến mảng >: < tên kiểu mảng >;
Trang 19Sau đó đặt câu hỏi cho học sinh trả lời
+ Khai báo uses CRT; có ý nghĩa gì?
+Myarray là tên kiểu dữ liệu hay tên biến?
+Vai trò của nmax và n có
gì khác nhau?
+Những dòng lệnh nào dùng để tạo biến mảng a
-Giáo viên giới thiệu hàm Random cho học sinh.Sau
đố đặt câu hỏi:
+ a[i] := Random(300) – Random (300) có ý nghĩa gì?
+ Lệnh for i:=1 to n do Write ( a[i] : 5);
Có ý nghĩa gì?
+Lệnh For-do cuối cùng thực hiện nhiệm vụ gì?
+Lệnh gán s := s + a[i] ; được thực hiện bao nhiêu lần?
-Khai báo thư viện chương trình con CRT để sử dụng được thủ tục Clrscr;
- Myarray : tên kiểu dữ liệu
- nmax: số phần tử tối đa có thể chứa của biến mảng a,
n: số phần tử thực tế của a
-Random(n): cho số ngẫu nhiên từ
0 đến n-1
Trang 20thử chương trình.
2/HĐTP2: Sửa
chương trính câu a/ để
được chương trình giải
quyết bài toán câu b/
-Quan sát bảng phụ,
theo dõi và trả lời các
câu hỏi của GV
+Nếu a[i] > 0 thì cộng
a[i] vào posi; ngược lại
nếu a[i] < 0 thì cộng a[i]
-Treo bảng phụ câu b/ bài tập 1 sgk/64
là gì?
+Hướng dẫn học sinh
thêm vào vị trí cần thiết để chương trình đếm được số lượng các số âm và các số dương
+Chạy thử chưong trình để học sinh theo dõi kết quả
+posi : đếm số dương trong mảng.+neg: đếm các số âm trong mảng
-Gợi ý , hướng dẫn học sinh thuật toán tìm phần tử
Trang 21-Theo dõi, suy nghĩ để
nắm thuật toán
-Đọc đoạn chương trình
sgk Liên hệ trả lời các
câu hỏi mà GV nêu ra
+Sửa a[i] > a[j] ; thành
-Cho học sinh đọc đoạn chương trình trong bài 2/64sgk
Hỏi HS:
+ Nếu muốn tìm phần tử nhỏ nhất thì cần sửa ở chỗ nào?
+Nếu muốn tìm phần tử lớn nhất với chỉ số lớn nhất của nó thì ta sửa ổ chỗ nào?
-Chạy thử chưong trình cho học sinh theo dõi
-Theo dõi học sinh thực hiện chương trình và xem kết quả
Hoạt động 4: Củng cố
-Nhắc lại cho học sinh một số kiến thức về:
+ Tính tổng các phần tử các phần tử thoả mãn một điều kiện nào đó
+ Đếm số các phần tử thoả mãn một điều kiện nào đó
+ Tìm phần tử lớn nhất/ bé nhất
BTVN- Viết một chương trình nhập một mảng một chiều, đếm số phần tử nhỏ hơn một số k
nào đó
Trang 22- 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
IV Tiến hành dạy học
1 Hoạt động 1: Nhắc lại kiến thức đã học liên quan bài thực hành.
Hỏi 1: Nêu cách khai báo kiểu mảng 1
End;
2 Hoạt động 2: Xác định bài toán và tìm hiểu chương trình.
1 Chiếu đề bài lên bảng.
2 Xác định bài toán
Y/cầu hs xác định dữ liệu
vào/ra của bài toán?
3 Gv minh hoạ bài toán:
- Chiếu thuật toán đã được
liệt kê các bước
4 Tìm hiểu chương trình
1 Quan sát đề và lằng
nghe câu hỏi của gv
2 Trả lời câu hỏi.
- Vào: mảng A
- Ra: mảng A đã sắp xếp
3 Theo dãy số minh
họa, nhớ lại thuật toán sắp xếp đã học
- Nhắc lại thuật toán
- Quan sát, đối chiếu thuật toán liệt kê với CT (SGK)
Đề: 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 n số
CT( SGK/65)
Trang 23- Vai trò của biến i, j trong
CT?
- Đoạn lệnh nào thực hiện
tráo đổi giá trị 2 phần tử liền
3 Hoạt động 3: Chạy CT câu a.
- Yêu cầu hs tự nhập dữ liệu
với CT có sẵn
- 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 thứ j về đến vị trí j
sau mỗi vòng lặp:
For i:= 1 to j-1 do
- Chạy CT, nhập dữ liệu, xm kết quả
- Chỉnh sữa CT thông qua các thông báo lỗi
- Chú ý hiểu rõ thêm về CT
4 Hoạt động 4: Xác định bài toán câu b.
1 Xác định bài toán.
- Y/cầu hs xác I/O bài toán?
- Biến Dem được tăng lên khi
nào?
- Cần đưa câu lệnh tăng Dem
vào chỗ nào trong CT trên?
- Câu lệnh khởi tạo Dem:= 0
được đặt vào vị trí nào trong
+ Trước 3 CL tráo đổi
+ Sau 3 CL tráo đổi
- Sau CL cuối CT nên đưa CL
nào vào để hiển thị giá trị
biến Dem ra màn hình
1 Xác định bài toán:
+ I: mảng a;
+O: mảng a đã sắp xếp,
số lần tráo đổi (Dem);
TL: Khi A[i] > A[i+1]
(tức là biểu thức đk trong CL If đúng)
TL: Trong thân CL If:
trước hoặc sau 3 lệnh tráo đổi
TL: Chọn một trong hai
phương án 3, 4
Đề: Khai báo biến đếm nguyên
Dem và bổ sung vào chương trình những câu lệnh cần thiết để biến Dem tính số lần tráo đổi trong chương trình
Trang 244 Hoạt động 5: Sữa CT câu a để giải bài toán câu b.
- Yêu cầu hs sữa lại CT theo
- Tìm thêm các thuật toán sắp xếp khác tối ưu hơn
- Cho mảng A và mảng B (là mảng A đã được sắp xếp) Hãy in ra chỉ số của các phần
IV Tiến hành dạy học
1 Hoạt động 1: Ôn lại kiến thức chuẩn bị thực hành
Hỏi 1: cách khai báo kiểu mảng 1 chiều.
Hỏi 2: (tuỳ từng lớp)
Tl: có 2 cách
+ gián tiếp:
+ trực tiếp:
2 Hoạt động 2:(13') Nêu đề bài toán và tìm hiểu
1 Ghi đề bài lên bảng.
2 Tìm hiểu đề
Y/cầu hs xác định dữ liệu
vào/ra của bài toán?
3 Gv lấy ví dụ minh hoạ
CT tạo ra mảng B[1 n], trong đó B[i]
là tổng của i phần tử đầu tiên của mảng A
Trang 25Ban đầu: mọi B[i] = 0
Hỏi: mỗi B[i] được tạo
mới bằng bao nhiêu?
Tóm lại: B[i] = A[1] +
b[i]: =0;
for j:=1 to i do b[i]:=
B1: tạo mảng A
B2: xd mảng B theo A
B3: In mảng B
3 Hoạt động 3: (5')Tối ưu chương trình
1 Dựa vào phần phân
Trang 26thuật toán tối ưu Đối với
bài toán này theo phân
trình được cải tiến
{tùy đối tượng hs}
3 Nhìn bảng, tự điều
chỉnh hành vi nhận thức
Đoạn CT cải tiến: Sgk
4 Hoạt động 4: (20') Hs thực hành trên máy theo nhóm
1 Y/cầu hs nhập CT cải
tiếnvào máy
2 Theo dõi quá trình
t/hiện của hs Giải quyết
3 Tự lấy Input để
chạy lại CT
5 Hoạt động 5: Củng cố, uốn nắn những sai sót thường gặp của Hs.
6 Hoạt động 6: Dặn dò: Xem, chuẩn bị trước bài 12: Kiểu xâu
- Biết được một kiểu dự liệu mới, biết được khái niệm kiểu xâu
- Phân biệt được sự giống và khác giữa kiểu mảng với kiểu xâu
- Biết được cách khai báo biến, nhập/xuất dữ liệu, tham chiếu dến từng kí tự của xâu
- Biết các phép toán liên quan đến xâu
2 Về kĩ năng
- Khai báo được biến kiểu xâu trong ngôn ngữ lập trình Pascal
- Sử dụng biến xâu và các phép toán trên xâu để giải quyết một bài toán đơn giản
3 Tư duy, thái độ
- Có thái độ nghiêm túc trong học tập, làm việc khoa học và có hứng thú giải các bài toán bằng lập trình
II Chuẩn bị của GV và HS
Trang 271 GV: Máy vi tính, Máy chiếu để giới thiệu ví dụ.
2 HS: SGK.
III Phương pháp
Thuyết trình, vấn đáp
IV Tiến trình bài học
Hoạt động 1: Kiểm tra bài cũ và khởi động bài mới
Ghi câu hỏi lên bảng
Phát vấn HS tại chỗ
Y/c HS khác nhận xét
Chính xác hóa nội dung
'Viet Nam' là dữ liệu kiểu
Câu hỏi:
Định nghĩa mảng một chiều và cách khai báo
'Viet Nam' có phải là dữ liệu kiểu mảng một chiều không, Vì sao?
Hoạt động 2: Tìm hiểu về dữ liệu kiểu xâu
lượng ký tự của mỗi xâu
Giới thiệu cách tham chiếu
phần tử
Trả lờiNhận xétHình thành khái niệm Xâu
Cho VDTrả lời
Bài 12: KIỂU XÂUKhái niệm (SGK)
Tương tự kiểu mảng
Hoạt động 3: Khai báo dữ liệu kiểu xâu và các thao tác xử lí xâu
- Hỏi: Ý nghĩa của từ
BeginSt:='A' + 'B';
Trang 28Nhắc lại những nội dung đã học:
- Khai báo biến
- Nhập xuất gá trị cho biến xâu
- Tham chiếu từng kí tự trong xâu
- Bước đầu sử dụng được một số hàm, thủ tục thông dụng về xâu
- Có thể cài đặt được một số chương trình đơn giản có sử dụng xâu
3 Tư duy, thái độ
-Rèn luyện tác phong, tư duy lập trình, tự giác , tích cực, chủ động và sáng tạo trong tìm kiếm kiến thức
II Chuẩn bị của GV và HS:
Diễn giải, dùng bảng để ghi lại các chi tiết quan trọng trong ví dụ
IV Tiến trình bài học.
Hoạt động 1:
Tổ chức lớp: Ổn định và kiểm tra sĩ số
Các bước tiến hành:
Kiểm tra bài cũ
- Gọi HS :
Câu 1: Xâu là gì? Cách khai
báo biến xâu
- HS trả lời câu hỏi
Trang 29HĐ GIÁO VIÊN HĐ HỌC SINH NỘI DUNG
giáo viên đưa ra một ví dụ
minh hoạ theo sgk
- Xâu gồm một kí tự trống
được viết như thế nào? số
lượng kí tự là bao nhiêu?
ĐVĐ: Bấy giờ chúng ta sẽ đi
sâu hơn về các chức năng của
các hàm và thủ tục trong xâu
- Ý nghiã của hàm Length(b)?
chú ý quan sát trên bảng
Val(St,x,m) Đổi giá trị xâu
St thành số ghi giá trị vào biến
X, nến không đổi được thì vị trí gây lỗi ghi trong m, nếu đổi thành công thì m = 0
Bảng phụ chứa ví dụ 1Ues crt;
Var a, b: string;
Begin Clrscr;
Write(‘ nhap ho ten thu nhat: ‘); Realn (a);
Write(‘ nhap ho ten thu hai: ‘); Realn (b);
If length(a)>length(b) then Write(a) else writer(b);
RealnEnd
Trang 30HĐ GIÁO VIÊN HĐ HỌC SINH NỘI DUNG
Em nào có thể giải thích câu
TL: cho thấy hàm length() có thể tham chiếu đến từng kí tự
cử một xâu thông qua
vị trí của nó
TL: Xâu b được tạo thành từ một xâu rỗng qua phép ghép xâu
Quan sát trên bảng
Bảng phụ chứa ví dụ 2Bảng phụ chứa ví dụ 3
Bảng phụ chứa ví dụ 4
Bảng phụ chứa ví dụ 5
Hoạt động 3:
Củng cố:
Nhắc lại một số hàm và thủ tục liên quan đến xâu
Nhắc lại cấu trúc câu lệnh
- Các quy tắc kiểu dữ liệu có cấu trúc để thực hiện dữ liệu thực tế
- Kiểu dữ liệu có cấu trúc được xây dựng từ những kiểu dữ liệu cơ sở theo một số cách thức tạo kiểu do ngôn ngữ lập trình Pascal quy định
- Mỗi kiểu dữ liệu có cấu trúc thường hữu ích trong việc giải quyết một số bài tập
- Trong ngôn ngữ Pascal dùng mô tả kiểu dữ liệu mới với từ khoá Type
2 Về kĩ năng:
Trang 31- Rèn luyện kĩ năng khai báo kiểu dữ liệu có cấu trúc (với Pascal, sử dụng thành thạo các từ khoá Var, Type).
- Sử dụng thành thạo các thao tác vào/ ra và các phép toán trên các thành phần cơ sở
3 Về tư duy và thái độ:
H1) Nhắc lại cấu trúc khai báo biến mảng một chiều? hai chiều?
H2) Nhắc lại cách thức khai báo biến xâu?
3 Nội dung
Dẫn dắt vấn đề: Chúng ta đã được tìm hiểu về 2 kiểu dữ liệu có cấu trúc là kiểu mảng và kiểu xâu Trong tiết học hôm nay chúng ta sẽ vận dụng để giải quyết một số bài tập cơ bản
GV: Nhắc lại một số
kiến thức cơ bản: khai
báo mảng? khai báo xâu?
Tham chiếu?
Gv: chuẩn xác hoá câu
trả lời của hs
Hs trả lời câu hỏi
Ghi nhớ lại kiến thức
*Gián tiếp:
Type <tên kiểu mảng> = array[kieu chi
so, kiểu chỉ số cột] of <kiểu phần tử>;Var <tên biến mảng>: <tên kiểu mảng>;
Tham chiếu: Tên_biến[chi số phần tử]
Kiểu xâu:
Khai báo: Var <tên biến xâu>:string[độ
Trang 32Yêu cầu hs tìm hiểu bài
tâp 6 SGK Phân tích và
viết chương trình cho bài
toán này
Gv: Gợi ý cho hs thực
hiện từng bước sau:
+ Phân tích bài toán, mô
tả dữ liệu bài toán
+ trả lời câu hỏi: thế nào
với yêu cầu b: Đếm số
lượng số nguyên tố trong
dãy A
Tìm hiểu bài tập 2:
Gv phân tích, hướng dẫn
Viết chương trình hoàn
chỉnh nếu còn thời gian
Đọc kỹ và phân tích bài toán
Hs xác định bài toán, dự đoán các kiểu dữ liệu cho đối tượng có trong bài toán
đứng tại chổ trả lời câu hỏi
Viết đoạn chương trình dưới sự hướng dẫn của gv
Theo dõi, ghi chép
Hs thực hiện các bước tương tự câu a
đọc kỹ bài tập 2 SGK)
(BT10-theo dõi và ghi nhận
dài lớn nhất của xâu];
hoặc Var <tên biến xâu>:string;
Tham chiếu: tên_biến[chỉ số phần tử];
B Bài tập
Bt1) Bài tập 6 –SGK trang 79Chương trình:
Readln(n);
For i:=1 to n do Begin
Writeln(‘so chan:’,sochan:3,’so le:’,sole:3);
{so nguyen to}
J:=2;
For i:=1 to n doWhile j<= sqrt(a[i]) and (a[i] mod 2
<>0) do j:=j+1;
If j> sqrt(a[i]) then sonto:=sonto+1;Writeln(‘ so nguyen to:’, sonto:3);Readln
End
Bt2) bài tập 10 trang 80-SGKChương trình:
Var s: string[100];
dem,i: integer;
Begin Write(‘nhap xau ki tu S:’);
Readln(S);
Trang 33For i:=1 to length(s) do
If (0<=s[i]) and (s[i]<=9) then dem:=dem+1;
Writeln(‘trong xau S so’,dem:3,’chu so’);
ReadlnEnd
Củng cố: Nắm chắc 2 kiểu dữ liệu có cấu trúc, cách thức khai báo, tham chiếu
Về nhà: Đọc trước bài số 13: Kiểu bản ghi.
• Củng cố cho học sinh những kiến thức về xâu ký tự, đặc biệt là các hàm và thủ tục liên quan
• Nắm được một số thuật toán cơ bản : tạo xâu mới, đếm số lần xuất hiện 1 ký tự…
2- Kỹ năng :
• Khai báo được biến kiểu xâu
• Nhập, xuất giá trị cho biến xâu
• Duyệt qua được tất cả các ký tự của xâu
• Sử dụng được các hàm và thủ tục chuẩn
3- Thái độ : Tự giác, tích cực, chủ động trong thực hành.
II.Chuẩn bị của giáo viên và học sinh:
• GV: - Phòng máy vi tính đã được cài đầy đủ Turbo Pascal.
• Tổ chức trong phòng máy để HS có được kỹ năng cơ bản khi làm việc với kiểu xâu
• HS: SGK, bài tập chuẩn bị sẵn ở nhà
III.Phương pháp dạy học:
Gợi mở, vấn đáp kết hợp hoạt động nhóm
IV.Tiến trình bài dạy:
Hoạt động 1: Tìm hiểu một chương trình, đề xuất phương án cải tiến
Hoạt động của học sinh Hoạt động của giáo viên Nội dung
Trang 34HĐTP1: Tìm hiểu đề bài:
- Giới thiệu nội dung đề bài
lên bảng
- GV diễn giải: Một xâu
được gọi là Palidrom nếu ta
đọc các ký tự từ phải sang trái
sẽ giống khi đọc từ trái sang
Trang 36- Quan sát chương trình, suy
nghĩ, phân tích để hiểu
chương trình
- HS trả lời:
* Kiểm tra 1 xâu có phải
Palidrom hay không?
*In ra: ‘ xau la Palidrom’
‘xau khong la Palidrom’
- HS nhận xét
- Quan sát GV thực hiện
chương trình, nhập dữ liệu và
kết quả của chương trình
Hoạt động 2: Tìm hiểu chương
- Gọi 2 HS trả lời
- Gọi HS khác nhận xét
- GV chính xác
- Chạy chương trình trên máy chủ
để HS kiểm nghiệm suy luận của mình
- Chú ý theo dõi yêu cầu của
GV và trả lời 1 số câu hỏi
-Thực hiện soạn thảo chương
trình vào máy theo yêu cầu
cải tiến của GV
- Nhập dữ liệu vào và thông
* Nhận xét về các cặp ở vị trí đối xứng nhau trong một xâu Palidrom?
* Ký tự thứ i đối xứng với ký tự
vị trí nào?
* Cần phải so sánh bao nhiêu cặp
ký tự trong xâu để biết được xâu
đó là Palidrom?
* Dùng cấu trúc lặp nào để so sánh ?
- Gọi HS trả lời
- GV chính xác
- Yêu cầu HS chi tiết hoá bằng các câu lệnh để có 1 chương trình chạy đúng
- Yêu cầu HS nhập dữ liệu cho sẵn của GV và thông báo kết quả -Xác nhận những bài làm có kết quả đúng và sửa sai cho HS có kết quả sai
Trang 37Hoạt động 2: Rèn luyện kỹ năng lập trình
- Quan sát đề và xác định
những công việc cần thực
hiện
- Nhóm 1:
* Dữ liệu vào, dữ liệu ra
của bài toán?
* Nêu các nhiệm vụ chính
cần thực hiện khi giải
quyết bài toán
* Cấu trúc dữ liệu phải sử
* Ra: Dãy các số ứng với
sự xuất hiện của mỗi loại
ký tự trong xâu
* Nhiệm vụ: Duyệt từ trái
sang phải, thêm 1 đơn vị
-Thực hiện soạn thảo
chương trình vào máy theo
yêu cầu của GV
- Nhập dữ liệu vào và
thông báo kết quả cho GV
HĐTP1: GV giới thiệu đề bài
- GV nêu mục đích của bài toán
- Chia lớp thành 2 nhóm:
* Nhóm 1: Đặt các câu hỏi phân tích.
* Nhóm 2: Trả lời các câu hỏi phân
- Yêu cầu HS nhập dữ liệu cho sẵn của
GV và thông báo kết quả -Xác nhận những bài làm có kết quả đúng và sửa sai cho HS có kết quả sai
Bài 2: SGK trang 73
Hoạt động 3: Rèn luyện kỹ năng tìm kiếm và thay thế sự xuất hiện 1 từ bằng 1 từ khác trong một xâu văn bản
- GV giới thiệu đề bài
- GV hướng dẫn: Tìm vị trí xâu con
“anh” trong xâu st đã cho, xoá xâu con này đi rồi chèn xâu “em” vào vị trí đó
Lặp đi lặp lại điều này cho đến khi
không tìm thấy xâu “anh” cần thay thế
Bài 3: SGK trang 73
Trang 38- HS trả lời
- HS nhận xét
-HS về nhà chuẩn bị
trong xâu st nữa
* Các hàm và thủ tục chuẩn đã biết đối với kiểu xâu có thể tìm được vị trí xuất hiện 1 xâu con, xoá 1 xâu con, chèn 1 xâu con không?
- Gọi HS trả lời
- Gọi HS khác nhận xét
- GV chính xác
- GV cùng HS thống nhất 1 dàn ý chương trình và yêu cầu HS về nhà chi tiết hoá bằng các câu lệnh để có 1 chương trình chạy đúng
Hoạt động 3: củng cố
+ Nắm được một số thuật toán đơn giản liên quan đến xâu ký tự :
Kiểm tra một xâu đối xứng
Tìm tần suất xuất hiện của các ký tự có trong xâu
+ Đọc trước nội dung bài kiểu dữ liệu tệp– thao tác với tệp
- Biết được khái niệm về bản ghi
- Biết được các khai báo bản ghi, gán giá trị, truy cập trường của bản ghi
2 Về kỹ năng:
- Khai báo được kiểu bản ghi, khai báo được biến kiểu bản ghi
- Nhận biết được trường (thuộc tính) của một biến bản ghi
3 Về tư duy và thái độ:
- Biết quy lạ về quen
- Phát triển tư duy logic từ mảng một chiều và kiểu xâu
- Tích cực học tập, lắng nghe bài giảng
- Cẩn thận, chính xác trong lập luận
II)CHUẨN BỊ:
Giáo viên: Giáo án, đồ dùng dạy học, bảng phụ
Học sinh:Sách giáo khoa, sách bài tập, bài cũ, bài mới
III)PHƯƠNG PHÁP: Gợi mở vấn đáp, thuyết trình diễn giải.
IV)TIẾN TRÌNH BÀI HỌC:
1.Hoạt động1: Kiểm tra bài cũ:
Hoạt động của học sinh Hoạt động của giáo viên Ghi bảng
-Gọi HS1 thực hiện H1: Nêu cách khai báo mảng
một chiều? Cho ví dụ?
Trang 392.Hoạt động2: Giới thiệu bài mới.
Hoạt động học sinh Hoạt động của giáo viên Ghi bảng
-Học sinh thực hiện
H1: Cho học sinh quan sát bảng kết quả điểm thi trang 74 SGK
Cho học sinh kết luận
về những thông tin trong đó,
từ đó kết luận kiểu dữ liệu
H2: Chỉnh sửa, giới thiệu về trường, đối tượng, thuộc tính của đối tượng, từ đó đi vào nội dung bài mới
3.Hoạt động3: Khai báo kiểu bản ghi.
Hoạt động của học sinh Hoạt động của giáo viên Ghi bảng
-Chính xác hoá nội dung
H2:Yêu cầu học sinh khai báo kiểu bản ghi, kiểu biến bản ghi cho bảng kết quả thi trang
*Lưu ý: Nếu A là biến kiểu
bản ghi, X là tên trường, để tham chiếu đến trường X
-Chính xác hoá nội dung
2)Gán giá trị:
- Có 2 cách gán trong SGK trang 76
Trang 40-Gv chính xác hoá nội dung.
H2: Dặn dò: Học bài cũ, làm bài tập 1- 10 trang 79-80
Bảng phụ
Họ tênNgày sinhGiới tínhChiều caoCân nặng
+ Biết hai cách phân loại tệp, khái niệm tệp cấu trúc và tệp văn bản
+ Hai thao tác với tệp
+ Biết các bước làm việc với tệp: gắn tên tệp cho biến tệp, mở tệp, đọc/ghi tệp, đóng tệp+ Biết khai báo biến tệp
+ Sử dụng một số hàm và thủ tục chuan rlàm việc với tệp
Kĩ năng:
-Khai báo đúng tệp văn bản
-Sử dụng một số hàm và thủ tục chuẩn làm việc với tệp
Thái độ
Hs thấy được sự cần thiết và tiện lợi của kiểu dữ liệu tệp
II - Đồ dung dạy học:
Chuẩn bị của giáo viên: sách giáo khoa
Chuẩn bị của học sinh: sách giáo khoa
III - Hoạt động dạy học
Hoạt động 1 Đặt vấn đề(3’)
Sau khi chạy chương trình ở các
bài trước ta thấy kết quả in trên
Khi tắt máy hoặc mất điện thì dữ
liệu lưu trữ trong bộ nhớ này sẽ
Trả lời:
RAM
Dữ liệu sẽ mất đi
§14 kiÓu d÷ liÖu tÖp
1 Vai trò của kiểu tệp
Dữ liệu kiểu tệp có những đặc điểm sau: + Được lưu trữ lâu dài ở bộ nhớ ngoài (đĩa từ, CD, ) và không