Mô tả bài toán

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng phần mềm hỗ trợ dạy và học ngôn ngữ lập trình pascal cho học sinh trung học phổ thông (Trang 32 - 39)

Chương 3. XÂY DỰNG HỆ THỐNG GIẢI QUYẾT BÀI TOÁN

3.1. Mô tả và xây dựng bài toán

3.1.1. Mô tả bài toán

Phần mềm hỗ trợ dạy và học ngôn ngữ lập trình Pascal cho học sinh THPT là một trang web thay cho trình soạn thảo của Pascal như Turbo Pascal, Free Pascal, có hai nhiệm vụ chính là thiết kế giảng dạy và đánh giá người học:

 Thiết kế giảng dạy: Bao gồm những chỉ dẫn và hệ thống bài tập được thiết kế giống như sự thách đố người học và cơ chế trao phần thưởng khi vượt qua sự thách đố đó là những thách đố ở mức cao hơn, điểm số, huân chương, sự công nhận

 Thiết kế kiểm thử và Đánh giá người học: Công việc đánh giá được thực hiện theo mỗi bài hoặc mỗi cấp độ (từ đơn giản đến phức tạp). Việc kiểm tra và phát hiện lỗi mã Pascal của người học tiến hành bằng hai phương pháp kiểm thử:

 Kiểm thử hàm/chức năng (Kiểm thử hộp đen)

 Phân tích cấu trúc (Khảo sát thiết kế và mã nguồn hay là kiểm thử hộp trắng tĩnh)

3.1.2. Sơ đồ chức năng của phần mềm

Chức năng của phần mềm gồm 6 chức năng chính như hình:

Phần mềm hỗ trợ dạy và học Pascal là một trang web bao gồm sáu chức năng cơ bản như sau:

 Quản lý học liệu: Phần mềm có khả năng thêm mới, cập nhật, xóa những tài liệu, video, chỉ dẫn về Pascal.

 Quản lý bài tập:

 Thêm yêu cầu: Thêm những yêu cầu về bài tập hoặc những chỉ dẫn mới

 Thêm mã biên dịch: Người quản trị/người dạy học có thể thêm mã Pascal vào trình biên dịch tích hợp trực tuyến trên trang web giúp định hướng cách viết chương trình cho học sinh

 Tạo mức điểm thưởng: Với mỗi bài tập có thể tạo mức điểm thưởng khác nhau

 Quản lý tiến trình học:

 Quản lý mã Pascal: Quản lý mã Pascal người học nhập.

 Biên dịch: Mã Pascal người học viết sẽ được hệ thống biên dịch, nếu thành công hệ thống sẽ đưa output ra giao diện trang web, nếu chương trình còn lỗi hệ thống sẽ thông báo người học cần phải sửa lại chương trình.

 Kiểm thử mã: Mã Pascal được phân tích để xác định có đúng với yêu cầu của hệ thống hay không?

 Đánh giá: Dựa vào kết quả phân tích mã Pascal hệ thống sẽ đánh giá kỹ năng của người học

 Quản lý cấp độ kỹ năng:

 Thêm mới: Thêm mới các cấp độ đánh giá từ ngây thơ đến chuyên gia và cao hơn nữa.

 Sửa: Sửa tên các cấp độ cho phù hợp

 xóa: Xóa các cấp độ không phù hợp

 Bảng xếp hạng người học:

 Xem xếp hạng về điểm: người học đạt mức điểm và kỹ năng cao nhất

 Xem xếp hạng về kỹ năng

3.1.3. Thiết kế Cơ sở dữ liệu

Cơ sở dữ liệu của bài toán sử dụng 5 bảng để lưu trữ thông tin của người học, bài tập Pascal, Cấp độ kỹ năng của người học, tài liệu bài giảng về Pascal

Thông tin của người học gồm trường Tên tài khoản, mật khẩu, tên đầy đủ, điểm, trạng thái kích hoạt.

Hình 3.2 CSDL lưu thông tin người học.

Bài tập Pascal: gồm mã bài tập, tên bài tập, câu hỏi, câu trả lời, mã nguồn gợi ý, cấp độ bài tập, với nhiều dạng bài thử nghiệm, người quản trị có thể dễ dàng thay đổi hoặc thêm bớt bài tập phù hợp với tiến trình của người học.

Hình 3.3 Cơ sở dữ liệu lưu bài tập của phần mềm.

