(SKKN 2022) phân bậc hệ thống bài tập dạng toán sắp xếp, tìm kiếm trên mảng một chiều bằng ngôn ngữ lập trình c++

33 5 0
(SKKN 2022) phân bậc hệ thống bài tập dạng toán sắp xếp, tìm kiếm trên mảng một chiều bằng ngôn ngữ lập trình c++

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT BA ĐÌNH NGA SƠN SÁNG KIẾN KINH NGHIỆM PHÂN BẬC HỆ THỐNG BÀI TẬP DẠNG TỐN SẮP XẾP, TÌM KIẾM TRÊN MẢNG MỘT CHIỀU BẰNG NGƠN NGỮ LẬP TRÌNH C++ Họ tên: Trịnh Thùy Anh Chức vụ: Giáo Viên SKKN thuộc mơn: Tin Học THANH HỐ, NĂM 2022 Mục lục Mở đầu 1.1 Lý chọn đề tài 1.2 Mục đích nghiên cứu 1.3 Đối tượng nghiên cứu 1.4 Phương pháp nghiên cứu .2 Nội dung sáng kiến kinh nghiệm .2 2.1 Cơ sở lý luận sáng kiến kinh nghiệm 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm 2.3 Các giải pháp tổ chức thực 2.4 Hiệu sáng kiến kinh nghiệm 15 Kết luận đề xuất…………………………………… …………………16 3.1 Kết luận…………………….………… ……………… …………… 16 3.2 Kiến nghị…………………………………………………….…….……16 Mở đầu 1.1 Lý chọn đề tài Sắp xếp, tìm kiếm đóng vai trị quan trọng sống nói chung Tin Học nói riêng Tìm kiếm nhu cầu phổ biến nhiều người dùng, thực tế tất toán quy dạng chung tốn tìm kiếm, ví dụ bạn giải tốn bạn có làm cách mục đích cuối bạn tìm lời giải tốn Sắp xếp( Sort) hiểu q trình lựa chọn, bố trí đặt lại vị trí đối tượng liệu theo trật tự định Mục đích việc xếp giúp ta có nhìn tổng quan liệu mà ta có Từ dễ dàng thực tìm kiếm phần tử đứng hay thỏa mãn tiêu chí Trong q trình dạy bồi dưỡng học sinh giỏi gặp nhiều tốn có sử dụng giải thuật xếp tìm kiếm mảng chiều Đây dạng tập khơng khó học sinh thường hay chủ quan nên không chạy hết test lớn Nguyên nhân học sinh khơng áp dụng thuật tốn phù hợp cho tốn Với mong muốn giúp học sinh giải tốt tập xếp, tìm kiếm dãy số, tơi mạnh dạn nghiên cứu thuật tốn xếp, tìm kiếm phân tích để áp dụng vào dạng tốn phù hợp với đối tượng học sinh trung học phổ thông Mặt khác ngôn ngữ C++ ngôn ngữ sử dụng thay dần ngơn ngữ lập trình Pascal nên tơi viết chương trình NNLT C++ để làm tài liệu tham khảo cho giáo viên học sinh Từ lý mạnh dạn trình bày sáng kiến kinh nghiệm: “Phân bậc hệ thống tập dạng tốn xếp, tìm kiếm mảng chiều ngơn ngữ lập trình C++” 1.2 Mục đích nghiên cứu Mục đích sáng kiến nghiên cứu, phân tích vận dụng thuật tốn tìm kiếm, xếp mảng chiều dành cho đối tượng HSG khối THPT Việc lĩnh hội sáng kiến giúp học sinh: - Rèn luyện kỹ làm việc với mảng chiều lập trình - Mơ tả khái niệm, chất mục đích việc xếp, tìm kiếm - Trình bày thực cài đặt cách xác thuật tốn xếp, tìm kiếm - Giúp em học giỏi môn Tin Học đạt kết cao - Tạo nguồn tài liệu tham khảo thuật toán hỗ trợ cho học sinh, giáo viên dạy Tin học bậc THPT - Sử dụng NNLT C++ chương trình giáo dục phổ thông 1.3 Đối tượng nghiên cứu Đề tài sáng kiến này, nghiên cứu, áp dụng để phân bậc hệ thống dạng toán xếp tìm kiếm mảng chiều ngơn ngữ lập trình C++ - Tơi áp dụng sáng kiến với em học sinh lớp 11 trường THPT Ba Đình – Nga Sơn – Thanh Hóa Dạy cho em thấy tính ứng dụng thực tiễn toán mảng chiều, em thực yêu thích đam mê học lập trình Tin Học 1.4 Phương pháp nghiên cứu Khi nghiên cứu áp dụng đề tài sử dụng phương pháp nghiên cứu: - Phương pháp nghiên cứu xây dựng sở lý thuyết, qua văn chủ trương Đảng, sách pháp luật nhà nước giáo dục đào tạo - Phương pháp phân tích tổng hợp, thu thập thơng tin từ nhiều nguồn tài liệu - Phương pháp điều tra khảo sát thực tế xử lý số liệu Đảm bảo tính xác thực trạng, hiệu vấn đề nghiên cứu rút kết luận quan trọng Nội dung sáng kiến kinh nghiệm 2.1 Cơ sở lý luận sáng kiến kinh nghiệm Để giải toán mảng cách tối ưu, học sinh cần nắm vững khái niệm mảng chiều, thuật tốn thơng dụng mảng, học sinh phải có kỹ nhận dạng tốn phát biểu nhiều dạng liệu khác lựa chọn thuật tốn thích hợp để giải vấn đề mà tốn u cầu, cịn sở để em học sinh vận dụng giải tốn phức tạp, nâng cao, có liệu lớn Hiện tập tài liệu ngơn ngữ lập trình phong phú đa dạng Việc đưa hệ thống phân dạng tập có tính phân bậc để luyện kỹ cho em học sinh giúp em dễ dàng nắm bắt nội dung học mà định hướng phát triển tư cho em khả ngơn ngữ lập trình, linh hoạt hình thành lực tích cực, thiết thực cho em Xây dựng sở lý thuyết lẫn vận dụng, đem lại hiệu cao cho người học người dạy 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm - Hầu hết em học sinh huyện chưa học làm quen với lập trình cấp hai, thời điểm Tin Học xem môn học tự chọn với khối 7,8,9 em tỏ lúng túng lựa chọn thuật tốn, khó khăn việc diễn đạt câu lệnh, cú pháp để viết chương trình - Tài liệu môn Tin học để bồi dưỡng học sinh giỏi khơng nhiều, đặc biệt chương trình chuẩn C++ hiếm, chủ yếu viết tiếng anh việc tìm kiếm tài liệu dạy học phù hợp trình độ học sinh vất vả Về tinh thần thái độ em hoc sinh trường THPT Ba Đình tơi thấy em nhận thức vai trị lớn lao ứng dụng cơng nghệ thơng tin “ Cách mạng công nghiệp 4.0” nay, em hào hứng, tích cực xây dựng ý tưởng để giải toán máy tính Thích lắng nghe quy trình để làm sản phẩm phần mềm mà thực tế em sử dụng, điều kích thích niềm say mê học lập trình Tin Học Chính mạnh dạn áp dụng đề tài: “Phân bậc hệ thống tập dạng tốn xếp, tìm kiếm mảng chiều ngơn ngữ lập trình C++” 2.3 Giải pháp tổ chức thực 2.3.1 Kiến thức mảng chiều 2.3.1.1 Khái niệm - Mảng dãy hữu hạn phần tử kiểu liệu Khi nói đến mảng ta cần xác định : + Kiểu liệu phần tử mảng + Số phần tử mảng 2.3.1.2 Cách khai báo * Khai báo khơng có khởi tạo: [Số phần tử]; Ví dụ: int a[5]; float b[10]; * Khai báo có khởi tạo: [Số phần tử] = {dãy giá trị}; Hoặc: [ ] = {dãy giá trị} ; (Lưu ý: Trong trường hợp không khai báo số phần tử mảng mảng vừa đủ lớn để lưu giữ giá trị khởi tạo) Trong đó: -Tên kiểu liệu: kiểu liệu kiểu liệu có cấu trúc - Tên biến mảng: người dùng đặt theo quy tắc đặt tên - Số phần tử: kích thước mảng Ví dụ: float x[5]={3,5,7,2,1} int a[ ] = {0, 2, 4, 6, 8}; * Số phần tử mảng  Phải xác định cụ thể số phần tử lúc khai báo, không sử dụng biến thường Ví dụ: int n1 = 10; int a[n1]; const int n2 = 20; int b[n2];  Nên sử dụng thị tiền xử lý #define để định nghĩa số phần tử mảng #define n1 10 #define n2 20 int a[n1]; //  int a[10]; int b[n1][n2]; //  int b[10][20]; *Khởi tạo giá trị cho mảng lúc khai báo: Gồm cách sau  Khởi tạo giá trị cho phần tử mảng: int a[4] = {2912, 1706, 1506, 1904}; a 2912 1706 1506 1904  Khởi tạo giá trị cho số phần tử đầu mảng: int a[4] = {2912, 1706}; a 2912 1706 0  Khởi tạo giá trị cho phần tử mảng: int a[4] = {0}; a 0 0  Tự động xác định số lượng phần tử: int a[] = {2912, 1706, 1506, 1904}; a 2912 1706 1506 1904 2.3.1.3 Cách truy xuất đến phần tử mảng [Chỉ số] Ví dụ: int a[5] 4 a[1] = 3; a[3]= Lưu ý: -Mảng C++ đánh số -Khi khai báo mảng cần khai báo số phần tử thừa - Các truy xuất • Hợp lệ: a[0], a[1], a[2], a[3], a[4] • Khơng hợp lệ: a[-1], a[5], a[6], … => Cho kết thường không mong muốn! 2.3.1.4 Gán liệu kiểu mảng  Không sử dụng phép gán thông thường mà phải gán trực tiếp phần tử tương ứng: = ; // sai [] = ;  Ví dụ int a [3]= {1, 2, 3}, b[3]; b = a; // Sai → for (int i = 0; i < 3; i++) b[i] = a[i]; 2.3.1.5 Cách nhập/xuất mảng * Nhập mảng Cách 1: Biết số phần tử mảng cin>>n; for (int i = ; i < n; i++) cin>>a[i]; Cách 2: Chưa biết số phần tử mảng int x, n = 0; while (cin >> x) { n++; a[n] = x; } * Xuất mảng: for (int i=1 ; i > x; If (timkiem(x,a,1,n)==true) cout

Ngày đăng: 05/06/2022, 10:17

Tài liệu cùng người dùng

Tài liệu liên quan