Hôm nay, bộ môn Ứng dụng phần mềm, Cao đẳng FPT Polytechnic sẽ hướng dẫn các bạn cách tạo hàm tìm vị trí một số trong mảng.
Một trong những vấn đề chúng ta thườn g gặp trong cuộc sống hằng ngày là tìm kiếm một đối tượng nào đó ví dụ như tìm xem có sinh viên trong một lớp hay không.
Để giải quyết bài toán này chúng ta phải duyệt lần lượt mã của các sinh viên để kiểm tra xem có sinh viên nào có mã trùng với mã cần tìm hay không. Khi gặp sinh viên có mã trùng với mã cần tìm thì kết thúc việc tìm kiếm và trả về kết quả là tìm thấy. Khi duyệt tất cả các sinh viên mà không có sinh viên nào có mã trùng với mã cần tìm thì trả về kết quả là không tìm thấy.
Giả sử chúng ta sử dụng số nguyên để tạo mã cho sinh viên thì có thể sử dụng cấu trúc dữ liệu kiểu mảng, mỗi phần tử của mảng lưu mã của một sinh viên. Như vậy, bài toán tìm kiếm một sinh viên trong lớp sẽ trở thành tìm kiếm một phần tử của mảng có giá trị bằng với một một giá trị cho trước.
Do đó bài toán được phát biểu như sau: Cho một mảng số nguyên dương với n phần tử, nhập vào một số nguyên dương k (mã của sinh viên cần tìm). Kiểm tra xem trong mảng có phần tử nào bằng k hay không?.
Để duyệt lần lượt các phần tử của mảng chúng ta sử dụng một vòng lặp for với biến điều khiển vòng lặp chính là chỉ số của mảng. Ứng với mỗi phần tử chúng ta sẽ kiểm tra xem giá trị của nó có bằng k hay không. Nếu bằng thì kết thúc vòng lặp và trả về kết quả tìm thấy (trả về 1). Duyệt toàn bộ mảng mà không có phần tử nào bằng k thì trả về kết quả không tìm thầy (trả về 0). Đoạn mã lệnh bên dưới minh họa cho hàm check với 3 tham số truyền vào là mảng codes chứa mã của các sinh viên, số phần tử của mảng n và số nguyên dương k (mã cần tìm). Đầu tiến chúng ta khai báo biến flag và khởi tạo bằng 0 dùng để đánh dấu có tìm thấy phần tử của mảng có giá trị bằng k hay không (tìm thấy flag = 1, không tìm thấy flag = 0).
Tiếp theo, khai báo biến điều khiển vòng lặp index dùng làm chỉ số các phần tử của mảng (dòng 6). Dòng lệnh 7 là vòng lặp for dùng để quét các phần tử của mảng, ứng với mỗi phần tử của mảng thì dòng lệnh 8 kiểm tra xem nó có bằng k hay không. Nếu bằng thì đánh dấu tìm thấy bằng cách gán biến flag = 1 (dòng lệnh 9) và thoát khỏi vòng lặp (dòng 10). Kết thúc hàm trả về biến flag (dòng 13).
Hàm main() sẽ thực hiện validate dữ liệu nhập của biên k để đảm bảo k>0. Tiếp theo gọi hàm check() lưu kết quả trả về vào biến found và hiển thị kết quả ra màn hình. Kết quả thu được khi chạy chương trình như sau:
Khi nhập số âm thì yêu cầu nhập lại đến khi nhập được số dương, sau đó sẽ in ra thông báo có tìm thấy phần tử cần tìm hay không.
Chúc các bạn thành công!
Giảng viên Nguyễn Thị Như Trang
Bộ môn Ứng dụng phần mềm Cao đẳng FPT Polytechnic Hà Nội