Thuật toán tính tổng một dãy số rất hay gặp trong thực tế, đây cũng là bài toán đầu tiên bạn thường gặp khi làm quen với thuật toán.

Yêu cầu

Viết chương trình nhập vào một số n và tính tổng của các số từ 1..n.

Phân tích tìm cách giải

  • Đầu vào: cần nhập giá trị cho n, khởi tạo biến tổng bằng 0
  • Đầu ra: Tính tổng các giá trị

Các bước thực hiện:

Nhập giá trị cho biến n
Khởi tạo biến tổng sum=0
Kiểm tra n
Nếu n <=0
     Thông báo nhập lại giá trị lớn hơn 0
Nếu n >0
     Lặp biến i chạy từ 1 đến n
         Cộng i vào tổng sum=sum +i
     Kết thúc vòng lặp in biến tổng.

 

Cách biểu diễn thuật toán tính tổng một dãy số

Trong trường hợp này, tôi sử dụng ngôn ngữ giả.

Declare int n, i, sum=0

Input n

If n<0 then

    Print ‘Lỗi, n phải lớn hơn 0. Vui lòng nhập lại’

Else

    Loop i=1 to n

        Sum=sum+i

    Print sum

Bạn có thể download đoạn chương trình bằng Java ở đây.

Kỹ thuật Dry Run

Khi bạn sử dụng thuật toán, nếu bạn không chắc chắn thuật toán của bạn đúng. Bạn có thể sử dụng kỹ thuật Dry Run để kiểm tra.

Để áp dụng kỹ thuật này, bạn lập một bảng các biến quan trọng của chương trình và cập nhật giá trị của nó qua từng bước, bạn sẽ hiểu cách thức một chương trình hoạt động.

Ví dụ bài toán trên khi ta nhập n=10, đáp án sẽ là sum=55.

Bạn sử dụng kỹ thuật Dry Run để kiểm tra như sau:

Dry Run

Kỹ thuật này cực kỳ đơn giản nhưng rất lợi hại, nó sẽ giúp bạn dễ dàng hiểu được cách làm việc của các vòng lặp hoặc các chương trình phức tạp sau này.

Bài tiếp: Thuật toán về dãy số Fibonacci

Bài trước: Các thuật toán về số học

Comments



Blog này nhằm mục đích chia sẻ các kiến thức thực tế liên quan đến ngành công nghiệp phần mềm nhằm giúp các bạn trẻ định hướng tốt hơn trong việc chọn lựa nghề nghiệp của mình. Chúng tôi rất mong nhận được sự đóng góp, chia sẽ của các anh chị có kinh nghiệm cũng như các bạn trẻ.

 Học thuật toán

Hướng dẫn học thuật toán

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

Hướng dẫn thiết kế cơ sở dữ liệu.

 Học lập trình

Hướng dẫn dành cho người mới học lập trình.

 Hot or Not

Phân tích xu hướng công nghệ lập trình

 Phân tích thiết kế hệ thống

Phân tích và thiết kế hệ thống phần mềm

 Scrum Methodology

Bàn về mô hình phát triển phần mềm.