GIÁO ÁN CHỦ ĐỀ TIN HỌC THEO CÔNG VĂN 5512
vectorstock.com/10212105
Ths Nguyễn Thanh Tú eBook Collection
GIÁO ÁN CHỦ ĐỀ TIN HỌC 11 HỌC KÌ 2, BỘ ĐỀ KIỂM TRA THEO MA TRẬN GIỮA KÌ 2 THEO CÔNG VĂN 5512 (1 CỘT) NĂM HỌC 2021-2022 WORD VERSION | 2022 EDITION ORDER NOW / CHUYỂN GIAO QUA EMAIL TAILIEUCHUANTHAMKHAO@GMAIL.COM
Tài liệu chuẩn tham khảo Phát triển kênh bởi Ths Nguyễn Thanh Tú Đơn vị tài trợ / phát hành / chia sẻ học thuật : Nguyen Thanh Tu Group Hỗ trợ trực tuyến Fb www.facebook.com/DayKemQuyNhon Mobi/Zalo 0905779594
Ngày soạn: …. /…. /…. TIẾT 19, 20, 21, 22, 23. CHỦ ĐỀ: CẤU TRÚC LẶP I. MỤC TIÊU 1. Kiến thức: - Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán - Hiểu cấu trúc với số lần biết trước và chưa biết trước. - Biết cách vận dụng đúng đắn từng loại cấu trúc lặp vào tính huống cụ thể. - Mô tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp. - Viết đúng các lệnh lặp với số lần biết trước và chưa biết trước. - Viết được thuật toán của một số bài toán đơn giản. 2. Năng lực: * Năng lực chung: - Năng lực tự chủ và tự học: biết chủ động, tích cực thực hiện những công việc của bản thân trong học tập. - Năng lực giao tiếp và hợp tác: biết sử dụng ngôn ngữ kết hợp với hình ảnh để trình bày thông tin, ý tưởng trong các hoạt động học tập. - Năng lực giải quyết vấn đề và sáng tạo: phân tích được tình huống, đề xuất và lựa chọn giải pháp để chọn được phương án nhằm giải quyết vấn đề được đặt ra. * Năng lực đặc thù: - Năng lực NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông. 3. Phẩm chất: - Trung thực: HS có ý thức báo cáo các kết quả hoạt động của mình một cách chính xác. - Chăm chỉ: HS tích cực tìm tòi và sáng tạo trong học tập. - Trách nhiệm: HS có ý thức chia sẻ thông tin với các thành viên trong nhóm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Máy tính, máy chiếu. 2. Học liệu: SGK, bài giảng điện tử, một số chương trình viết bằng NNLT Pascal. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Tiết Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 19 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 20 11A5 11A6 11A7 11A9 1
11A1 11A2 11A3 11A4 21 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 22 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 23 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Không kiểm tra. 3.3. Hoạt động học tập: HOẠT ĐỘNG 1: HOẠT ĐỘNG MỞ ĐẦU (KHỞI ĐỘNG) a) Mục đích: HS biết khái niệm lặp trong thực tế. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK. c) Sản phẩm: HS vận dụng kiến thức thực tế để trả lời câu hỏi GV đưa ra. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS lấy ví dụ về lặp trong thực tế? - Bước 2: Thực hiện nhiệm vụ: HS thực hiện nhiệm vụ trong thời gian 03 phút. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, trên cơ sở đó dẫn dắt HS vào bài học mới. HOẠT ĐỘNG 2: HÌNH THÀNH KIẾN THỨC MỚI Hoạt động 2.1. Tìm hiểu ý nghĩa của cấu trúc lặp a) Mục đích: HS nắm được khái niệm lặp trong lập trình. Nhận biết được có 2 loại cấu trúc lặp là lặp với số lần biết trước và lặp với số lần chưa biết trước. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: * Bài toán 1: - Input: nhập a>2 nguyên. 1 1 1 1 + + ... + - Output: S = + a a +1 a + 2 a + 100 - Ý tưởng: 2
+ Xuất phát, S được gán giá trị
1 a
+ Tiếp theo, cộng vào S một giá trị
1 với N= 1, 2, …, 100 a+N
* Bài toán 2: - Input: nhập a>2 nguyên. - Output: S =
1 1 1 1 1 + + + ... + + ... cho đến khi < 0,0001 a a +1 a + 2 a+N a+N
- Ý tưởng: + Xuất phát, S được gán giá trị
1 a
+ Tiếp theo, cộng vào S một giá trị
1 1 với N= 1, 2, … cho đến khi < 0,0001 thì a+N a+N
dừng lại. * Nhận xét sự giống và khác nhau của 2 bài toán: - Giống: + Xuất phát, S được gán giá trị
1 a
+ Tiếp theo, cộng vào S một giá trị
1 với N= 1, 2, … a+N
+ Công việc được lặp lại một số lần - Khác: + BT1: số lần lặp là 100 lần + BT2: số lần lặp chưa biết trước * Cấu trúc lặp phân biệt 2 loại: - Lặp với số lần biết trước - Lặp với số lần chưa biết trước d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Phân tích input, output, ý tưởng giải bài toán 1 (SGK, 42). + Nhóm 2, 4: Phân tích input, output, ý tưởng giải bài toán 2 (SGK, 42). + Yêu cầu sau khi hoàn thành nhiệm vụ nhóm, nhóm 1,2 trao đổi kết quả, nhóm 3,4 trao đổi kết quả để trả lời câu hỏi: > Câu hỏi 1: Nêu sự giống và khác nhau trong cách giải bài toán 1, bài toán 2? > Câu hỏi 2: Lặp với số lần biết trước là gì? > Câu hỏi 3: Phân loại cấu trúc lặp? - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.2. Tìm hiểu về thuật toán Tong_1a a) Mục đích: HS nhớ lại khái niệm thuật toán đã được học ở lớp 10 và vận dụng vào tìm hiểu thuật toán Tong_1a. 3
b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: * Thuật toán Tong_1a B1: S:=1/a; N:=0; B2: N:=N+1; B3: Nếu N>100 thì chuyển đến B5; B4: S:= S+1/(a+N) rồi quay lại B2; B5: Đưa S ra màn hình rồi kết thúc. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi: Tìm hiểu thuật toán Tong_1a, giải thích ý nghĩa của từng bước trong thuật toán? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. + GV hướng dẫn HS về nhà đọc và tìm hiểu thuật toán Tong_1b (SGK, 43). Hoạt động 2.3. Tìm hiểu về câu lệnh FOR-DO a) Mục đích: HS biết được cấu trúc chung của lệnh for-do. Hiểu được ý nghĩa của các thành phần trong cấu trúc lặp. Biết được hoạt động của cấu trúc lặp for-do dạng tiến và dạng lùi. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Dạng tiến: FOR <Biến đếm>:=<Giá trị đầu> TO <Giá trị cuối> DO <Câu lệnh>; - Dạng lùi: FOR <Biến đếm>:= <Giá trị cuối> DOWNTO <Giá trị đầu> DO <Câu lệnh>; - Trong đó: + Biến đếm thường là biến đơn, thường có kiểu nguyên. + Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm và giá trị đầu phải ≤ giá trị cuối. Nếu giá trị đầu lớn hơn giá trị cuối thì vòng lặp không thực hiện được. - Hoạt động của lệnh for-do: + Ở dạng lặp tiến, câu lệnh viết sau từ khóa do được thực hiện tuần tự, biến đếm lần lượt nhật các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. + Ở dạng lặp lùi, câu lệnh viết sau từ khóa do được thực hiện tuần tự với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối về giá trị đầu. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Nêu và giải thích cú pháp, hoạt động của câu lệnh for-do dạng tiến? + Nhóm 2, 4: Nêu và giải thích cú pháp, hoạt động của câu lệnh for-do dạng lùi? - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 5 phút. - Bước 3: Báo cáo, thảo luận: 4
+ GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.4. Tìm hiểu về chương trình Tong_1a a) Mục đích: HS hiểu cách vận dụng cấu trúc for-do vào giải bài toán 1, nắm được các lệnh trong chương trình Tong_1a. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: program Tong_1a; uses crt; var s: real; a,n: integer; begin clrscr; write(‘Nhap gia tri a:’); readln(a); s:=1/a; for n:= 1 to 100 do s:= s+1/(a+n); write(‘Tong s =’,s: 8:3); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Đoạn lệnh nào nhập vào giá trị a? + Câu hỏi 2: Chương trình trên dùng cấu trúc lặp dạng nào? Đoạn lệnh nào thực hiện tính tổng? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. + GV hướng dẫn HS về nhà đọc và tìm hiểu chương trình Tong_1b (SGK, 44). Hoạt động 2.5. Tìm hiểu về chương trình ví dụ 2 a) Mục đích: HS hiểu cách vận dụng cấu trúc for-do vào giải ví dụ 2, nắm được các lệnh trong chương trình vi_du_2. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: program Vi_du_2; uses crt; var m, n, i: integer; t: longint; begin clrscr; 5
write(‘nhap so m < n:’); write(‘m=’); readln(m); write(‘n=’); readln(n); t:= 0; for i:= m to n do if (i mod 3 = 0 ) or (i mod 5 = 0) then t:= t + i; write(‘tong=’, t); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Đoạn lệnh nào nhập vào giá trị m, n? + Câu hỏi 2: Chương trình trên dùng cấu trúc lặp dạng nào? Đoạn lệnh nào thực hiện tính tổng? Đoạn lệnh đó khác gì việc tính tổng ở bài toán tong_1a? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.6. Tìm hiểu về thuật toán Tong_2 a) Mục đích: HS nhớ lại khái niệm thuật toán đã được học ở lớp 10 và vận dụng vào tìm hiểu thuật toán Tong_2. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: * Thuật toán Tong_2 B1: S:=1/a; N:= 0; B2: Nếu 1/(a+N) < 0.0001 thì chuyển đến B5; B3: N:=N+1; B4: S:=S + 1/(a+N); rồi quay lại B2; B5: Đưa kết quả ra màn hình, rồi kết thúc; d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi: Tìm hiểu thuật toán Tong_2, giải thích ý nghĩa của từng bước trong thuật toán? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.7. Tìm hiểu về câu lệnh WHILE-DO 6
a) Mục đích: HS biết được cấu trúc chung của lệnh while-do. Hiểu được ý nghĩa của các thành phần trong cấu trúc lặp while-do. Biết được hoạt động của cấu trúc lặp while-do. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Cú pháp: while <điều kiện> do <câu lệnh>; - Trong đó: + Điều kiện là biểu thức logic. + Câu lệnh là một câu lệnh đơn hoặc ghép. - Hoạt động của câu lệnh while-do:
d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi: nêu và giải thích cú pháp, hoạt động của câu lệnh while-do? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.8. Tìm hiểu về chương trình Tong_2 a) Mục đích: HS hiểu cách vận dụng cấu trúc while-do vào giải bài toán 2, nắm được các lệnh trong chương trình Tong_2. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: program Tong_2; uses crt; var s : real; a, n : integer; begin clrscr; write(‘Hay nhap gia tri a vao!’); readln(a); s := 1/a; n := 0; while 1/(a+n) >= 0.0001 do 7
begin n:= n + 1; s := s + 1/(a+n); end; writeln(‘Tong S la:’, S: 8: 4); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh trả lời câu hỏi: + Câu hỏi 1: Đoạn lệnh nào nhập vào giá trị a? + Câu hỏi 2: Chương trình trên dùng cấu trúc lặp dạng nào? Đoạn lệnh nào thực hiện tính tổng? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.9. Tìm hiểu về thuật toán UCLN a) Mục đích: HS nhớ lại thuật toán UCLN đã được học ở lớp 10. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: * Thuật toán UCLN B1: Nhập M, N từ bàn phím; B2: Nếu M=N thì lấy giá trị chung này làm UCLN rồi chuyển đến bước 5. B3: Nếu M>N thì M:=M-N ngược lại N:=N-M B4: Quay lại B2; B5. Đưa ra kết quả UCLN rồi kết thúc. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi: Tìm hiểu thuật toán UCLN, giải thích ý nghĩa của từng bước trong thuật toán? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. + GV hướng dẫn HS tìm hiểu thuật toán tìm UCLN bằng sơ đồ khối (SGK, 47). Hoạt động 2.10. Tìm hiểu về chương trình UCLN a) Mục đích: HS hiểu cách vận dụng cấu trúc while-do vào giải ví dụ tìm UCLN của 2 số nguyên dương m, n, nắm được các lệnh trong chương trình UCLN. 8
b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: program UCLN; uses CRT; var m, n : integer; begin clrscr; write(‘Nhap vao M, N:’); readln(m,n); while m <> n do if m>n Then m:=m-n else n:=n-m; writeln(‘UCLN=’,m); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh trả lời câu hỏi: + Câu hỏi 1: Đoạn lệnh nào nhập vào giá trị m, n? + Câu hỏi 2: Chương trình trên dùng cấu trúc lặp dạng nào? Đoạn lệnh nào thực hiện tìm UCLN? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.11. Thực hành chương trình Tong_1a, Vi_du_2, Tong_2, UCLN a) Mục đích: HS nắm được hoạt động của for-do, while-do bằng cách thực hành chạy trực tiếp chương trình trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình Tong_1a, Vi_du_2, Tong_2, UCLN theo hướng dẫn của GV. c) Sản phẩm: HS hoàn thành 4 chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 4 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 30 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.12. Bài tập a) Mục đích: HS biết vận dụng cấu trúc lặp for-do hoặc while-do vào bài toán cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. 9
c) Sản phẩm: HS hoàn thành bài tập 7 (SGK, 51). uses crt; var cha, con, nam: Integer; begin clrscr; write(‘tuoi cha, tuoi con =’); readln(cha, con); nam:=0; while (cha+nam<>2*(con+nam)) do nam:=nam+1; write(‘So nam de tuoi cha gap doi tuoi con la:’, nam); readln; end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ giải bài tập 7 (SGK, 51). - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 5 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. HOẠT ĐỘNG 3: LUYỆN TẬP a) Mục đích: Củng cố lại kiến thức đã học, rèn luyện kĩ năng bài học góp phần hình thành các kĩ năng mới cho HS b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Vẽ sơ đồ hoạt động của cấu trúc lặp for-do dạng tiến? * Trả lời câu hỏi:
d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. 10
- Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. HOẠT ĐỘNG 4: VẬN DỤNG a) Mục đích: HS biết nhận diện bài toán sử dụng cấu trúc lặp với số lần biết trước. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Vận dụng cấu trúc lặp for-do dạng tiến, lùi và while-do để giải bài toán sau: Viết chương trình nhập vào 2 số nguyên dương m, n (0<m<n<1000) a. Đếm số lượng số chẵn và không chia hết cho 3 trong đoạn [m,n] b. Tính tổng các số lẻ hoặc chia hết cho 5 trong đoạn [m,n] * Trả lời câu hỏi: - Sử dụng cấu trúc lặp for-do tiến: var m,n,i,d,s:longint; begin write('Nhap 0<m<n<10000:'); readln(m,n); d:=0; s:=0; for i:=m to n do begin if (i mod 2=0) and (i mod 3<>0) then dem:=dem+1; if (i mod 2<>0) or (i mod 5=0) then s:=s+i; end; writeln('Dem=',d); writeln('Tong=',s); end. - Sử dụng cấu trúc lặp for-do lùi: var m,n,i,d,s:longint; begin write('Nhap 0<m<n<10000:'); readln(m,n); d:=0; s:=0; for i:=n downto m do begin if (i mod 2=0) and (i mod 3<>0) then dem:=dem+1; if (i mod 2<>0) or (i mod 5=0) then s:=s+i; end; writeln('Dem=',d); writeln('Tong=',s); end. - Sử dụng cấu trúc lặp while-do thay cho for-do tiến: var m,n,i,d,s:longint; begin write('Nhap 0<m<n<10000:'); readln(m,n); d:=0; s:=0; i:=m; while i<=n do begin if (i mod 2=0) and (i mod 3<>0) then dem:=dem+1; if (i mod 2<>0) or (i mod 5=0) then s:=s+i; i:=i+1; end; 11
writeln('Dem=',d); writeln('Tong=',s); end. - Sử dụng cấu trúc lặp while-do thay cho for-do lùi: var m,n,i,d,s:longint; begin write('Nhap 0<m<n<10000:'); readln(m,n); d:=0; s:=0; i:=n; while i>=m do begin if (i mod 2=0) and (i mod 3<>0) then dem:=dem+1; if (i mod 2<>0) or (i mod 5=0) then s:=s+i; i:=i-1; end; writeln('Dem=',d); writeln('Tong=',s); end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chạy thử chương trình để HS quan sát, chốt đáp án và kiến thức có liên quan. 3.4. Củng cố, dặn dò: GV củng cố bài học bằng sơ đồ hóa kiến thức được chuẩn bị sẵn và trình chiếu, nhấn mạnh các nội dung trọng tâm của bài. 3.5. Hướng dẫn về nhà: - Học bài cũ và tìm hiểu thuật toán Tong_1b (SGK, 43), chương trình Tong_1b (SGK, 44), thuật toán sơ đồ khối UCLN (SGK, 47). - Hoàn thành câu hỏi phần vận dụng. - Chuẩn bị bài mới: Kiểu mảng. + Phân tích input, output, viết CT bài toán nhiệt độ tuần? + Nêu khái niệm mảng 1 chiều? VD? + Cách khai báo biến mảng 1 chiều? VD? + Tham chiếu đến phần tử trong mảng 1 chiều? VD? + Phân tích input, output, đọc hiểu thuật toán, viết chương trình ví dụ 1 (mảng 1 chiều)? + Phân tích input, output, viết chương trình bài 1a, 2a (Bài tập và thực hành 3) + Phân tích input, output, viết chương trình bài 1a (Bài tập và thực hành 4)? Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
12
Ngày soạn: …. /…. /…. TIẾT 24, 25, 26, 27, 28, 29, 30, 31. CHỦ ĐỀ: KIỂU MẢNG I. MỤC TIÊU 1. Kiến thức: - Hiểu khái niệm mảng một chiều và hai chiều. - Hiểu cách khai báo và truy cập đến các phần tử của mảng. - Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng một chiều. - Thực hiện được khai báo mảng, truy cập, tính toán các phần tử của mảng. - Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương trình có sẵn. - Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính. - Biết nhận xét, phân tích, đề xuất thuật toán giải bài toán sao cho chương trình chạy nhanh hơn. - Làm quen với dữ liệu có cấu trúc và bài toán trong thực tế. 2. Năng lực: * Năng lực chung: - Năng lực tự chủ và tự học: biết chủ động, tích cực thực hiện những công việc của bản thân trong học tập. - Năng lực giao tiếp và hợp tác: biết sử dụng ngôn ngữ kết hợp với hình ảnh để trình bày thông tin, ý tưởng trong các hoạt động học tập. - Năng lực giải quyết vấn đề và sáng tạo: phân tích được tình huống, đề xuất và lựa chọn giải pháp để chọn được phương án nhằm giải quyết vấn đề được đặt ra. * Năng lực đặc thù: - Năng lực NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông. 3. Phẩm chất: - Trung thực: HS có ý thức báo cáo các kết quả hoạt động của mình một cách chính xác. - Chăm chỉ: HS tích cực tìm tòi và sáng tạo trong học tập. - Trách nhiệm: HS có ý thức chia sẻ thông tin với các thành viên trong nhóm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Máy tính, máy chiếu. 2. Học liệu: SGK, bài giảng điện tử, một số chương trình viết bằng NNLT Pascal. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Tiết Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 24 11A5 11A6 11A7 11A9 11A1 11A2 25 11A3 11A4 13
26
27
28
29
30
31
11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 14
11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Không kiểm tra. 3.3. Hoạt động học tập: HOẠT ĐỘNG 1: HOẠT ĐỘNG MỞ ĐẦU (KHỞI ĐỘNG) a) Mục đích: HS biết khái niệm mảng 1 chiều trong thực tế. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK. c) Sản phẩm: HS vận dụng kiến thức để hoàn thành chương trình. uses crt; var t1,t2,t3,t4,t5,t6,t7,tb:real; d:longint; begin clrscr; write('Nhap nhiet do 7 ngay:'); readln(t1,t2,t3,t4,t5,t6,t7); tb:=(t1+t2+t3+t4+t5+t6+t7)/7; d:=0; if t1>tb then d:=d+1; if t2>tb then d:=d+1; if t3>tb then d:=d+1; if t4>tb then d:=d+1; if t5>tb then d:=d+1; if t6>tb then d:=d+1; if t7>tb then d:=d+1; writeln('Nhiet do trung binh: ',tb:8:2); writeln('So ngay nhiet do > nhiet do trung binh: ',d); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV đưa ra bài toán nhiệt độ tuần (SGK, 53), yêu cầu HS đề xuất phương pháp giải bài toán nhiệt độ tuần. Nhận xét về cách làm bài toán trên? - Bước 2: Thực hiện nhiệm vụ: HS thực hiện nhiệm vụ trong thời gian 05 phút. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS và chạy thử chương trình để HS quan sát. Tiếp theo, GV dẫn dắt HS vào bài học mới. + Với kiểu dữ liệu đã được học, nếu phát triển bài toán nhiệt độ năm thì viết chương trình dài, mất nhiều thời gian. Vì vậy, cần tìm hiểu về kiểu mảng 1 chiều để áp dụng cho bài toán đó. HOẠT ĐỘNG 2: HÌNH THÀNH KIẾN THỨC MỚI Hoạt động 2.1. Tìm hiểu khái niệm mảng 1 chiều a) Mục đích: HS biết được khái niệm kiểu mảng 1chiều, cách tham chiếu đến phần tử trong mảng 1 chiều. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 1. Kiểu mảng 1 chiều 15
- Khái niệm: mảng 1 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ó 1 chỉ số. Để mô tả mảng 1 chiều cần xác định kiểu của các phần tử và cách đánh số các phần tử của nó. - Cách tham chiếu: <tên biến mảng>[<chỉ số>]. Ví dụ: t[3] (phần tử thứ 3 của mảng t). d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi: Nêu khái niệm mảng 1 chiều, cách tham chiếu đến mảng 1 chiều? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.2. Tìm hiểu về cách khai báo biến mảng 1 chiều a) Mục đích: HS biết được cách tạo kiểu dữ liệu mảng 1 chiều trong ngôn ngữ lập trình Pascal, biết cách khai báo biến mảng 1 chiều. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Cách 1: 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ử>; - Cách 2: 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>; - Trong đó: + Kiểu chỉ số: thường là 1 đ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à kiểu của các phần tử mảng. - VD1: Khai báo trực tiếp: var a: array [1..10] of integer; - VD2: Khai báo gián tiếp: type mang=array [1..100] of real; var a: mang; d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Nêu và giải thích ý nghĩa của khai báo biến trực tiếp, lấy 2 VD minh họa? + Nhóm 2, 4: Nêu và giải thích ý nghĩa của khai báo biến gián tiếp, lấy 2 VD minh họa? - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 5 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.3. Tìm hiểu về cách viết chương trình bài toán nhiệt độ bằng mảng 1 chiều a) Mục đích: HS hiểu cách sử dụng mảng 1 chiều vào bài toán nhiệt độ tổng quát. 16
b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: var a:array[1..366] of real; tb,tong:real; n,i,dem:longint; begin write('Nhap so ngay, n= '); readln(n); tong:=0; for i:=1 to n do begin write('nhiet do ngay thu ',i,':'); readln(a[i]); tong:=tong+a[i]; end; tb:=tong/n; dem:=0; for i:=1 to n do if a[i]>tb then dem:=dem+1; writeln('Nhiet do trung binh: ',tb:10;2); writeln('So ngay nhiet do > nhiet do trung binh: ',dem); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi về bài toán nhiệt độ n ngày: + Câu hỏi 1: cách khai báo biến mảng 1 chiều trong SGK, 54? Chuyển đổi sang cách khai báo khác? + Câu hỏi 2: Đoạn lệnh nào nhập vào mảng 1 chiều, tính tổng nhiệt độ n ngày? + Câu hỏi 3: Đoạn lệnh nào tính nhiệt độ trung bình, đếm số ngày có nhiệt độ > nhiệt độ trung bình n ngày? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.4. Tìm hiểu về thuật toán ví dụ 1 a) Mục đích: HS nhớ lại kiến thức về thuật toán đã được học ở chương trình lớp 10 và thuật toán tìm max. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Input: số nguyên dương n (n ≤ 250) và dãy n số nguyên dương a1, a2, ..., an (mỗi số không vượt quá 500) - Output: max=? csmax=? - Thuật toán: 17
+ Bước 1: Nhập n và các số: a1, a2, ..., an; + Bước 2: max ← a1, i ← 2; + Bước 3: Nếu i > n thì đưa ra giá trị max rồi kết thúc; + Bước 4: Bước 4.1. Nếu ai > max thì max ← ai; Bước 4.2. i ← i + 1 rồi quay lại Bước 3; d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi: Phân tích input, output, thuật toán ví dụ 1 (SGK, 56). - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.5. Tìm hiểu về chương trình ví dụ 1 a) Mục đích: Rèn luyện kĩ năng sử dụng mảng 1chiều. HS sử dụng được biến kiểu mảng 1chiều để giải quyết bài toán đơn giản. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: uses crt; var a: array[1..250] of integer; n,i, max, csmax : Integer; begin clrscr; write('Nhap n= '); readln(n); for i :=1 to N do begin write('a[',i,']= '); readln(a[i]); end; max := a[1]; csmax := 1; for i := 2 to n do if a[i] > max then begin max := a[i]; csmax := i; end; writeln('Gia tri lon nhat: ',max); writeln('chi so phan tu lon nhat: ',csmax); readln; end. d) Cách thức thực hiện: 18
- Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: cách khai báo biến mảng 1 chiều trong chương trình TimMax (SGK, 56)? Chuyển đổi sang cách khai báo khác? + Câu hỏi 2: Đoạn lệnh nào nhập vào mảng 1 chiều? + Câu hỏi 3: Đoạn lệnh nào tìm max? In kết quả? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. + GV hướng dẫn HS tự tìm hiểu ví dụ 2, ví dụ 3 (SGK 57, 58, 59). Hoạt động 2.6. Tìm hiểu chương trình bài tập thực hành 3 (bài 1a) a) Mục đích: HS biết sử dụng một số câu lệnh về sinh số ngẫu nhiên. Hai thuật toán: 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ử thảo mãn điều kiện nào đó. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Hàm chuẩn random(n) cho giá trị là số nguyên ngẫu nhiên trong đoạn từ 0 đến n-1. - Thủ tục randomize khởi tạo cơ chế sinh số ngẫu nhiên. - Tìm hiểu chương trình sum1: program sum1; uses crt; const nmax = 100; type myarray = array [ 1..nmax] of integer; var a: myarray; s, n, i, k: integer; begin clrscr; randomize; write ('nhap n = '); readln(n); for i:= 1 to n do a[i] := random(301) - random(301); for i:=1 to n do write (a[i] :5); writeln; write ('nhap k = '); readln (k); s:= 0; for i:= 1 to n do if a[i] mod k = 0 then s:=s+a[i]; writeln ('Tong can tinh la: ', s); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Cách khai báo biến mảng 1 chiều trong chương trình sum1 (SGK, 63)? Chuyển đổi sang cách khai báo khác? 19
+ Câu hỏi 2: Lệnh random(n) và randomize có ý nghĩa gì? + Câu hỏi 3: Giải thích ý nghĩa của từng lệnh trong chương trình? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.7. Tìm hiểu chương trình bài tập thực hành 3 (bài 2a) a) Mục đích: Củng cố thêm kiến thức về thuật toán tìm max cho HS. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: program maxelement; uses crt; const nmax = 100; type myarray = array [ 1..nmax] of integer; var a: myarray; n, i, j: integer; begin clrscr; write ('nhap n = '); readln(n); for i:= 1 to n do begin write('Phan tu thu ',i,'='); readln(a[i]); end; j:=1; for i:= 2 to n do if a[i] > a[j] then j:=i; writeln ('Chi so max: ',j,' Gia tri max: ',a[j]); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: cách khai báo biến mảng 1 chiều trong chương trình maxelement(SGK, 64)? Chuyển đổi sang cách khai báo khác? + Câu hỏi 2: Giải thích ý nghĩa của từng lệnh trong chương trình? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. 20
+ GV hướng dẫn HS tự tìm hiểu bài 1b, 2b. Hoạt động 2.8. Thực hành nội dung bài tập và thực hành 3 (bài 1a, 2a) a) Mục đích: HS nắm được hoạt động của mảng một chiều, thuật toán tìm max, tính tổng, đếm… bằng cách thực hành chạy trực tiếp chương trình trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình bài 1a, 2a (SGK, 63, 64) c) Sản phẩm: HS hoàn thành 2 chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 2 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 30 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.9. Tìm hiểu chương trình bài tập thực hành 4 (bài 1a) a) Mục đích: HS biết sử dụng một số câu lệnh về sinh số ngẫu nhiên. Thuật toán sắp xếp dãy số bằng thuật toán tráo đổi. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: uses crt; const nmax = 250; type myarray = array [ 1..nmax] of integer; var a: myarray; n, i, j, t: integer; begin clrscr; randomize; write ('nhap n = '); readln(n); for i:= 1 to n do a[i] := random(301) - random(301); for i:=1 to n do write (a[i] :5); writeln; for j:=n downto 2 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; writeln ('Day so duoc sap xep la:'); for i:=1 to n do write(a[i]:7); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: 21
+ Câu hỏi 1: Cách khai báo biến mảng 1 chiều trong chương trình (SGK, 65, 66)? Chuyển đổi sang cách khai báo khác? + Câu hỏi 2: Lệnh random(n) và randomize có ý nghĩa gì? + Câu hỏi 3: Giải thích ý nghĩa của từng lệnh trong chương trình? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 10 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. + GV hướng dẫn HS tự tìm hiểu bài 1b, 2. Hoạt động 2.10. Thực hành nội dung bài tập và thực hành 4 a) Mục đích: HS nắm được hoạt động của mảng một chiều, thuật toán tìm max, tính tổng, đếm… bằng cách thực hành chạy trực tiếp chương trình trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình bài 1a (SGK, 65, 66) c) Sản phẩm: HS hoàn thành chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 2 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 20 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.11. Tìm hiểu về câu hỏi 1, 2, 3, 4 (SGK, 79) a) Mục đích: Củng cố lại kiến thức lý thuyết đã học về kiểu mảng 1 chiều cho HS. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Câu hỏi 1: Tại sao mảng là kiểu dữ liệu có cấu trúc? Mảng là kiểu dữ liệu có cấu trúc bởi vì mảng (một chiều, hai chiều hay nhiều chiều) là kiểu có cấu trúc được đề cập tới sớm nhất trong các ngôn ngữ lập trình. Nó được xây dựng từ những kiểu dữ liệu đã có theo quy tắc khuôn dạng do ngôn ngữ lập trình cung cấp. Nó được dùng để chỉ định một nhóm đối tượng cùng một tính chất nào đó. Chẳng hạn, vectơ là một nhóm các số mà mỗi số ta có thể xác định chỉ cần biết chỉ số. Như vậy, để khai báo kiểu mảng phải chỉ ra kiểu dữ liệu chung của các phần tử và kiểu chỉ số. - Câu hỏi 2: Tại sao phải khai báo kích thước của mảng? Mảng là 1 tập hợp các phần tử được đánh số có thứ tự thường là từ 0 hoặc 1 cho nên khi khai báo mảng ta cần khai báo thêm kích thước để máy có thể cấp phát đủ bộ nhớ chứa số lượng các phần tử. - Câu hỏi 3: Các phần tử của mảng có thể có những kiểu gì? Kiểu dữ liệu của mảng có thể là những kiểu dữ liệu chuẩn (integer, byte, real,…), kiểu dữ liệu có cấu trúc (string, kiểu bản ghi). - Câu hỏi 4: Tham chiếu đến phần tử của mảng bằng cách nào? 22
Cách tham chiếu đến mảng: A[i] với i là chỉ số phân tử trong mảng. Ví dụ: Xét mảng 10 20 30 5 6 7 Tham chiếu: A[1]=10; A[2]=20; A[3]=30; A[4]=50; A[5]=6; A[7]=7 d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Trả lời câu hỏi 1, 3 (SGK, 79). + Nhóm 2, 4: Trả lời câu hỏi 2, 4 (SGK, 79). - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.12. Tìm hiểu về bài tập 5, 7 (SGK, 79) a) Mục đích: Củng cố lại kiến thức lý thuyết đã học về kiểu mảng 1 chiều cho HS. HS biết viết chương trình xử lý mảng 1 chiều đối với bài toán cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Bài tập 5: uses crt; const nmax = 100; type myarray = array [ 1..nmax] of integer; var a: myarray; n, i, d: integer; kt:boolean; begin clrscr; write ('nhap n = '); readln(n); for i:= 1 to n do begin write('Phan tu thu ',i,'='); readln(a[i]); end; kt:=true; d:=a[2]-a[1]; for i:=3 to n do if a[i]-a[i-1]<>d then begin kt:=false; break; end; if kt then write('Day so la CSC.') else write('Day so khong la CSC.'); readln end. - Bài tập 7: 23
uses crt; var n,i: longint; f:array[0..1000] of longint; begin clrscr; writeln('Nhap n='); readln(n); f[0]:= 0; f[1]:= 2; for i:= 3 to N do f[i]:= f[i-1] + f[i-2]; write('So fibonacci thu ',i,' la: ',f[n]); readln; end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Làm bài tập 5 (SGK, 79). + Nhóm 2, 4: Làm bài tập 7 (SGK, 79). - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. HOẠT ĐỘNG 3: LUYỆN TẬP a) Mục đích: Củng cố lại kiến thức đã học, rèn luyện kĩ năng bài học góp phần hình thành các kĩ năng mới cho HS b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Viết chương trình nhập vào mảng a có n phần tử. - Tính tổng số chẵn và không chia hết cho 3 trong mảng a. - Đếm số lẻ hoặc chia hết cho 5 trong mảng a. * Trả lời câu hỏi: uses crt; const nmax = 100; type myarray = array [ 1..nmax] of integer; var a: myarray; n, i, d, s: integer; begin clrscr; write ('nhap n > 2: '); readln(n); for i:= 1 to n do begin write('Phan tu thu ',i,'='); readln(a[i]); end; d:=0; s:=0; 24
for i:= 1 to n do begin if (a[i] mod 2=0) and (a[i] mod 3<>0) then s:=s+a[i]; if (a[i] mod 2<>0) or (a[i] mod 5=0) then d:=d+1; end; writeln('Tong la: ',s); writeln('Dem la: ',d); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. HOẠT ĐỘNG 4: VẬN DỤNG a) Mục đích: HS biết nhận diện bài toán sử dụng cấu trúc lặp với số lần biết trước. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Vận dụng mảng 1 chiều để viết chương trình nhập vào dãy a có n phần tử (n≤100, 1≤a[i] ≤10000). Đếm số lượng số chính phương có trong dãy a? * Trả lời câu hỏi: uses crt; const nmax = 100; type myarray = array [ 1..nmax] of integer; var a: myarray; n, i, d: integer; begin clrscr; write ('nhap n: '); readln(n); for i:= 1 to n do begin write('Phan tu thu ',i,'='); readln(a[i]); end; d:=0; for i:= 1 to n do if sqrt(a[i])=trunc(sqrt(a[i])) then d:=d+1; writeln('Dem la: ',d); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. 3.4. Củng cố, dặn dò: 25
GV củng cố bài học bằng sơ đồ hóa kiến thức được chuẩn bị sẵn và trình chiếu, nhấn mạnh các nội dung trọng tâm của bài. 3.5. Hướng dẫn về nhà: - Học bài cũ, tìm hiểu thuật toán và chương trình ví dụ 2, ví dụ 3 (SGK 57, 58, 59), bài 1b, 2b (Bài tập và thực hành 3, SGK, 64), bài 1b, 2 (Bài tập và thực hành 4, SGK, 66, 67). - Hoàn thành câu hỏi phần vận dụng. - Chuẩn bị bài mới: Kiểu xâu. + Khái niệm xâu, cách tham chiếu đến phần tử trong xâu? Ví dụ? + Cách khai báo biến xâu? VD? + Các thao tác xử lí xâu: ghép, so sánh, delete, insert, copy, length, pos, upcase. Mỗi loại lấy 2 ví dụ minh họa? + Phân tích input, ouput, ý nghĩa lệnh trong chương trình của VD1, VD4. + Phân tích input, output, chương trình của Bài 1a, bài 2 (bài tập và thực hành 5). Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
26
Ngày soạn: …. /…. /…. TIẾT 32, 33, 34, 35, 36. CHỦ ĐỀ: KIỂU XÂU I. MỤC TIÊU 1. Kiến thức: - Biết xâu là một dãy ký tự (có thể coi xâu là mảng một chiều). - Biết cách khai báo xâu, truy cập phần tử của xâu. - Sử dụng được một số thủ tục, hàm thông dụng về xâu. - Cài đặt được một số chương trình đơn giản có sử dụng xâu. 2. Năng lực: * Năng lực chung: - Năng lực tự chủ và tự học: biết chủ động, tích cực thực hiện những công việc của bản thân trong học tập. - Năng lực giao tiếp và hợp tác: biết sử dụng ngôn ngữ kết hợp với hình ảnh để trình bày thông tin, ý tưởng trong các hoạt động học tập. - Năng lực giải quyết vấn đề và sáng tạo: phân tích được tình huống, đề xuất và lựa chọn giải pháp để chọn được phương án nhằm giải quyết vấn đề được đặt ra. * Năng lực đặc thù: - Năng lực NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông. 3. Phẩm chất: - Trung thực: HS có ý thức báo cáo các kết quả hoạt động của mình một cách chính xác. - Chăm chỉ: HS tích cực tìm tòi và sáng tạo trong học tập. - Trách nhiệm:HS có ý thức chia sẻ thông tin với các thành viên trong nhóm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Máy tính, máy chiếu. 2. Học liệu: SGK, bài giảng điện tử, một số chương trình viết bằng NNLT Pascal. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Tiết Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 32 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 33 11A5 11A6 11A7 11A9 11A1 34 11A2 27
11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 35 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 36 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Không kiểm tra. 3.3. Hoạt động học tập: HOẠT ĐỘNG 1: HOẠT ĐỘNG MỞ ĐẦU (KHỞI ĐỘNG) a) Mục đích: HS biết được bài toán có sử dụng kiểu xâu trong thực tế. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK. c) Sản phẩm: HS nhớ lại kiến thức đã được học và vận dụng kiến thức của bản thân trả lời câu hỏi GV đưa ra. - Có thể sử dụng mảng một chiều với ý nghĩa mỗi họ tên sẽ là một mảng, mỗi phần tử của mảng là 1 kí tự. - Ngoài kiểu mảng 1 chiều, ta có thể sử dụng kiểu xâu. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV đưa ra bài toán nhập và lưu họ tên của 2 học sinh vào biến, yêu cầu HS suy nghĩ và trả lời câu hỏi: + Câu hỏi: Có thể dùng kiểu dữ liệu mảng một chiều để giải bài toán này không? Ngoài kiểu mảng 1 chiều, có thể sử dụng kiểu dữ liệu nào khác để giải quyết bài toán không? - Bước 2: Thực hiện nhiệm vụ: HS thực hiện nhiệm vụ trong thời gian 05 phút. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, trên cơ sở đó dẫn dắt HS vào bài học mới. HOẠT ĐỘNG 2: HÌNH THÀNH KIẾN THỨC MỚI Hoạt động 2.1. Tìm hiểu về kiểu xâu a) Mục đích: HS nắm được khái niệm xâu, tham chiếu đến từng phần tử của xâu. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 28
- Xâu là dãy các kí tự trong bộ mã ASCII, mỗi kí được gọi là một phần tử của xâu. Số lượng kí tự trong một xâu được gọi là độ dài của xâu. Xâu có độ dài bằng 0 được gọi là xâu rỗng. - Cách tham chiếu đến phần tử của xâu: <tên biến xâu>[<chỉ số>] d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Nêu khái niệm xâu? Độ dài xâu? Xâu rỗng? + Câu hỏi 2: Cách tham chiếu đến phần tử của xâu? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.2. Tìm hiểu về cách khai báo xâu a) Mục đích: HS biết cách khai báo biến xâu. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 1. Khai báo - Khai báo biến xâu có giới hạn độ dài tối đa: var <tên biến xâu>:string[<độ dài tối đa>]; VD: var s:string[10]; s1:string[20]; - Khai báo biến xâu không giới hạn độ dài tối đa (khi đó, độ dài tối đa của xâu ngầm định là 255). var <tên biến xâu>:string; VD: var s:string; s1:string; d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Nêu cú pháp, lấy 2 VD khai báo biến xâu có giới hạn độ dài tối đa và giải thích ý nghĩa? + Nhóm 2, 4: Nêu cú pháp, lấy 2 VD khai báo biến xâu không giới hạn độ dài tối đa và giải thích ý nghĩa? - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 5 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.3. Tìm hiểu về các thao tác xử lí xâu a) Mục đích: HS hiểu và biết các thao tác xử lí xâu. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. 29
c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 2. Các thao tác xử lí xâu a. Phép ghép xâu, kí hiệu là dấu cộng (+), được sử dụng để ghép nhiều xâu thành một. Có thể thực hiện phép ghép xâu đối với hằng và biến xâu. VD: ‘1’ + ‘2’ = ‘12’ ‘Ha’ + ‘ Noi’ = ‘Ha Noi’ b. Phép so sánh: =, <,<=,>,>=,<> - Quy tắc so sánh: + Xâu A là lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn. + Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B. - Ví dụ: ‘May tinh’ < ‘May tinh cua toi’ ‘TIN HOC’ = ‘TIN HOC’ c. Thủ tục delete(s,vt,n) thực hiện việc xóa n kí tự của biến xâu s bắt đầu từ vị trí vt. - Ví dụ: Giá trị s Thao tác Kết quả ‘abcdef’ Delete(s,5,2) ‘abcd’ ‘Song Hong’ Delete(s,1,5) ‘Hong’ d. Thủ tục insert(s1,s2,vt) thực hiện việc chèn xâu s1 vào xâu s2 bắt đầu từ vị trí vt. - Ví dụ: Giá trị s1 Giá trị s2 Thao tác Kết quả ‘ PC ’ ‘IBM486’ Insert(s1,s2,4) ‘IBM PC 486’ ‘1’ ‘Hinh .2’ Insert(s1,s2,6) ‘Hinh 1.2’ e. Hàm copy(s,vt,n) tạo xâu gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu s. - Ví dụ: Giá trị s Biểu thức Kết quả ‘Bai hoc thu 9’ Copy(s,9,5) ‘thu 9’ f. Hàm length(s) cho giá trị là độ dài của s. - Ví dụ: Giá trị s Biểu thức Kết quả ‘500 ki tu’ Length(s) 9 g. Hàm pos(s1,s2) cho vị trí xuất hiện đầu tiên của s1 trong s2. - Ví dụ: Giá trị s2 Biểu thức Kết quả ‘abcdef’ Pos(‘cd’,s2) 3 ‘abcdef’ Pos(‘k’,s2) 0 h. Hàm upcase(ch) cho chữ cái in hoa ứng với chữ cái có trong ch. - Ví dụ: Giá trị ch Biểu thức Kết quả ‘d’ Upcase(ch) ‘D’ ‘E’ Upcase(ch) ‘E’ d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: Yêu cầu: Nêu cú pháp, ý nghĩa và 2 VD minh họa cho thao tác: + Nhóm 1, 4: Ghép, so sánh? + Nhóm 2, 5: Delete, insert, pos? 30
+ Nhóm 3, 6: Copy, length, upcase? - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.4. Tìm hiểu về ví dụ 1 a) Mục đích: HS hiểu chương trình đơn giản sử dụng kiểu xâu. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 3. Một số ví dụ a. Ví dụ 1: - Input: xâu a và b. - Output: đưa ra xâu dài hơn, nếu độ dài bằng nhau thì đưa ra xâu nhập sau. - Chương trình: Var a,b:string; Begin Write(‘Nhap ho ten nguoi thu nhat: ’); readln(a); Write(‘Nhap ho ten nguoi thu hai: ’); readln(b); If length(a)>length(b) then write(a) else write(b); Readln; End. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Phân tích input, output của ví dụ 1? + Câu hỏi 2: Có mấy khai báo biến xâu, đó là biến nào? + Câu hỏi 3: Kiểm tra xâu a dài hơn xâu b bằng cách nào? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.5. Tìm hiểu về ví dụ 4 a) Mục đích: HS hiểu chương trình đơn giản sử dụng kiểu xâu. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: b. Ví dụ 4: - Input: xâu a. - Output: xâu b nhận được từ a bằng cách loại bỏ các dấu cách. - Chương trình: 31
Var a,b:string; i:byte; Begin Write(‘Nhap xau a: ’); readln(a); B:=‘’; For i:=1 to length(a) do If a[i]<>‘ ’ then b:=b+a[i]; Write(‘Ket qua: ’,b); Readln End. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Phân tích input, output của ví dụ 4? + Câu hỏi 2: Có mấy khai báo biến xâu, đó là biến nào? + Câu hỏi 3: Tạo xâu b bằng cách loại bỏ dấu cách trong xâu a bằng cách nào? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. + GV hướng dẫn HS tự tìm hiểu ví dụ 2, 3, 5. Hoạt động 2.6. Thực hành chương trình ví dụ 1, ví dụ 4. a) Mục đích: HS nắm được các thao tác xử lí xâu bằng cách thực hành chạy trực tiếp chương trình trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình ví dụ 1, ví dụ 4 (SGK, 71, 72) c) Sản phẩm: HS hoàn thành 2 chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 4 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 30 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.7. Tìm hiểu chương trình bài tập thực hành 5 (bài 1a) a) Mục đích: HS biết sử dụng một số thủ tục và hàm xử lí xâu. Phương pháp kiểm tra xâu đối xứng. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: - Tìm hiểu chương trình sum1: program sum1; var a,p:string; 32
i,k: byte; begin clrscr; write(‘Nhap xau a: ’); readln(a); k:=length(a); p:= ‘’; for i:=k downto 1 do p:=p+a[i]; if a=p then write(‘Xau doi xung’) else writeln (‘Xau khong doi xuong’); readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Chương trình có mấy biến xâu? Mục đích sử dụng của các biến đó? + Câu hỏi 2: Cách tạo xâu p lấy các kí tự ngược lại của a như thế nào? + Câu hỏi 3: Giải thích ý nghĩa của từng lệnh trong chương trình? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.8. Tìm hiểu chương trình bài tập thực hành 5 (bài 2) a) Mục đích: Củng cố thêm kĩ năng sử dụng các hàm và thủ tục trong xâu. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: uses crt; var s:string; ch: char; d,i byte; begin clrscr; write ('nhap s = '); readln(s); s:=upcase(s); for ch:= ‘A’ to ‘Z’ do begin d:=0; for i:=1 to length(s) do if s[i]=ch then d:=d+1; if d>0 then writeln(‘Chu ’,ch, ‘: ’,d, ‘ lan’); end; readln end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: dùng hàm nào để lấy ra vị trí của xâu ‘anh’ trong xâu s? Muốn xóa xâu ‘anh’ trong s phải dùng thủ tục nào? Chèn ‘em’ vào s bằng thủ tục nào? 33
+ Câu hỏi 2: Viết chương trình hoàn chỉnh? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. + Khuyến khích HS nghiên cứu và tìm hiểu để làm bài 1b và bài 3 ở nhà. Hoạt động 2.9. Thực hành nội dung bài tập và thực hành 5 (bài 1a, 2) a) Mục đích: HS nắm được cách sử dụng xâu, các thao tác xử lí xâu … bằng cách thực hành chạy trực tiếp chương trình trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình bài 1a, 2 (SGK, 73) c) Sản phẩm: HS hoàn thành 2 chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 2 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 30 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. HOẠT ĐỘNG 3: LUYỆN TẬP a) Mục đích: Củng cố lại kiến thức đã học, rèn luyện kĩ năng bài học góp phần hình thành các kĩ năng mới cho HS. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Viết chương trình nhập xâu s, tạo s1 bằng cách loại bỏ chữ số trong s. * Trả lời câu hỏi: uses crt; var s,s1:string; i:byte; begin clrscr; write(‘nhap s:’); readln(s); s1:=‘’; for i:=1 to length(s) do if not(s[i] in [‘0’..’9’]) then s1:=s1+s[i]; write(‘Ket qua:’, s1); readln; end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. 34
- Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. HOẠT ĐỘNG 4: VẬN DỤNG a) Mục đích: HS biết vận dụng kiến thức vào bài tập cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Làm bài tập 10, SGK 80. * Trả lời câu hỏi: uses crt; var s:string; i,d:byte; begin clrscr; write(‘nhap s:’); readln(s); d:=0; for i:=1 to length(s) do if s[i] in [‘0’..’9’] then d:=d+1; write(d); readln; end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. 3.4. Củng cố, dặn dò: GV củng cố bài học bằng sơ đồ hóa kiến thức được chuẩn bị sẵn và trình chiếu, nhấn mạnh các nội dung trọng tâm của bài. 3.5. Hướng dẫn về nhà: - Học bài cũ, trả lời câu hỏi SGK. - Hoàn thành câu hỏi phần vận dụng. - Chuẩn bị bài mới: Ôn tập các nội dung sau: + Vòng lặp for-do, while-do. + Mảng 1 chiều. + Kiểu xâu. Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
35
Ngày soạn: …. /…. /…. TIẾT 37: ÔN TẬP GIỮA KỲ II I. MỤC TIÊU 1. Kiến thức: Ôn tập, Hệ thống hoá, khái quát hoá kiến thức của các bài: - Cấu trúc lặp. - Kiểu mảng. - Kiểu xâu. 2. Năng lực: * Năng lực chung: - Năng lực tự chủ và tự học: biết chủ động, tích cực thực hiện những công việc của bản thân trong học tập. - Năng lực giao tiếp và hợp tác: biết sử dụng ngôn ngữ kết hợp với hình ảnh để trình bày thông tin, ý tưởng trong các hoạt động học tập. - Năng lực giải quyết vấn đề và sáng tạo: phân tích được tình huống, đề xuất và lựa chọn giải pháp để chọn được phương án nhằm giải quyết vấn đề được đặt ra. * Năng lực đặc thù: - Năng lực NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông. 3. Phẩm chất: - Trung thực: HS có ý thức báo cáo các kết quả hoạt động của mình một cách chính xác. - Chăm chỉ: HS tích cực tìm tòi và sáng tạo trong học tập. - Trách nhiệm:HS có ý thức chia sẻ thông tin với các thành viên trong nhóm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Máy tính, máy chiếu. 2. Học liệu: SGK, bài giảng điện tử, một số chương trình viết bằng NNLT Pascal. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Xen kẽ trong quá trình học. 3.3. Hoạt động học tập: HOẠT ĐỘNG 1: HOẠT ĐỘNG MỞ ĐẦU (KHỞI ĐỘNG) a) Mục đích: HS nắm được cấu trúc đề kiểm tra. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK. c) Sản phẩm: HS nhớ lại kiến thức đã được học và vận dụng kiến thức của bản thân để đặt câu hỏi đối với những nội dung chưa rõ hoặc chưa hiểu. I. Cấu trúc đề kiểm tra 1. Trắc nghiệm (7,0 điểm = 28 câu) STT Nội dung/chủ đề Số câu 36
1 2 3
Cấu trúc lặp Kiểu mảng Kiểu xâu
10 8 10 28
Tổng số
2. Tự luận (3,0 điểm = 03 câu) STT Nội dung/chủ đề Số câu 1 Cấu trúc lặp 1 2 Kiểu mảng 1 3 Kiểu xâu 1 Tổng số 3 d) Tổ chức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu cấu trúc đề kiểm tra giữa kì. Yêu cầu HS rà soát lại kiến thức và đưa ra câu hỏi đối với những nội dung lí thuyết chưa nắm rõ hoặc chưa hiểu. - Bước 2: Thực hiện nhiệm vụ: HS thực hiện nhiệm vụ trong thời gian 5 phút. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS đặt câu hỏi và yêu cầu các HS khác lắng nghe, trả lời, giải thích câu hỏi của bạn. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, trên cơ sở đó dẫn dắt HS vào hoạt động ôn tập. HOẠT ĐỘNG 2: HƯỚNG DẪN ÔN TẬP a) Mục đích: HS hệ thống lại kiến thức đã được học. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để hệ thống hóa kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành việc hệ thống hóa kiến thức theo nội dung GV hướng dẫn: II. Nội dung ôn tập: Cấu trúc lặp: - Cú pháp dạng lặp for-do, while-do. - Bài toán đếm, tính tổng trong đoạn. Kiểu mảng: - Cách khai báo biến mảng một chiều trực tiếp, gián tiếp. - Tham chiếu trong mảng một chiều. - Bài toán đếm, tính tổng trong mảng một chiều. Kiểu xâu: - Cách khai báo biến xâu. - Các thao tác xử lí xâu: ghép, so sánh, xóa, chèn, sao chép, pos, length và upcase - Bài toán tạo xâu thỏa mãn điều kiện cho trước. d) Tổ chức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS nhắc lại những nội dung kiến thức đã học bằng sơ đồ dưới sự hướng dẫn của GV và theo cấu trúc đề kiểm tra. - Bước 2: Thực hiện nhiệm vụ: HS nhớ lại và hệ thống hoá các kiến thức đã học. - Bước 3: Báo cáo, thảo luận: Mỗi câu hỏi đại diện HS sẽ trả lời các HS khác nhận xét và bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. HOẠT ĐỘNG 3: LUYỆN TẬP a) Mục đích: Củng cố lại kiến thức đã học, rèn luyện kĩ năng bài học góp phần hình thành các kĩ năng mới cho HS b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. 37
c) Sản phẩm: HS hoàn thành câu hỏi: Câu 1: Đoạn chương trình sau làm gì? s:=0; for i:=1 to 1000 do if (i mod 2 = 0) and (i mod 3 <> 0) then s:=s+i; A. Tính tổng số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. B. Tính tổng số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. C. Tính tổng số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. D. Tính tổng số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 2: Để đếm các số từ 1 đến 1000 bằng while-do, đoạn chương trình nào dưới đây đúng? A. d:=0; i:=1; while i<=1000 do begin d:=1; i:=i+1; end; B. d:=0; i:=1; while i<1000 do begin d:=d+i; i:=i+1; end; C. d:=0; i:=1000; while i>=1 do begin d:=d+1; i:=i-1; end; D. d:=0; i:=1000; while i>1 do begin d:=d+i; i:=i-1; end; Câu 3. Khai báo biến xâu var s:string[5]. Phép gán giá trị nào sau là đúng? A. s := ‘toanhoc’; B. s := ‘monlytin’; C. s := ‘monsu’; D. s := ‘monsinhhoc’; Câu 4: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục xóa phần tử thứ 5 trong xâu s2 là A. delete(s1,5,1) B. delete(s2,5,1) C. delete(s1,5,5) D. delete(s2,5,5) Câu 5: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục sao chép 3 phần tử trong xâu s1 là A. copy(s1,3,1) B. copy (s2,3,1) C. copy (s1,3,3) D. copy (s2,3,3) d) Tổ chức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. HOẠT ĐỘNG 4: VẬN DỤNG a) Mục đích: Hs vận dụng kiến thức, kỹ năng, năng lực đã học và rèn luyện để viết chương trình đối với bài toán cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: var s, s1: string; i:longint; begin write(‘s=’); readln(s); s1:= ‘’; for i:=1 to length(s) do if s[i] in [‘a’.. ‘z’, ‘A’.. ‘Z’, ‘0’.. ‘9’] then s1:=s1+s[i]; write(‘Xau ket qua:’,s1); end. d) Tổ chức thực hiện: 38
- Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. + Câu hỏi: Viết chương trình nhập xâu s, tạo s1 bằng cách loại bỏ chữ cái, chữ số trong s? - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. 3.4. Củng cố, dặn dò: - GV nhấn mạnh những nội dung trọng tâm liên quan đến bài thi. - Yêu cầu HS hoàn thành các bài tập đã ra. 3.5. Hướng dẫn về nhà: - Yêu cầu HS làm dàn ý, đề cương vào vở - Chuẩn bị đầy đủ dụng cụ học tập - Ôn tập chuẩn bị kiểm tra. Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
39
Ngày soạn: …. /…. /…. TIẾT 38: KIỂM TRA GIỮA KỲ II I. MỤC TIÊU 1. Kiến thức: - Kiểm tra đánh giá các kiến thức: + Cấu trúc lặp. + Kiểu mảng. + Kiểu xâu. 2. Năng lực: - Năng lực chung: Tổng hợp kiến thức để giải quyết vấn đề. 3. Phẩm chất: - Phẩm chất: trung thực, trách nhiệm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Bút, giấy nháp. 2. Học liệu: Đề kiểm tra. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Không kiểm tra. 3.3. Hoạt động học tập: A. MA TRẬN ĐỀ KIỂM TRA Mức độ nhận thức Nội dung TT kiến thức
1
Tổ chức lặp
2
Kiểu dữ liệu có
Đơn vị kiến thức 1. Cấu trúc lặp 1. Kiểu mảng và biến
Nhận biết
Thông hiểu
Vận dụng
Thời Thời Thời Số Số Số gian gian gian CH CH CH (p) (p) (p) 6
4.5
4
5
Tổng Vận dụng cao Số CH
3
4
5
10 8 1
40
% Thời tổng gian điểm (p)
Thời gian TH TL (p)
1 10
4
Số câu hỏi
3 8
45
100%
cấu trúc
có chỉ số 2. Kiểu dữ liệu xâu
Tổng Tỉ lệ % Tỉ lệ chung
6
4.5
4
5
1
16 12 12 15 40% 30% 70%
2
10 10 20%
1
8
28
2
45
10% 30%
BẢNG ĐẶC TẢ KĨ THUẬT ĐỀ KIỂM TRA GIỮA KÌ II MÔN: TIN HỌC 11 – THỜI GIAN LÀM BÀI: 45 PHÚT Số câu hỏi theo các mức độ nhận Nội Đơn vị thức dung Mức độ kiến thức, kĩ Kiến TT kiến năng cần kiểm tra, đánh Vận thức/Kĩ Nhận Thông Vận thức/Kĩ giá dụng năng biết hiểu dụng năng cao Nhận biết: - Chỉ ra được cấu trúc lặp trong một thuật toán. - Chỉ ra được câu lệnh lặp trong chương trình (1 câu). - Trình bày được cú pháp của các câu lệnh lặp: + Câu lệnh lặp với số lần chưa biết trước while-do (1 câu). + Câu lệnh lặp với số lần biết trước for-do (4 câu). Thông hiểu: - Thông qua ví dụ, giải thích được trong một thuật Tổ chức 1. Cấu toán có thể cần sử dụng cấu 1 6 4 1 lặp trúc lặp trúc lặp để mô tả những công việc mà chúng được lặp lại một cách xác định (1 câu). - Giải thích được hoạt động của cấu trúc lặp và câu lệnh lặp trong hai trường hợp: + Lặp với số lần chưa biết trước while-do (1 câu). + Lặp với số lần biết trước for-do (2 câu). Vận dụng: - Sử dụng được cấu trúc lặp trong các thuật toán cần điều khiển lặp. 41
100% 100% 100%
2
- Chuyển được cấu trúc lặp trong thuật toán cho trước sang câu lệnh lặp phù hợp trong chương trình (1 câu TL). Vận dụng cao: - Sử dụng được câu lệnh lặp (lặp với số lần chưa biết trước while-do và lặp với số lần biết trước for-do) để viết chương trình cài đặt thuật toán cho một số bài toán đơn giản. Nhận biết: - Nêu được khái niệm mảng 1 chiều (2 câu). - Nêu được cách khai báo và truy cập (tham chiếu) đến các phần tử của mảng 1 chiều (2 câu). - Nêu được cách nhập từ bàn phím các phần tử của mảng 1 chiều. - Nêu được cách đưa ra màn hình mảng 1 chiều. Thông hiểu: - Giải thích được các đặc trưng của mảng 1 chiều: hữu hạn, có thứ tự, cùng 1. Kiểu một kiểu dữ liệu và truy cập Kiểu dữ qua chỉ số. mảng liệu có - Giải thích được để làm một cấu trúc việc với mảng một chiều chiều trong chương trình cần thực hiện được các công việc: + Khai báo mảng (khai 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). + Nhập mảng. + Truy cập để tính toán trên mảng và in ra mảng (4 câu). Vận dụng: - Sử dụng được kiểu dữ liệu mảng một chiều trong các thuật toán giải quyết một số bài toán đơn giản. Trong đó yêu cầu duyệt mảng chỉ sử dụng một câu lệnh lặp. 42
4
4
1
Vận dụng cao: - Sử dụng được kiểu dữ liệu mảng một chiều trong các thuật toán giải quyết một số bài toán đơn giản. Trong đó yêu cầu duyệt mảng có thể sử dụng các câu lệnh lặp lồng nhau (1 câu - TL). Nhận biết: - Nêu được xâu là một dãy kí tự (có thể coi xâu là mảng một chiều) (1 câu). - Nêu được cách khai báo xâu, cách truy cập phần tử của xâu (2 câu). - Nêu được các phép toán (ghép và so sánh) trên xâu (1 câu). - Kể ra được tên một số thủ tục và hàm thông dụng trên xâu (2 câu). Thông hiểu: - Thông qua ví dụ, giải thích tác dụng của một số thủ tục thông dụng về xâu 2. Kiểu (2 câu). - Thông qua ví dụ, giải xâu thích tác dụng của một số thủ tục thông dụng về xâu (2 câu). - Thông qua ví dụ, giải thích tác dụng của một số hàm thông dụng về xâu (2 câu). Vận dụng: - Viết được một số hàm và thủ tục để xử lí xâu trong tình huống cụ thể (1 câu TL). Vận dụng cao: - Cài đặt được một số chương trình đơn giản có sử dụng xâu và hàm, thủ tục trên xâu.
6
4
B. ĐỀ KIỂM TRA ĐỀ SỐ 01 I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Khai báo biến xâu var s:tring[5]. Phép gán giá trị nào sau là đúng? 43
1
A. s := ‘toanhoc’; B. s := ‘monsu’; C. s := ‘monlytin’; D. s := ‘monsinhhoc’; Câu 2: Để đếm các số từ 1 đến 1000 bằng while-do, đoạn chương trình nào dưới đây đúng? A. d:=0; i:=1; while i<=1000 do begin d:=1; i:=i+1; end; B. d:=0; i:=1; while i<1000 do begin d:=d+i; i:=i+1; end; C. d:=0; i:=1000; while i>=1 do begin d:=d+1; i:=i-1; end; D. d:=0; i:=1000; while i>1 do begin d:=d+i; i:=i-1; end; Câu 3: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 = 0) and (i mod 3 = 0) then s:=s+1; A. Tính tổng số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Tính tổng số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. C. Đếm số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. D. Đếm số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 4: Trong cấu trúc lặp for-do dạng lùi, câu lệnh được thực hiện khi A. <giá trị đầu> <= <biến đếm> và <biến đếm> <= <giá trị cuối> B. <giá trị đầu> >= <biến đếm> và <biến đếm> >= <giá trị cuối> C. <giá trị đầu> < <biến đếm> và <biến đếm> < <giá trị cuối> D. <giá trị đầu> > <biến đếm> và <biến đếm> >= <giá trị cuối> Câu 5: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục xóa phần tử thứ 5 trong xâu s2 là A. delete(s1,5,1) B. delete(s2,5,1) C. delete(s1,5,5) D. delete(s2,5,5) Câu 6: Phát biểu nào sai? A. Các phần tử của xâu không được đánh chỉ số. B. Xâu có độ dài hữu hạn. C. Xâu được đặt tên. D. Xâu chứa các chữ cái. Câu 7: Hàm pos(s2,s1) trả ra kết quả là 4. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s1 := ‘montinhoc’; s2 := ‘tinHoc’; B. s1 := ‘montinhoc’; s2 := ‘tin’; C. s1 := ‘tinhoc’; s2 := ‘tin’; D. s1 := ‘montoantin’; s2 := ‘tin’; Câu 8: Đoạn lệnh tính tổng các số lẻ trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; B. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+i; Câu 9: Khai báo trực tiếp biến mảng 1 chiều: A. var <tên kiểu mảng>:array[kiểu chỉ số] of <kiểu phần tử>; B. var <tên biến mảng>=array[kiểu chỉ số] of <kiểu phần tử>; C. var <tên biến mảng>:array[kiểu chỉ số] of <kiểu phần tử>; D. var <tên kiểu mảng>=array[kiểu chỉ số] of <kiểu phần tử>; Câu 10: Để đếm các số từ 1 đến 1000 bằng for-do dạng tiến, đoạn chương trình nào dưới đây đúng? A. d:=0; for i:=1 to 1000 do d:=d+1; B. d:=0; for i:=1 downto 1000 do d:=d+i; C. d:=0; for i:=1 to 1000 do d:=1; D. d:=0; for i:=1 downto 1000 do d:=d+1; Câu 11: Trong Pascal, cấu trúc lặp for-do dạng lùi là: A. for <biến đếm>=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>; B. for <biến đếm>:=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>; C. for <biến đếm>=<giá trị cuối> downto <giá trị đầu> do <câu lệnh> D. for <biến đếm>:=<giá trị cuối> to <giá trị đầu> do <câu lệnh>; Câu 12: Cách tham chiếu đến phần tử trong mảng 1 chiều: A. <tên kiểu mảng>[<chỉ số>] B. <tên kiểu mảng>[<kiểu chỉ số>] 44
C. <tên biến mảng>[<kiểu chỉ số>] D. <tên biến mảng>[<chỉ số>] Câu 13: Đoạn lệnh đếm các số chẵn trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+1; Câu 14: Trong lệnh lặp while-do, biểu thức là A. biểu thức số học. B. biểu thức số học hoặc biểu thức quan hệ. C. biểu thức logic hoặc biểu thức số học. D. biểu thức quan hệ hoặc biểu thức logic. Câu 15: Đoạn lệnh tính tổng các số chẵn hoặc không chia hết cho 3 trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+i; B. x:=0; for i:=1 to n do if (a[i] mod 2=0) and (a[i] mod 3=0) then x:=x+a[i]; C. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+1; D. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+a[i]; Câu 16: Phát biểu nào sau đây đúng về mảng 1 chiều? A. Là dãy hữu hạn các phần tử có cùng kiểu. B. Chỉ là các dãy số nguyên. C. Mảng không chứa kí tự là chữ cái. D. Là dãy vô hạn các phần tử có cùng kiểu. Câu 17: Trong Pascal, cấu trúc lặp while-do là: A. while <điều kiện> to <câu lệnh>; B. while <điều kiện> then <câu lệnh>; C. while <điều kiện> do <câu lệnh> D. while <điều kiện> do <câu lệnh>; Câu 18: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục sao chép 3 phần tử trong xâu s1 là A. copy(s1,3,1) B. copy (s2,3,1) C. copy (s1,3,3) D. copy (s2,3,3) Câu 19: Phép gán s := ‘montoan’; Cách khai báo s nào dưới đây đúng? A. var s:string[6] B. var s:tring[5]; C. var s:string[9]; D. var s:string[4]; Câu 20: Khai báo trực tiếp biến mảng 1 chiều tối đa 100 phần tử là các số nguyên: A. var a:array[1...100] of byte; B. var a:array[1..100] of real; C. var a:array[1..101] of byte; D. var a:array[1..100] of byte; Câu 21: Phép ghép xâu kí hiệu gồm A. * B. & C. + D. ++ Câu 22: Trong cấu trúc lặp for-do dạng lùi A. biến đếm tăng dần từ giá trị đầu đến giá trị cuối. B. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. C. biến đếm giảm dần từ giá trị cuối đến giá trị đầu. D. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu. Câu 23: Đoạn chương trình sau làm gì? s:=0; for i:=1 to 1000 do if (i mod 2 = 0) and (i mod 3 <> 0) then s:=s+i; A. Tính tổng số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Tính tổng số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. C. Tính tổng số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. D. Tính tổng số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 24: Trong Pascal, cấu trúc lặp với số lần chưa biết trước là A. if then B. while do C. for downto do D. for do 45
Câu 25: Thủ tục copy(s,4,3) tạo ra xâu kết quả là ‘dia’. Xâu s nhận giá trị nào dưới đây? A. s := ‘monlichsu’; B. s := ‘mondialy’; C. s := ‘montracdia’; D. s := ‘dia’; Câu 26: Cho 2 xâu s1 := ‘monlichsu’; s2 := ‘su’;Tạo s2 từ s1 bằng cách: A. copy(s1,8,2); B. copy(s2,8,2); C. copy(s1,2,8); D. copy(s2,2,8); Câu 27: Thủ tục delete(s,9,2) tạo ra xâu kết quả là ‘truongth’. Xâu s nhận giá trị nào dưới đây? A. s := ‘truongpt’; B. s := ‘thpttruong’; C. s := ‘truongthpt’; D. s := ‘ptthtruong’; Câu 28: Đoạn lệnh sau làm gì? x:=0; for i:=1 to n do if (a[i] mod 3=0) and (a[i] mod 5<>0) then x:=x+a[i]; A. Tính tổng các số chia hết cho 3 và không chia hết cho 5 trong mảng a. B. Tính tổng các số không chia hết cho 3 và chia hết cho 5 trong mảng a. C. Tính tổng các số chia hết cho 3 hoặc không chia hết cho 5 trong mảng a. D. Tính tổng các số không chia hết cho 3 hoặc chia hết cho 5 trong mảng a. II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1: Dùng cấu trúc lặp for-do dạng tiến để viết chương trình đưa ra màn hình các số chẵn và không chia hết cho 3 trong đoạn [1,100]. Câu 2: Viết chương trình nhập vào xâu s, đưa ra màn hình các chữ cái in thường trong xâu s. Câu 3: Viết chương trình nhập vào mảng a gồm các số nguyên dương có n phần tử (n≤1000). Đếm các số chẵn trong mảng a. ĐỀ SỐ 02 I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Khai báo biến xâu var s:tring[7]. Phép gán giá trị nào sau là đúng? A. s := ‘monsinhhoc’; B. s := ‘tinhoc’; C. s := ‘monvatly’; D. s := ‘monlichsu’; Câu 2: Để đếm các số từ 1 đến 1000 bằng while-do, đoạn chương trình nào dưới đây đúng? A. d:=0; i:=1; while i<=1000 do begin d:=d+i; i:=i+1; end; B. d:=0; i:=1; while i<=1000 do begin d:=d+1; i:=i+1; end; C. d:=0; i:=1000; while i>=1 do begin d:=1; i:=i-1; end; D. d:=0; i:=1000; while i>1 do begin d:=d+i; i:=i-1; end; Câu 3: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 = 0) or (i mod 3 <> 0) then s:=s+1; A. Đếm số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Đếm số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. C. Tính tổng số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. D. Tính tổng số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 4: Trong cấu trúc lặp for-do dạng tiến, câu lệnh được thực hiện khi A. <giá trị đầu> >= <biến đếm> và <biến đếm> >= <giá trị cuối> B. <giá trị đầu> <= <biến đếm> và <biến đếm> <= <giá trị cuối> C. <giá trị đầu> < <biến đếm> và <biến đếm> < <giá trị cuối> D. <giá trị đầu> > <biến đếm> và <biến đếm> >= <giá trị cuối> Câu 5: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục xóa phần tử thứ 3 trong xâu s1 là A. delete(s1,3,1) B. delete(s2,3,1) C. delete(s1,3,3) D. delete(s2,3,3) Câu 6: Xâu là A. dãy kí tự gồm các chữ cái in hoa. B. dãy kí tự gồm các chữ cái in thường. C. dãy kí tự gồm các chữ số. D. dãy kí tự trong bảng mã ASCII. 46
Câu 7: Hàm pos(s1,s2) trả ra kết quả là 0. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s2 := ‘montinhoc’; s1:= ‘tinHoc’; B. s2:= ‘montinhoc’; s1:= ‘tin’; C. s2:= ‘tinhoc’; s1:= ‘tin’; D. s2:= ‘montoantin’; s1:= ‘tin’; Câu 8: Đoạn lệnh tính tổng các số chẵn trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; Câu 9: Khai báo gián tiếp biến mảng 1 chiều: A. 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>; B. 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>; C. tupe <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>; D. 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>; Câu 10: Để đếm các số từ 1 đến 1000 bằng for-do dạng lùi, đoạn chương trình nào dưới đây đúng? A. d:=0; for i:=1 downto 1000 do d:=1; B. d:=0; for i:=1 to 1000 do d:=1; C. d:=0; for i:=1 to 1000 do d:=d+i; D. d:=0; for i:=1000 downto 1 do d:=d+1; Câu 11: Trong Pascal, cấu trúc lặp for-do dạng tiến là: A. for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh> B. for <biến đếm>:=<giá trị đầu> downto <giá trị cuối> do <câu lệnh>; C. for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; D. for <biến đếm>=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; Câu 12: Trong mảng 1 chiều, kiểu chỉ số thường là A. một đ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). B. một đ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 xác định chỉ số đầu và chỉ số cuối (n1≤n2). C. một đ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). D. một đ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 xác định chỉ số đầu và chỉ số cuối (n1≤n2). Câu 13: Đoạn lệnh đếm các số lẻ trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; B. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+1; Câu 14: Kiểu dữ liệu của biến đếm trong lệnh lặp for-do có điều kiện A. cùng kiểu với các biến trong câu lệnh. B. cùng kiểu với giá trị đầu và giá trị cuối. C. không xác định kiểu dữ liệu. D. chỉ cần cùng kiểu với giá trị đầu. Câu 15: Đoạn lệnh tính tổng các số lẻ hoặc chia hết cho 3 trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if (a[i] mod 2=0) and (a[i] mod 3=0) then x:=x+a[i]; B. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+i; 47
C. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+1; D. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+a[i]; Câu 16: Để mô tả mảng 1 chiều cần xác định A. cách tham chiếu đến phần tử. B. kiểu của các phần tử và cách đánh số các phần tử của nó. C. cách nhập mảng 1 chiều. D. kiểu dữ liệu của mảng. Câu 17: Trong cấu trúc lặp while-do, câu lệnh được thực hiện khi A. không cần điều kiện B. điều kiện sai C. điều kiện đúng D. điều kiện không xác định Câu 18: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục sao chép 5 phần tử trong xâu s2 là A. copy(s1,5,1) B. copy (s2,5,1) C. copy (s2,5,5) D. copy (s1,5,5) Câu 19: Phép gán s := ‘monhoahoc’; Cách khai báo s nào dưới đây đúng? A. var s:string[7] B. var s:tring[8]; C. var s:string[10]; D. var s:string[6]; Câu 20: Khai báo trực tiếp biến mảng 1 chiều tối đa 100 phần tử là các số thực: A. var a:array[1..100] of byte; B. var a:array[1..101] of real; C. var a:array[1..100] of real; D. var a:array[1…100] of real; Câu 21: Phép so sánh xâu kí hiệu gồm A. <, >, >=, <=, =, <> B. <, >, >=, <=, =, !=, C. <, >, >=, <=, = =, <> D. <, >, ≥, ≤, =, <> Câu 22: Trong cấu trúc lặp for-do dạng tiến A. biến đếm tăng dần từ giá trị đầu đến giá trị cuối. B. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. C. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu. D. biến đếm giảm dần từ giá trị cuối đến giá trị đầu. Câu 23: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 <> 0) and (i mod 3 <> 0) then s:=s+i; A. Tính tổng số lẻ hoặc không chia hết cho 3 trong đoạn từ 1000 đến 1. B. Tính tổng số lẻ và chia hết cho 3 trong đoạn từ 1000 đến 1. C. Tính tổng số lẻ và không chia hết cho 3 trong đoạn từ 1000 đến 1. D. Tính tổng số lẻ hoặc chia hết cho 3 trong đoạn từ 1000 đến 1. Câu 24: Trong Pascal, cấu trúc lặp với số lần biết trước là cấu trúc A. for to do B. repeat until C. for do D. while do Câu 25: Thủ tục copy(s,1,3) tạo ra xâu kết quả là ‘dia’. Xâu s nhận giá trị nào dưới đây? A. s := ‘diavatly’; B. s := ‘mondialy’; C. s := ‘montracdia’; D. s := ‘mondia’; Câu 26: Cho 2 xâu s1 := ‘sinhh’; s2 := ‘monsinhhoc’;Tạo s1 từ s2 bằng cách: A. copy(s1,4,5); B. copy(s2,4,5); C. copy(s1,5,4); D. copy(s2,5,4); Câu 27: Thủ tục delete(s,7,4) tạo ra xâu kết quả là ‘monhoc’. Xâu s nhận giá trị nào dưới đây? A. s := ‘monsinhhoc’; B. s := ‘monsuhoc’; C. s := ‘montinhoc’; D. s := ‘monhoctoan’; Câu 28: Đoạn lệnh sau làm gì? x:=0; for i:=1 to n do if (a[i] mod 3<>0) or (a[i] mod 5=0) then x:=x+a[i]; A. Tính tổng các số chia hết cho 3 và không chia hết cho 5 trong mảng a. B. Tính tổng các số không chia hết cho 3 và chia hết cho 5 trong mảng a. C. Tính tổng các số chia hết cho 3 hoặc không chia hết cho 5 trong mảng a. D. Tính tổng các số không chia hết cho 3 hoặc chia hết cho 5 trong mảng a. 48
II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1: Dùng cấu trúc lặp for-do dạng lùi để viết chương trình đưa ra màn hình các số chia hết cho 3 và không chia hết cho 5 trong đoạn [100,200]. Câu 2: Viết chương trình nhập vào xâu s, đưa ra màn hình các kí tự không phải là chữ số trong xâu s. Câu 3: Viết chương trình nhập vào mảng a gồm các số nguyên dương có n phần tử (n≤2000). Tính tổng các số lẻ trong mảng a. C. ĐÁP ÁN VÀ HƯỚNG DẪN CHẤM ĐỀ SỐ 01 A. PHẦN TRẮC NGHIỆM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 B C D A B A B B C A B D A D 15 16 17 18 19 20 21 22 23 24 25 26 27 28 D A D C C D C D C B B A C A B. PHẦN TỰ LUẬN Câu Nội dung Điểm Câu 1 var i:longint; Khai báo biến 0.25 (1 điểm) begin for i:=1 to 100 do Lệnh lặp for-do 0.25 if (i mod 2=0) and (i mod 3<>0) then Lệnh if-then 0.25 write(i, ‘ ’); Lệnh in 0.25 readln end. Câu 2 var s:string;i:longint; Khai báo biến 0.25 (1 điểm) begin write(‘s:’); readln(s); Nhập s 0.25 for i:=1 to length(s) do Lệnh lặp for-do 0.25 if not(s[i] in [‘a’.. ‘z’]) then write(s[i]); Lệnh if-then 0.25 end. Câu 3 - Khai báo mảng 1 chiều theo đúng yêu cầu gồm 1000 phần tử. 0.25 (1 điểm) - Nhập n và mảng a có n phần tử. 0.25 - Dùng lệnh if-then để xét phần tử thỏa mãn điều kiện. 0.25 - Lệnh đếm. 0.25 ĐỀ SỐ 02 A. PHẦN TRẮC NGHIỆM 1 2 3 4 5 6 7 8 9 10 11 12 13 B B A B A D A A D D C A D 15 16 17 18 19 20 21 22 23 24 25 26 27 D B C C C C A B C C A B D B. PHẦN TỰ LUẬN Câu Nội dung Câu 1 var i:longint; Khai báo biến (1 điểm) begin for i:=200 downto 100 do Lệnh lặp for-do if (i mod 3=0) and (i mod 5<>0) then Lệnh if-then write(i, ‘ ’); Lệnh in readln end. 49
14 B 28 D Điểm 0.25 0.25 0.25 0.25
Câu 2 (1 điểm)
var s:string;i:longint; Khai báo biến 0.25 begin write(‘s:’); readln(s); Nhập s 0.25 for i:=1 to length(s) do Lệnh lặp for-do 0.25 if not(s[i] in [‘0’.. ‘9’]) then write(s[i]); Lệnh if-then 0.25 end. Câu 3 - Khai báo mảng 1 chiều theo đúng yêu cầu gồm 2000 phần tử. 0.25 (1 điểm) - Nhập n và mảng a có n phần tử. 0.25 - Dùng lệnh if-then để xét phần tử thỏa mãn điều kiện. 0.25 - Lệnh tính tổng. 0.25 3.4. Nhận xét, đánh giá: - GV: Nhận xét, đánh giá tiết kiểm tra. - Rút kinh nghiệm 3.5. Hướng dẫn về nhà: - Chuẩn bị bài mới: + Nêu 2 đặc tính của kiểu tệp? + Tệp văn bản là gì? + Nêu cú pháp, ví dụ minh họa cho: khai báo biến tệp; gắn tên tệp; mở để đọc; mở để ghi; đọc; ghi; đóng tệp? + Nêu ý nghĩa của 2 hàm eof và eoln? Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
50
Ngày soạn: …. /…. /…. TIẾT 39, 40, 41, 42: CHỦ ĐỀ. KIỂU TỆP I. MỤC TIÊU 1. Kiến thức: - Biết khái niệm về kiểu dữ liệu tệp. - Biết khái niệm tệp định kiểu và tệp văn bản. - Biết các lệnh khai báo tệp định kiểu và tệp văn bản. - Biết các bước làm việc với tệp: gán tên cho biến tệp, mở tệp, đọc/ghi tệp, đóng tệp. - Biết một số hàm và thủ tục chuẩn làm việc với tệp. - Khai báo đúng tệp văn bản. - Sử dụng được một số hàm và thủ tục chuẩn làm việc với tệp. 2. Năng lực: * Năng lực chung: - Năng lực tự chủ và tự học: biết chủ động, tích cực thực hiện những công việc của bản thân trong học tập. - Năng lực giao tiếp và hợp tác: biết sử dụng ngôn ngữ kết hợp với hình ảnh để trình bày thông tin, ý tưởng trong các hoạt động học tập. - Năng lực giải quyết vấn đề và sáng tạo: phân tích được tình huống, đề xuất và lựa chọn giải pháp để chọn được phương án nhằm giải quyết vấn đề được đặt ra. * Năng lực đặc thù: - Năng lực NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông. 3. Phẩm chất: - Trung thực: HS có ý thức báo cáo các kết quả hoạt động của mình một cách chính xác. - Chăm chỉ: HS tích cực tìm tòi và sáng tạo trong học tập. - Trách nhiệm: HS có ý thức chia sẻ thông tin với các thành viên trong nhóm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Máy tính, máy chiếu. 2. Học liệu: SGK, bài giảng điện tử, một số chương trình viết bằng NNLT Pascal. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Tiết Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 39 11A5 11A6 11A7 11A9 11A1 11A2 11A3 40 11A4 11A5 11A6 11A7 51
11A9 11A1 11A2 11A3 11A4 41 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 42 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Không kiểm tra. 3.3. Hoạt động học tập: HOẠT ĐỘNG 1: HOẠT ĐỘNG MỞ ĐẦU (KHỞI ĐỘNG) a) Mục đích: Gợi nhớ lại kiến thức về kiểu tệp đã được học ở chương trình tin học 10. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK. c) Sản phẩm: HS nhớ lại kiến thức đã được học và vận dụng kiến thức của bản thân trả lời câu hỏi GV đưa ra. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS trả lời câu hỏi: + Câu hỏi: Em hãy cho biết tệp là gì? Em biết có những loại tệp nào? - Bước 2: Thực hiện nhiệm vụ: HS thực hiện nhiệm vụ trong thời gian 03 phút. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, trên cơ sở đó dẫn dắt HS vào bài học mới. HOẠT ĐỘNG 2: HÌNH THÀNH KIẾN THỨC MỚI Hoạt động 2.1. Tìm hiểu về kiểu dữ liệu tệp a) Mục đích: Gợi nhớ lại đặc điểm của kiểu tệp. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 1. Vai trò của kiểu tệp - Đặc điểm của kiểu tệp + Dữ liệu kiểu tệp lưu trữ lâu dài ở bộ nhớ ngoài, không bị mất đi khi tắt nguồn điện. + Lượng dữ liệu lưu trữ trên tệp có thể là rất lớn và chỉ phụ thuộc vào dung lượng đĩa. 2. Phân loại tệp và thao tác với tệp - Tệp văn bản: là tệp mà dữ liệu được ghi dưới dạng các kí tự theo mã ASCII. Trong tệp văn bản, dãy kí tự kết thúc bởi kí tự xuống dòng hay kí tự kết thúc tệp tạo thành một dòng. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi: Nêu các đặc điểm của kiểu tệp? Tệp văn bản là gì? 52
- Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.2. Tìm hiểu về thao tác với tệp a) Mục đích: HS nắm được các thao tác với tệp. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 1. Khai báo - Cú pháp: var <tên biến tệp>:text; - VD: var f1,f2:text; 2. Thao tác với tệp a. Gắn tên tệp - Cú pháp: assign(<biến tệp>, <tên tệp>); - VD: assign(f1, ‘VD.INP’); assign(f2, ‘VD.OUT’); b. Mở tệp - Cú pháp mở để đọc: reset(<biến tệp>); - Cú pháp mở để ghi: rewrite(<biến tệp>); - VD: reset(f1); rewrite(f2); c. Đọc/ghi - Cú pháp đọc: read/readln(<biến tệp>,<danh sách biến vào>); - Cú pháp ghi: write/writeln(<biến tệp>,<danh sách kết quả>); - VD: read(f1,a,b,c); write(f2,a+b); d. Đóng tệp - Cú pháp: close(<biến tệp>); - VD: close(f1); close(f2); e. Một số hàm - eof(<biến tệp>): trả về giá trị true nếu con trỏ tệp đang chỉ tới cuối tệp. - eoln(<biến tệp>): trả về giá trị true nếu con trỏ tệp đang chỉ tới cuối dòng. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: Nêu cú pháp, 1 VD minh họa cho: + Nhóm 1,3: Khai báo biến, gắn tên tệp, mở để đọc, mở để ghi. + Nhóm 2,4: Đọc, ghi, đóng tệp, eof và eoln. - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.3. Tìm hiểu chương trình ví dụ 1, SGK 87 53
a) Mục đích: HS biết cách thao tác với tệp trong một chương trình cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: Var d: real; F: text; X, y: integer; Begin Assign(f,'TRAI.TXT'); Reset(f); While not eof(f) do begin Read (f,x,y); d:=sqrt(x*x+y*y); writeln ('Khoang cach : ', d: 10:2); end; close(f); readln End. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Công thức tính khoảng cách từ O(0,0) đến M(x,y)? + Câu hỏi 2: Hãy tìm các lệnh thao tác với tệp trong chương trình? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. + Khuyến khích HS nghiên cứu và tìm hiểu thêm ví dụ 2, SGK 88. Hoạt động 2.4. Thực hành ví dụ 1, SGK 87 a) Mục đích: HS nắm được các thao tác với tệp bằng cách thực hành chạy trực tiếp chương trình trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình VD1 (SGK, 87) c) Sản phẩm: HS hoàn thành chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 2 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 30 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. 54
HOẠT ĐỘNG 3: LUYỆN TẬP a) Mục đích: Củng cố lại kiến thức đã học, rèn luyện kĩ năng bài học góp phần hình thành các kĩ năng mới cho HS b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Viết chương trình đọc 2 số vào từ tệp vd1.inp. Tính tổng, hiệu, tích, thương của a cho b rồi ghi kết quả ra tệp vd1.out * Trả lời câu hỏi: var a,b,t,h,s:longint; tg:real; f1,f2:text; begin assign(f1, ‘vd1.inp’); reset(f1); assign(f2, ‘vd1.out’); rewrite(f2); read(f1,a,b); t:=a+b; h:=a-b; s:=a*b; writeln(f2, ‘Tong: ’,t); writeln(f2, ‘Hieu: ’,h); writeln(f2, ‘Tich: ’,s); if b<>0 then begin tg:=a/b; writeln(f2, ‘Thuong: ’,tg:0:2); end; close(f1); close(f2); end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. HOẠT ĐỘNG 4: VẬN DỤNG a) Mục đích: Rèn luyện kĩ năng làm việc với tệp qua bài toán cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Viết chương trình đọc mảng a nguyên có n phần tử (n≤1000) vào từ tệp mang.inp (tệp gồm 2 dòng: dòng 1 chứa số nguyên dương n, dòng 2 chứa n số nguyên dương). Tính tổng số chẵn. Đếm số lẻ và chia hết cho 3 trong mảng A rồi ghi kết quả ra tệp mang.out. * Trả lời câu hỏi: var n,i,d,s:longint; a:array[1..1000] of longint; f1,f2:text; begin assign(f1, ‘mang.inp’); reset(f1); assign(f2, ‘mang.out’); rewrite(f2); 55
read(f1,n); for i:=1 to n do read(f1,a[i]); d:=0; s:=0; for i:=1 to n do begin if (a[i] mod 2=0) then s:=s+a[i]; if (a[i] mod 2<>0) and (a[i] mod 3=0) then d:=d+1; end; writeln(f2, ‘Tong: ’,s); writeln(f2, ‘Dem: ’,d); close(f1); close(f2); end. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. 3.4. Củng cố, dặn dò: GV củng cố bài học bằng sơ đồ hóa kiến thức được chuẩn bị sẵn và trình chiếu, nhấn mạnh các nội dung trọng tâm của bài. 3.5. Hướng dẫn về nhà: - Học bài cũ, trả lời câu hỏi SGK. - Hoàn thành câu hỏi phần vận dụng. - Chuẩn bị bài mới: + Nêu khái niệm CTC? Có mấy loại CTC? + CTC hàm, CTC thủ tục là gì? Lấy VD minh họa? + Cách viết và sử dụng thủ tục? + Cách viết và sử dụng hàm? Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
56
Ngày soạn: …. /…. /…. TIẾT 43, 44, 45, 46, 47, 48, 49, 50. CHỦ ĐỀ: CHƯƠNG TRÌNH CON I. MỤC TIÊU 1. Kiến thức: - Biết vai trò của CTC trong lập trình. - Biết sự phân loại CTC: thủ tục và hàm. - Biết cấu trúc một thủ tục, danh sách vào/ra hình thức. - Biết mối liên quan giữa chương trình và thủ tục. - Biết gọi một thủ tục - Biết cấu trúc của một hàm, danh sách vào/ra hình thức. - Biết mối liên quan giữa chương trình và hàm. - Biết gọi một hàm - Phân biệt được hàm và thủ tục; tham số hình thức và tham số thực sự; tham biến và tham trị. - Nhận biết được các thành phần trong đầu của thủ tục. - Sử dụng được lời gọi một thủ tục. - Viết được thủ tục đơn giản - Nhận biết được các thành phần trong đầu của hàm. - Viết được hàm đơn giản. 2. Năng lực: * Năng lực chung: - Năng lực tự chủ và tự học: biết chủ động, tích cực thực hiện những công việc của bản thân trong học tập. - Năng lực giao tiếp và hợp tác: biết sử dụng ngôn ngữ kết hợp với hình ảnh để trình bày thông tin, ý tưởng trong các hoạt động học tập. - Năng lực giải quyết vấn đề và sáng tạo: phân tích được tình huống, đề xuất và lựa chọn giải pháp để chọn được phương án nhằm giải quyết vấn đề được đặt ra. * Năng lực đặc thù: - Năng lực NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông. 3. Phẩm chất: - Trung thực: HS có ý thức báo cáo các kết quả hoạt động của mình một cách chính xác. - Chăm chỉ: HS tích cực tìm tòi và sáng tạo trong học tập. - Trách nhiệm: HS có ý thức chia sẻ thông tin với các thành viên trong nhóm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Máy tính, máy chiếu. 2. Học liệu: SGK, bài giảng điện tử, một số chương trình viết bằng NNLT Pascal. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Tiết Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 43 11A4 11A5 11A6 11A7 57
44
45
46
47
48
49
11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 11A1 11A2 11A3 11A4 11A5 11A6 11A7 58
11A9 11A1 11A2 11A3 11A4 50 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Không kiểm tra. 3.3. Hoạt động học tập: HOẠT ĐỘNG 1: HOẠT ĐỘNG MỞ ĐẦU (KHỞI ĐỘNG) a) Mục đích: HS nhớ lại một số hàm và thủ tục chuẩn đã được học. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK. c) Sản phẩm: HS nhớ lại kiến thức đã được học và vận dụng kiến thức của bản thân trả lời câu hỏi GV đưa ra. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS kể tên một số thủ tục và hàm chuẩn? Các thủ tục và hàm chuẩn này do ai định nghĩa? Người lập trình có thể định nghĩa ra các hàm và thủ tục tương tự như vậy không? - Bước 2: Thực hiện nhiệm vụ: HS thực hiện nhiệm vụ trong thời gian 03 phút. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, trên cơ sở đó dẫn dắt HS vào bài học mới. HOẠT ĐỘNG 2: HÌNH THÀNH KIẾN THỨC MỚI Hoạt động 2.1. Tìm hiểu về khái niệm CTC a) Mục đích: HS nắm được khái niệm CTC, lơi ích của việc sử dụng CTC. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: I. Chương trình con và phân loại 1. Khái niệm CTC - CTC là một dãy lệnh mô tả một số thao tác nhất định và được thực hiện (được gọi) từ nhiều vị trí trong chương trình. - VD bài toán lũy thừa (SGK, 92). - Lợi ích của việ sử dụng CTC: + Tránh được việc phải viết lặp đi lặp lại cùng một dãy lệnh. + Hỗ trợ việc thực hiện các chương trình lớn. + Phục vụ cho quá trình trừu tượng hóa. + Mở rộng khả năng của ngôn ngữ (khuyến khích HS đọc thêm). + Thuận tiện cho việc phát triển, nâng cấp chương trình (khuyến khích HS đọc thêm). d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Nêu khái niệm CTC? VD? + Câu hỏi 2: Lợi ích của việc sử dụng CTC? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. 59
- Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.2. Tìm hiểu về phân loại và cấu trúc của CTC a) Mục đích: HS nắm được có hai loại CTC là hàm và thủ tục, nắm được cấu trúc của một CTC, tham số hình thức, tham số thực sự, biến toàn cục, biến cục bộ. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 2. Phân loại và cấu trúc của CTC a. Phân loại - Hàm (function) là CTC thực hiện một số thao tác nào đó và tả về một giá trị qua tên của nó. VD: abs(x), sqr(x), sqrt(x)… - Thủ tục (procedure) là CTC thực hiện các thao tác nhất định nhưng không trả về giá trị qua tên của nó. VD: readln, writeln, read, write, delete… b. Cấu trúc - CTC có cấu trúc tương tự chương trình, nhưng nhất thiết phải có tên và phần đầu dùng để khai báo tên, nếu là hàm phải khai báo kiểu dữ liệu cho giá trị trả về của hàm: <phần đầu> [<phần khai báo>] <phần thân> + Phần khai báo: có teher có khai báo biến cho dữ liệu vào và ra, các hằng và biến dùng trong chương trình con. + Phần thân: là dãy lệnh. - Biến toàn cục: là biến của chương trình, được phép sử dụng ở mọi vị trí trong chương trình. - Biến cục bộ: là biến của CTC, chỉ được phép sử dụng trong CTC đã khai báo nó. - Tham số hình thức: là các biến được khai báo cho dữ liệu vào/ra. - Tham số thực sự: là các hằng/biến truyền theo tham số hình thức trong lời gọi hàm/thủ tục. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Tìm hiểu khái niệm hàm, cấu trúc CTC, biến toàn cục, biến cục bộ. + Nhóm 2, 4: Tìm hiểu khái niệm thủ tục, cấu trúc CTC, tham số hình thức, tham số thực sự. - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.3. Tìm hiểu về ví dụ về cách viết và sử dụng CTC thủ tục a) Mục đích: HS nắm được cấu trúc thủ tục, hiểu được một số thủ tục đơn giản trong bài toán cụ thể. 60
b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: II. Ví dụ về cách viết và sử dụng CTC 1. Cách viết và sử dụng thủ tục a. Cấu trúc thủ tục procedure <tên thủ tục>[<danh sách tham số>]; [<phần khai báo>] begin [<dãy lệnh>] end; - Phần đầu thủ tục gồm tên dành riêng procedure, tiếp theo là tên thủ tục. Danh sách tham số có thể có hoặc không. - Phần khai báo dùng để xác định các hằng, biến và cũng có thể xác định các CTC khác được sử dụng trong thủ tục. - Dãy lệnh gồm các lệnh của CTC. b. Ví dụ về thủ tục VD1: Thủ tục vẽ 3 hình chữ nhật có kích thước bằng nhau Procedure VD_thutuc1; Procedure Ve_Hcn; Begin Writeln(‘*******’); Writeln(‘* *’); Writeln(‘*******’); End; Begin Ve_Hcn; Writeln; writeln; Ve_Hcn; Writeln; writeln; Ve_Hcn; readln End. VD2. Thủ tục vẽ HCN có kích thước thay đổi Program VD_thutuc2; Uses crt; Var a,b,i:integer; Procedure Ve_Hcn(chdai,chrong:integer); Var i,j:integer; Begin For i:=1 to chdai do write(‘*’); Writeln; For j:=1 to chrong-2 do Begin Write(‘*’); For i:=1 to chdai-2 do write(‘ ‘); Writeln(‘*’); End; For i:=1 to chdai do write(‘*’); 61
Writeln; End; Begin Clrscr; Ve_Hcn(25,10); Writeln; writeln; Ve_Hcn(5,10); Readln; Clrscr; A:=4; b:=2; For i:=1 to 4 do Begin Ve_Hcn(a,b); Readln; A:=a*2; b:=b*2; End; readln End. VD3. Thủ tục hoán đổi Program VD_thambien1; Uses crt; Var a, b: integer; Procedure Hoan_doi (var x,y: integer); Var TG: integer; Begin TG:= x; x:= y; y:= TG; End; BEGIN Clrscr; a:= 5; b:= 10; Writeln (a: 6, b: 6); Hoan_doi (a, b); Writeln (a: 6, b: 6); END. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 6 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 4: Tìm hiểu CTC Vẽ hình CN (VD_thutuc1). + Nhóm 2, 5: Tìm hiểu CTC Vẽ hình CN (VD_thutuc2). + Nhóm 3, 6: Tìm hiểu CTC hoán đổi (VD_thambien1). + Yêu cầu chung: Sau khi tìm hiểu, hãy xác định tham số hình thức, tham số thực sự, tham biến, tham trị trong các CTC? - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. 62
- Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. + GV hướng dẫn HS tự đọc VD_thambien2 ở nhà. Hoạt động 2.4. Tìm hiểu về ví dụ về cách viết và sử dụng CTC hàm a) Mục đích: HS nắm được cấu trúc hàm, hiểu được một số hàm đơn giản trong bài toán cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: 2. Cách viết và sử dụng hàm a. Cấu trúc thủ tục function <tên hàm>[<danh sách tham số>]:<kiểu dữ liệu>; [<phần khai báo>] begin [<dãy lệnh>] <tên hàm>:=<biểu thức>; end; - Phần đầu hàm gồm tên dành riêng function, tiếp theo là tên thủ tục. Danh sách tham số có thể có hoặc không. Kiểu dữ liệu là kiểu trả về của hàm. - Phần khai báo dùng để xác định các hằng, biến và cũng có thể xác định các CTC khác được sử dụng trong hàm. - Dãy lệnh gồm các lệnh của CTC. b. Ví dụ về hàm VD1: Chương trình rút gọn một phân số, trong đó có sử dụng hàm tính UCLN của hai số nguyên. Program Rutgon_Phanso; Uses crt; Var tuso, mauso, a:integer; Function UCLN(x,y:integer):integer; Var sodu:integer; Begin While y<>0 do Begin Sodu:=x mod y; X:=y; Y:=sodu; End; UCLN:=x; End; Begin Clrscr; Write(‘Nhap tu so, mau so:’); readln(tuso, mauso); A:=UCLN(tuso,mauso); If a>1 then Begin Tuso:=tuso div a; Mauso:=mauso div a; End; Writeln(tuso:5, mauso:5); 63
readln End. VD2. Chương trình tìm min của 3 số Program Minbaso; Uses crt; Var a,b,c:real; Function Min(a,b:real):real; Begin If a<b then min:=a else min:=b; End; Begin Clrscr; Write(‘Nhap 3 so:’); readln(a,b,c); Writeln(‘So nho nhat trong 3 so la:’,Min(min(a,b),c):0:0); readln End. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1, 3: Tìm hiểu CTC rút gọn phân số (Rutgon_Phanso). + Nhóm 2, 4: Tìm hiểu CTC tìm min 3 số (Minbaso). + Yêu cầu chung: Sau khi tìm hiểu, hãy xác định tham số hình thức, tham số thực sự, tham biến, tham trị trong các CTC? - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.5. Thực hành các ví dụ CTC thủ tục và hàm (SGK, 96-102) a) Mục đích: HS nắm được hoạt động của các thủ tục và hàm thông qua việc thực hành trực tiếp trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình VD_thutuc1, VD_thutuc2, VD_thambien1, Rutgon_Phanso, Minbaso. c) Sản phẩm: HS hoàn thành chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 2 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 30 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.6. Tìm hiểu cách xây dựng hai thủ tục CatDan(s1,s2) và CanGiua(s) a) Mục đích: HS hiểu và phân tích hoạt động của thủ tục trong ví dụ cụ thể. 64
b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: a. Tìm hiểu hai thủ tục - Thủ tục CatDan(s1,s2) nhận đầu vào là xâu s1, gồm không quá 79 kí tự, tạo xâu s2 thu được từ s1 bằng việc chuyển kí tự đầu tiên của nó xuống vị trí cuối cùng. VD nếu s1=’abcd’ thì s2=’bcda’; Type str79 = string[79]]; Procedure Catdan(s1: str79; var s2: str79); begin S2: = copy(s1,2, length(s1) -1) +s1[1]; end; - Thủ tục CanGiua(s) nhận đầu vào là xâu s gồm không quá 79 kí tự, bổ sung vào đầu s một số dấu cách để khi đưa ra màn hình xâu kí tự s ban đầu được căn giữa dòng (80 kí tự) Procedure Cangiua(var s: str79); Var i, n: integer; begin n:= length(s); n: = (80-n) div 2; for i:= 1 to n do s: = ‘ ‘ +s; end; d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Đầu vào và đầu ra của thủ tục này? Chức năng của thủ tục là gì? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.6. Tìm hiểu chương trình 2b a) Mục đích: HS hiểu và sử dụng được thủ tục trong một chương trình cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: b. Tìm hiểu chương trình Uses crt; Type str79 = string [79]; Var s1, s2: string 79; Stop: boolean; procedure CatDan(s1: str79; var s2: str79); begin s2:= copy( s1,2,length(s1)-1) + s1[1]; end; 65
procedure CanGiua (var s : str79); var i,n: integer; begin n:=length(s); n:= (80-n) div 2; for i:= 1 to n do s:= ' ' +s; end; BEGIN clrscr; write ('Nhap xau s1:'); readln(s1); CanGiua(s1); clrscr; stop:= false; while not (stop) do begin gotoxy(1,12); write(s1); delay(500); CatDan(s1,s2); s1:=s2; stop:= keypressed; end; readln END. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS đọc SGK, kết hợp vốn hiểu biết của bản thân và trao đổi với bạn bên cạnh để trả lời câu hỏi: + Câu hỏi 1: Chức năng của chương trình? Phân tích từng đoạn lệnh trong chương trình? - Bước 2: Thực hiện nhiệm vụ: + Các cặp nghiên cứu nội dung SGK, tài liệu hoàn thành câu hỏi trong 05 phút. + GV: quan sát và trợ giúp các cặp. - Bước 3: Báo cáo, thảo luận: + Các cặp trao đổi chéo kết quả và bổ sung cho nhau + Đại diện một số cặp trình bày, các cặp khác bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động, chạy thử chương trình để HS quan sát và chốt kiến thức. Hoạt động 2.7. Thực hành bài tập và thực hành 6 a) Mục đích: HS nắm được hoạt động của thủ tục qua thực hành trực tiếp trên máy tính. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để thực hành chương trình 2b (SGK, 103) c) Sản phẩm: HS hoàn thành chương trình và chạy thử trên máy tính. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia 2-3HS/1 nhóm. Yêu cầu các nhóm HS thực hành 2 chương trình và chạy thử chương trình. - Bước 2: Thực hiện nhiệm vụ: + HS làm việc theo nhóm trong khoảng thời gian: 30 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện một số nhóm báo cáo kết quả chạy thử chương trình. + Các nhóm nhận xét, bổ sung cho nhau. 66
- Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. Hoạt động 2.8. Bài tập a) Mục đích: HS trả lời được các câu hỏi và bài tập SGK, 117. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để tìm hiểu nội dung kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành tìm hiểu kiến thức: Viết CTC (hàm, thủ tục) tính BSCNN của hai số nguyên dương a,b. - Hàm: Function BSCNN(a,b:integer):integer; Var sodu,x,y:integer; Begin X:=a; y:=b; While y>0 do Begin sodu:=x mod y; X:=y; Y:=sodu; End; BSCNN:=a*b div x; End; - Thủ tục: procedure BSCNN(a,b:integer; var c:integer); Var sodu,x,y:integer; Begin X:=a; y:=b; While y>0 do Begin sodu:=x mod y; X:=y; Y:=sodu; End; c:=a*b div x; End; d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV chia lớp thành 4 nhóm, yêu cầu HS tìm hiểu SGK kết hợp với kiến thức của bản thân và hoạt động theo nhóm để hoàn thành nhiệm vụ: + Nhóm 1,3: Dùng hàm để viết CTC tính BSCNN của hai số nguyên dương a,b. + Nhóm 2,4: Dùng thủ tục để viết CTC tính BSCNN của hai số nguyên dương a,b. - Bước 2: Thực hiện nhiệm vụ: + Các nhóm tự phân công nhiệm vụ cho các thành viên. + HS làm việc theo nhóm trong khoảng thời gian: 10 phút. - Bước 3: Báo cáo, thảo luận: + GV yêu cầu đại diện các nhóm báo cáo kết quả. + Các nhóm nhận xét, bổ sung cho nhau. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. HOẠT ĐỘNG 3: LUYỆN TẬP 67
a) Mục đích: Củng cố lại kiến thức đã học, rèn luyện kĩ năng bài học góp phần hình thành các kĩ năng mới cho HS b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Viết các CTC: - Thủ tục nhập vào cạnh a, b, c của tam giác. - Hàm tính chu vi tam giác cạnh a, b, c. - Hàm Tính diện tích tam giác cạnh a, b, c. * Trả lời câu hỏi: Var a,b,c:array[1..1000] of integer; N,I,t: integer; s:real; Procedure nhap(var a,b,c: integer); Begin Write(‘Nhap cac canh tam giac:’); readln(a,b,c); End; Function chuvi(a,b,c:integer):integer; Begin Chuvi:=a+b+c; End; Function dientich(a,b,c:integer):real; Var p:real; Begin P:=(a+b+c)/2; Dientich:=sqrt(p*(p-a)*(p-b)*(p-c)); End; d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. HOẠT ĐỘNG 4: VẬN DỤNG a) Mục đích: HS biết tổng hợp và sử dụng các CTC vào dạng bài toán khác nhau theo yêu cầu. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: * Câu hỏi: Áp dụng 3 chương trình con ở phần luyện tập vào bài toán nhập vào cạnh của n tam giác, tính tổng chu vi, tổng diện tích rồi ghi kết quả ra màn hình. * Trả lời câu hỏi: Begin Write(‘Nhap so tam giac: ’); readln(n); For i:=1 to n do Begin Nhap(a[i],b[i],c[i]); T:=T+chuvi(a[i],b[i],c[i]); S:=S+dientich(a[i],b[i],c[i]); 68
End; Writeln(‘Tong chu vi:’, T, ‘Tong dien tich:’,S:8:1); readln End. d) Cách thức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. 3.4. Củng cố, dặn dò: GV củng cố bài học bằng sơ đồ hóa kiến thức được chuẩn bị sẵn và trình chiếu, nhấn mạnh các nội dung trọng tâm của bài. 3.5. Hướng dẫn về nhà: - Học bài cũ, trả lời câu hỏi SGK. - Hoàn thành câu hỏi phần vận dụng. - Chuẩn bị bài mới: Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
69
Ngày soạn: …. /…. /…. TIẾT 51: ÔN TẬP CUỐI KỲ II I. MỤC TIÊU 1. Kiến thức: Ôn tập, Hệ thống hoá, khái quát hoá kiến thức của các bài: - Cấu trúc lặp. - Kiểu mảng. - Kiểu xâu. - Kiểu tệp. - CTC. 2. Năng lực: * Năng lực chung: - Năng lực tự chủ và tự học: biết chủ động, tích cực thực hiện những công việc của bản thân trong học tập. - Năng lực giao tiếp và hợp tác: biết sử dụng ngôn ngữ kết hợp với hình ảnh để trình bày thông tin, ý tưởng trong các hoạt động học tập. - Năng lực giải quyết vấn đề và sáng tạo: phân tích được tình huống, đề xuất và lựa chọn giải pháp để chọn được phương án nhằm giải quyết vấn đề được đặt ra. * Năng lực đặc thù: - Năng lực NLc: Giải quyết vấn đề với sự hỗ trợ của công nghệ thông tin và truyền thông. 3. Phẩm chất: - Trung thực: HS có ý thức báo cáo các kết quả hoạt động của mình một cách chính xác. - Chăm chỉ: HS tích cực tìm tòi và sáng tạo trong học tập. - Trách nhiệm:HS có ý thức chia sẻ thông tin với các thành viên trong nhóm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Máy tính, máy chiếu. 2. Học liệu: SGK, bài giảng điện tử, một số chương trình viết bằng NNLT Pascal. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Xen kẽ trong quá trình học. 3.3. Hoạt động học tập: HOẠT ĐỘNG 1: HOẠT ĐỘNG MỞ ĐẦU (KHỞI ĐỘNG) a) Mục đích: HS nắm được cấu trúc đề kiểm tra. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK. c) Sản phẩm: HS nhớ lại kiến thức đã được học và vận dụng kiến thức của bản thân để đặt câu hỏi đối với những nội dung chưa rõ hoặc chưa hiểu. I. Cấu trúc đề kiểm tra 70
1. Trắc nghiệm (7,0 điểm = 28 câu) STT Nội dung/chủ đề Số câu 1 Cấu trúc lặp 2 2 Kiểu mảng 5 3 Kiểu xâu 11 4 Kiểu tệp 10 Tổng số 28 2. Tự luận (3,0 điểm = 02 câu) STT Nội dung/chủ đề Số câu 1 Kiểu xâu 1 2 Kiểu tệp 1 Tổng số 2 d) Tổ chức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu cấu trúc đề kiểm tra cuối kì. Yêu cầu HS rà soát lại kiến thức và đưa ra câu hỏi đối với những nội dung lí thuyết chưa nắm rõ hoặc chưa hiểu. - Bước 2: Thực hiện nhiệm vụ: HS thực hiện nhiệm vụ trong thời gian 5 phút. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS đặt câu hỏi và yêu cầu các HS khác lắng nghe, trả lời, giải thích câu hỏi của bạn. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, trên cơ sở đó dẫn dắt HS vào hoạt động ôn tập. HOẠT ĐỘNG 2: HƯỚNG DẪN ÔN TẬP a) Mục đích: HS hệ thống lại kiến thức đã được học. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK để hệ thống hóa kiến thức theo yêu cầu của GV. c) Sản phẩm: HS hoàn thành việc hệ thống hóa kiến thức theo nội dung GV hướng dẫn: II. Nội dung ôn tập: Cấu trúc lặp: - Cú pháp dạng lặp for-do, while-do. - Bài toán đếm, tính tổng trong đoạn. Kiểu mảng: - Cách khai báo biến mảng một chiều trực tiếp, gián tiếp. - Tham chiếu trong mảng một chiều. - Bài toán đếm, tính tổng trong mảng một chiều. Kiểu xâu: - Cách khai báo biến xâu. - Các thao tác xử lí xâu: ghép, so sánh, xóa, chèn, sao chép, pos, length và upcase - Bài toán tạo xâu thỏa mãn điều kiện cho trước. Kiểu tệp: - Khái niệm tệp. - Đặc điểm tệp. - Phân loại tệp. - Khai báo biến tệp. - Các thao tác với tệp. d) Tổ chức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV yêu cầu HS nhắc lại những nội dung kiến thức đã học bằng sơ đồ dưới sự hướng dẫn của GV và theo cấu trúc đề kiểm tra. - Bước 2: Thực hiện nhiệm vụ: HS nhớ lại và hệ thống hoá các kiến thức đã học. 71
- Bước 3: Báo cáo, thảo luận: Mỗi câu hỏi đại diện HS sẽ trả lời các HS khác nhận xét và bổ sung. - Bước 4: Kết luận, nhận định: GV nhận xét, đánh giá về thái độ, quá trình làm việc, kết quả hoạt động và chốt kiến thức. HOẠT ĐỘNG 3: LUYỆN TẬP a) Mục đích: Củng cố lại kiến thức đã học, rèn luyện kĩ năng bài học góp phần hình thành các kĩ năng mới cho HS b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: Câu 1: Cách tham chiếu đến phần tử trong mảng 1 chiều: A. <tên kiểu mảng>[<chỉ số>] B. <tên kiểu mảng>[<kiểu chỉ số>] C. <tên biến mảng>[<kiểu chỉ số>] D. <tên biến mảng>[<chỉ số>] Câu 2: Phát biểu nào sau đây đúng về mảng 1 chiều? A. Là dãy hữu hạn các phần tử có cùng kiểu. B. Chỉ là các dãy số nguyên. C. Mảng không chứa kí tự là chữ cái. D. Là dãy vô hạn các phần tử có cùng kiểu. Câu 3: Đoạn lệnh đếm các số chẵn trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+1; Câu 4: Trong Pascal, cấu trúc lặp với số lần biết trước là cấu trúc A. for to do B. for do C. repeat until D. while do Câu 5: Hàm pos(s1,s2) trả ra kết quả là 0. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s2 := ‘montinhoc’; s1:= ‘tinHoc’; B. s2:= ‘montoantin’; s1:= ‘tin’; C. s2:= ‘tinhoc’; s1:= ‘tin’; D. s2:= ‘montinhoc’; s1:= ‘tin’; d) Tổ chức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. HOẠT ĐỘNG 4: VẬN DỤNG a) Mục đích: Hs vận dụng kiến thức, kỹ năng, năng lực đã học và rèn luyện để viết chương trình đối với bài toán cụ thể. b) Nội dung: HS quan sát máy chiếu, sử dụng SGK và vận dụng kiến thức đã học để trả lời câu hỏi. c) Sản phẩm: HS hoàn thành câu hỏi: var f1,f2:text; a,b,s,d,i:longint; begin assign(f1,'TEP.INP'); reset(f1); assign(f2,'TEP.OUT'); rewrite(f2); readln(f1,a,b); s:=0; for i:=a to b do if i mod 2=0 then s:=s+i; d:=0; 72
for i:=a+1 to b-1 do if i mod 2<>0 then d:=d+1; writeln(f2,'Tong= ',s); writeln(f2,'Dem= ',d); close(f1); close(f2); end. d) Tổ chức thực hiện: - Bước 1: Chuyển giao nhiệm vụ: GV trình chiếu câu hỏi, yêu cầu HS trả lời. + Câu hỏi: Viết chương trình đọc 2 số nguyên dương a, b vào từ tệp TEP.INP (Tệp gồm 1 dòng chứa hai số nguyên dương a, b cách nhau một dấu cách). - Tính tổng số chẵn trong đoạn [a,b]. - Đếm số lẻ trong khoảng (a,b) - Ghi 2 kết quả tìm được ra tệp TEP.OUT trên 2 dòng khác nhau. - Bước 2: Thực hiện nhiệm vụ: HS thảo luận và tìm đáp án. - Bước 3: Báo cáo, thảo luận: GV gọi một số HS trả lời, HS khác nhận xét, bổ sung. - Bước 4: Kết luận, nhận định: GV đánh giá kết quả của HS, chốt đáp án và kiến thức có liên quan. 3.4. Củng cố, dặn dò: - GV nhấn mạnh những nội dung trọng tâm liên quan đến bài thi. - Yêu cầu HS hoàn thành các bài tập đã ra. 3.5. Hướng dẫn về nhà: - Yêu cầu HS làm dàn ý, đề cương vào vở - Chuẩn bị đầy đủ dụng cụ học tập - Ôn tập chuẩn bị kiểm tra. Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
73
Ngày soạn: …. /…. /…. TIẾT 52: KIỂM TRA CUỐI KỲ II I. MỤC TIÊU 1. Kiến thức: - Kiểm tra đánh giá các kiến thức: + Cấu trúc lặp. + Kiểu mảng. + Kiểu xâu. + Kiiểu tệp. 2. Năng lực: - Năng lực chung: Tổng hợp kiến thức để giải quyết vấn đề. 3. Phẩm chất: - Phẩm chất: trung thực, trách nhiệm. II. THIẾT BỊ DẠY HỌC VÀ HỌC LIỆU 1. Thiết bị: Bút, giấy nháp. 2. Học liệu: Đề kiểm tra. III. TIẾN TRÌNH DẠY HỌC 3.1. Ổn định: Lớp Ngày dạy Sĩ số Ghi chú 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A9 3.2. Kiểm tra bài cũ: Không kiểm tra. 3.3. Hoạt động học tập: A. MA TRẬN ĐỀ KIỂM TRA Mức độ nhận thức TT
Nội dun g kiến thức
1
Tổ chức lặp
2
Kiểu dữ liệu có
Đơn vị kiến thức 1. Cấu trúc lặp 1. Kiểu mản g và biến
Nhận biết
Thông hiểu
Vận dụng
Thời Thời Thời Số Số Số gian gian gian CH CH CH (p) (p) (p) 1
0.75
1
0.75
4
Vận dụng cao Số CH
Số câu hỏi
Thời gian (p)
% tổng điểm
Thời gian TN TL (p)
1.25
2 8
1
Tổng
5
10
2 5
74
45
100%
cấu trúc
có chỉ số 2. Kiểu dữ liệu xâu 3. Kiểu dữ liệu tệp
Tổng Tỉ lệ % Tỉ lệ chung
8
6
3
3.75
1
6
4.5
4
5
1
16 12 12 15 40% 30% 70%
2
11
1 8 20%
1 30%
10 10 10%
28
2
45
100% 100% 100%
BẢNG ĐẶC TẢ KĨ THUẬT ĐỀ KIỂM TRA CUỐI KÌ II MÔN: TIN HỌC 11 – THỜI GIAN LÀM BÀI: 45 PHÚT Số câu hỏi theo các mức độ nhận Nội Đơn vị thức dung Mức độ kiến thức, kĩ Kiến TT kiến năng cần kiểm tra, đánh Vận thức/Kĩ Nhận Thông Vận thức/Kĩ giá dụng năng biết hiểu dụng năng cao Nhận biết: - Chỉ ra được cấu trúc lặp trong một thuật toán. - Chỉ ra được câu lệnh lặp trong chương trình (1 câu). - Trình bày được cú pháp của các câu lệnh lặp: + Câu lệnh lặp với số lần chưa biết trước while-do. + Câu lệnh lặp với số lần biết trước for-do. Thông hiểu: Tổ chức 1. Cấu - Thông qua ví dụ, giải thích 1 1 1 lặp trúc lặp được trong một thuật toán có thể cần sử dụng cấu trúc lặp để mô tả những công việc mà chúng được lặp lại một cách xác định (1 câu). - Giải thích được hoạt động của cấu trúc lặp và câu lệnh lặp trong hai trường hợp: + Lặp với số lần chưa biết trước while-do. + Lặp với số lần biết trước for-do. 75
2
Vận dụng: - Sử dụng được cấu trúc lặp trong các thuật toán cần điều khiển lặp. - Chuyển được cấu trúc lặp trong thuật toán cho trước sang câu lệnh lặp phù hợp trong chương trình. Vận dụng cao: - Sử dụng được câu lệnh lặp (lặp với số lần chưa biết trước while-do và lặp với số lần biết trước for-do) để viết chương trình cài đặt thuật toán cho một số bài toán đơn giản. Nhận biết: - Nêu được khái niệm mảng 1 chiều. - Nêu được cách khai báo và truy cập (tham chiếu) đến các phần tử của mảng 1 chiều (1 câu). - Nêu được cách nhập từ bàn phím các phần tử của mảng 1 chiều. - Nêu được cách đưa ra màn hình mảng 1 chiều. Thông hiểu: - Giải thích được các đặc trưng của mảng 1 chiều: 1. Kiểu hữu hạn, có thứ tự, cùng Kiểu dữ mảng một kiểu dữ liệu và truy cập liệu có một qua chỉ số. cấu trúc chiều - Giải thích được để làm việc với mảng một chiều trong chương trình cần thực hiện được các công việc: + Khai báo mảng (khai 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). + Nhập mảng. + Truy cập để tính toán trên mảng và in ra mảng (4 câu). Vận dụng: - Sử dụng được kiểu dữ liệu mảng một chiều trong các thuật toán giải quyết một số 76
1
4
bài toán đơn giản. Trong đó yêu cầu duyệt mảng chỉ sử dụng một câu lệnh lặp. Vận dụng cao: - Sử dụng được kiểu dữ liệu mảng một chiều trong các thuật toán giải quyết một số bài toán đơn giản. Trong đó yêu cầu duyệt mảng có thể sử dụng các câu lệnh lặp lồng nhau. Nhận biết: - Nêu được xâu là một dãy kí tự (có thể coi xâu là mảng một chiều). - Nêu được cách khai báo xâu, cách truy cập phần tử của xâu (1 câu). - Nêu được các phép toán (ghép và so sánh) trên xâu (5 câu). - Kể ra được tên một số thủ tục và hàm thông dụng trên xâu (2 câu). Thông hiểu: 2. Kiểu - Thông qua ví dụ, giải thích tác dụng của một số thủ tục xâu thông dụng về xâu (2 câu). - Thông qua ví dụ, giải thích tác dụng của một số hàm thông dụng về xâu (1 câu). Vận dụng: - Viết được một số hàm và thủ tục để xử lí xâu trong tình huống cụ thể (1 câu TL). Vận dụng cao: - Cài đặt được một số chương trình đơn giản có sử dụng xâu và hàm, thủ tục trên xâu. Nhận biết: (6 câu) - Chỉ ra khai báo biến tệp. - Nêu được các bước làm 3. Kiểu việc với tệp tệp - Gán tên cho biến tệp. - Mở tệp để đọc/ghi. - Đọc/ghi dữ liệu từ tệp. - Đóng tệp. 77
8
3
6
4
1
1
Thông hiểu: (4 câu) - Giải thích được tác dụng một số hàm và thủ tục chuẩn làm việc với tệp. - So sánh được hai cách làm việc với tệp văn bản: sử dụng tệp để đọc dữ liệu vào và sử dụng tệp để ghi dữ liệu ra. Vận dụng: - Viết đúngc âu lệnh làm việc với tệp theo yêu cầu cụ thể. - Sử dụng được một số hàm và thủ tục chuẩn làm việc với tệp trong một số chương trình đơn giản. Vận dụng cao: - Cài đặt được chương trình làm việc với tệp lồng ghép với các bài toán tính tổng, đếm (1 câu - TL) B. ĐỀ KIỂM TRA ĐỀ SỐ 01 I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Câu lệnh nào gắn biến f1 với tệp có tên là ‘VD2.INP’? A. assign(f1; ‘VD2.INP’); B. assign(f1, VD2.INP); C. assign(f1, ‘VD2.INP’). D. assign(f1,‘VD2.INP’); Câu 2: Độ dài xâu ‘lichsu’ là A. 5 B. 6 C. 7 D. 8 Câu 3: s:= ‘Truong THPT Thanh Thuy’; Hàm pos(‘T’,s) trả ra kết quả là A. 1 B. 3 C. 0 D. 5 Câu 4: Biểu thức điều kiện nào dưới đây biểu thị phần tử thứ i của mảng a nằm trong đoạn [5, 10] A. (a[i]>=5) and (a[i]<10) B. (a[i]>5) and (a[i]<=10) C. (a[i]>=5) and (a[i]<=10) D. (a[i]>5) and (a[i]<10) Câu 5: Để đóng tệp f1 câu lệnh viết là A. close(f1); B. reset(f1); C. rewrite(f1); D. assign(f1, ‘VD.INP’); Câu 6: Khai báo biến tệp đúng là A. var f2:text B. var 2f:text; C. var f2;text D. var f2:text; Câu 7: Câu lệnh mở tệp f để ghi là A. rewrite(f); B. close(f); C. reset(f); D. assign(f, ‘VD.INP’); Câu 8: Cho phép ghép s2+s1+s3 tạo ra xâu kết quả là ‘hocmontin’. Các xâu s1, s2, s3 phải nhận giá trị nào dưới đây? A. s1 := ‘tin’; s2 := ‘mon’; s3 := ‘hoc’; B. s1 := ‘mon’; s2 := ‘tin’; s3 := ‘hoc’; C. s1 := ‘mon’; s2 := ‘hoc’; s3 := ‘tin’; D. s1 := ‘tin’; s2 := ‘hoc’; s3 := ‘mon’; 78
Câu 9: Cho xâu s := ‘monsinhhoc’; hàm upcase(s[5]) trả ra kết quả là: A. ‘N’ B. ‘I’ C. ‘H’ D. ‘O’ Câu 10: Đoạn chương trình sau làm gì? S1:= ‘toanhoc’; S2:= ‘sinhhoc’; If length(s1)>=length(s2) then write(s1); write(s2); A. sinhhoctoanhoc B. sinhhoc C. toanhoc D. toanhocsinhhoc Câu 11: Đâu là khai báo biến mảng 1 chiều có tối đa 200 phần tử là các số thực? A. var a:array[1..200] of longint; B. var a:array[1..300] of integer; C. var a:array[1..300] of extended; D. var a:array[1..200] of real; Câu 12: Cho 3 xâu s1 := ‘hoc’; s2 := ‘mon’; s3 := ‘tin’; Tạo xâu ‘montinhoc’ bằng phép ghép nào? A. s1+s2+s3 B. s2+s3+s1 C. s1+s3+s2 D. s3+s2+s1 Câu 13: Phép so sánh s1>s2 trả ra kết quả đúng. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s1 := ‘hung’; s2 := ‘hanh’; B. s1 := ‘hong’; s2 := ‘hung’; C. s1 := ‘hong’; s2 := ‘huy’; D. s1 := ‘hong’; s2 := ‘hong’; Câu 14: Cho dãy a gồm 5 phần tử (các phần tử đánh chỉ số bắt đầu từ 1) lần lượt là: 12 45 34 21 12. Đoạn lệnh sau in ra màn hình thông tin gì? j:=1; for i:=2 to n do if a[i]<=a[j] then j:=i; write(j, ‘ ’, a[j]); A. 5 12 C. 2 45 D. 1 12 B. Không in ra thông tin gì. Câu 15: Cho 2 xâu s1 := ‘lichsu’; s2 := ‘lichlam’; Phép so sánh nào dưới đây đúng? A. s1=s2 B. s1>s2 C. s2>s1 D. s1<=s2 Câu 16: Đoạn chương trình sau làm gì? S1:= ‘toanhoc’; S2:= ‘sinhhoc’; If length(s1)>length(s2) then write(s1); write(s2); A. toanhoc B. sinhhoc C. toanhocsinhhoc D. sinhhoctoanhoc Câu 17: Đoạn chương trình sau in ra màn hình thông tin gì? For i:=11 to 20 do If (i mod 4<>0) or (i mod 6=0) then write(i, ‘ ’); A. 11 12 13 14 15 16 17 18 19 20 B. Không in ra màn hình thông tin gì. C. 11 12 13 14 15 17 18 19 D. Báo lỗi. Câu 18: Để ghi 4 số 5 9 15 22 (mỗi số cách nhau một dấu cách) vào tệp f. Ta dùng lệnh nào? A. write(f, 5 9 15 22); B. write(5, 9, 15, 22); C. write(f, 5, ‘ ’, 9, ‘ ’, 15, ‘ ’, 22); D. write(‘5, ‘ ’, 9, ‘ ’, 15, ‘ ’, 22’); Câu 19: Câu lệnh rewrite(<biến tệp>); thực hiện A. Mở tệp để ghi. B. Gắn tên tệp cho biến tệp. C. Đóng tệp. D. Mở tệp để đọc. Câu 20: Đoạn chương trình sau in ra màn hình kết quả gì? s:= ‘abcdcdcdabcdadacd’; while pos(‘b’,s)>0 do delete(s,pos(‘b’,s),1); write(s); A. bcdcdcdbcddcd B. acdcdcdacdadacd C. abcccabcaac D. abdddabdadad Câu 21: Hàm nào dùng để kiểm tra con trỏ đã ở cuối dòng ‘VD2.INP’ với biến tệp là f? A. eof(f) B. eoln(f) C. eof(f, ‘VD2.INP’); D. eoln(f, ‘VD2.INP’); 79
Câu 22: Mảng a gồm 5 phần tử là 8 5 12 16 25. Đoạn chương trình sau đưa ra màn hình kết quả gì? For i:=1 to 5 do If (a[i] mod 3=0) or (i mod 2<>0) then write(a[i], ‘ ’); A. 8 12 25 B. Không đưa ra màn hình thông tin gì. C. Báo lỗi. D. 5 12 25 Câu 23: Đoạn lệnh sau làm gì? For i:=1 to n do a[i]:=random(100)-random(100); A. Tạo n số ngẫu nhiên trong trong đoạn [0,99]. B. Tạo n số ngẫu nhiên trong trong đoạn [-100,100]. C. Tạo n số ngẫu nhiên trong trong đoạn [-99,99]. D. Tạo n số ngẫu nhiên trong trong đoạn [0,100]. Câu 24: Câu lệnh for-do tiến có cú pháp nào dưới đây? A. for <biến đếm>=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; B. for <biến đếm>:=<giá trị đầu> do <giá trị cuối> to <câu lệnh>; C. for <biến đếm>:=<giá trị đầu> downto <giá trị cuối> do <câu lệnh>; D. for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; Câu 25: Câu lệnh sau làm gì? Write(5,9,15,22); A. Ghi ra tệp f giá trị: 591522 B. Ghi ra tệp f giá trị: 5 9 15 22 C. Ghi ra màn hình giá trị: 591522 D. Ghi ra màn hình giá trị: 5 9 15 22 Câu 26: Chương trình sau ghi ra tệp f giá trị nào? Var f:text; i:byte; Begin Assign(f, VD.INP); rewrite(f); For i:=1 to 10 do If i mod 2<>0 then write(f,i, ‘ ’); Close(f); End. A. 2 4 6 8 10 B. 1 3 5 7 9 C. Không in ra tệp f giá trị nào. D. Báo lỗi. Câu 27: Để đọc 4 số 5 9 15 22 (mỗi số cách nhau một dấu cách) vào từ tệp f. Ta dùng lệnh nào? A. read(a,b,c,d); B. readln(a,b,c,d); C. writeln(f,a,b,c,d) D. readln(f,a,b,c,d); Câu 28: Cho 2 xâu s1 := ‘su’; s2 := ‘lich’; Tạo ra xâu ‘lichsu’ bằng: A. insert(s1,s2,4); B. insert(s2,s1,4); C. insert(s1,s2,5); D. insert(s2,s1,5); II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1 (1 điểm). Viết chương trình nhập xâu S vào từ bàn phím. Đếm các chữ số và dấu cách có trong S rồi đưa kết quả ra màn hình. Câu 2 (2 điểm). Viết chương trình đọc hai số nguyên dương M và N (0<M<N<1000) vào từ tệp ‘CAU21.INP’ (Tệp gồm một dòng chứa hai số nguyên dương cách nhau một dấu cách). Tính tổng các số không chia hết cho 9 trong đoạn [M,N] rồi ghi kết quả ra tệp ‘CAU21.OUT’. ĐỀ SỐ 02 I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Câu lệnh nào gắn biến f1 với tệp có tên là ‘VD1.INP’? A. assign(f1; ‘VD1.INP’); B. assign(f1,‘VD1.INP’); C. assign(f1, ‘VD1.INP’). D. assign(f1, VD1.INP); Câu 2: Độ dài xâu ‘toanhoc’ là 80
A. 5 B. 7 C. 6 D. 8 Câu 3: s:= ‘Truong THPT Thanh Thuy’; Hàm pos(‘u’,s) trả ra kết quả là A. 3 B. 1 C. 0 D. 5 Câu 4: Biểu thức điều kiện nào dưới đây biểu thị phần tử thứ i của mảng a nằm ngoài đoạn [20, 30] A. (a[i]>=20) or (a[i]<30) B. (a[i]>20) or (a[i]<=30) C. (a[i]>=20) or (a[i]<=30) D. (a[i]<20) or (a[i]>30) Câu 5: Để gắn biến tệp f1 với tên tệp là ‘VD.INP’ câu lệnh viết là A. close(f1); B. reset(f1); C. assign(f1, ‘VD.INP’); D. rewrite(f1); Câu 6: Khai báo biến tệp đúng là A. var f1:text B. var 1f:text; C. var f1:text; D. var f1;text; Câu 7: Câu lệnh mở tệp f để đọc là A. rewrite(f); B. close(f); C. reset(f); D. assign(f, ‘VD.INP’); Câu 8: Cho phép ghép s3+s1+s2 tạo ra xâu kết quả là ‘lop11a’. Các xâu s1, s2, s3 phải nhận giá trị nào dưới đây? A. s1 := ‘lop’; s2 := ‘11’; s3 := ‘a’; B. s1 := ‘a’; s2 := ‘11’; s3 := ‘lop’; C. s1 := ‘lop’; s2 := ‘a’; s3 := ‘11’; D. s1 := ‘11’; s2 := ‘a’; s3 := ‘lop’; Câu 9: Cho xâu s := ‘monsinhhoc’; hàm upcase(s[4]) trả ra kết quả là: A. ‘N’ B. ‘I’ C. ‘H’ D. ‘S’ Câu 10: Đoạn chương trình sau làm gì? S1:= ‘toanhoc’; S2:= ‘sinhhoc’; If length(s2)>=length(s1) then write(s2); write(s1); A. sinhhoctoanhoc B. sinhhoc C. toanhoc D. toanhocsinhhoc Câu 11: Đâu là khai báo biến mảng 1 chiều có tối đa 100 phần tử là các số nguyên? A. var a:array[1..100] of longint; B. var a:array[1..200] of integer; C. var a:array[1..200] of extended; D. var a:array[1..100] of real; Câu 12: Cho 3 xâu s1 := ‘truong’; s2 := ‘thanhthuy’; s3 := ‘thpt’; Tạo xâu ‘truongthptthanhthuy’ bằng phép ghép nào? A. s1+s2+s3 B. s2+s3+s1 C. s1+s3+s2 D. s3+s2+s1 Câu 13: Phép so sánh s1<s2 trả ra kết quả đúng. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s1 := ‘hong’; s2 := ‘hung’; B. s1 := ‘hung’; s2 := ‘hanh’; C. s1 := ‘hong’; s2 := ‘hoa’; D. s1 := ‘hong’; s2 := ‘hong’; Câu 14: Cho dãy a gồm 5 phần tử (các phần tử đánh chỉ số bắt đầu từ 1) lần lượt là: 12 45 34 21 12. Đoạn lệnh sau in ra màn hình thông tin gì? j:=1; for i:=2 to n do if a[i]< a[j] then j:=i; write(j, ‘ ’, a[j]); A. 5 12 B. Không in ra thông tin gì. C. 2 45 D. 1 12 Câu 15: Cho 2 xâu s1 := ‘toanhoc’; s2 := ‘sinhhoc’; Phép so sánh nào dưới đây đúng? A. s1=s2 B. s1>s2 C. s2>s1 D. s1<=s2 Câu 16: Đoạn chương trình sau làm gì? S1:= ‘toanhoc’; S2:= ‘sinhhoc’; If length(s2)>length(s1) then write(s2); write(s1); A. toanhoc B. sinhhoc C. toanhocsinhhoc D. sinhhoctoanhoc Câu 17: Chương trình sau in ra màn hình thông tin gì? For i:=1 to 10 do If (i mod 3=0) or (i mod 5<>0) then write(i, ‘ ’); 81
A. 1 2 3 4 6 7 8 9 B. Không in ra màn hình thông tin gì. C. 1 2 3 4 5 6 7 8 9 10 D. Báo lỗi. Câu 18: Để ghi 4 số 5 9 15 22 vào tệp f. Ta dùng lệnh nào? A. write(f, 5 9 15 22); B. write(5, 9, 15, 22); C. write(f, ‘5 9 15 22’); D. write(‘5 9 15 22’); Câu 19: Câu lệnh reset(<biến tệp>); thực hiện A. Mở tệp để ghi. B. Gắn tên tệp cho biến tệp. C. Đóng tệp. D. Mở tệp để đọc. Câu 20: Đoạn chương trình sau in ra màn hình kết quả gì? s:= ‘abcdcdcdabcdadacd’; while pos(‘a’,s)>0 do delete(s,pos(‘a’,s),1); write(s); A. bcdcdcdbcddcd B. acdcdcdacdadacd C. abcccabcaac D. abdddabdadad Câu 21: Hàm nào dùng để kiểm tra con trỏ đã ở cuối tệp ‘VD1.INP’ với biến tệp là f? A. eoln(f) B. eof(f) C. eof(f, ‘VD1.INP’); D. eoln(f, ‘VD1.INP’); Câu 22: Mảng a gồm 5 phần tử là 8 5 12 16 25. Đoạn chương trình sau đưa ra màn hình kết quả gì? For i:=1 to 5 do If (a[i] mod 3=0) or (i mod 2=0) then write(a[i], ‘ ’); A. 8 12 16 B. Không đưa ra màn hình thông tin gì. C. Báo lỗi. D. 5 12 16 Câu 23: Đoạn lệnh sau làm gì? For i:=1 to n do a[i]:=random(100); A. Tạo n số ngẫu nhiên trong trong đoạn [0,100]. B. Tạo n số ngẫu nhiên trong trong đoạn [-100,100]. C. Tạo n số ngẫu nhiên trong trong đoạn [-99,99]. D. Tạo n số ngẫu nhiên trong trong đoạn [0,99]. Câu 24: Câu lệnh while-do có cú pháp nào dưới đây? A. while <điều kiện> to <câu lệnh>; B. while <điều kiện> do <câu lệnh>; C. while <điều kiện> begin <câu lệnh> end; D. white <điều kiện> do <câu lệnh>; Câu 25: Câu lệnh sau làm gì? Write(f,5,9,15,22); A. Ghi ra tệp f giá trị: 591522 B. Ghi ra tệp f giá trị: 5 9 15 22 C. Ghi ra màn hình giá trị: 591522 D. Ghi ra màn hình giá trị: 5 9 15 22 Câu 26: Chương trình sau ghi ra tệp f giá trị nào? Var f:text; i:byte; Begin Assign(f, ‘VD.INP’); rewrite(f); For i:=1 to 10 do If i mod 2=0 then write(i, ‘ ’); Close(f); End. A. 2 4 6 8 10 B. 1 3 5 7 9 C. Không in ra tệp f giá trị nào. D. Báo lỗi. Câu 27: Để đọc 4 số 5 9 15 22 (mỗi số cách nhau một dấu cách) vào từ tệp f. Ta dùng lệnh nào? A. read(a,b,c,d); B. readln(a,b,c,d); C. read(f,a,b,c,d); D. write(f,a,b,c,d) Câu 28: Cho 2 xâu s1 := ‘nghiem’; s2 := ‘trac’; Tạo ra xâu ‘tracnghiem’ bằng: A. insert(s1,s2,1); B. insert(s2,s1,1); C. insert(s1,s2,0); D. insert(s2,s1,0); 82
II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1 (1 điểm). Viết chương trình nhập xâu S vào từ bàn phím. Đếm các chữ cái in hoa và dấu phẩy có trong S rồi đưa kết quả ra màn hình. Câu 2 (2 điểm). Viết chương trình đọc hai số nguyên dương M và N (0<M<N<3000) vào từ tệp ‘CAU23.INP’ (Tệp gồm một dòng chứa hai số nguyên dương cách nhau một dấu cách). Tính tổng các số chia hết cho 7 trong khoảng (M,N) rồi ghi kết quả ra tệp ‘CAU23.OUT’. C. ĐÁP ÁN VÀ HƯỚNG DẪN CHẤM ĐỀ SỐ 01 A. PHẦN TRẮC NGHIỆM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 D B A C A D A C B D D B A A 15 16 17 18 19 20 21 22 23 24 25 26 27 28 B B C C A B B A C D C D D C B. PHẦN TỰ LUẬN Câu Nội dung Điểm Câu 1 var s:string;i,d:longint; Khai báo biến 0.2 (1 điểm) begin write(‘s:’); readln(s); Nhập s 0.2 d:=0; for i:=1 to length(s) do Lệnh lặp for-do 0.2 0.2 if s[i] in [‘0’.. ‘9’, ‘ ’] then d:=d+1; Lệnh if-then 0.2 write(‘Dem=’,d); Thông báo kq end. 0.25 Câu 2 var f1,f2:text; Khai báo biến (1 điểm) m,n,s,i:longint; begin 0.25 assign(f1,'CAU21.INP'); reset(f1); Gắn tên tệp 0.25 assign(f2,'CAU21.OUT'); rewrite(f2); Mở tệp 0.25 readln(f1,m,n); Đọc dữ liệu s:=0; for i:=m to n do if i mod 9<>0 then s:=s+i; Lệnh lặp for-do 0.25 writeln(f2,'Tong= ',s); Lệnh if-then 0.25 0.25 close(f1); close(f2); Lệnh in 0.25 end. Đóng tệp ĐỀ SỐ 02 A. PHẦN TRẮC NGHIỆM 1 2 3 4 5 6 B B A D C C 15 16 17 18 19 20 B A A C D A B. PHẦN TỰ LUẬN Câu Câu 1 var s:string;i,d:longint; (1 điểm) begin
7 C 21 B
8 D 22 D
9 D 23 D
10 A 24 B
11 A 25 A
12 C 26 C
Nội dung Khai báo biến 83
13 A 27 C
14 D 28 B Điểm 0.2
write(‘s:’); readln(s); d:=0; for i:=1 to length(s) do if s[i] in [‘A’.. ‘Z’, ‘,’] then d:=d+1; write(‘Dem=’,d); Câu 2 (1 điểm)
end. var f1,f2:text; m,n,s,i:longint; begin assign(f1,'CAU23.INP'); reset(f1); assign(f2,'CAU23.OUT'); rewrite(f2); readln(f1,m,n); s:=0; for i:=m+1 to n-1 do if i mod 9<>0 then s:=s+i; writeln(f2,'Tong= ',s); close(f1); close(f2); end.
Nhập s
0.2
Lệnh lặp for-do Lệnh if-then Thông báo kq
0.2 0.2 0.2
Khai báo biến
0.25
Gắn tên tệp Mở tệp Đọc dữ liệu
0.25 0.25 0.25
Lệnh lặp for-do Lệnh if-then Lệnh in Đóng tệp
0.25 0.25 0.25 0.25
3.4. Nhận xét, đánh giá: - GV: Nhận xét, đánh giá tiết kiểm tra. - Rút kinh nghiệm 3.5. Hướng dẫn về nhà: Ngày kí duyệt: / /20 TỔ TRƯỞNG
Đỗ Huy Bình --------------- ***** ---------------
84
TRƯỜNG THPT … ĐỀ KIỂM TRA GIỮA KÌ II Mã đề thi 132 Môn thi: Tin học 11 - Thời gian làm bài: 45 phút Họ, tên học sinh:..................................................................... Lớp:......................... I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Khai báo biến xâu var s:tring[5]. Phép gán giá trị nào sau là đúng? A. s := ‘toanhoc’; B. s := ‘monsu’; C. s := ‘monlytin’; D. s := ‘monsinhhoc’; Câu 2: Để đếm các số từ 1 đến 1000 bằng while-do, đoạn chương trình nào dưới đây đúng? A. d:=0; i:=1; while i<=1000 do begin d:=1; i:=i+1; end; B. d:=0; i:=1; while i<1000 do begin d:=d+i; i:=i+1; end; C. d:=0; i:=1000; while i>=1 do begin d:=d+1; i:=i-1; end; D. d:=0; i:=1000; while i>1 do begin d:=d+i; i:=i-1; end; Câu 3: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 = 0) and (i mod 3 = 0) then s:=s+1; A. Tính tổng số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Tính tổng số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. C. Đếm số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. D. Đếm số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 4: Trong cấu trúc lặp for-do dạng lùi, câu lệnh được thực hiện khi A. <giá trị đầu> <= <biến đếm> và <biến đếm> <= <giá trị cuối> B. <giá trị đầu> >= <biến đếm> và <biến đếm> >= <giá trị cuối> C. <giá trị đầu> < <biến đếm> và <biến đếm> < <giá trị cuối> D. <giá trị đầu> > <biến đếm> và <biến đếm> >= <giá trị cuối> Câu 5: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục xóa phần tử thứ 5 trong xâu s2 là A. delete(s1,5,1) B. delete(s2,5,1) C. delete(s1,5,5) D. delete(s2,5,5) Câu 6: Phát biểu nào sai? A. Các phần tử của xâu không được đánh chỉ số. B. Xâu có độ dài hữu hạn. C. Xâu được đặt tên. D. Xâu chứa các chữ cái. Câu 7: Hàm pos(s2,s1) trả ra kết quả là 4. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s1 := ‘montinhoc’; s2 := ‘tinHoc’; B. s1 := ‘montinhoc’; s2 := ‘tin’; C. s1 := ‘tinhoc’; s2 := ‘tin’; D. s1 := ‘montoantin’; s2 := ‘tin’; Câu 8: Đoạn lệnh tính tổng các số lẻ trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; B. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+i; Câu 9: Khai báo trực tiếp biến mảng 1 chiều: A. var <tên kiểu mảng>:array[kiểu chỉ số] of <kiểu phần tử>; B. var <tên biến mảng>=array[kiểu chỉ số] of <kiểu phần tử>; C. var <tên biến mảng>:array[kiểu chỉ số] of <kiểu phần tử>; D. var <tên kiểu mảng>=array[kiểu chỉ số] of <kiểu phần tử>; Câu 10: Để đếm các số từ 1 đến 1000 bằng for-do dạng tiến, đoạn chương trình nào dưới đây đúng? A. d:=0; for i:=1 to 1000 do d:=d+1; B. d:=0; for i:=1 downto 1000 do d:=d+i; C. d:=0; for i:=1 to 1000 do d:=1; D. d:=0; for i:=1 downto 1000 do d:=d+1; Câu 11: Trong Pascal, cấu trúc lặp for-do dạng lùi là: A. for <biến đếm>=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>; B. for <biến đếm>:=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>; C. for <biến đếm>=<giá trị cuối> downto <giá trị đầu> do <câu lệnh> D. for <biến đếm>:=<giá trị cuối> to <giá trị đầu> do <câu lệnh>; Câu 12: Cách tham chiếu đến phần tử trong mảng 1 chiều: A. <tên kiểu mảng>[<chỉ số>] B. <tên kiểu mảng>[<kiểu chỉ số>] C. <tên biến mảng>[<kiểu chỉ số>] D. <tên biến mảng>[<chỉ số>] Câu 13: Đoạn lệnh đếm các số chẵn trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+1; Trang 1/14 - Mã đề thi 132
Câu 14: Trong lệnh lặp while-do, biểu thức là A. biểu thức số học. B. biểu thức số học hoặc biểu thức quan hệ. C. biểu thức logic hoặc biểu thức số học. D. biểu thức quan hệ hoặc biểu thức logic. Câu 15: Đoạn lệnh tính tổng các số chẵn hoặc không chia hết cho 3 trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+i; B. x:=0; for i:=1 to n do if (a[i] mod 2=0) and (a[i] mod 3=0) then x:=x+a[i]; C. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+1; D. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+a[i]; Câu 16: Phát biểu nào sau đây đúng về mảng 1 chiều? A. Là dãy hữu hạn các phần tử có cùng kiểu. B. Chỉ là các dãy số nguyên. C. Mảng không chứa kí tự là chữ cái. D. Là dãy vô hạn các phần tử có cùng kiểu. Câu 17: Trong Pascal, cấu trúc lặp while-do là: A. while <điều kiện> to <câu lệnh>; B. while <điều kiện> then <câu lệnh>; C. while <điều kiện> do <câu lệnh> D. while <điều kiện> do <câu lệnh>; Câu 18: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục sao chép 3 phần tử trong xâu s1 là A. copy(s1,3,1) B. copy (s2,3,1) C. copy (s1,3,3) D. copy (s2,3,3) Câu 19: Phép gán s := ‘montoan’; Cách khai báo s nào dưới đây đúng? A. var s:string[6] B. var s:tring[5]; C. var s:string[9]; D. var s:string[4]; Câu 20: Khai báo trực tiếp biến mảng 1 chiều tối đa 100 phần tử là các số nguyên: A. var a:array[1...100] of byte; B. var a:array[1..100] of real; C. var a:array[1..101] of byte; D. var a:array[1..100] of byte; Câu 21: Phép ghép xâu kí hiệu gồm A. * B. & C. + D. ++ Câu 22: Trong cấu trúc lặp for-do dạng lùi A. biến đếm tăng dần từ giá trị đầu đến giá trị cuối. B. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. C. biến đếm giảm dần từ giá trị cuối đến giá trị đầu. D. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu. Câu 23: Đoạn chương trình sau làm gì? s:=0; for i:=1 to 1000 do if (i mod 2 = 0) and (i mod 3 <> 0) then s:=s+i; A. Tính tổng số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Tính tổng số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. C. Tính tổng số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. D. Tính tổng số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 24: Trong Pascal, cấu trúc lặp với số lần chưa biết trước là A. if then B. while do C. for downto do D. for do Câu 25: Thủ tục copy(s,4,3) tạo ra xâu kết quả là ‘dia’. Xâu s nhận giá trị nào dưới đây? A. s := ‘monlichsu’; B. s := ‘mondialy’; C. s := ‘montracdia’; D. s := ‘dia’; Câu 26: Cho 2 xâu s1 := ‘monlichsu’; s2 := ‘su’;Tạo s2 từ s1 bằng cách: A. copy(s1,8,2); B. copy(s2,8,2); C. copy(s1,2,8); D. copy(s2,2,8); Câu 27: Thủ tục delete(s,9,2) tạo ra xâu kết quả là ‘truongth’. Xâu s nhận giá trị nào dưới đây? A. s := ‘truongpt’; B. s := ‘thpttruong’; C. s := ‘truongthpt’; D. s := ‘ptthtruong’; Câu 28: Đoạn lệnh sau làm gì? x:=0; for i:=1 to n do if (a[i] mod 3=0) and (a[i] mod 5<>0) then x:=x+a[i]; A. Tính tổng các số chia hết cho 3 và không chia hết cho 5 trong mảng a. B. Tính tổng các số không chia hết cho 3 và chia hết cho 5 trong mảng a. C. Tính tổng các số chia hết cho 3 hoặc không chia hết cho 5 trong mảng a. D. Tính tổng các số không chia hết cho 3 hoặc chia hết cho 5 trong mảng a. II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1: Dùng cấu trúc lặp for-do dạng tiến để viết chương trình đưa ra màn hình các số chẵn và không chia hết cho 3 trong đoạn [1,100]. Câu 2: Viết chương trình nhập vào xâu s, đưa ra màn hình các chữ cái in thường trong xâu s. Câu 3: Viết chương trình nhập vào mảng a gồm các số nguyên dương có n phần tử (n≤1000). Đếm các số chẵn trong mảng a.--------------------------------------------------- HẾT ---------Trang 2/14 - Mã đề thi 132
TRƯỜNG THPT … ĐỀ KIỂM TRA GIỮA KÌ II Mã đề thi 134 Môn thi: Tin học 11 - Thời gian làm bài: 45 phút Họ, tên học sinh:..................................................................... Lớp:......................... I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Khai báo biến xâu var s:tring[7]. Phép gán giá trị nào sau là đúng? A. s := ‘monsinhhoc’; B. s := ‘tinhoc’; C. s := ‘monvatly’; D. s := ‘monlichsu’; Câu 2: Để đếm các số từ 1 đến 1000 bằng while-do, đoạn chương trình nào dưới đây đúng? A. d:=0; i:=1; while i<=1000 do begin d:=d+i; i:=i+1; end; B. d:=0; i:=1; while i<=1000 do begin d:=d+1; i:=i+1; end; C. d:=0; i:=1000; while i>=1 do begin d:=1; i:=i-1; end; D. d:=0; i:=1000; while i>1 do begin d:=d+i; i:=i-1; end; Câu 3: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 = 0) or (i mod 3 <> 0) then s:=s+1; A. Đếm số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Đếm số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. C. Tính tổng số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. D. Tính tổng số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 4: Trong cấu trúc lặp for-do dạng tiến, câu lệnh được thực hiện khi A. <giá trị đầu> >= <biến đếm> và <biến đếm> >= <giá trị cuối> B. <giá trị đầu> <= <biến đếm> và <biến đếm> <= <giá trị cuối> C. <giá trị đầu> < <biến đếm> và <biến đếm> < <giá trị cuối> D. <giá trị đầu> > <biến đếm> và <biến đếm> >= <giá trị cuối> Câu 5: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục xóa phần tử thứ 3 trong xâu s1 là A. delete(s1,3,1) B. delete(s2,3,1) C. delete(s1,3,3) D. delete(s2,3,3) Câu 6: Xâu là A. dãy kí tự gồm các chữ cái in hoa. B. dãy kí tự gồm các chữ cái in thường. C. dãy kí tự gồm các chữ số. D. dãy kí tự trong bảng mã ASCII. Câu 7: Hàm pos(s1,s2) trả ra kết quả là 0. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s2 := ‘montinhoc’; s1:= ‘tinHoc’; B. s2:= ‘montinhoc’; s1:= ‘tin’; C. s2:= ‘tinhoc’; s1:= ‘tin’; D. s2:= ‘montoantin’; s1:= ‘tin’; Câu 8: Đoạn lệnh tính tổng các số chẵn trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; Câu 9: Khai báo gián tiếp biến mảng 1 chiều: A. 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>; B. 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>; C. tupe <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>; D. 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>; Câu 10: Để đếm các số từ 1 đến 1000 bằng for-do dạng lùi, đoạn chương trình nào dưới đây đúng? A. d:=0; for i:=1 downto 1000 do d:=1; B. d:=0; for i:=1 to 1000 do d:=1; C. d:=0; for i:=1 to 1000 do d:=d+i; D. d:=0; for i:=1000 downto 1 do d:=d+1; Câu 11: Trong Pascal, cấu trúc lặp for-do dạng tiến là: A. for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh> B. for <biến đếm>:=<giá trị đầu> downto <giá trị cuối> do <câu lệnh>; C. for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; D. for <biến đếm>=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; Câu 12: Trong mảng 1 chiều, kiểu chỉ số thường là A. một đ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). B. một đ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 xác định chỉ số đầu và chỉ số cuối (n1≤n2). C. một đ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). D. một đ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 xác định chỉ số đầu và chỉ số cuối (n1≤n2). Trang 3/14 - Mã đề thi 132
Câu 13: Đoạn lệnh đếm các số lẻ trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; B. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+1; Câu 14: Kiểu dữ liệu của biến đếm trong lệnh lặp for-do có điều kiện A. cùng kiểu với các biến trong câu lệnh. B. cùng kiểu với giá trị đầu và giá trị cuối. C. không xác định kiểu dữ liệu. D. chỉ cần cùng kiểu với giá trị đầu. Câu 15: Đoạn lệnh tính tổng các số lẻ hoặc chia hết cho 3 trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if (a[i] mod 2=0) and (a[i] mod 3=0) then x:=x+a[i]; B. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+i; C. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+1; D. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+a[i]; Câu 16: Để mô tả mảng 1 chiều cần xác định A. cách tham chiếu đến phần tử. B. kiểu của các phần tử và cách đánh số các phần tử của nó. C. cách nhập mảng 1 chiều. D. kiểu dữ liệu của mảng. Câu 17: Trong cấu trúc lặp while-do, câu lệnh được thực hiện khi A. không cần điều kiện B. điều kiện sai C. điều kiện đúng D. điều kiện không xác định Câu 18: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục sao chép 5 phần tử trong xâu s2 là A. copy(s1,5,1) B. copy (s2,5,1) C. copy (s2,5,5) D. copy (s1,5,5) Câu 19: Phép gán s := ‘monhoahoc’; Cách khai báo s nào dưới đây đúng? A. var s:string[7] B. var s:tring[8]; C. var s:string[10]; D. var s:string[6]; Câu 20: Khai báo trực tiếp biến mảng 1 chiều tối đa 100 phần tử là các số thực: A. var a:array[1..100] of byte; B. var a:array[1..101] of real; C. var a:array[1..100] of real; D. var a:array[1…100] of real; Câu 21: Phép so sánh xâu kí hiệu gồm A. <, >, >=, <=, =, <> B. <, >, >=, <=, =, !=, C. <, >, >=, <=, = =, <> D. <, >, ≥, ≤, =, <> Câu 22: Trong cấu trúc lặp for-do dạng tiến A. biến đếm tăng dần từ giá trị đầu đến giá trị cuối. B. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. C. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu. D. biến đếm giảm dần từ giá trị cuối đến giá trị đầu. Câu 23: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 <> 0) and (i mod 3 <> 0) then s:=s+i; A. Tính tổng số lẻ hoặc không chia hết cho 3 trong đoạn từ 1000 đến 1. B. Tính tổng số lẻ và chia hết cho 3 trong đoạn từ 1000 đến 1. C. Tính tổng số lẻ và không chia hết cho 3 trong đoạn từ 1000 đến 1. D. Tính tổng số lẻ hoặc chia hết cho 3 trong đoạn từ 1000 đến 1. Câu 24: Trong Pascal, cấu trúc lặp với số lần biết trước là cấu trúc A. for to do B. repeat until C. for do D. while do Câu 25: Thủ tục copy(s,1,3) tạo ra xâu kết quả là ‘dia’. Xâu s nhận giá trị nào dưới đây? A. s := ‘diavatly’; B. s := ‘mondialy’; C. s := ‘montracdia’; D. s := ‘mondia’; Câu 26: Cho 2 xâu s1 := ‘sinhh’; s2 := ‘monsinhhoc’;Tạo s1 từ s2 bằng cách: A. copy(s1,4,5); B. copy(s2,4,5); C. copy(s1,5,4); D. copy(s2,5,4); Câu 27: Thủ tục delete(s,7,4) tạo ra xâu kết quả là ‘monhoc’. Xâu s nhận giá trị nào dưới đây? A. s := ‘monsinhhoc’; B. s := ‘monsuhoc’; C. s := ‘montinhoc’; D. s := ‘monhoctoan’; Câu 28: Đoạn lệnh sau làm gì? x:=0; for i:=1 to n do if (a[i] mod 3<>0) or (a[i] mod 5=0) then x:=x+a[i]; A. Tính tổng các số chia hết cho 3 và không chia hết cho 5 trong mảng a. B. Tính tổng các số không chia hết cho 3 và chia hết cho 5 trong mảng a. C. Tính tổng các số chia hết cho 3 hoặc không chia hết cho 5 trong mảng a. D. Tính tổng các số không chia hết cho 3 hoặc chia hết cho 5 trong mảng a. II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1: Dùng cấu trúc lặp for-do dạng lùi để viết chương trình đưa ra màn hình các số chia hết cho 3 và không chia hết cho 5 trong đoạn [100,200]. Câu 2: Viết chương trình nhập vào xâu s, đưa ra màn hình các kí tự không phải là chữ số trong xâu s. Trang 4/14 - Mã đề thi 132
Câu 3: Viết chương trình nhập vào mảng a gồm các số nguyên dương có n phần tử (n≤2000). Tính tổng các số lẻ trong mảng a. ----------- HẾT ----------
Trang 5/14 - Mã đề thi 132
TRƯỜNG THPT … ĐỀ KIỂM TRA GIỮA KÌ II Mã đề thi 209 Môn thi: Tin học 11 - Thời gian làm bài: 45 phút Họ, tên học sinh:..................................................................... Lớp:......................... I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Trong lệnh lặp while-do, biểu thức là A. biểu thức số học hoặc biểu thức quan hệ. B. biểu thức số học. C. biểu thức quan hệ hoặc biểu thức logic. D. biểu thức logic hoặc biểu thức số học. Câu 2: Phát biểu nào sai? A. Xâu chứa các chữ cái. B. Các phần tử của xâu không được đánh chỉ số. C. Xâu được đặt tên. D. Xâu có độ dài hữu hạn. Câu 3: Khai báo biến xâu var s:tring[5]. Phép gán giá trị nào sau là đúng? A. s := ‘monsinhhoc’; B. s := ‘monlytin’; C. s := ‘monsu’; D. s := ‘toanhoc’; Câu 4: Khai báo trực tiếp biến mảng 1 chiều: A. var <tên biến mảng>:array[kiểu chỉ số] of <kiểu phần tử>; B. var <tên biến mảng>=array[kiểu chỉ số] of <kiểu phần tử>; C. var <tên kiểu mảng>:array[kiểu chỉ số] of <kiểu phần tử>; D. var <tên kiểu mảng>=array[kiểu chỉ số] of <kiểu phần tử>; Câu 5: Đoạn lệnh tính tổng các số chẵn hoặc không chia hết cho 3 trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if (a[i] mod 2=0) and (a[i] mod 3=0) then x:=x+a[i]; B. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+1; C. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+i; D. x:=0; for i:=1 to n do if (a[i] mod 2=0) or (a[i] mod 3<>0) then x:=x+a[i]; Câu 6: Thủ tục copy(s,4,3) tạo ra xâu kết quả là ‘dia’. Xâu s nhận giá trị nào dưới đây? A. s := ‘monlichsu’; B. s := ‘mondialy’; C. s := ‘montracdia’; D. s := ‘dia’; Câu 7: Trong Pascal, cấu trúc lặp for-do dạng lùi là: A. for <biến đếm>=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>; B. for <biến đếm>:=<giá trị cuối> downto <giá trị đầu> do <câu lệnh>; C. for <biến đếm>=<giá trị cuối> downto <giá trị đầu> do <câu lệnh> D. for <biến đếm>:=<giá trị cuối> to <giá trị đầu> do <câu lệnh>; Câu 8: Đoạn lệnh tính tổng các số lẻ trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+i; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; Câu 9: Thủ tục delete(s,9,2) tạo ra xâu kết quả là ‘truongth’. Xâu s nhận giá trị nào dưới đây? A. s := ‘truongpt’; B. s := ‘thpttruong’; C. s := ‘truongthpt’; D. s := ‘ptthtruong’; Câu 10: Cách tham chiếu đến phần tử trong mảng 1 chiều: A. <tên kiểu mảng>[<chỉ số>] B. <tên kiểu mảng>[<kiểu chỉ số>] C. <tên biến mảng>[<kiểu chỉ số>] D. <tên biến mảng>[<chỉ số>] Câu 11: Phát biểu nào sau đây đúng về mảng 1 chiều? A. Là dãy hữu hạn các phần tử có cùng kiểu. B. Chỉ là các dãy số nguyên. C. Mảng không chứa kí tự là chữ cái. D. Là dãy vô hạn các phần tử có cùng kiểu. Câu 12: Đoạn lệnh đếm các số chẵn trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+1; Câu 13: Trong cấu trúc lặp for-do dạng lùi, câu lệnh được thực hiện khi A. <giá trị đầu> <= <biến đếm> và <biến đếm> <= <giá trị cuối> B. <giá trị đầu> > <biến đếm> và <biến đếm> >= <giá trị cuối> C. <giá trị đầu> < <biến đếm> và <biến đếm> < <giá trị cuối> D. <giá trị đầu> >= <biến đếm> và <biến đếm> >= <giá trị cuối> Câu 14: Để đếm các số từ 1 đến 1000 bằng for-do dạng tiến, đoạn chương trình nào dưới đây đúng? A. d:=0; for i:=1 to 1000 do d:=d+1; B. d:=0; for i:=1 downto 1000 do d:=d+1; C. d:=0; for i:=1 downto 1000 do d:=d+i; D. d:=0; for i:=1 to 1000 do d:=1; Trang 6/14 - Mã đề thi 132
Câu 15: Để đếm các số từ 1 đến 1000 bằng while-do, đoạn chương trình nào dưới đây đúng? A. d:=0; i:=1000; while i>1 do begin d:=d+i; i:=i-1; end; B. d:=0; i:=1; while i<=1000 do begin d:=1; i:=i+1; end; C. d:=0; i:=1000; while i>=1 do begin d:=d+1; i:=i-1; end; D. d:=0; i:=1; while i<1000 do begin d:=d+i; i:=i+1; end; Câu 16: Trong Pascal, cấu trúc lặp while-do là: A. while <điều kiện> to <câu lệnh>; B. while <điều kiện> then <câu lệnh>; C. while <điều kiện> do <câu lệnh> D. while <điều kiện> do <câu lệnh>; Câu 17: Phép gán s := ‘montoan’; Cách khai báo s nào dưới đây đúng? A. var s:string[4]; B. var s:string[9]; C. var s:string[6] D. var s:tring[5]; Câu 18: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 = 0) and (i mod 3 = 0) then s:=s+1; A. Tính tổng số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Đếm số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. C. Đếm số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. D. Tính tổng số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 19: Khai báo trực tiếp biến mảng 1 chiều tối đa 100 phần tử là các số nguyên: A. var a:array[1...100] of byte; B. var a:array[1..100] of real; C. var a:array[1..101] of byte; D. var a:array[1..100] of byte; Câu 20: Phép ghép xâu kí hiệu gồm A. * B. & C. + D. ++ Câu 21: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục sao chép 3 phần tử trong xâu s1 là A. copy(s1,3,1) B. copy (s2,3,3) C. copy (s1,3,3) D. copy (s2,3,1) Câu 22: Đoạn chương trình sau làm gì? s:=0; for i:=1 to 1000 do if (i mod 2 = 0) and (i mod 3 <> 0) then s:=s+i; A. Tính tổng số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Tính tổng số chẵn và chia hết cho 3 trong đoạn từ 1 đến 1000. C. Tính tổng số chẵn và không chia hết cho 3 trong đoạn từ 1 đến 1000. D. Tính tổng số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 23: Trong Pascal, cấu trúc lặp với số lần chưa biết trước là A. if then B. while do C. for downto do D. for do Câu 24: Hàm pos(s2,s1) trả ra kết quả là 4. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s1 := ‘montinhoc’; s2 := ‘tinHoc’; B. s1 := ‘montoantin’; s2 := ‘tin’; C. s1 := ‘tinhoc’; s2 := ‘tin’; D. s1 := ‘montinhoc’; s2 := ‘tin’; Câu 25: Cho 2 xâu s1 := ‘monlichsu’; s2 := ‘su’;Tạo s2 từ s1 bằng cách: A. copy(s1,8,2); B. copy(s2,8,2); C. copy(s1,2,8); D. copy(s2,2,8); Câu 26: Đoạn lệnh sau làm gì? x:=0; for i:=1 to n do if (a[i] mod 3=0) and (a[i] mod 5<>0) then x:=x+a[i]; A. Tính tổng các số chia hết cho 3 và không chia hết cho 5 trong mảng a. B. Tính tổng các số không chia hết cho 3 và chia hết cho 5 trong mảng a. C. Tính tổng các số chia hết cho 3 hoặc không chia hết cho 5 trong mảng a. D. Tính tổng các số không chia hết cho 3 hoặc chia hết cho 5 trong mảng a. Câu 27: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục xóa phần tử thứ 5 trong xâu s2 là A. delete(s1,5,5) B. delete(s2,5,1) C. delete(s2,5,5) D. delete(s1,5,1) Câu 28: Trong cấu trúc lặp for-do dạng lùi A. biến đếm tăng dần từ giá trị đầu đến giá trị cuối. B. biến đếm giảm dần từ giá trị cuối đến giá trị đầu. C. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. D. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu. II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1: Dùng cấu trúc lặp for-do dạng tiến để viết chương trình đưa ra màn hình các số lẻ hoặc chia hết cho 5 trong đoạn [200,300]. Câu 2: Viết chương trình nhập vào xâu s, đưa ra màn hình các chữ cái in hoa trong xâu s. Câu 3: Viết chương trình nhập vào mảng a gồm các số nguyên dương có n phần tử (n≤3000). Đếm các số lẻ trong mảng a. Trang 7/14 - Mã đề thi 132
-----------------------------------------------------
HẾT ----------
Trang 8/14 - Mã đề thi 132
TRƯỜNG THPT … ĐỀ KIỂM TRA GIỮA KÌ II Mã đề thi 210 Môn thi: Tin học 11 - Thời gian làm bài: 45 phút Họ, tên học sinh:..................................................................... Lớp:......................... I. PHẦN TRẮC NGHIỆM (7,0 ĐIỂM) Câu 1: Kiểu dữ liệu của biến đếm trong lệnh lặp for-do có điều kiện A. cùng kiểu với giá trị đầu và giá trị cuối. B. cùng kiểu với các biến trong câu lệnh. C. không xác định kiểu dữ liệu. D. chỉ cần cùng kiểu với giá trị đầu. Câu 2: Xâu là A. dãy kí tự trong bảng mã ASCII. B. dãy kí tự gồm các chữ cái in hoa. C. dãy kí tự gồm các chữ số. D. dãy kí tự gồm các chữ cái in thường. Câu 3: Khai báo biến xâu var s:tring[7]. Phép gán giá trị nào sau là đúng? A. s := ‘monlichsu’; B. s := ‘monvatly’; C. s := ‘tinhoc’; D. s := ‘monsinhhoc’; Câu 4: Khai báo gián tiếp biến mảng 1 chiều: A. tupe <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>; B. 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>; C. 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>; D. 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>; Câu 5: Đoạn lệnh tính tổng các số lẻ hoặc chia hết cho 3 trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+i; B. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+1; C. x:=0; for i:=1 to n do if (a[i] mod 2=0) and (a[i] mod 3=0) then x:=x+a[i]; D. x:=0; for i:=1 to n do if (a[i] mod 2<>0) or (a[i] mod 3=0) then x:=x+a[i]; Câu 6: Thủ tục copy(s,1,3) tạo ra xâu kết quả là ‘dia’. Xâu s nhận giá trị nào dưới đây? A. s := ‘diavatly’; B. s := ‘mondialy’; C. s := ‘montracdia’; D. s := ‘mondia’; Câu 7: Trong Pascal, cấu trúc lặp for-do dạng tiến là: A. for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; B. for <biến đếm>:=<giá trị đầu> downto <giá trị cuối> do <câu lệnh>; C. for <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh> D. for <biến đếm>=<giá trị đầu> to <giá trị cuối> do <câu lệnh>; Câu 8: Đoạn lệnh tính tổng các số chẵn trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; B. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; C. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+i; Câu 9: Thủ tục delete(s,7,4) tạo ra xâu kết quả là ‘monhoc’. Xâu s nhận giá trị nào dưới đây? A. s := ‘monsinhhoc’; B. s := ‘monhoctoan’; C. s := ‘montinhoc’; D. s := ‘monsuhoc’; Câu 10: Trong mảng 1 chiều, kiểu chỉ số thường là A. một đ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). B. một đ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 xác định chỉ số đầu và chỉ số cuối (n1≤n2). C. một đ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). D. một đ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 xác định chỉ số đầu và chỉ số cuối (n1≤n2). Câu 11: Để mô tả mảng 1 chiều cần xác định A. cách tham chiếu đến phần tử. B. kiểu của các phần tử và cách đánh số các phần tử của nó. C. cách nhập mảng 1 chiều. D. kiểu dữ liệu của mảng. Câu 12: Đoạn lệnh đếm các số lẻ trong mảng a nguyên có n phần tử là: A. x:=0; for i:=1 to n do if a[i] mod 2=0 then x:=x+1; B. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+i; C. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+a[i]; D. x:=0; for i:=1 to n do if a[i] mod 2<>0 then x:=x+1; Câu 13: Trong cấu trúc lặp for-do dạng tiến, câu lệnh được thực hiện khi A. <giá trị đầu> >= <biến đếm> và <biến đếm> >= <giá trị cuối> B. <giá trị đầu> > <biến đếm> và <biến đếm> >= <giá trị cuối> C. <giá trị đầu> < <biến đếm> và <biến đếm> < <giá trị cuối> Trang 9/14 - Mã đề thi 132
D. <giá trị đầu> <= <biến đếm> và <biến đếm> <= <giá trị cuối> Câu 14: Để đếm các số từ 1 đến 1000 bằng for-do dạng lùi, đoạn chương trình nào dưới đây đúng? A. d:=0; for i:=1 downto 1000 do d:=1; B. d:=0; for i:=1000 downto 1 do d:=d+1; C. d:=0; for i:=1 to 1000 do d:=1; D. d:=0; for i:=1 to 1000 do d:=d+i; Câu 15: Để đếm các số từ 1 đến 1000 bằng while-do, đoạn chương trình nào dưới đây đúng? A. d:=0; i:=1000; while i>1 do begin d:=d+i; i:=i-1; end; B. d:=0; i:=1; while i<=1000 do begin d:=d+i; i:=i+1; end; C. d:=0; i:=1000; while i>=1 do begin d:=1; i:=i-1; end; D. d:=0; i:=1; while i<=1000 do begin d:=d+1; i:=i+1; end; Câu 16: Trong cấu trúc lặp while-do, câu lệnh được thực hiện khi A. không cần điều kiện B. điều kiện sai C. điều kiện đúng D. điều kiện không xác định Câu 17: Phép gán s := ‘monhoahoc’; Cách khai báo s nào dưới đây đúng? A. var s:string[6]; B. var s:string[10]; C. var s:string[7] D. var s:tring[8]; Câu 18: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 = 0) or (i mod 3 <> 0) then s:=s+1; A. Tính tổng số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. B. Đếm số chẵn hoặc không chia hết cho 3 trong đoạn từ 1 đến 1000. C. Tính tổng số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. D. Đếm số chẵn hoặc chia hết cho 3 trong đoạn từ 1 đến 1000. Câu 19: Khai báo trực tiếp biến mảng 1 chiều tối đa 100 phần tử là các số thực: A. var a:array[1..100] of byte; B. var a:array[1..101] of real; C. var a:array[1..100] of real; D. var a:array[1…100] of real; Câu 20: Phép so sánh xâu kí hiệu gồm A. <, >, >=, <=, =, <> B. <, >, >=, <=, =, !=, C. <, >, >=, <=, = =, <> D. <, >, ≥, ≤, =, <> Câu 21: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục sao chép 5 phần tử trong xâu s2 là A. copy(s1,5,1) B. copy (s1,5,5) C. copy (s2,5,5) D. copy (s2,5,1) Câu 22: Đoạn chương trình sau làm gì? s:=0; for i:=1000 downto 1 do if (i mod 2 <> 0) and (i mod 3 <> 0) then s:=s+i; A. Tính tổng số lẻ hoặc không chia hết cho 3 trong đoạn từ 1000 đến 1. B. Tính tổng số lẻ và chia hết cho 3 trong đoạn từ 1000 đến 1. C. Tính tổng số lẻ và không chia hết cho 3 trong đoạn từ 1000 đến 1. D. Tính tổng số lẻ hoặc chia hết cho 3 trong đoạn từ 1000 đến 1. Câu 23: Trong Pascal, cấu trúc lặp với số lần biết trước là cấu trúc A. for to do B. for do C. repeat until D. while do Câu 24: Hàm pos(s1,s2) trả ra kết quả là 0. Các xâu s1, s2 phải nhận giá trị nào dưới đây? A. s2 := ‘montinhoc’; s1:= ‘tinHoc’; B. s2:= ‘montoantin’; s1:= ‘tin’; C. s2:= ‘tinhoc’; s1:= ‘tin’; D. s2:= ‘montinhoc’; s1:= ‘tin’; Câu 25: Cho 2 xâu s1 := ‘sinhh’; s2 := ‘monsinhhoc’;Tạo s1 từ s2 bằng cách: A. copy(s1,4,5); B. copy(s2,4,5); C. copy(s1,5,4); D. copy(s2,5,4); Câu 26: Đoạn lệnh sau làm gì? x:=0; for i:=1 to n do if (a[i] mod 3<>0) or (a[i] mod 5=0) then x:=x+a[i]; A. Tính tổng các số chia hết cho 3 và không chia hết cho 5 trong mảng a. B. Tính tổng các số không chia hết cho 3 và chia hết cho 5 trong mảng a. C. Tính tổng các số chia hết cho 3 hoặc không chia hết cho 5 trong mảng a. D. Tính tổng các số không chia hết cho 3 hoặc chia hết cho 5 trong mảng a. Câu 27: Cho xâu s1, s2 (tối đa 10 phần tử) Thủ tục xóa phần tử thứ 3 trong xâu s1 là A. delete(s1,3,3) B. delete(s2,3,1) C. delete(s2,3,3) D. delete(s1,3,1) Câu 28: Trong cấu trúc lặp for-do dạng tiến A. biến đếm tăng dần từ giá trị đầu đến giá trị cuối. B. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp giảm từ giá trị cuối đến giá trị đầu. C. câu lệnh viết sau từ khóa do được thực hiện tuần tự, với biến đếm lần lượt nhận các giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối. D. biến đếm giảm dần từ giá trị cuối đến giá trị đầu. II. PHẦN TỰ LUẬN (3,0 ĐIỂM) Câu 1: Dùng cấu trúc lặp for-do dạng lùi để viết chương trình đưa ra màn hình các số không chia hết cho 3 hoặc chia hết cho 7 trong đoạn [300,400]. Câu 2: Viết chương trình nhập vào xâu s, đưa ra màn hình các kí tự không phải là chữ cái trong xâu s. Trang 10/14 - Mã đề thi 132
Câu 3: Viết chương trình nhập vào mảng a gồm các số nguyên dương có n phần tử (n≤4000). Tính tổng các số chẵn trong mảng a. ---------------------------------------------------------- HẾT ----------
Trang 11/14 - Mã đề thi 132
mamon 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
made 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 132 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209
cautron 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
dapan B C D A B A B B C A B D A D D A D C C D C D C B B A C A E E E E E E E E E E E E C B C A D B B D C D A A A A C D B
Trang 12/14 - Mã đề thi 132
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 209 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
B D C C C B D A A B D E E E E E E E E E E E E B B A B A D A A D D C A D B D B C C C C A B C C A B D D E E E E E E E E
Trang 13/14 - Mã đề thi 132
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
134 134 134 134 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210 210
37 38 39 40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
E E E E A A C D D A A C B A B D D B D C B B C A C C B A B D D C E E E E E E E E E E E E
Trang 14/14 - Mã đề thi 132