Giáo án tin học 11 kỳ II soạn theo 5 bước định hướng phát triển năng lực bài học. Các ví dụ được mô tả và viết trong Free Pascal trọn bộ Kỳ II gồm: kiến thức phần magr, phần xâu, phần tệp, phần chương trình con.
Trang 1Bài soạn số 14
Tiết dạy: 20, 21, 22, 23, 24, 25, 26, 27, 28 Ngày soạn: 10, 11, 12, 13/1/2020 Tuần dạy: 20, 21, 22, 23, 24
CHỦ ĐỀ: KIỂU DỮ LIỆU CÓ CẤU TRÚC
PHẦN: KIỂU MẢNG
I Xác định chủ đề bài học
- Tên chủ đề: Kiểu mảng gồm Bài 11: “Kiểu mảng” dạy trong 9 tiết gồm 4 tiết lí thuyết và 5 tiết bài
tập và thực hành Trong khuôn khổ chương trình, chỉ xét mảng một chiều
- Vấn đề cần giải quyết trong bài học này là :
• Biết kiểu mảng là một kiểu dữ liệu có cấu trúc, cần thiết và tiện dụng trong lập trình Vì vậy, cácngôn ngữ lập trình thông dụng đều cho phép người lập trình dễ dàng khai báo kiểu dữ liệu mảng
• Hiểu mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu Khi khai báo mảng một chiều cầnkhai báo số lượng các phẩn tử, kiểu phần tử và cách đánh số các phần tử của mảng
• Truy cập phần tử mảng một chiều: <tên biến mảng >[chỉ số]
• Xây dựng được thuật toán, sử dụng được kiểu mảng một chiều để giải bài toán tìm phần tử lớn nhấtcủa dãy số nguyên
II Xác định chuẩn kiến thức kĩ năng
1 Kiến thức:
•Hiểu khái niệm mảng một chiều
•Hiểu cách khai báo và truy cập đến các phần tử của mảng
VI KHUNG TIẾN TRÌNH DẠY HỌC
Khởi động Tình huống xuất phát Tạo động cơ xuất phát 15 phút
Hình thành kiến
thức
- Khái niệm kiểu dữ liệu mảng - Tìm hiểu kiến thức qua SGK 10 phút
- Khai báo mảng và truy cập đến từng phần tử của mảng trong Pascal
- Nhập dữ liệu cho mảng và tìmphần tử lớn nhất (nhỏ nhất) củamảng
- Cá nhân tham khảo SGK và
- Sắp xếp trong mảng - Cá nhân tham khảo SGK và đưa ra vấn đề 45 phút
- Tìm kiếm phần tử thỏa mãn điều kiện nào đó trong mảng
- Cá nhân tham khảo SGK và
số 4 và các bài tập mở rộng - Thực hiện hoạt động 225 phút
V HƯỚNG DẪN CỤ THỂ TIẾN TRÌNH DẠY – HỌC
Trang 2Tiết 1: Dạy xong hoạt động khởi động và khai báo biến mảng, truy cập đến từng phần tử của mảng
trong Pascal
1 Hoạt động khởi động:
- Mục tiêu: Tạo động cơ để học sinh có nhu cầu tìm hiểu về kiểu mảng
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh có nhu cầu tìm hiểu về kiểu mảng
Nội dung hoạt động
Bài toán: Lập trình nhập vào từ bàn phím nhiệt độ của 7 ngày trong
tuần Sau đó, tính nhiệt độ trung bình của tuần đó và cho biết có bao
nhiêu ngày có nhiệt độ lớn hơn nhiệt độ trung bình của tuần
- Yêu cầu: xác định số lượng và kiểu dữ liệu cho các biến của bài toán
Để đém số ngày có nhiệt độ lớn hơn nhiệt độ trung bình của tuần ta
phải sử dụng câu lệnh nào?
- Hỏi: Khi mở rộng bài toán với nhiệt độ của một tháng, một năm thì
có những hạn chế nào?
- Dẫn dắt: Để khắc phục những 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 một tên và đánh
cho một phần tử một chỉ số Đó là kiểu mảng một chiều Dẫn dắt sang
phần tìm hiểu mảng một chiều
- Suy nghĩ trả lời
2 Hoạt động hình thành kiến thức:
2 1 Khái niệm mảng một chiều
- Mục tiêu: Biết Khái niệm mảng một chiều
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh biết khái niệm mảng một chiều
Nội dung hoạt động
1 Chiếu đề bài và chương trình ví dụ lên bảng
- Hỏi: Khi N lớn thì chương trình trên có những
hạn chế như thế nào?
- Dẫn dắt: Để khắc phục những 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 một tên và đánh
cho một phần tử một chỉ số
2 Yêu cầu học sinh tham khảo sách giáo khoa
và hỏi: Em hiểu như thế nào về mảng một
chiều?
- Hỏi: Để mô tả mảng một chiều, ta cần xác
định những yếu tố nào?
1 Quan sát trên màn hình, suy nghĩ và trả lời
- Phải khai báo quá nhiều biến Chương trìnhphải viết rất dài
2 Nghiên cứu sách giáo khoa để trả lời
- Mảng một chiều là dãy hữu hạn các phần tử cócùng kiểu dữ liệu Các phần tử trong mảng cócùng chung một tên và phân biệt nhau bởi chỉ số
- Để mô tả mảng một chiều cần xác định đượckiểu của các phần tử và cách đánh số các phần tửcủa nó
2.2 Tạo kiểu mảng một chiều và khai báo biến mảng một chiều, truy cập đến từng phần tử của mảng
trong Pascal
- Mục tiêu: Biết khai báo và truy cập đến từng phần tử của kiểu mảng một chiều
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh biết biết khai báo và truy cập đến từng phần tử của kiểu mảng một chiều
Trang 3Nội dung hoạt động
Tiết 2: Nhập dữ liệu cho mảng từ bàn phím và tìm giá trị lớn nhất (nhỏ nhất) trong mảng
2.3 Tìm phần tử lớn nhất của dãy số nguyên
- Mục tiêu: Biết nhập dữ liệu cho mảng và tìm phần tử lớn nhất của kiểu mảng một chiều
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh Biết nhập dữ liệu cho mảng và tìm phần tử lớn nhất của kiểu mảng một chiều
1 Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết cách tạo kiểu dữ liệu mảng
một chiều trong ngôn ngữ lập trình Pascal
- Hỏi: Những khai báo nào đúng?
2 Yêu cầu học sinh cho biết cách khai báo
biến và một ví dụ khai báo một biến mảng
ứng với kiểu dữ liệu vừa tạo
- Gọi học sinh khác, hỏi: Ý nghĩa của lệnh
bạn vừa viết?
- Dung lượng bộ nhớ của biến a đã chiếm là
bao nhiêu?
- Chú ý cho học sinh về cách đặt tên kiểu dữ
liệu và tên biến, tránh nhầm lẫn
3 Giới thiệu cách tham chiếu đến từng phần
tử của mảng một chiều Yêu cầu học sinh lấy
một ví dụ
1 Tham khảo sách giáo khoa và trả lời
- TYPE tên_km= Array[kiểu_cs] Ofkiểu_thành_phần;
- Ví dụ: Type mmc=array[1 100] of integer;
- Tạo một kiểu dữ liệu mới có tên mmc, gồm 100phần tử, có kiểu nguyên
- Quan sát bảng và chọn khai báo đúng
Arrayr=array[1 200] of real;
Arrayb=array[-100 0] of boolean;
2 Tham khảo sách giáo khoa và trả lời
- VAR tên_biến : tên_km;
- Ví dụ: Var a : mmc;
- Khai báo một biến mảng một chiều
- A đã chiếm 200 byte trong bộ nhớ
3 Theo dõi hướng dẫn của GV và độc lập suynghĩ để trả lời
a[1] là phần tử ở vị trí 1 của mảng a
a[i] là phần tử ở vị trí i của mảng a
Trang 4Nội dung hoạt động
Tiết 3: Sắp xếp trong mảng
2.4 Sắp xếp dãy số nguyên bằng thuật toán tráo đổi
- Mục tiêu: Biết nhập viết chương trình sắp xếp cho biến kiểu mảng một chiều
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh Biết nhập viết chương trình sắp xếp cho biến kiểu mảng một chiều
Nội dung hoạt động
- Yêu cầu học sinh xác định bài toán?
- Hỏi: Em hãy nêu thuật toán để giải bài toán trên?
- Hướng dẫn học sinh xây dựng thuật toán
- Yêu cầu học sinh lên bảng thực hiện viết chương
trình
- Đối với lớp A1 đến A4 thì yêu cầu học sinh hoàn
thiện chương trình không hướng dẫn bằng ngôn ngữ
tự nhiên Còn đối với các lớp còn lại, giáo viên
hướng dẫn các bước bằng ngôn ngữ tự nhiên rồi gọi
học sinh hoàn thiện chương trình bằng ngôn ngữ
Pascal theo các bước
-Input: số nguyên N (N≤250) và dãy sốnguyên A1, A2, , An
- Output: Chỉ số và giá trị của một phần tửlớn nhất trong dãy đã cho
- Hs suy nghĩ trả lời
- Tập trung nghe giảng và ghi bài
- Thực hiện viết chương trình
Tiết 4: Tìm kiếm phần tử thỏa mãn
2 5 Tìm kiếm tuần tự
- Mục tiêu: Biết nhập viết chương trình tìm kiếm cho biến kiểu mảng một chiều
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh Biết nhập viết chương trình tìm kiếm cho biến kiểu mảng một chiều
Nội dung hoạt động
- Đưa ra yêu cầu trong thực tế của bài toán tìm kiếm
và phát biểu bài toán
- Yêu cầu học sinh xác định bài toán?
- Hỏi: Em hãy nêu thuật toán để giải bài toán trên?
- Hướng dẫn học sinh xây dựng thuật toán
- Yêu cầu học sinh lên bảng thực hiện viết chương
-Input: số nguyên N (N≤250) và dãy sốnguyên A1, A2, , An , số nguyên K
- Output: Vị trí i mà ai = k hoặc thông báokhông có phần tử nào trong dãy có giá trịbằng k
- Suy nghĩ trả lời
- Trong cuộc sống có rất nhiều việc cần tìm giá trị lớn nhất, ví
dụ như cuối học kì I cần tìm người có điểm trung bình cao nhất
lớp, thấp nhất lớp, tìm người có chiều cao cao nhất lớp, hay
trong xã hội tìm người giàu nhất Việt Nam, Những bài toán
đó đều có thể lập trình cho máy tính làm việc vì vậy để đơn
giản bài toán người ta phát biểu bài toán như sau: Cho số
nguyên dương N (N ≤ 500) và dãy số nguyên A có N phần tử
A1, , AN Tìm phần tử lớn nhất trong dãy A Biết dữ liệu dược
nhập vào từ bàn phím
Yêu cầu học sinh xác định bài toán?
- Hỏi: Em hãy nêu thuật toán để giải bài toán trên?
- Hướng dẫn học sinh xây dựng thuật toán
- Theo thuật toán nếu dãy có nhiều phần tử đạt giá trị lớn nhất
thì chỉ số vt tìm được trong thuật toán sẽ là chỉ số của phần tử
max nào của mảng
- Yêu cầu học sinh lên bảng thực hiện viết chương trình
- Mở rộng bài toán với tìm giá trị nhỏ nhất và đếm số lượng
bằng phần tử lớn nhất, nhỏ nhất
-Input: số nguyên N (N≤250) vàdãy số nguyên A1, A2, , An
- Output: Chỉ số và giá trị củamột phần tử lớn nhất trong dãy
đã cho Hs suy nghĩ trả lời
- Đó là phần tử cuối cùng trongmảng mà bằng max
- Tập trung nghe giảng và ghibài
- Thực hiện viết chương trình
Trang 5- Đối với lớp A1 đến A4 thì yêu cầu học sinh hoàn
thiện chương trình không hướng dẫn bằng ngôn ngữ
tự nhiên Còn đối với các lớp còn lại, giáo viên
hướng dẫn các bước bằng ngôn ngữ tự nhiên rồi gọi
học sinh hoàn thiện chương trình bằng ngôn ngữ
Pascal theo các bước
- Tập trung nghe giảng và ghi bài
- Thực hiện viết chương trình
Tiết 5: Bài tập và thực hành 3
2.6 Bài thực hành số 3:
2.6.1 Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu mảng một chiều qua chương trình có sẵn
1 Tìm hiểu chương trình ở câu a, sách giáo
khoa, trang 63 và chạy thử chương trình
- Chiếu chương trình lên bảng
- Hỏi: Khai báo Uses CRT; có ý nghĩa gì?
- Hỏi: Myarray là tên kiểu dữ liệu hay tên biến?
- Hỏi: Vai trò của nmax và n có gì khác nhau?
- Hỏi: Những dòng lệnh nào dùng để tạo biến
- Thực hiện lại chương trình lần cuối để học
sinh thấy kết quả
2 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
- Chiếu lên màn hình các lệnh cần thêm vào
chương trình ở câu a
- Hỏi: Ý nghĩa của biến Posi và neg?
- Hỏi: Chức năng của lệnh?
If a[i]>0 then posi:=posi+1
else if a[i]<0 then neg:=neg+1;
- Yêu cầu học sinh thêm vào vị trí cần thiết để
chương trình đếm được số
- Yêu cầu học sinh gõ nội dung và lưu lại với
tên caub.pas Thực hiện chương trình và báo
cáo kết quả
1 Quan sát, chú ý và trả lời
- Khai báo thư viện chương trình con Crt để sửdụng được thủ tục Clrscr;
- Tên kiểu dữ liệu
- nmax là số phần tử tối đa có thể chứa của biếnmảng a n là số phần tử thực tế của a
- Lệnh khai báo kiểu và khai báo biến
- Quan sát chương trình thực hiện và kết quả trênmàn hình
- Lệnh sinh ngẫu nhíên giá trị cho mảng a từ -299đến 299
- In ra màn hình giá trị của từng phần tử trongmảng a
- Cộng các phần tử chia hết cho k
- Có số lần đúng bằng số phần tử a[i] chia hết k
- Quan sát GV thực hiện chương trình và kết quảtrên màn hình
2 Quan sát và chú ý theo dõi các câu hỏi của GV:
- Quan sát các lệnh và suy nghĩ vị trí cần sửa trongchương trình câu a
- Dùng để lưu số lượng đếm được
- Đếm số dương hoặc đếm số âm
- Chỉ ra vị trí cần thêm vào trong chương trình
- Lưu chương trình Thực hiện chương trình vàthông báo kết quả
Tiết 6: Bài tập và thực hành 3
2.6.1 Bài tập tự viết
1 Viết chương trình nhập vào từ bàn phím số nguyên
- Viết đoạn chương trình nhập N và dãy A
- Cho i chạy từ 1 đến N rồi dùng lệnh Writehiển thị A[i]
Trang 6B1: Nhập N
B2: Cho i: 1 N làm
Cv1: thông báo nhập phần tử thứ i
Cv2: Nhập A[i]
- Hiển thị mảng A lên màn hình ta làm như thế nào?
- Hs nhớ lại thuật toán tìm max, tìm min làm tiếp
- Đối với các lớp từ A1 đến A4 thì không hướng dẫn
các bước bằng lời, các lớp còn lại hướng dẫn chi tiết
bằng lời rồi yêu cầu học sinh chuyển qua chương trình
Pascal
- Lớp A1, A3 yêu cầu học sinh tìm Min, Max ngay
trong quá trình nhập dữ liệu bằng cách gán max = giá
trị nhỏ nhất của tập số thực và Min = giá trị lớn nhất
1 Gợi ý cho học sinh thuật toán sắp xếp tăng dần
- Lấy một ví dụ thực tiễn: Người mù sắp xếp một
dãy các viên bi theo kích thước không giảm
- Yêu cầu: Vạch ra các bước để sắp xếp các phần
tử của một mảng không giảm
2 Tìm hiểu chương trình ví dụ, sách giáo khoa,
trang 65
- Chiếu chương trình ví dụ lên bảng
- Hỏi: Vai trò của biến i, j trong chương trình? mỗi
vòng lặp For trong đoạn chương trình sắp xếp có
ý nghĩa gì?
- Hỏi: Ba lệnh tg:=a[i]; a[i]:=a[i+1]; a[i+1]:=tg;
có ý nghĩa gì?
- Thực hiện chương trình, nhập dữ liệu để học
sinh thấy kết quả chương trình
- Hỏi: Chương trình làm công việc gì?
3 Sửa chương trình để giải quyết bài toán ở câu b
- Đặt yêu cầu mới: Khai báo thêm biến nguyên
Dem và bổ sung vào chương trình đoạn lệnh cần
thiết để biến Dem tính số lần thực hiện tráo đổi
trong thuật toán In kết quả tìm được ra màn hình
- Hỏi: Đoạn chương trình nào dùng để thực hiện
tráo đổi giá trị?
- Yêu cầu hoc sinh viết lệnh để đếm số lần tráo
đổi
- Hỏi: Lệnh này được viết ở vị trí nào trong
chương trình?
- Yêu cầu học sinh soạn chương trình vào máy
- Yêu cầu học sinh nhập dữ liệu vào của GV và
thông báo kết quả
- Đánh giá kết quả của học sinh
1 Chú ý theo dõi những dẫn dắt của GV để trảlời câu hỏi
- Lần lượt lấy từng phần tử từ trái qua phải
- Cứ mỗi phần tử ta đem so sánh lần lượt vớicác phần tử đứng bên phải của nó
- Nếu nhỏ hơn thì đổi chỗ
2 Quan sát chương trình, suy nghĩ câu hỏi vàtrả lời
- Quan sát GV thực hiện chương trình
- Chương trình sắp xếp dãy số thao thứ tựkhông giảm
3 Quan sát yêu cầu mới, chú ý định hướng giảiquyết của GV
tg:=a[i]; a[i]:=a[i+1]; a[i+1]:=tg;
- Dem := Dem+1;
- Ngay sau đoạn lệnh tráo đổi
- Soạn chương trình vào máy, thực hiện chươngtrình và thông báo kết quả
- Nhập dữ liệu theo yêu cầu của GV, thực hiện chương trình và thông báo kết quả sau khi thực hiện
Trang 7HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA HS
1 Xác định bài toán
- Chiếu đề bài lên bảng
- Yêu cầu: Xác định dữ liệu vào, dữ liệu ra?
- Gợi ý để học sinh đề xuất thuật toán thô
2 Giới thiệu chương trình chưa cải tiến
- Chiếu chương trình diễn đạt thuật toán
- Thực hiện chương trình để học sinh biết thời gian
thực hiện chương trình và kết quả của chương trình
- Hỏi: Trong chương trình phải thực hiện bao nhiêu
phép cộng?
- Hỏi: Có cách nào để cải tiến?
- Lệnh này được thay lệnh nào trong chương trình?
Viết ở vị trí nào?
3 Yêu cầu: Viết chương trình hoàn thiện
4 Tiểu kết: Cùng một bài toán, có nhiều cách giải
quyết khác nhau Người lập trình cần chọn cách sao
cho máy thực hiện nhanh nhất
1 Quan sát đề bài và trả lời câu hỏi
- Vào: Mảng A gồm n phần tử
- Ra: Mảng B gồm n phần tử
- Tại vị trí i ta tính tổng giá trị các phần tử
từ 1 đến i
2 Quan sát chương trình trên bảng
- Quan sát GV thực hiện, nhận xét về thờigian thực hiện chương trình
- Phải thực hiện n(n+1)/2 phép cộng
- Để tính bước thứ i, ta sử dụng kết quả đãtính ở bước thứ i-1
B[i]:=B[i-1]+A[i];
- Thay đoạn lệnhFor j:=1 to i do B[i]:=B[i]+A[j];
3 Soạn chương trình vào máy, thực hiệnchương trình và thông báo kết quả
- Nhận xét về thời gian thực hiện củachương trình này so với chương trình trướckhi cải tiến
Tiết 9: Bài tập - Rèn luyện kĩ năng viết chương trình
1 Đưa bài toán 1: Cho số nguyên dương N (1 < N <
500) và dãy số nguyên A gồm N phần tử A1, , AN
Hãy lập trình
a Nhập vào từ bàn phím N và dãy A
b Đếm và hiển thị lên màn hình số lượng các số
dương của dãy A
c Tính tổng và hiển thị lên màn hình số lượng các số
chia hết cho 2 của dãy A
- Yêu cầu học sinh xác định bài toán
- Yêu cầu: Xác định dữ liệu vào, dữ liệu ra?
- Gợi ý để học sinh đề xuất thuật toán thô
- Yêu cầu: Viết chương trình hoàn thiện
- Tiểu kết: Cùng một bài toán, có nhiều cách giải quyết
khác nhau Người lập trình cần chọn cách sao cho máy
thực hiện nhanh nhất Khi nhập dữ liệu, chúng ta có
thể gộp các công việc tính toán, tìm kiếm trên mảng
2 Đưa bài toán 2: Cho số nguyên dương N (1 < N <
500) và dãy số nguyên A gồm N phần tử A1, , AN
Hãy lập trình
a Nhập vào từ bàn phím N và dãy A
b Sắp xếp dãy A theo thứ tự không giảm
c Hiển thị lên màn hình số lượng số có giá trị lớn
nhất, số lượng số có giá trị nhỏ nhất trong dãy A
- Yêu cầu học sinh xác định bài toán
- Yêu cầu: Xác định dữ liệu vào, dữ liệu ra?
- Gợi ý để học sinh đề xuất thuật toán thô
- Yêu cầu: Viết chương trình hoàn thiện
1 Quan sát đề bài và trả lời câu hỏi
- Viết chương trình trên giấy
- Soạn chương trình vào máy, thực hiệnchương trình và thông báo kết quả
- Nhận xét về thời gian thực hiện củachương trình này so với chương trình trướckhi cải tiến
- Suy nghĩ làm bài
RÚT KINH NGHIỆM GIỜ DẠY
Trang 8Yên Dũng, ngày tháng năm 2020
Duyệt của tổ bộ môn
Trang 9Bài soạn số 15 Ngày soạn: 18/3/2020
KIỂM TRA MỘT TIẾT
I Xác định chủ đề bài học
- Đánh giá kiến thức đã học bài: Kiểu mảng và các kiến thức đã học trong học kì I
II Xác định chuẩn kiến thức kĩ năng
1 Kiến thức:
•Hiểu khái niệm mảng một chiều
•Hiểu cách khai báo và truy cập đến các phần tử của mảng
- Năng lực nhận biết và giải quyết vấn đề, làm quen với dữ liệu có cấu trúc.
III MA TRẬN ĐỀ KIỂM TRA:
Bài học
Các mức độ nhận thức
Tự luận
Trắc nghiệm
Tự luận
Trắc nghiệm
Tự luận
Trắc nghiệm
Tự luận
Trắc nghiệm
Chủ đề: Kiểu mảng và
biến có chỉ số
7 câu(2,8đ)
5 câu(2,0 đ)
2 câu(3điểm)
3 câu(1,2điểm)
1 câu(1điểm)
IV ĐỀ KIỂM TRA:
I Trắc nghiệm: Em hãy chọn một đáp án đúng nhất rồi điền vào bảng phía dưới (5 điểm)
Câu 1 Thế nào là khai báo biến mảng gián tiếp?
Câu 2 Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất?
C Dùng trong vòng lặp với mảng để quản lí kích thước của mảng; D Dùng để truy cập đến một phần
tử bất kì trong mảng;
Câu 3 Cho khai báo mảng như sau: Var M : array[0 10] of integer ;
Phương án nào dưới đây gọi phần tử thứ 10 của mảng?
Câu 4 Trong ngôn ngữ lập trình Pascal, với khai báo như sau :
Type mang = ARRAY[1 100] of integer ;
Var a, b : mang ;
c : array[1 100] of integer ;
Câu lệnh nào dưới đây là hợp lệ?
Câu 5 Trong ngôn ngữ lập trình Turbo Pascal, về mặt cú pháp câu lệnh nào sau đây là đúng?
char;
Trang 10C Type mang1c=array[1 100] of char; D Type 1chieu=array[1 100] of char; Câu 6 Trong ngôn ngữ lập trình Pascal, để khởi tạo cơ chế sinh số ngẫu nhiên, ta dùng lệnh:
Câu 7 Trong Pascal, phương án nào dưới đây là khai báo mảng hợp lệ?
Câu 9 Phát biểu nào sau đây là đúng?
A Có thể dùng bất cứ một kiểu dữ liệu chuẩn nào để đánh chỉ số cho các phần tử của mảng một
chiều
B Mảng một chiều là một dãy hữu hạn các số nguyên.
C Khi xây dựng kiểu mảng một chiều, người lập trình không cần khai báo kiểu dữ liệu của phần tử
D của mảng
D Mảng một chiều là một dãy hữu hạn các phần tử cùng tên và cùng kiểu dữ liệu
Câu 10 Phát biểu nào dưới đây về kiểu mảng là phù hợp?
Câu 11 Cho khai báo sau a : array[0 16] of integer ; Câu lệnh nào dưới đây sẽ in ra tất cả các phần tử
của mảng a?
Câu 12 Cho khai báo mảng Var a : array[0 50] of real ; và đoạn chương trình như sau:
k := 0 ;
for i := 1 to 50 do if a[i] > a[k] then k := i ;
Đoạn chương trình trên thực hiện công việc gì dưới đây?
Câu 13 Phát biểu nào sau đây về mảng là không chính xác?
A Chỉ số của mảng không nhất thiết bắt đầu từ 1; B Độ dài tối đa của mảng là 255;
Câu 14 Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau thực hiện việc nào trong các việc sau
Câu 15 Trong ngôn ngữ lập trình Pascal, để đổi giá trị hai phần tử mảng một chiều A tại hai vị trí i và
j , ta viết lệnh như sau :
A Tag := A[i]; A[i] := A[j]; A[j] := Tag; B A[i] := Tag; A[i] := A[j]; A[j] := Tag;
Trang 11C Tag := A[i]; A[j] := A[i]; A[j] := Tag; D Tag := A[i]; A[i] := A[j]; Tag := A[j];
Trả lời trắc nghiệm
II Tự luận (5 điểm)
Cho số nguyên dương N ( 1 ≤ N ≤ 500) và dãy số nguyên A có N phần tử A1, …, AN Hãy lập trình:
a Nhập vào từ bàn phím N và dãy A
b Hiển thị dãy A vừa nhập lên màn hình
c Tính trung bình cộng các số chẵn của dãy A
1
0,5
(Lưu ý: Nếu học sinh làm theo các khác đúng vẫn cho điểm)
VI Rút kinh nghiệm giờ dạy
Trang 12
Yên Dũng, ngày tháng năm 2020
Duyệt của tổ bộ môn
Bài soạn số 16
Tiết dạy: 30, 31, 32, 33
Ngày soạn: 2/5/2020 Tuần dạy: 28, 29
CHỦ ĐỀ: KIỂU DỮ LIỆU CÓ CẤU TRÚC
KIỂU DỮ LIỆ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 ký tự với xâu ký tự
- Biết được cách khai báo biến, nhập xuất dữ liệu, tham chiếu đến từng ký tự của xâu
- Biết các phép toán liên quan xâu
VI KHUNG TIẾN TRÌNH DẠY HỌC
- Chủ đề này dạy trong 1 tiết học 45 phút
Khởi động Tình huống xuất phát Tạo động cơ xuất phát 10 phút
Hình thành kiến
thức
- Khái niệm kiểu dữ liệu xâu - Tìm hiểu kiến thức qua SGK 10 phút
- Các phép toán trên xâu: So
- Các thủ tục trên xâu - Cá nhân tham khảo SGK và đưa ra vấn đề 15 phút
- Các hàm trên xâu - Cá nhân tham khảo SGK và đưa ra vấn đề 10 phút
- Xâu trong Pascal - Cá nhân tham khảo SGK và đưa ra vấn đề 35 phútLuyện tập – Vận
dụng- Tìm tòi
mở rộng
- Làm bài tập áp dụng phần ví
dụ và bài tập thực hành số 5 - Thực hiện hoạt động 90 phút
Tiết 1: Dạy xong hoạt động khởi động và khái niệm xâu, các phép ghép xâu, so sánh xâu.
V HƯỚNG DẪN CỤ THỂ TIẾN TRÌNH DẠY – HỌC
1 Hoạt động khởi động:
Trang 13- Mục tiêu: Tạo động cơ để học sinh có nhu cầu tìm hiểu về kiểu xâu
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh có nhu cầu tìm hiểu về kiểu xâu
Nội dung hoạt động
2 Hoạt động hình thành kiến thức:
2 1 Khái niệm xâu
- Mục tiêu: Biết khái niệm xâu và bản chất của xâu là mảng một chiều các kí tự
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh biết khái niệm xâu
- Chiếu đề bài của bài toán đặt vấn đề: Viết
chương trình nhập họ tên của 30 học sinh
trong lớp
- Hỏi: Ta sẽ chọn kiểu dữ liệu như thế nào?
Khai báo biến như thế nào?
- Yêu cầu học sinh: Viết đoạn lệnh để nhập và
xuất dữ liệu cho từng phần tử
- Hỏi: Có những khó khăn gì gặp phải?
- Dẫn dắt: Cần có một kiểu dữ liệu mới cho
phép ta nhập/xuất dữ liệu cho xâu bằng một
Trang 14Nội dung hoạt động
2 2 Các phép toán trên xâu
- Mục tiêu: Biết ghép xâu và so sánh xâu
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh biết kết quả của ghép xâu và so sánh xâu
1 Tìm hiểu về kiểu xâu
- Chiếu lên bảng cách khai báo biến xâu trong ngôn ngữ
lập trình Pascal
- Hỏi: Ý nghĩa của từ String, [n]
- Hỏi: Khi khai báo không có [n] thì số lượng ký tự tối
đa là bao nhiêu?
- Yêu cầu học sinh cho ví dụ một xâu ký tự
- Hỏi: Xâu có bao nhiêu ký tự?
- Diễn giải: Mỗi ký tự được gọi là một phần tử của xâu
Số lượng ký tự trong xâu được gọi là độ dài của xâu
- Hỏi: Xâu chỉ gồm một ký tự trống được viết như thế
nào? số lượng ký tự bao nhiêu?
- Hỏi: Xâu rỗng được viết như thế nào? số lượng ký tự
- Yêu cầu học sinh tìm ví dụ cụ thể
- Hỏi: Khi viết lệnh nhập/xuất dữ liệu cho biến xâu, có
gì khác so với biến mảng các ký tự
- Dẫn dắt: Ta có thể sử dụng lệnh gán để nhập giá trị
cho biến xâu Cấu trúc chung:
tên_biến_xâu:=hằng_xâu;
- Yêu cầu học sinh tìm một ví dụ cụ thể
3 Tham chiếu đến từng ký tự của xâu
- Giới thiệu cấu trúc chung
- Hỏi: Có gì giống và khác nhau so với cách tham chiếu
đến từng phần tử của mảng
- Yêu cầu học sinh tìm một ví dụ
4 Kiểm tra kiến thức
- Chiếu nội dung bài tập kiểm tra kiến thức:
Var st:string[1]; c:char;
Begin
c:=st[1]; {1}
c:=st; {2}
End
- Hỏi: Trong hai lệnh {1} và {2}, lệnh nào đúng?
- Thực hiện chương trình để học sinh tự kiểm nghiệm
suy luận
1 Quan sát cấu trúc khai báo và thamkhảo sách giáo khoa
- String là tên kiểu xâu
- [n] là giá trị quy định số lượng ký tự tối
đa mà biến xâu có thể chứa
- Số ký tự tối đa là 255
- Ví dụ: ‘HA NOI’
- Xâu có 6 ký tự, dấu cách là một ký tự
- Ký hiệu của xâu gồm một ký tự trống là
‘ ’ Xâu này có độ dài là 1
- Ký hiệu của xâu rỗng là ‘ ’ Xâu này
có độ dài là 0
2 Quan sát bảng để trả lời
- Ví dụ: Readln(hoten);
- Ví dụ: Write(‘Ho ten ’,hoten);
- Viết một lệnh nhập nguyên cho cả xâu.Viết lệnh gọn hơn, chương trình gọn
- Ví dụ: St:= ‘HA NOI’;
3 Quan sát và suy nghĩ để trả lời
- Giống cấu trúc chung khi tham chiếutên biến[chỉ số]
Trang 15Nội dung hoạt động
2 3 Các thủ tục trên xâu
- Mục tiêu: Biết thủ tục xóa và chèn xâu
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
2 Tìm hiểu chức năng của một số phép toán trong
kiểu xâu qua một số ví dụ
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết
quả
- Yêu cầu học sinh tìm một số ví dụ khác
- Hỏi: Chức năng của phép cộng ?
- Giới thiệu thêm một số ví dụ khác và yêu cầu
học sinh cho biết kết quả
st:= ‘Ha’ +‘Noi’;
st:= ‘Ha ’+‘Noi’;
st:= ‘ ’ + ‘Ha Noi’;
st:= ‘Ha Noi’ + ‘Việt’ + ‘Nam’;
- Chiếu chương trình ví dụ về phép so sánh xâu
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết
quả
- Hỏi: Còn các phép so sánh nào nữa?
- Chiếu các ví dụ về các phép so sánh và yêu cầu
học sinh cho biết kết quả của các phép so sánh đó
‘AB’ < ‘ABC’
‘AC’ < ‘ABC’
- Lưu ý cho học sinh: Một xâu có độ dài nhỏ hơn
có thể lớn hơn (>) xâu có độ dài lớn
1 Chú ý theo dõi, suy nghĩ và trả lời
- Kết quả cho ta: st = ‘HA NOI’
- Quan sát kết quả chương trình
- Ví dụ: st:= ‘HA NOI’ + ‘Co ho GUOM’ Kếtquả:
st = ‘HA NOICo ho GUOM’
- Là phép toán nối xâu thứ hai vào cuối xâu thứnhất
Trang 16Nội dung hoạt động
- Giới thiệu cấu trúc chung của thủ tục delete(st,vt,n);
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết quả
- Hỏi chức năng của thủ tục delete();
- Thay lệnh gán st:= ‘HaNoi’; và thủ tục xóa bởi các
lệnh sau và hỏi kết quả in ra màn hình
st:=’abc’; Delete(st,1,5);
st:=’abc’; Delete(st,5,2);
st:=’abc’; Delete(st,1,0);
- Chiếu bài tập ứng dụng: Viết chương trình nhập một
xâu và xoá đi các dấu cách thừa ở đầu xâu
- Giới thiệu cấu trúc chung của thủ tục Insert(st1,st2,vt);
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết quả
- Hỏi chức năng của thủ tục insert();
- Thay lệnh gán st2:=‘HaNoi’; và thủ tục chèn bởi các
lệnh như sau và hỏi kết quả:
st=’Hai’
- Quan sát kết quả của chương trình
- Thủ tục thực hiện việc xóa đi trongbiến xâu st gồm n ký tự, bắt đầu từ vịtrí vt
while st[1]= ‘ ’ do delete(st,1,1);writeln(st);
- Kết quả st2=’Ha Noi’
- Quan sát kết quả của chương trình
- Thủ tục thực hiện việc chèn xâu st1vào trong biến xâu st2 bắt đầu tại vị trívt
st2= ‘efabc’;
st2= ‘abcef’;
Tiết 2: Các hàm trên xâu và xâu trong Pascal
2 4 Các hàm trên xâu
- Mục tiêu: Biết các hàm trên xâu
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh biết cú pháp và áp dụng các hàm
Nội dung hoạt động
1 Giới thiệu cấu trúc chung của hàm length(st) lên
1 Quan sát cấu trúc chung
- Length: là tên hàm, có nghĩa là độ dài,st: là một biểu thức xâu ký tự
- Quan sát chương trình để dự tính kết quả
- Kết quả là: 6
- Quan sát kết quả của chương trình
Trang 17End
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết quả
- Hỏi: Chức năng của hàm length() là gì?
- Chiếu đề bài tập ứng dụng: Viết chương trình nhập
một xâu, in ra màn hình số ký tự ‘a’ có trong xâu
2 Giới thiệu cấu trúc chung của hàm Upcase(ch)
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết quả
- Hỏi: Chức năng của hàm upcase()?
- Chiếu bài tập ứng dụng: Viết chương trình nhập
một xâu, in ra màn hình xâu đó dạng in hoa
3 Giới thiệu cấu trúc chung của hàm Pos(s1,s2)
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết quả
- Hỏi: Chức năng của hàm pos?
- Thay tham số của hàm Pos trong chương trình bằng
Pos(‘k’, ‘abc’) Hỏi kết quả của hàm bằng bao
nhiêu?
- Chiếu bài tập ứng dụng: Viết chương trình nhập
vào một xâu st Xét xem trong xâu có dấu cách hay
không?
- Hỏi: Có cách giải nào khác?
4 Giới thiệu cấu trúc chung của hàm copy(st,vt,n)
- Hỏi: Kết quả của chương trình in ra màn hình?
- Thực hiện chương trình để học sinh thấy kết quả
- Hỏi: Chức năng của hàm copy?
- Thay các tham số của hàm copy trong chương trình
ví dụ trên như sau và hỏi kết quả in ra màn hình:
Copy(‘abc’,1,5)
Copy(‘abc’,5,2)
Copy(‘abc’,1,0)
- Thực hiện chương trình để học sinh thấy kết quả
- Hàm cho số lượng ký tự của xâu st
2 Quan sát cấu trúc chung của hàmUpcase
- Quan sát chương trình để dự tính kết quả
- Kết quả là: H
- Quan sát kết quả của chương trình
- Cho giá trị là chữ cái in hoa của ch
Var st:string;
Beginreadln(st);
For i:=1 to length(st) do write(upcase(st[i]));
- Quan sát kết quả của chương trình
- Hàm cho giá tri là một số nguyên là vị trícủa xâu st2 trong xâu st2
- Bằng không 0
Var st:string;
Beginreadln(st);
if pos(‘ ’, st)<>0 then write(‘Co’)else write(‘Khong’);
- Quan sát chương trình để dự tính kết quả
- Kết quả là: ‘i ta’
- Quan sát kết quả của chương trình
- Hàm cho giá trị là một xâu ký tự đượclấy trong xâu st, gồm n ký tự bắt đầu tại vịtrí vt
Cho giá trị là: ‘abc’
Cho giá trị là xâu rỗngCho giá trị là xâu rỗng
- Quan sát kết quả của chương trình để kiểm nghiệm suy luận
2.5 Xâu trong Pascal
- Mục tiêu: Biết khai báo biến xâu, truy cập đến từng phần tử trên xâu, nhập dữ liệu từ bàn phím choxâu
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
Trang 18- Sản phẩm: học sinh biết khai báo biến xâu, truy cập đến từng phần tử trên xâu, nhập dữ liệu từ bànphím cho xâu
Nội dung hoạt động
- Đặt vấn đề cách khai báo biến trong Pascal
- Nêu cách khai báo kiểu xâu
- ĐVĐ kiểu xâu thực chất là kiểu mảng
Vậy để truy cập đến từng phần tử của xâu ta truy cập như mảng một
chiều Nêu qui ước
- Lấy ví dụ: Nhập vào từ bàn phím họ tên của một bạn trong lớp Sau
đó hiển thị lên màn hình chữ cái đầu trong tên bạn đó
HD:
b1: Khai báo biến
B2: Nhập giá trị của xâu vào từ bàn phím
B3: n độ dài của xâu; i n
B4: Chừng nào mà S[i] <> dấu cách và i <> 0 thì i i-1
B5: Hiển thị lên màn hình S[i]
- Nêu hiểu biết
- Mục tiêu: Biết vận dụng các hàm và thủ tục trên xâu vào làm bài tập
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh biết khai báo biến xâu, truy cập đến từng phần tử trên xâu, nhập dữ liệu từ bànphím cho xâu, xử lí các phép toán trên xâu
Nội dung hoạt động
1 Tìm hiểu đề bài
- Cho xâu S và xâu S1 được nhập từ bàn phím
Hãy đưa ra màn hình:
a Xâu có độ dài dài hơn, nếu hai xâu có độ dài
bằng nhau thì đưa ra xâu nập trước
b Xxâu S bằng cách loại bỏ hết dấu cách trong S
B4: Cho i : 1 đến L kiểm tra
+ Nếu S[i] = ‘ ’ thì xóa phần tử thứ i trong S
B5: hiển thị giá trị S lên màn hình
1 Quan sát, đọc kỹ đề
Suy nghĩ để viết chương trình
Quan sát đề và xác định những công việccần thực hiện Độc lập soạn chương trìnhvào máy
- Tìm test
- Nhập dữ liệu của GV và thực hiện chươngtrình để xem kết quả
- Thông báo kết quả cho GV
Tiết 4: Bài tập áp dụng và bài tập và thực hành 5
2.6 Rèn luyện kĩ năng lập trình
- Mục tiêu: Biết vận dụng các hàm và thủ tục trên xâu vào làm bài tập
- Phương pháp, kĩ thuật dạy học: nêu vấn đề, cá nhân và thảo luận nhóm
- Phương tiện dạy học: SGK
- Sản phẩm: học sinh biết khai báo biến xâu, truy cập đến từng phần tử trên xâu, nhập dữ liệu từ bànphím cho xâu, xử lí các phép toán trên xâu
Trang 19Nội dung hoạt động
1 Tìm hiểu đề bài
- Giới thiệu nội dung đề bài lên bảng
- 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 phải
- Yêu cầu học sinh cho hai ví dụ về xâu
palidrom và một ví dụ không phải là
palidrom
2 Tìm hiểu chương trình gợi ý
- Chiếu chương trình lên bảng
- Hỏi: Chương trình sau đây có chức năng
làm gì? Kết quả in ra màn hình như thế nào?
- Thực hiện chương trình để học sinh kiểm
nghiệm suy luận của mình
1 Quan sát, đọc kỹ đề
Phải: 12321 abccbaKhông phải: abcdea
2 Quan sát chương trình, suy nghĩ phân tích đểhiểu chương trình
- Kiểm tra một xâu có phải Palidrom hay không?
- In ra: ‘xau la palidrom’
‘Xau khong la palidrom’
- 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
V RÚT KINH NGHIỆM GIỜ DẠY
Yên Dũng, ngày tháng năm 2019
Duyệt của tổ trưởng bộ môn
Bài soạn số 17
Tiết dạy: 34, 35, 36
Ngày soạn: 10/05/2020 Tuần dạy: 29, 30, 31
CHỦ ĐỀ: TỆP VÀ CÁC THAO TÁC VỚI TỆP
I Xác định chủ đề bài học
- Tên chủ đề: Tệp và các thao tác với tệp gồm 3 bài là: Bài 14 - “Kiểu dữ liệu tệp”, Bài 15 – “Các
thao tác với tệp”, Bài 16 – “Ví dụ làm việc với tệp” dạy trong 3 tiết gồm 2 tiết lí thuyết và 1 tiết dạybài 16 là tiết bài tập (chỉ dạy ví dụ 1)
- Vấn đề cần giải quyết trong bài học này là :
• Biết vai trò của kiểu tệp và tệp văn bản
• Biết các thao tác với tệp và 2 thao tác cơ bản là đọc tệp, ghi tệp
II Xác định chuẩn kiến thức kĩ năng
1 Kiến thức:
- Biết được đặc điểm của kiểu dữ liệu tệp
- Biết khái niệm tệp văn bản
- Biết các thao tác với tệp đặc biệt thao tác đọc tệp và ghi tệp
2 Kĩ năng:
- Khai báo đúng biến kiểu tệp
- Thực hiện được thao tác xử lý tệp: Gán tên tệp, mở/đóng tệp, đọc/ghi tệp
- Sử dụng được các thủ tục, hàm liên quan để đọc/ghi dữ liệu của tệp
3 Thái độ:
- Thấy được sự cần thiết và tiện lợi của kiểu dữ liệu tệp
- Có ý thức lưu trữ dữ liệu một cách khoa học
- Giáo dục thêm về ý thức tôn trọng bản quyền, không sửa chữa, sao chép các phần mềm chưamua bản quyền
III ĐỒ DÙNG DẠY HỌC
1 Chuẩn bị của GV
- Máy vi tính, máy chiếu projector để giới thiệu ví dụ
2 Chuẩn bị của học sinh
- Sách giáo khoa