2.3.3 Hai chương trình đơn giản (3)

Bởi thời điểm này, bạn đã có thể viết một chương trình tìm lớn nhất trong số bốn, năm, sáu hoặc thậm chí 10 số. Bạn đã biết phương hướng để làm, do đó, sự mở rộng của chương trình cũng không phức tạp.

Nhưng chuyện gì sẽ xảy ra nếu chúng tôi yêu cầu bạn viết một chương trình tìm số lớn nhất trong hàng trăm số ? Bạn tưởng tượng ra code sẽ như thế nào chưa ? Bạn sẽ cần hàng trăm khai báo các biến kiểu int. Nếu bạn nghĩ rằng bạn có thể làm điều đó thì hãy thử tưởng tượng nếu viết một chương trình tìm số lớn nhất trong một triệu số thì sẽ viết kiểu gì. Hãy tưởng tượng code chứa 99 câu lệnh điều kiện và một trăm câu lệnh cin sẽ như thế nào.

Hãy bỏ qua ngôn ngữ C++ cho thời điểm này và cố gắng để phân tích các vấn đề khi không phải suy nghĩ về lập trình. Nói cách khác, chúng ta hãy cố gắng để viết thuật toán, và khi chúng ta đã hài lòng với nó, chúng ta sẽ cố gắng thực hiện nó bằng ngông ngữ lập trình.

Chúng ta sẽ sử dụng một loại ký hiệu không phải là một ngôn ngữ lập trình (nó không compile được mà cũng không chạy được), nhưng là ngắn gọn, súc tích và dễ đọc. Nó được gọi là pseudo-code.

Đó là một ví dụ về pseudo-code

1. max = -999999999;
2. đọc số nhập từ bàn phím: number
3. if (number == -1) → in ra max sau đó dừng;
4. if (number > max) → max = number
5. quay lại step 2

Đầu tiên, chúng ta có thể đơn giản hóa các chương trình của chúng ta, chúng ta gán biến max bằng một giá trị mà sẽ nhỏ hơn so với bất kỳ số nào nhập vào. Chúng ta sẽ sử dụng -999999999 cho mục đích này.

Thứ hai, chúng ta giả định rằng thuật toán của chúng ta không biết trước có bao nhiêu số sẽ được nhập vào chương trình. Chúng ta giả thiết rằng người dùng sẽ nhập bao nhiều số muốn cũng được – các thuật toán xử lý như nhau với 100 hoặc 1.000 số. Chúng ta có thể làm điều đó như thế nào? Vâng, chúng ta sẽ thực hiện một thỏa thuận với người sử dụng: khi giá trị -1 được nhập, đó sẽ là một dấu hiệu rằng sẽ không có dữ liệu được nhập vào nữa và chương trình sẽ kết thúc công việc của mình. Nếu giá trị nhập vào không phải là -1, chương trình sẽ tiếp tục đọc các giá trị được nhập vào.

Thuật toán trên dựa trên giả định rằng bất kỳ phần của code cũng có thể được thực hiện nhiều hơn một lần. Thực hiện một phần nhất định của code nhiều hơn một lần được gọi là một vòng lặp (loop). Từ bước 2 đến 5 là một vòng lặp. Chúng ta có thể sử dụng một cấu trúc tương tự trong chương trình viết bằng ngôn ngữ C++ ? Yes, chúng ta có thể. Và chúng ta sẽ nói về nó ngay đây.