Cấp độ kỹ năng: gồm các trường mã kỹ năng, tên kỹ năng, mức điểm xác định kỹ năng, mô tả thông tin.

Hình 3.4. Cơ sở dữ liệu lưu cấp độ kỹ năng của người học

 Tài liệu Pascal: gồm trường mã tài liệu, tên tài liệu, mã nhúng tài liệu

Hình 3.5. Cơ sở dữ liệu lưu tài liệu học Pascal

 Bài giảng Pascal: Gồm trường mã bài giảng, tên bài giảng, mã nhúng của bài giảng.

Hình 3.6. Cơ sở dữ liệu lưu bài giảng về Pascal.

3.1.4. Thiết kế Kiểm thử mã Pascal

Việc kiểm tra và phát hiện lỗi mã Pascal của người học được tôi tiến hành bằng hai phương pháp kiểm thử:

 Kiểm thử hàm/chức năng (Kiểm thử hộp đen)

 Phân tích cấu trúc (Khảo sát thiết kế và mã nguồn hay là kiểm thử hộp trắng tĩnh)

a, Kiểm thử hàm chức năng

Kiểm thử hàm dựa trên quan niệm rằng bất kỳ chương trình nào cũng được coi là một hàm ánh xạ các giá trị từ miền dữ liệu đầu vào vào miền dữ liệu đầu ra của nó.

Khái niệm này được dùng chung trong kỹ thuật khi các hệ thống đều được coi là các hộp đen. Chính điều này dẫn đến thuật ngữ kiểm thử hộp đen, trong đó nội dung của hộp đen (việc cài đặt) không được biết/không cần quan tâm, và chức năng của hộp đen được hiểu theo các dữ liệu đầu vào và dữ liệu đầu ra của nó như hình 2.1. Trong thực tế, chúng ta thường thao tác hiệu quả với những kiến thức về hộp đen. Chính điều này là trung tâm của khái niệm định hướng đối tượng nơi mà các đối tượng được xem xét như là các hộp đen và chúng chỉ tương tác với nhau bằng các lời gọi thông qua các phương thức có thể quan sát được từ bên ngoài[3, tr.10].

Hình 3.7. Một hộp đen kỹ thuật

Kiểm thử hàm (functional testing) là các hoạt động kiểm tra chương trình dựa trên tài liệu mô tả chức năng, yêu cầu phần mềm, hay còn gọi là đặc tả chức năng (functional specification). Đặc tả chức năng là tài liệu mô tả yêu cầu, hành vi của chương trình mong muốn. Tài liệu này là cơ sở để chúng ta tiến hành xây dựng các ca kiểm thử, thuật ngữ chuyên môn gọi là thiết kế kiểm thử (test design) và người thực hiện việc này là người thiết kế kiểm thử. Thiết kế kiểm thử là hoạt động chính trong kiểm thử hàm. Cần nhấn mạnh rằng kiểm thử hàm là việc thiết kế các ca kiểm thử hàm của chương trình chỉ dựa trên đặc tả của chương trình mà không dựa trên việc phân tích mã nguồn của chương trình. Kiểm thử hàm còn được gọi với tên khác chính xác hơn là kiểm thử dựa trên đặc tả, hay kiểm thử hộp đen, hay kiểm thử chức năng [1, tr.97].

Phương pháp kiểm thử hộp đen được tôi áp dụng trong việc kiểm tra mã pascal của học sinh ở dạng bài tập thử nghiệm 1, 3, 4, 5.

Dạng bài tập thử nghiệm 1: Đưa ra màn hình dòng thông báo bất kỳ

Tôi cần chắc chắn người học biết cách đưa một chuỗi ra màn hình bằng câu lệnh write/writeln, vì thế thay vì thanh tra mã nguồn người học viết tôi chỉ cần tiến hành lấy dữ liệu output đầu ra của chương trình và so sánh với chuỗi đáp án của bài toán lưu trong cơ sở dữ liệu tôi tạo ra, người học có thể viết mã pascal tùy ý miễn sao đảm bảo được việc đưa ra output đúng với chuỗi mà bài tập thử nghiệm yêu cầu.

Với dạng bài tập thử nghiệm số 3, 4, 5: Hoàn thiện câu lệnh để nhận được đầu ra như kỳ vọng

Tôi sẽ thực hiện một loạt các quy trình như sau

Bước 1: Ngay khi chương trình của người học được hệ thống biên dịch trả về kết quả là đúng, tôi tiến hành lấy mã chương trình của người học lưu thành tập tin có tên [username]_exer_[chỉ số bài tập].Pas

