Câu hỏi

Sơ đồ dưới đây cho thấy một thuật toán xác định tổng (tức là ‘1 + 3 + 5 + … + (2N-1)’) của N số lẻ đầu tiên từ 1 đến 2N-1 (với N ≥ 1) và đưa kết quả vào biến x. Biểu thức nào sẽ được chèn vào ô trống A?

a) i≥2N–1 b) i≥2N+1 c) x≥2N–1 d) x≥2N+1

Lời giải

Để có thể giải câu hỏi này trước tiên chúng ta cần hiểu về flowchart.

Flowchart

Đây là một công cụ trực quan hóa để mô tả các bước hoặc luồng của một thuật toán hoặc quy trình, thường được biểu diễn bằng các hình dạng. Cụ thể thì ý nghĩa của các hình dạng sẽ như sau:
Hình Oval (Terminator):

  • Ý nghĩa: Đại diện cho điểm bắt đầu hoặc kết thúc của quy trình hoặc thuật toán.
  • Công dụng: Bắt đầu và kết thúc luồng của quy trình.
    Hình Chữ Nhật (Process):
  • Ý nghĩa: Đại diện cho một bước hoặc lệnh thực hiện trong quy trình.
  • Công dụng: Mô tả các hoạt động, thao tác hoặc tính toán được thực hiện.
    Hình Thoi (Decision):
  • Ý nghĩa: Đại diện cho một điểm quyết định trong quy trình, nơi có sự phân nhánh dựa trên điều kiện (đúng/sai).
  • Công dụng: Biểu diễn các câu hỏi có câu trả lời là “có” hoặc “không”, dẫn đến các luồng khác nhau.
    Hình Thoi (Input/Output):
  • Ý nghĩa: Đại diện cho bước nhập (input) hoặc xuất (output) dữ liệu.
  • Công dụng: Nhập dữ liệu từ người dùng hoặc in ra kết quả.
    Mũi Tên (Arrow):
  • Ý nghĩa: Chỉ hướng đi của luồng quy trình hoặc thuật toán.
  • Công dụng: Kết nối các bước trong quy trình theo thứ tự thực hiện.
    Hình Bình Hành (Data/Input-Output):
  • Ý nghĩa: Đại diện cho việc nhập dữ liệu đầu vào hoặc xuất dữ liệu đầu ra.
  • Công dụng: Mô tả các hoạt động nhập/xuất như đọc dữ liệu từ file, in ra màn hình.
    Hình Tròn (Connector):
  • Ý nghĩa: Đại diện cho việc nối tiếp hoặc nhảy đến một phần khác của lưu đồ khi không gian hoặc sự phức tạp yêu cầu tách riêng.
  • Công dụng: Sử dụng để kết nối các phần khác nhau của lưu đồ khi không thể vẽ liên tục.
    Bạn có thể tham khảo thêm tại đây.

Trở lại câu hỏi

Từ những hiểu biết về flowchart chúng ta có thể dịch hình trong câu hỏi ra thành tiếng Việt như sau:

  1. Bắt đầu chương trình, lưu ý rằng theo câu hỏi thì chương trình sẽ có tham số N được truyền vào.
  2. Khai báo biễn x và gán nó bằng 0.
  3. Khi báo biên i và gán nó bằng 1.
  4. Bắt đầu vòng lặp.
  5. Kiểm tra điều kiện A.
  6. Nếu điều kiện A thoả mãn thì kết thúc chương trình.
  7. Nếu điều kiện A không thoả mãn thì tăng x lên i lên đơn vị.
  8. Tăng i lên 2 đơn vị.
  9. Lặp lại.
    Giả sử đầu vào N = 4, chương trình sẽ phải chạy theo công thức và kết quả mong đợi sẽ là: 1 + 3 + 5 + (2N - 1) = 1 + (24 - 1) = 1 + 3 + 5 + 7 = 16.

