Giáo án Tin học 11 - Chương trình học kì II - Năm học 2022-2023 - Nguyễn Thị Huyền

docx 38 trang Đình Phong 05/07/2023 1770
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án Tin học 11 - Chương trình học kì II - Năm học 2022-2023 - Nguyễn Thị Huyền", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docxgiao_an_tin_hoc_lop_11_chuong_trinh_hoc_ki_ii_nam_hoc_2022_2.docx

Nội dung text: Giáo án Tin học 11 - Chương trình học kì II - Năm học 2022-2023 - Nguyễn Thị Huyền

  1. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Ngày dạy: Tiết PPCT: 37 14. KIỂU DỮ LIỆU TỆP - §15. THAO TÁC VỚI TỆP I. Mục tiêu bài học 1. Kiến thức - Biết khái niệm và vai trò của tệp - Biết hai cách phân loại tệp - Biết bản chất của tệp văn bản 2. Kỹ năng - Khai báo biến tệp và các thao tác cơ bản làm việc với tệp văn bản; - Sử dụng một số thủ tục và hàm chuẩn làm việc với tệp 3. Thái độ - Học sinh hào hứng tìm hiểu về một kiểu dữ liệu mới 4. Năng lực, phẩm chất - NL tư duy - NL sử dụng ngôn ngữ - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở - Phương tiện: SGK, giáo án, máy chiếu 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: Kết hợp trong quá trinh học bài mới B. Hoạt động hình thành kiến thức HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1: Tìm hiểu vai trò của tệp– Phát triển NL tư duy 1.Vai trò của kiểu tệp GV: Chạy một chương trình bất kì khi chưa sử dụng và sau khi đã sử dụng tệp, yêu cầu HS so sánh và rút ra vai trỏ của kiểu tệp. HS: Trả lời câu hỏi. - Dữ liệu kiểu tệp được lưu trữ lâu dài ở bộ nhớ ngoài và không mất khi tắt nguồn điện. 1 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  2. Giáo án tin học 11 – Năm học : 2022-2023 - Lượng dữ liệu lưu trữ trên tệp có thể rất lớn và chỉ phụ thuộc vào dung lượng đĩa. HĐ2: Tìm hiểu cách phân loại tệp– Phát triển NL sử dụng ngôn ngữ 2. Phân loại tệp GV: Có mấy cách phân loại tệp HS:2 cách GV: Xét theo cách tổ chức dữ liệu, tệp được phân thành mấy loại? - C1: Phân loại theo cách tổ chức dữ liệu HS: 2 loại + Loại 1: 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. + Loại 2: Tệp có cấu trúc: là tệp mà các thành phần của nó được tổ chức theo một cấu trúc nhất định. GV: Xét theo cách thức truy cập, tệp được phân làm mấy loại? HS: 2 loại (tệp truy cập tuần tự và tệp truy cập trực tiếp) - C2: Phân loại theo cách thức truy cập + Loại 1: Tệp truy cập tuần tự: cho phép truy cập đến một dữ liệu nào đó trong tệp chỉ bằng cách bắt đầu đi từ đầu tệp và đi qua lần lượt tất cả các tệp. + Loại 2: Tệp truy cập trực tiếp: cho phép tham chiếu đến dữ liệu bằng cách xác định trực tiếp vị trí của dữ liệu đó. HĐ3: Tìm hiểu thao tác với tệp – Phát triển NL sử dụng ngôn ngữ, NL tư duy 3. Thao tác với tệp GV: Có những thao tác với tệp nào? HS: Suy nghĩ và TL câu hỏi - Khai báo biến tệp; - Mở tệp; - Đọc/ghi dữ liệu; - Đóng tệp. * Chú ý: - Khác với mảng, số lượng phần tử của tệp không cần xác định trước. - Hai thao tác cơ bản đối với tệp là đọc dữ liệu từ tệp và ghi dữ liệu vào tệp. 2 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  3. Giáo án tin học 11 – Năm học : 2022-2023 - Thao tác đọc/ghi với tệp được thực hiện với từng phần tử của tệp. C. Hoạt động củng cố - Các thao tác với tệp: khai báo biến tệp, mở/đóng tệp, đọc/ghi tệp D. Hoạt động luyện tập, mở rộng - Nghiên cứu tiếp “§15. Thao tác với tệp”. 3 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  4. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Ngày dạy: Tiết PPCT: 38 §16. VÍ DỤ LÀM VIỆC VỚI TỆP I. Mục tiêu bài học 1. Kiến thức - Hiểu các thao tác làm việc với tệp 2. Kỹ năng - Sử dụng đúng các thủ tục trong C++ thực hiện các nhiệm vụ: mở tệp đọc/ghi, đọc/ghi tệp, đóng tệp 3. Thái độ - Học sinh thấy được tầm quan trọng của kiểu dữ liệu tệp trong việc lưu trữ dữ liệu. 4. Năng lực, phẩm chất - NL tính toán - NL lập trình - NL tư duy - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở - Phương tiện: SGK, giáo án, máy chiếu 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: Vẽ sơ đồ làm việc với tệp B. Hoạt động hình thành kiến thức HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1: Tìm hiểu ví dụ 1– Phát triển NL tư duy và NL tính toán 1. Ví dụ 1 GV: Chiếu đề bài và chương trình. GV: Chương trình này thực hiện công việc gì? Xác định Input và Output của bài toán? HS: Tính và đưa ra màn hình khoảng cách từ trại của thầy hiệu trưởng đến trại của mỗi giáo viên. - Xác định bài toán: + Input: x, y GV: Hãy cho biết câu lệnh while(cin>>x>>y) + Output: d có ý nghĩa như thế nào? 4 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  5. Giáo án tin học 11 – Năm học : 2022-2023 HS: Khi việc đọc dữ liệura hai biến x và y vẫn còn đúng (vẫn còn dữ liệu để đọc). Nếu không còn dữ liệu để đọc, sẽ trả về giá trị là false. GV: Có thể sử dụng cấu trúc FOR thay cho WHILE được không? HS: Không, vì không biết số lượng phần tử của tệp. GV: Giới thiệu cho HS cách tạo file TRAI.TXT. - B1: File → New → Empty file - B2: Nhập dữ liệu - B3: File → Save (Ctrl + S) + Mục File name: nhập tên TRAI.TXT + Mục Save as type: chọn All files HS: Soạn thảo, tạo tệp và chạy chương trình - Chương trình: #include using namespace std; short x, y; double d; int main() { freopen(“TRAI.TXT”, “r”, stdin); freopen(“TRAI.TXT”, “w”, stdout); while (cin>>x>>y) { d = sqrt(a*x+y*y) cout<<fixed<<setprescision(2)<<d<<endl; } return 0; } C. Hoạt động củng cố- Cấu trúc chương trình có sử dụng tệp:+ Mở tệp đọc/ghi + Đọc tệp + Ghi tệp + Đóng tệp D. Hoạt động luyện tập, mở rộng- Tìm hiểu kiểu dữ liệu mảng và viết các chương trình đó có sử dụng kiểu dữ liệu tệp. 5 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  6. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Ngày dạy: Tiết PPCT: 39,40 BÀI TẬP – THỰC HÀNH I. Mục tiêu bài học 1. Kiến thức - Hiểu các thao tác cơ bản làm việc với tệp 2. Kỹ năng - Học sinh sử dụng thành thạo kiểu dữ liệu tệp vào giải quyết các bài toán thông thường 3. Thái độ - Học sinh thấy được tầm quan trọng của kiểu dữ liệu tệp trong các kì thi quan trọng như thi HSG. 4. Năng lực, phẩm chất - NL tính toán - NL lập trình - NL tư duy - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở, thực hành - Phương tiện: SGK, giáo án, máy chiếu 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: Kết hợp trong quá trình làm bài tập B. Hoạt động hình thành kiến thức HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1:Thực hiện bài tập 1 – Phát triển NL tư duy, NL lập trình và NL tính toán 1. Bài 1 GV: Chiếu đề bài và chương trình. HS: Đọc kĩ yêu cầu Yêu cầu: Cho hai số nguyên a và b(a<=109, b<=109). Bạn hãy tính chu vi và diện tích hình chữ nhật có độ dài hai cạnh tương ứng là a và b. Dữ liệu: Cho fileNHAP.TXT gồm hai số tự nhiên a và b, mỗi số cách nhau ít nhất một dấu cách Kết quả:Ghi ra fileXUAT.TXTgồm 2 số lần lượt là chu vi và diện tích của hình chữ nhật đó. NHAP.TXT XUAT.TXT 6 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  7. Giáo án tin học 11 – Năm học : 2022-2023 15 9 48 135 5 5 20 25 3 17 30 51 - Xác định bài toán: GV: Xác định Input và Output của bài toán? HS: TL + Input: a, b + Output: p, s - Chương trình: GV: Yêu cầu HS viết chương trình HS: Soạn thảo, tạo tệp và chạy chương trình #include using namespace std; long a, b; long long p, s; int main() { freopen(“NHAP.TXT”, “r”, stdin); freopen(“XUAT.TXT”, “w”, stdout); while (cin>>a>>b) { p = (a+b)*2; s= a*b; cout << p << “ ”<<s<<endl; } return 0; } GV: Chiếu chương trình và chạy. HS: Chạy chương trình, đối chiếu kết quả HĐ2: Thực hiện bài tập 2 – Phát triển NL tính toán và NL lập trình 2. Bài tập 2 GV: Chiếu đề bài HS: Đọc và suy nghĩ Một người thường xuyên đóng tiền điện hàng tháng cho gia đình. Bạn hãy giúp cho khách hàng này hiểu cách tính tiền điện của sở điện lực. Biết cách tính tiền điện của sở điện lực như sau : 7 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  8. Giáo án tin học 11 – Năm học : 2022-2023 * Nếu điện năng tiêu thụ của một hộ gia đình từ 1 đến 50 số thì tính 1000đ/số * Nếu điện năng tiêu thụ của một hộ gia đình từ 51 đến 100 số thì tính 1500đ/số * Nếu điện năng tiêu thụ của một hộ gia đình từ 101 số trở đi thì tính 2000đ/số Yêu cầu: Em hãy lập trình giúp người khách tính tiền điện phải đóng cho sở điện lực Dữ liệu:Cho file TIENDIEN.INP gồm một số nguyên dương N(N 50) &&(n using namespace std; long n; long long t; int main() { freopen(“TIENDIEN.INP”,“r”, stdin); freopen(“TIENDIEN.OUT”,“w”, stdout); 8 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  9. Giáo án tin học 11 – Năm học : 2022-2023 while (cin>>n) { if (n 50) &&(n<=100)) t=50*1000+(n- 50)*1500); else t = 50*1000+(50*1500)+(n-100)*2000); } return 0; GV: Chạy chương trình. } HS: Quan sát kết quả của chương trình và so sánh với kết quả tính được. Nhận xét về tính chính xác và thời gian thực hiện của chương trình. C. Hoạt động củng cố - Các thao tác cơ bản làm việc với tệp D. Hoạt động luyện tập, mở rộng - Đọc lại cấu trúc lặp chuẩn bị cho tiết bài tập tiếp theo. 9 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  10. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Ngày dạy: Tiết PPCT: 41,42: §17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI I. Mục tiêu bài học 1. Kiến thức - Biết việc sử dụng chương trình con rất cần thiết khi phải viết chương trình dài, phức tạp - Nắm được cấu trúc chung của một chương trình con - Phân biệt được hàm có trả về một giá trị và hàm không trả về một giá trị - Phân biệt được tham chiếu và tham trị 2. Kỹ năng - Xây dựng và tổ chức chương trình con; - Gọi chương trình con trong thân chương trình chính. 3. Thái độ - Học sinh hiểu bài và có hứng thú làm quen với lập trình có cấu trúc. - HS thấy được tầm quan trọng của chương trình con và lập trình có cấu trúc 4. Năng lực, phẩm chất - NL tư duy - NL tính toán - NL sử dụng ngôn ngữ - NL lập trình - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở - Phương tiện: SGK, giáo án 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: Kết hợp trong quá trình học bài mới B. Hoạt động hình thành kiến thức HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1: Tìm hiểu khái niệm chương trình con– Phát triển NL sử dụng ngôn ngữ 1.Khái niệm chương trình con a.Khái niệm GV: Các chương trình dài, phức tạp thường rất dài, có thể gồm nhiều lệnh, khi đọc rất khó hình dung chương trình thực hiện những công việc gì và việc hiệu chỉnh cũng rất khó khăn. Như vậy, 10 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  11. Giáo án tin học 11 – Năm học : 2022-2023 làm thế nào để bài toán phức tạp dễ đọc, dễ hiểu, dễ hiệu chỉnh và dễ nâng cấp. Xét bài toán sau: Tính tổng an + bm + cp + dq Hãy nêu ý tưởng giải quyết bài toán này? HS: Suy nghĩ và TL dựa theo SGK. #include using namespace std; double a,b,c,d,t,t1,t2,t3,t4; long i,m,n,p,q; int main() { cout >a>>b>>c>>d>>m>>n>>p>>q; t1=1.0;t2=1.0; t3=1.0; t4=1.0; for (long i=1;i using namespace std; double a,b,c,d,t; long i,m,n,p,q; double luythua(double a,long m) { double lt=1.0; for (long i=1;i<=m;i++) lt=lt*a; return lt; } int main() 11 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  12. Giáo án tin học 11 – Năm học : 2022-2023 { cout >a>>b>>c>>d>>m>>n>>p>>q; t= luythua(a,n)+luythua(b,m)+luythua(c,p)+luythu a(d,q); cout<<"Tong = "<<fixed<<setprecision(2)<<t; return 0; } GV:Để giải bài toán trên máy tính có thể chia chương trình thành các khối, mỗi khối gồm nhiều lệnh giải bài tập con nào đó → Chương trình chính được xây dựng từ các chương trình con. Vậy chương trình con là gì? HS: Theo dõi SGK và TL Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình. GV: So sánh chương trình “Luythua2” có sử b. Lợi ích của việc sử dụng chương trình con dụng chương trình con và chương trình “Luythua1” không sử dụng chương trình con, em hãy cho biết các lợi ích của việc sử dụng chương trình con. HS: Suy nghĩ và TL - Tránh được việc phải viết lặp đi lặp lại nhiều lần cùng một dòng lệnh. - Hỗ trợ việc thực hiện các chương trình lớn - Phục vụ quá trình trừu tượng hóa HĐ2: Tìm hiểu cách phân loại chương trình con– Phát triển NL sử dụng ngôn ngữ, NL tính toán, NL tư duy, NL lập trình 2. Phân loại chương trình con a.Hàm có trả về một giá trị GV: Nêu ví dụ về hàm số học chuẩn trong C++? HS:sin(x), sqrt(x), trunc(x), ; GV: Xét hàm sin(x). Với x = 0 giá trị của hàm sin(x) cho kết quả là bao nhiêu? HS: sin(x) = 1 GV: Sau khi thực hiện tính toán hàm sin(x) với x = 0 cho giá trị là 1. Vậy em hãy cho biết hàm có trả về một giá trị có đặc điểm gì? - Khái niệm: Hàm là chương trình thực hiện một số thao tác nào đó, trả lại giá trị qua tên của hàm 12 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  13. Giáo án tin học 11 – Năm học : 2022-2023 - Cú pháp: (tham số 1, tham số 2, ) { các câu lệnh; return giá trị trả về của hàm; } - Ví dụ: #include using namespace std; int cong(int a, int b) { int r; r = a+b; return r; } int main() { int x=5,y=3;z; z = cong(7,2); cout<<"Ket qua 1 = "<<z<<endl; cout<<"Ket qua 2 = "<<cong(7,2)<<endl; cout<<"Ket qua 3 = "<<cong(x,y)<<endl; z = 4 + cong(x,y); cout<<"Ket qua 4 = "<<z; return 0; } GV: Giải thích hàm cộng, tương tự yêu cầu HS xây dựng hàm trừ và viết chương trình có sử dụng hàm trừ nhiều lần. HS: Thực hiện yêu cầu. b. Hàm không trả về một giá trị - hàm void GV: Nêu ví dụ về hàm chuẩn vào/ra đơn giản trong C++? HS: cout, cin, GV: Xét hàm cout<<“Xin chao!!!”; hàm này làm gì?Cho kết quả là gì? Có trả về giá trị nào không? HS: Hàm cout<<“Xin chao!!!” thực hiện in ra màn hình dòng chữ: “Xin chao” và không trả về giá trị? GV: Hãy cho biết hàm không trả về một giá trị có đặc điểm gì? 13 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  14. Giáo án tin học 11 – Năm học : 2022-2023 HS: Suy nghĩ và TL - Khái niệm: Hàm không trả về một giá trị (Thủ tục – hàm void) là chương trình thực hiện một số thao tác nào đó, không trả lại giá trị qua tên của hàm - Cú pháp: void (tham số 1, tham số 2, ) { các câu lệnh; } - Ví dụ: #include using namespace std; void inthongbao() { cout<< “Day la mot ham”; } int main() { inthongbao(); } GV: Giải thích chương trình ví dụ và yêu cầu HS viết một số ví dụ về hàm không trả về giá trị thực hiện một công việc bất kì HS: Thực hiện yêu cầu C. Hoạt động củng cố - Khái niệm, lợi ích của chương trình con - Phân biệt hàm có trả về giá trị và hàm không trả về giá trị D. Hoạt động luyện tập, mở rộng - Đọc trước mục 2. Tham trị và tham chiếu và 3. Đệ quy 14 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  15. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Ngày dạy: Tiết PPCT: 43,44 §18. VÍ DỤ VÊ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON I. Mục tiêu bài học 1. Kiến thức - Phân biệt được tham chiếu và tham trị 2. Kỹ năng - Xây dựng và tổ chức hàm không trả ra giá trị có sử dụng tham chiếu hoặc tham trị; 3. Thái độ - Học sinh hiểu bài và có hứng thú làm quen với lập trình có cấu trúc. - HS thấy được tầm quan trọng của chương trình con và lập trình có cấu trúc 4. Năng lực, phẩm chất - NL tư duy - NL tính toán - NL sử dụng ngôn ngữ - NL lập trình - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở - Phương tiện: SGK, giáo án 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: Cho dãy số nguyên dương a gồm n phần tử (0 ≤ n ≤ 100000) (0 ≤ ai ≤ 100000) (i = 1 n) Yêu cầu:- Tìm tất cả các số nguyên tố của dãy A Dữ liệu:- Vào từ file DS.INP - Dòng 1 ghi số phần tử n của dãy - Dòng 2 ghi các giá trị phần tử ai (i = 1 n) Kết quả:- Đưa ra file DS.OUT - Các số nguyên tố (trên 1 dòng) DS.INP DS.OUT 6 2 11 5 2 11 4 5 9 5 B. Hoạt động hình thành kiến thức 15 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  16. Giáo án tin học 11 – Năm học : 2022-2023 HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1:Tìm hiểu hàm không trả về một giá trị – Phát triển NL sử dụng ngôn ngữ, NL tư duy, NL tính toán và NL lập trình 1. Hàm không trả về một giá trị a. Ví dụ: Hàm vẽ hình chữ nhật GV: Chiếu hàm vẽ hình chữ nhật, yêu cầu học sinh nhận xét về hàm ve_hcn của ví dụ này với #include ví dụ trước. using namespace std; * Tổ chức hoạt động nhóm; void ve_hcn(long chdai, long chrong) - Phân nhóm từ 4-6 em { long i, j; - Công việc: Xác định bản chất của hàm ve_hcn; //Ve canh tren cua hinh chu nhat - Câu hỏi: Câu lệnh nào thực hiện vẽ cạnh trên, for (i=1;i<=chdai;i++) cout<<"*"; hai cạnh bên và câu lệnh nào thực hiện vẽ cạnh cout<<endl; dưới. //Ve 2 canh ben - Kết thúc hoạt động: thu kết quả của các nhóm, yêu cầu các nhóm trình bày kết quả của nhóm. for (j=1; j<=(chrong-2);j++) - Cho các nhóm nhận xét kết quả bài làm của { nhau. cout<<"*"; GV: Nhận xét kết quả và đưa ra kết luận (có thể for (i=1;i<= (chdai-2);i++) cout<<" "; cho điểm các nhóm nếu bài làm tốt) cout<<"*"; GV: Trong chương trình chính ta vẽ tất cả bao cout<<endl; nhiêu hình chữ nhật? } HS: Trả lời câu hỏi (6 hỉnh). //Ve canh duoi for (i=1; i<=chdai;i++) cout<<"*"; cout<<endl; } int main() //Bat dau chuong trinh chinh { long a, b, i; ve_hcn(25,10); cout<<endl; cout<<endl; ve_hcn(10,5); cout<<endl; a=4; b=2; for (i=1; i<= 4; i++) { ve_hcn(a,b); cout<<endl; a=a*2; b=b*2; } 16 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  17. Giáo án tin học 11 – Năm học : 2022-2023 return 0; } HĐ2:Phân biệt tham chiếu và tham trị– Phát triển NL sử dụng ngôn ngữ, NL tính toán, NL tư duy, NL lập trình b. Phân biệt tham trị và tham chiếu GV: Chiếu ví dụ 1: hàm hoan_doi_1 lên bảng. Hỏi: hàm hoan_doi 1 thực hiện công việc gì? HS: Hoán đổi giá trị hai biến dữ liệu vào cho nhau. GV: Chạy chương trình và thực hiện đổi phần khai báo thành: void hoan_doi(long &x, long &y) để HS quan sát và nhận xét sự khác nhau giữa tham biến và tham trị. - Ví dụ 1: Tham trị #include using namespace std; void hoan_doi(long x, long y) { long tg=x; x=y; y=tg; } int main() { long a= 5; long b=10; cout using namespace std; void hoan_doi(long &x, long &y) { long tg=x; x=y; y=tg; } int main() 17 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  18. Giáo án tin học 11 – Năm học : 2022-2023 { long a= 5; long b=10; cout<<a<<setw(5)<<b<<endl; hoan_doi(a,b); cout<<a<<setw(5)<< b; } → Output: 5 10 10 5 C. Hoạt động củng cố - Tham chiếu: giá trị của biến trong chương trình con thay đổi làm thay đổi giá trị biến trong chương trình chính. - Tham trị: giá trị của biến trong chương trình con thay đổi nhưng không làm thay đổi giá trị biến trong chương trình chính. D. Hoạt động luyện tập, mở rộng - Nghiên cứu cách xây dựng các chương trình con trả về giá trị đối với toàn bộ các chương trình Tin học 11 18 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  19. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Ngày dạy: Tiết PPCT: 45 Tiết 44:KIỂM TRA 1 TIẾT I. Mục tiêu bài học 1. Kiến thức - Kiểm tra đánh giá kiến thức của học sinh về nội dung kiến thức kiểu dữ liệu tệp 2. Kỹ năng - Viết chương trình với mảng một chiều có sử dụng kiểu dữ liệu tệp 3. Thái độ - Nghiêm túc làm bài. 4. Năng lực, phẩm chất - NL tự học - NL sử dụng CNTT - Phẩm chất: trung thực, tự trọng II. Phương tiện chuẩn bị 1. Giáo viên b. Đề kiểm tra ĐỀ BÀI Cho dãy số nguyên a gồm n phần tử (1 < n ≤100), mỗi phần tử có giá trị tuyệt đối khôngvượt quá 3000. Tính tổng các phần tử của dãy là bội số của 7. Dữ liệu:Đọc từ tệp tong.inp gồm 2 dòng: - Dòng 1 chứa số nguyên dương n là số lượng các phần tử của mảng a - Dòng 2chứa các số a1, an Kết quả:Ghi ra tệp tong.out một số duy nhất là tổng các số chia hết cho 7 TONG.INP TONG.OUT 5 21 3 7 2 14 6 56 8 2 5 21 28 9 10 5 7 b. Đáp án, biểu điểm 1. Chấm bài: - Chấm bài bằng các test, mỗi test tương ứng 1 điểm. - Chương trình không chạy hoặc dữ liệu vào ra không phù hợp theo yêu cầu sẽ không được điểm. 19 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  20. Giáo án tin học 11 – Năm học : 2022-2023 2. Chương trình #include using namespace std; const long nmax=100; long n, i, s, a[nmax]; int main() { freopen(“DS.INP”, “r”, stdin); freopen(“DS.OUT”, “w”, stdout); while (cin>>n) { s=0; for (i=1; i >a[i]; if (a[i]%7==0) s=s+a[i]; cout<<s; } } return 0; } 2. Học sinh - Các kiến thức đã học và ôn tập III. Tiến trình bài học A. Hoạt động khởi động 2. Kiểm tra - GV: Phát đề - HS: Làm bài trên máy 3. Củng cố: không D. Hoạt động luyện tập, mở rộng - Nghiên cứu trước nội dung §17. Chương trình con và phân loại 20 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  21. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Ngày dạy: Tiết PPCT: 46,47 BÀI TẬP VÀ THỰC HÀNH 6 I. Mục tiêu bài học 1. Kiến thức - Phân biệt được tham chiếu và tham trị 2. Kỹ năng - Xây dựng và tổ chức hàm trả về một giá trị có sử dụng tham chiếu hoặc tham trị; 3. Thái độ - HS thấy được tầm quan trọng của chương trình con và lập trình có cấu trúc 4. Năng lực, phẩm chất - NL tư duy - NL tính toán - NL sử dụng ngôn ngữ - NL lập trình - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở, thực hành - Phương tiện: SGK, giáo án 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: kết hợp trong quá trình thực hành B. Hoạt động hình thành kiến thức HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1: Thực hiện bài tập 1 – Phát triển NL sử dụng ngôn ngữ, NL tư duy, NL tính toán và NL lập trình 1. Bài tập 1 GV: Chiếu đề bài HS: Suy nghĩ phân tích đề bài Giả thuyết của Gon-Bac nói rằng mỗi số chẵn n lớn hơn 2 là tổng của 2 số nguyên tố. Cho n là số chẵn lớn hơn 2, hãy xác định số lượng các cặp số nguyên tố có tổng bằng n. Dữ liệu: - Vào từ file GONBAC.INP chứa duy nhất số n (2≤ n ≤ 20000) Kết quả: Ghi ra file GONBAC.OUT chứa duy nhất một số theo yêu cầu của đề bài 21 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  22. Giáo án tin học 11 – Năm học : 2022-2023 GONBAC.INP GONBAC.OUT 16 2 GV: Bài toán này phải xây dựng hàm như thế nào? HS: Hàm nguyên tố có trả về một giá trị GV: Nêu ý tưởng giải quyết bài toán? HS: Duyệt i từ 2 đến n/2, kiểm tra nếu i và (n-i) là số nguyên tố thì đếm. GV: Yêu cầu HS viết chương trình HS: Soạn thảo, dịch, thực hiện và hiệu chình #include chương trình using namespace std; long i,n,d; bool nt(long n) { bool kt; kt=true; if(n >n) { d=0; for(long i=2;i<=(n/2);i++) if ((nt(i)==true) && (nt(n-i)==true)) d=d+1; cout<<d<<endl; } return 0; } HĐ2: Thực hiện bài tập 2 – Phát triển NL sử dụng ngôn ngữ, NL tính toán, NL tư duy, NL lập trình 22 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  23. Giáo án tin học 11 – Năm học : 2022-2023 2. Bài tập 2 GV: Bài toán này phải xây dựng hàm như thế nào? Cho dãy số nguyên dương a gồm n phần tử (0 ≤ n HS: Hàm chính phương có trả về một giá trị ≤ 100000) (0 ≤ a i ≤ 100000) (i = 1 n) Yêu cầu:Tìm tất cả các số chính phương của dãy A Dữ liệu:- Vào từ file DS.INP - Dòng 1 ghi số phần tử n của dãy - Dòng 2 ghi các giá trị phần tử ai (i = 1 n) Kết quả:- Đưa ra file DS.OUT. Các số chính phương (trên 1 dòng) DS.INP DS.OUT 6 4 9 2 11 4 5 9 5 GV: Nêu ý tưởng giải quyết bài toán? HS: Duyệt i từ 1 đến n, kiểm tra nếu ai là số chính phương thì in ra. GV: Yêu cầu HS viết chương trình HS: Soạn thảo, dịch, thực hiện và hiệu chình chương trình #include using namespace std; const long nmax=100000; long n,i,d,a[nmax+1]; bool cp(long(n)) { bool kt; if(trunc(sqrt(n))==sqrt(n))kt=true; else kt=false; return kt; } int main () { freopen("ds.inp","r",stdin); freopen("ds.out","w",stdout); while(cin>>n) 23 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  24. Giáo án tin học 11 – Năm học : 2022-2023 { d=0; for(long i=1;i >a[i]; if(cp(a[i])==true)d=d+1; } cout<<d<<endl; } cout<<endl; } C. Hoạt động củng cố - Lời gọi hàm trả về một giá trị phải được đặt trong một lệnh hoặc trong một lời gọi chương trình con khác. - Hàm có thể tham gia vào các biểu thức tính toán như một toán hạng thông thường D. Hoạt động luyện tập, mở rộng - Xây dựng hàm đảo ngược của một số để tiết sau thực hành tiếp 24 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  25. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Tiết theo KHDH: 43 ÔN TẬP I. Mục tiêu bài học 1. Kiến thức - Nắm vững các kiến thức về kiểu dữ liệu tệp và chương trình con 2. Kỹ năng - Viết chương trình sử dụng kiểu dữ liệu tệp - Xây dựng chương trình con 3. Thái độ - Tích cực ôn tập để chuẩn bị kiểm tra học kì II 4. Năng lực, phẩm chất - NL tư duy - NL tính toán - NL sử dụng ngôn ngữ - NL lập trình - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở - Phương tiện: SGK, giáo án 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: Viết hàm tìm bội chung nhỏ nhất của 2 số nguyên dương a và b. B. Hoạt động hình thành kiến thức HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1:Xây dựng hàm tìm bội chung nhỏ nhất của hai số nguyên dương a và b– Phát triển NL sử dụng ngôn ngữ, NL tư duy, NL tính toán và NL lập trình 1. Hàm tìm bội chung nhỏ nhất GV: Bội chung nhỏ nhất của 2 số là gì? HS: Suy nghĩ và TL GV: Nếu sử dụng vòng for để tìm bội của 2 số, thì giá trị biến i sẽ thay đổi như thế nào? HS: i sẽ chạy từ a đến a*b GV: Yêu cầu HS viết chương trình HS: Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình. #include using namespace std; 25 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  26. Giáo án tin học 11 – Năm học : 2022-2023 long a, b; long BCNN(long a, long b) { long i; for (long i= a;i >a>>b; cout 26 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  27. Giáo án tin học 11 – Năm học : 2022-2023 using namespace std; #define max 100 // nhap mang void NhapMang(int A[],int n) { for(int i=1; i >A[i]; } } // in mang void XuatMang(int A[],int n) { cout >n; 27 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  28. Giáo án tin học 11 – Năm học : 2022-2023 NhapMang(A,n); cout<<"Mang vua nhap la:"; XuatMang(A,n); cout<<endl; cout<<"Cac so nguyen to: "; In(A,n); return 0; } C. Hoạt động củng cố - Hàm không trả về một giá trị: lời gọi độc lập - Hàm trả về một giá trị: lời gọi phải được đặt trong một lệnh hoặc trong một lời gọi chương trình con khác. D. Hoạt động luyện tập, mở rộng - Ôn tập toàn bộ kiến thức để kiểm tra học kì II 28 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  29. Giáo án tin học 11 – Năm học : 2022-2023 Ngày soạn: Tiết theo KHDH:44 KIỂM TRA HỌC KÌ II I. Mục tiêu bài học 1. Kiến thức - Kiểm tra đánh giá toàn bộ nội dung kiến thức về lập trình C++ với các nội dung trọng tâm: + Kiểu dữ liệu mảng + Kiểu dữ liệu xâu + Kiểu dữ liệu tệp + Chương trình con 2. Kỹ năng - Viết chương trình sử dụng kiểu dữ liệu tệp - Xây dựng chương trình con 3. Thái độ - Tích cực ôn tập để chuẩn bị kiểm tra học kì II 4. Năng lực, phẩm chất - NL tự học - NL sử dụng ngôn ngữ - Phẩm chất: tự trọng, trung thực II. Phương tiện chuẩn bị 1. Giáo viên a. Ma trận MA TRẬN ĐỀ KIỂM TRA HỌC KỲ II TIN HỌC 11 Nội Nhận biết Thông hiểu Vận dụng thấp Vận dụng dung cao Câu 1, 2, 3, 4, 16, 17, Câu 18, 31, 34, 38 Kiểu 19, 21, 23, 24, 32, 33, Câu 9, 10, 13, mảng 40 20, 28, 37 một chiều Câu 8, 11, 12, 15, 22, Câu 5, 6, 7, 14, 26, 29, Kiểu xâu 25, 27, 30, 36, 39 35 Tổng Số câu: 23 Số câu: 11 Số câu: 6 Số điểm: 5,75 Số điểm: 2,75 Số điểm: 1,5 29 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  30. Giáo án tin học 11 – Năm học : 2022-2023 b. Đề kiểm tra ĐỀ KIỂM TRA HỌC KỲ II MÔN TIN HỌC 11 Câu 1: Khẳng định: lớn hơn hoặc bằng : A. Đúng B. Sai Câu 2: Khai báo mảng một chiều nào sau đây đúng? A. double A[100]; B. var A : array[1 100]of byte; C. var A = array[1 100]of double; D. var A = array[1 100]of byte; Câu 3: Mảng một chiều là dãy hữu hạn các phần tử có đủ loại kiểu A. Đúng B. Sai Câu 4: Với khai báo: Byte a[100]; nhóm lệnh nào dùng để in giá trị của A ra màn hình? A. for i= 1 to 100 do read(A[i]); B. for i= 1 to 100 do readln(A[i]); C. for i= 1 to 100 do writeln(i:5); D. For( i=0;i 0 then ; A. dem= dem+a[i] B. dem= dem + a[1] C. dem= dem + 1 D. dem= dem + 2 30 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  31. Giáo án tin học 11 – Năm học : 2022-2023 Câu 11: Cho xâu S=‘tien hoc le hau hoc van’ hàm Pos(‘le’,S) kết quả là : A. 10 B. 9 C. 11 D. 8 Câu 12: Cho xâu S= ‘hau hoc van’ . hàm Copy(S,5,2) kết quả là : A. 'hau' B. 'ho' C. 'au h' D. 'hoc' Câu 13: Cho đoạn chươngtŕnh: T= a[1]; for i= 2 to n do if a[i] 0 then write(A[i]:5); A. In ra màn hình các phần tử có chỉ số chẵn trong mảng A B. In tất cả các phần tử trong mảng A C. In ra màn hình các phần tử chẵn trong mảng A D. Tất cả sai Câu 19: Câu lệnh nào đúng(Với A là mảng một chiều gồm N phần tử số nguyên)? A. readln(A); B. writeln(A:5); C. readln(A[i]); D. write(A); Câu 20: Điền nội dung cóthiếu trong đoạn sau: for i= 1 to n do begin write(‘a[’ ,i, ‘]=’); .; end; 31 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  32. Giáo án tin học 11 – Năm học : 2022-2023 A. readln(a[i]) B. write(a[i]:5) C. readln(a[i]:5) D. write(a[i]) Câu 21: Khai báo mảng một chiều nào sau đây: var A : array[-100 0]of boolean ; A. Khônghợp lệ B. Hợp lệ Câu 22: Cho xâu S= ‘tien hoc le’ thủ tục delete(S, 4,5) kết quả là : A. ‘tien le’ B. ‘tie le’ C. ‘ hoc’ D. ‘hoc le’ Câu 23: Cho khai báo: Var A: array[1 10] of integer; i: integer; Để in ra màn hình phần tử thứ 3 của mảng thực hiện câu lệnh gì ? A. Write(‘A[3]’); B. Write(‘A[i]’); C. Readln(A[3]); D. Writeln(A[3]); Câu 24: Cho khai báo: type Tên_mảng:Array[chỉ_số_đầu chỉ_số_cuối] of kiểu_phần_tử; A. Sai B. Đúng Câu 25: Khai báo xâu sau đúng/sai? Var a: string[255]; A. Đúng B. Sai Câu 26: Cho x= length(a); để tham chiếu đến ký tự đầu tiên xâu a, ta chọn: A. a(x) B. a[x] C. a[100] D. a[1] Câu 27: Trong ngôn ngữ lập trình C++, xâu kí tự có tối đa A. 16 kí tự B. 256 kí tự C. 8 kí tự D. 255 kí tự Câu 28: Đoạn chương trình sau thực hiện công việc gì? S= 0; for i= 1 to n do if a[i] >= 0 then S= S+a[i]; A. Tính tổng các phần tử dương B. Đếm các phần tử dương C. Tính tổng các phần tử khôngâm D. Đếm các phần tử khôngâm Câu 29: Trong các hàm và thủ tục sau, hàm và thủ tục nào cho kết quả là một số nguyên A. Pos(S ,S ) B. insert(S ,S ,vt) C. copy(S,vt,n) D. delete(s,vt,n) 1 2 1 2 Câu 30: Khai báo xâu sau đúng/sai? Var a: string[265]; A. Đúng B. Sai 32 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  33. Giáo án tin học 11 – Năm học : 2022-2023 Câu 31: Cho câu lệnh: S= 0; FOR i= 100 DOWNTO 1 DO S= S + A[i]; thực hiện công việc gì? A. tính tổng các phần tử trong mảng B. nhập mảng C. đếm các phần tử trong mảng D. in mảng Câu 32: Khai báo nào sau đây tương đưông khai báo: var A : array[1 100]of integer; A. type Kmang1 :array[1 100]of double; var A : Kmang1; B. type Kmang1 =array[1 100]of integer; var A: Kmang1; C. type Kmang1 =array[1 100]of double; var A : Kmang1; D. type Kmang1 :array[1 100]of integer; var A : Kmang1 ; Câu 33: Giả sử ta có mảng A như sau : A: 5 10 15 20 25 30 25 15 45 50 Để tham chiếu đến phần tử 25 ta truy xuất nào sau : A. A(5) B. A[25] C. A(25) D. A[5] Câu 34: Đoạn chươngtrình sau thực hiện công việc gì? s= 0; for i= 1 to n do if a[i] mod 5 <>0 then s= s +1; A. Tính tổng các số chia hết cho 5 B. tính tổng các số khôngchia hết cho 5 C. đếm các số chia hết cho 5 D. đếm các số khôngchia hết cho 5 Câu 35: Ý nghĩa chính của đoạn chươngtrình: If a[i] = ' ' then b= b+ a[i]; write(b); A. tính tổng các phần tử các ký tự khôngrỗng B. in ra màn hình xâu gồm các ký tự không rỗng C. in ra màn hình xâu gồm các ký tự rỗng D. tính tổng các phần tử các ký tự rỗng Câu 36: cho 2 xâu: a= 'anh hai' và xâu b= 'hoc tot' insert(b,a,1) cho kết quả: A. 'anh haihoc tot' B. 'hoc tot anh hai' C. 'anh hai hoc tot' D. 'hoc totanh hai' Câu 37: Để in mảng trên cùng 1 dòng, ta chọn lệnh: 33 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  34. Giáo án tin học 11 – Năm học : 2022-2023 A. for i= n downto 1 do writeln(a[i]:5); B. for i= n downto 1 do readln(a[i]:5); C. for i= 1 to n do write(a[i]:5); D. for i= 1 to n do readln(a[i]:5); Câu 38: Đếm các phần tử chẵn cho đoạn: for i= 1 to n do if then dem= dem+1; dùng điều kiện nào? A. a[i] mod 2 0 D. a[i] mod 2 = 0 Câu 39: Cho xâu A= 'ca nau' B= 'ca nanh' phép so sanh nao đúng? A. A B D. A<>B Câu 40: Các kiểu dữ liệu dùng trong mảng 1 chiều có thể là: integer, double, boolean A. Đúng B. Sai c. Đáp án, biểu điểm ĐÁP ÁN, BIỂU ĐIỂM 01 B 11 A 21 B 31 A 02 A 12 B 22 B 32 B 03 B 13 D 23 D 33 D 04 D 14 C 24 A 34 D 05 C 15 B 25 A 35 C 06 C 16 C 26 D 36 D 07 B 17 A 27 D 37 C 08 A 18 D 28 C 38 D 09 D 19 C 29 A 39 C 10 C 20 A 30 B 40 A 2. Học sinh - Các kiến thức đã học và ôn tập III. Tiến trình bài học A. Hoạt động khởi động 2. Kiểm tra 34 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  35. Giáo án tin học 11 – Năm học : 2022-2023 - GV: Phát đề - HS: Làm bài 3. Củng cố: không D. Hoạt động luyện tập, mở rộng - Chuẩn bị tiết bài tập Ngày soạn: Tiết theo KHDH: 45 ÔN TẬP I. Mục tiêu bài học 1. Kiến thức - Ôn tập các kiến thức về xâu và mảng 2. Kỹ năng - Rèn luyện kĩ năng phân tích bài toán, sử dụng đúng các kiểu dữ liệu phức tạp và các câu lệnh để xử lý xâu và mảng. 3. Thái độ - Học sinh hiểu bài và có ý thức về việc tổ chức dữ liệu mới, phức tạp hơn. - Học sinh ngày càng say mê lập trình hơn. 4. Năng lực, phẩm chất - NL tư duy - NL tính toán - NL sử dụng ngôn ngữ - NL lập trình - Phẩm chất: tích cực tìm tòi, tự giác nghiên cứu, ham học hỏi, kiên trì, yêu thích môn học, yêu thích lập trình II. Phương tiện chuẩn bị 1. Giáo viên - Phương pháp: Thuyết trình, vấn đáp, trực quan, gợi mở - Phương tiện: SGK, giáo án 2. Học sinh - Vở ghi, SGK III. Tiến trình bài học A. Hoạt động khởi động Câu hỏi: kết hợp trong quá trình thực hành B. Hoạt động hình thành kiến thức HOẠT ĐỘNG DẠY HỌC NỘI DUNG HĐ1: Rèn luyện kĩ năng làm việc với mảng – Phát triển NL sử dụng ngôn ngữ, NL tính toán, NL tư duy, NL lập trình 1. Bài 1: Tính tổng dãy đan dấu Cho n là số nguyên dương (n ≤ 1000) và dãy số nguyên a1, a2, , an có giá trị tuyệt đối không vượt quá 3000. Tính tổng a1 - a2 + a3 – a4 35 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  36. Giáo án tin học 11 – Năm học : 2022-2023 GV: Xác định input và output của bài toán; HS: + Input: Cho số nguyên dương n (n ≤ 1000), dãy n số nguyên a 1, a2, , aNcó giá trị tuyệt đối không lớn hơn 3000 + Output: s (s=a1 - a2 + a3 – a4 ) GV: Các phần tử ở vị trí lẻ và vị trí chẵn có điều gì đặc biệt? HS: Các phần tử ở vị trí lẻ mang dấu (+), ở vị tri chẵn mang dấu (-) HS: a1 - a2 + a3 – a4 = a1 + a3 + – a2 – a4- = a1 + a3 + – (a2 + a4+ ) Gọi s1=a1 + a3 + ; s2=a2 + a4+ => s= s1-s2 GV: Chương trình gồm những việc chính nào? HS: Gồm: - Nhập n, nhập các giá trị phần tử cho mảng a. - Duyệt mảng, tính s1,s2 - Tính s= s1-s2 - In kết quả s vừa tìm được. #include using namespace std; const long nmax=1000; long a[nmax+1], i,n,s,s1,s2; int main() { cout >n; s1= 0; s2=0; for (long i=1; i >a[i]; if (i %2==0) s2=s2+ a[i]; else s1=s1+ a[i]; } s= s1-s2 cout<< “s= ”<<s; return 0; } 36 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  37. Giáo án tin học 11 – Năm học : 2022-2023 HĐ2:Rèn luyện kĩ năng làm việc với xâu – Phát triển NL sử dụng ngôn ngữ, NL tính toán, NL tư duy, NL lập trình 2. Bài 2 Nhập vào từ bàn phím xâu s. Viết chương trình đếm xâu s có bao nhiêu từ (từ là dãy kí tự liên tiếp, không chứa dấu cách) a) Xác định bài toán GV: Hãy xác định input và output của bài toán; HS: Suy nghĩ và TL - Input: Xâu s - Output: d (số lượng các từ) GV: Các tử có thể cách nhau bằng mấy dấu b) Ý tường cách? HS: ≥ 1 dấu cách GV: Nếu như giữa hai từ bất kì ≥ 1 dấu cách thì có ảnh như thế nào đến việc đếm số từ? HS: Nếu đếm số từ theo dấu cách thì sẽ dẫn tới kết quả sai. GV: Nêu điều kiện để kiểm tra xem sau 1 dấu cách có phải là một từ không? HS:Nếu (s[i]==' '&& s[i+1]!=' ') thì d=d+1 GV: Trong trường hợp phần từ đầu tiên và phần tử cuối cùng của xâu là dấu cách thì điều kiện kiểm tra trên còn đúng không? HS: Sẽ dẫn tới hiện tượng đếm thừa từ, vì vậy cần thực hiện xóa hết dấu cách ở đầu và cuối của xâu - Xóa hết dấu cách ở đầu xâu - Xóa hết dấu cách ở cuối xâu - Khởi tạo biến đếm - Duyệt xâu và kiểm tra, nếu s[i]==' '&& s[i+1]!=' ' thì tăng d lên 1 đơn vị - Đưa ra d vừa tìm được GV: Hãy mô tả chương trình c) Chương trình HS: - Khai báo biến xâu s - Nhập giá trị cho biến xâu s. - Khởi tạo biến d=0 37 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4
  38. Giáo án tin học 11 – Năm học : 2022-2023 - Duyệt từ đầu đến cuối xâu s, nếu gặp một kí tự thuộc phạm vi từ 0 đến 9 thì tăng biến d lên một đơn vị. - In kết quả ra màn hình #include #include using namespace std; short i,d; int main() { string s; cout<<"Nhap xau s: "; fflush(stdin);getline(cin,s); d=1; while (s[0]==' ') s.erase(0,1); while (s[s.length()-1]==' ') s.erase(s.length()- 1,1); for(i=0;i<=s.length()-1;i++) if (s[i]==' '&& s[i+1]!=' ') d=d+1; cout<<"Xau s co "<<d<<" tu"; return 0; } C. Hoạt động củng cố - Khai báo mảng, nhập số lượng và giá trị cho mảng, duyệt mảng, tham chiếu tới từng phần tử của mảng. - Khai báo xâu, nhập xâu, duyệt xâu và tham chiếu tới từng phần tử của xâu. Ngày tháng năm Tổ trưởng chuyên môn ký duyệt Lê Phan Vũ 38 Giáo viên: Nguyễn Thị Huyền- Trường THPT Nông Cống 4