Hình 3.8. Mã nguồn của người học.

Bước 2: Vì Pascal không có thư viện hỗ trợ cho việc kiểm thử đơn vị nên tôi sẽ kiểm tra mã nguồn người học bằng cách tạo thêm một tập tin có tên [username]_exer_[chỉ số bài tập]test.Pas, tập tin test này sẽ nhận đầu vào là một dãy số được sinh ngẫu nhiên để tính đầu ra của chương trình.

Bước 3: Tôi tiến hành so khớp đầu ra của chương trình với đầu ra kỳ vọng nếu khớp tất cả các trường hợp, tôi tính chương trình đạt yêu cầu.

Hình 3.9. So sánh đầu ra mã pascal người học viết với kỳ vọng của chương trình.

b, Phân tích cấu trúc

Phân tích cấu trúc hay còn gọi là kiểm thử hộp trắng tĩnh, kiểm thử tĩnh tức là việc kiểm thử chỉ gồm việc khảo sát mà không cần tiến hành chương trình, còn kiểm thử hộp trắng là việc kiểm thử có trong tay mã nguồn của chương trình. Vì thế kiểm thử hộp trắng tĩnh chính là việc khảo sát thiết kế và mã nguồn của chương trình. Công việc này bao gồm một quy trình để khảo sát một cách cẩn thận và có phương pháp đối với thiết kế, kiến trúc và mã nguồn của phần mềm để tìm lỗi mà không cần thực thi phần mềm. [3, tr.85].

Phương pháp phân tích cấu trúc được tôi áp dụng trong việc kiểm tra mã pascal của học sinh ở dạng bài tập thử nghiệm 2, yêu cầu: Nhập chuỗi, và đưa ra màn hình chuỗi vừa nhập, tôi cần chắc chắn học sinh biết cách sử dụng chính xác câu lệnh Pascal cho việc:

 Khai báo biến

 Sử dụng câu lệnh read/readln để nhập từ bàn phím một chuỗi gán vào biến đã khai báo,

 Sử dụng câu lệnh write/writeln đưa dữ liệu từ biến ra màn hình.

Để làm việc này tôi sử dụng biểu thức chính quy (Regular expressions- Regex) so khớp với biến kiểu string mà người dùng nhập vào

Biểu thức chính quy (Regular Expression) còn gọi ngắn gọn là Regex – Tập hợp các phép xử lý văn bản như tìm kiếm, so khớp, cắt ghép… Regex làm việc dựa trên những mẫu văn bản theo các quy tắc định sẵn trước để từ đó xử lý những văn bản khác theo các yêu cầu khác nhau. Các mẫu văn bản có sẵn gọi là partern.

Ta cũng có thể hiểu đơn giản biểu thức chính quy trả về kết quả của sự so sánh khớp nhau giữa biểu thức

Biểu thức chính là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. Biểu thức chính quy thường được dùng trong các trình biên tập văn bản và các tiện ích tìm kiếm và xử lý văn bản dựa trên các mẫu được quy định.

Biểu thức chính quy được dùng nhiều trong:

Lập trình: Trong lập trình, Biểu thức chính quy dùng để kiểm tra tính hợp lệ của dữ liệu đầu vào như email (ví dụ <username>@mailserver.com), số điện thoại (10 số hoặc 11 số và phải là số), chứng minh nhân dân, ngày tháng năm sinh (dd/mm/yyyy)

Trong một số phần mềm, Biểu thức chính quy được áp dụng để xử lý chuỗi như tìm kiếm, thay thế chuỗi (giống như chức năng Find & Replace trong Microsoft Word) hoặc trích xuất chuỗi từ một chuỗi dài hơn.

Trong PHP có một hàm là preg_mathch(string pattern, string subject). Hàm này trả về 1 nếu đúng quy tắc so mẫu, trả về 0 nếu sai quy tắc so mẫu.

Với string pattern: là biểu thức dùng để so mẫu. Các chuỗi được so mẫu phải tuân thủ quy tắc của biểu thức này.

string subject: là chuỗi được so mẫu.

Một pattern (biểu thức so mẫu) có dạng:

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng phần mềm hỗ trợ dạy và học ngôn ngữ lập trình pascal cho học sinh trung học phổ thông (Trang 32 - 39)

Tải bản đầy đủ (PDF)

(72 trang)