Thay điều kiện A: i≥2N–1 (i lớn hơn hoặc bằng 2N - 1) chúng ta có i≥2*4–1 = i≥7:

  1. Lần lặp đầu tiên: với i = 1, 1≥7 sai, x = 0 + 1 = 1, tiếp tục vòng lặp.
  2. Lần lặp thứ 2: với i = 1 + 2 = 3, 3≥7 sai, x = 1 + 3 = 4, tiếp tục vòng lặp.
  3. Lần lặp thứ 3: với i = 3 + 2 = 5, 5≥7 sai, x = 4 + 5 = 9, tiếp tục vòng lặp.
  4. Lần lặp thứ 4: với i = 5 + 2 = 7, 7≥7 đúng kết thúc hàm.
    Vậy x thực tế là 9 khác với mong đợi là 16, suy ra đáp án A sai.

Thay điều kiện B: i≥2N+1 (i lớn hơn hoặc bằng i≥2N+1) chúng ta có i≥2*4+1 = i≥9:

  1. Lần lặp đầu tiên: với i = 1, 1≥9 sai, x = 0 + 1 = 1, tiếp tục vòng lặp.
  2. Lần lặp thứ 2: với i = 1 + 2 = 3, 3≥9 sai, x = 1 + 3 = 4, tiếp tục vòng lặp.
  3. Lần lặp thứ 3: với i = 3 + 2 = 5, 5≥9 sai, x = 4 + 5 = 9, tiếp tục vòng lặp.
  4. Lần lặp thứ 4: với i = 5 + 2 = 7, 7≥9 sai, x = 9 + 7 = 16, tiếp tục vòng lặp.
  5. Lần lặp thứ 5: với i = 7 + 2 = 9, 9≥9 đúng kết thúc hàm.
    Vậy x thực tế là 16 khác với mong đợi là 16, suy ra đáp án B đúng.

Thay điều kiện C: x≥2N–1 (x lớn hơn hoặc bằng 2N - 1) chúng ta có x≥2*4–1 = x≥7:

  1. Lần lặp đầu tiên: với i = 1 x = 0, 0≥7 sai, x = 0 + 1 = 1, tiếp tục vòng lặp.
  2. Lần lặp thứ 2: với i = 1 + 2 = 3, 1≥7 sai, x = 1 + 3 = 4, tiếp tục vòng lặp.
  3. Lần lặp thứ 3: với i = 3 + 2 = 5, 4≥7 sai, x = 4 + 5 = 9, tiếp tục vòng lặp.
  4. Lần lặp thứ 4: với i = 5 + 2 = 7, 9≥7 đúng, kết thúc hàm.
    Vậy x thực tế là 9 khác với mong đợi là 16, suy ra đáp án C sai.

Thay điều kiện D: x≥2N+1 (x lớn hơn hoặc bằng 2N + 1) chúng ta có x≥2*4+1 = x≥9:

  1. Lần lặp đầu tiên: với i = 1 x = 0, 0≥9 sai, x = 0 + 1 = 1, tiếp tục vòng lặp.
  2. Lần lặp thứ 2: với i = 1 + 2 = 3, 1≥9 sai, x = 1 + 3 = 4, tiếp tục vòng lặp.
  3. Lần lặp thứ 3: với i = 3 + 2 = 5, 4≥9 sai, x = 4 + 5 = 9, tiếp tục vòng lặp.
  4. Lần lặp thứ 4: với i = 5 + 2 = 7, 9≥9 đúng, kết thúc hàm.
    Vậy x thực tế là 9 khác với mong đợi là 16, suy ra đáp án D sai.
    Như vậy đáp án cho câu hỏi này là B.
    Minh hoạ mã nguồn Java sẽ như sau:
public class Test {
    public static int sum(int N) {
        int x = 0, i = 1;
        while (i < 2*N + 1) {
            x += i;
            i += 2;
        }
        return x;
    }
    public static void main(String[] args) {
        System.out.println(sum(4));
    }
}

Tổng kết lại

Như vậy chúng ta đã cùng nhau trả lời câu hỏi về điền vào flowchart biểu thức còn thiếu.


Cám ơn bạn đã quan tâm đến bài viết|video này. Để nhận được thêm các kiến thức bổ ích bạn có thể:

  1. Đọc các bài viết của TechMaster trên facebook: https://www.facebook.com/techmastervn
  2. Xem các video của TechMaster qua Youtube: https://www.youtube.com/@TechMasterVietnam nếu bạn thấy video/bài viết hay bạn có thể theo dõi kênh của TechMaster để nhận được thông báo về các video mới nhất nhé.
  3. Chat với techmaster qua Discord: https://discord.gg/yQjRTFXb7a