Khác với cấu trúc Vòng lặp For Cấu trúc While Sử dụng khi bài toán có công việc lặp mà không biết số lần lặp là bao nhiêu. Chỉ xác định được điều kiện dừng lặp của bài toán,…
Cấu trúc While
Điều kiện sử dụng:
– Ví dụ: Nhập vào dãy số nguyên cho tới khi người dùng nhập số 0 thì dừng. Trong ví dụ, công việc nhập số nguyên được lặp đi lặp lại nhiều lần nhưng không biết là lặp bao nhiêu lần. Vòng lặp chỉ dừng khi người dùng nhập số 0.
Lưu đồ thuật toán
Cú pháp:
- Ví dụ:
Để tránh vòng lặp vô tận, trong câu lệnh while phải có câu lệnh làm thay đổi giá trị của biểu thức điều kiện.
Cấu trúc lặp do…while
Điều kiện sử dụng:
- Tương tự như cấu trúc lặp while.
- Thực hiện ít nhất một lần (while có thể không thực hiện lần nào nếu ngay mới lần đầu tiên biểu thức điều kiện trong while trả về giá trị sai).
Lưu đồ thuật toán vòng lặp do – while
Cú pháp:
Phân tích hoạt động của cấu trúc lặp do – while
Bước 2: Khi gặp đến cuối khối lệnh lặp do while, chương trình sẽ xác định giá trị của điều kiện lặp sau từ khóa while.
Bước 3: Chương trình sẽ thực thi một trong 2 nhánh sau tùy theo giá trị của biểu thức vừa nhận được.
Bước 3.1: Nếu biểu thức có giá trị đúng (khác 0), chương trình sẽ quay trở lại bước 1 để tiếp tục thực hiện vòng lặp mới.
Bước 3.2: Nếu biểu thức có giá trị sau (bằng 0), chương trình sẽ ra khỏi chu trình và chuyển tới câu lệnh đúng sau dấu chấm phẩy đặt cuối từ khóa do while.
VD:
- Ta có thể dùng từ khóa break để thoát ra khỏi vòng lặp
- Dùng từ khóa continue để chuyển sang bước lặp tiếp theo.
Hướng dẫn giải quyết một bài toán cụ thể
-
Bước 1: Phân tích bài toán.
-
Bước 2: Cài đặt chương trình
-
Bước 3: Kiểm tra và chạy thử
VD: Nhập vào 2 số nguyên dương a và b. Tìm ước chung lớn nhất của 2 số nguyên dương đã nhập.
Bước 1: Phân tích bài toán
- Nhập 2 số nguyên bất kỳ
- Xuất ra ước chung lớn nhất của 2 số vừa nhập
- 02 biến số nguyên (int), 01 biến ucln (int)
- Sử dụng thuật toán euclid => số lần lặp của bài toán không xác định => sử dụng vòng lặp while
- Thuật toán euclid tìm UCLN của a và b
Nếu a>b thi UCLN(a,b)=UCLN(a-b,b)
Nếu a<b thi UCLN(a,b)=UCLN(a,b-a)
Bước 2: Cài đặt chương trình
- Tạo project mới (có thể xem lại bài viết Hướng dẫn Tạo Project Visual C++ trong Visual Studio 2012 Hoặc Hướng dẫn Dev-C++ căn bản)
- Chọn ngôn ngữ là C++
- Tên project:
- Khai báo thư viện và viết hàm main
- Khai báo và nhập dữ liệu
- Cài đặt câu lệnh rẽ nhánh
Bước 3: Kiểm tra, sửa lỗi và chạy thử
Bài tập làm thêm:
Bài tập 1.Viết chương trình kiểm tra xem n có phải là số nguyên tố hay không. Biết rằng số nguyên tố nguyên lớn hơn 2 là số chỉ có 2 ước là 1 và chính nó.
Bài tập 2.Viết chương cho biết trong số nguyên n có bao nhiêu chữ số
Bài tập 3.Viết chương trình tìm bội chung nhỏ nhất (BCNN) của 2 số nguyên dương a và b nhập vào từ bàn phím. Biết rằng BCNN (a,b)=a*b/UCLN(a,b)
Bài tập 4.Viết chương trình tính tổng các số tự nhiên nhỏ hơn n (sử dụng vòng lặp While)
Bài tập 5. An gửi số tiền là n USD vào ngân hàng. An muốn số tiền của mình sẽ bằng hoặc lớn hơn 1000USD. Giúp An viết chương trình tính số tháng cần gửi vào ngân hàng để tổng tiền vốn lẫn tiền lãi sẽ lớn hơn 1000USD. Biết lãi suất 0.7%/ tháng và số tiền vốn n được nhập từ bàn phím.
Bài tập 6.Viết chương trình cho phép nhập một số nguyên từ bàn phím. Việc nhập kết thúc khi người dùng nhập vào giá trị 0. Hiển thị tổng các số vừa nhập.
Bài tập 7.Kiểm tra số nguyên dương n có các chữ số toàn là chữ số chẵn hay không?
Bài tập 8.Kiểm tra số nguyên dương n có các chữ số toàn là chữ số lẻ hay không?
Bài tập 9.Kiểm tra số nguyên dương n có các chữ số tăng dần từ trái qua phải hay không?
Bài tập 10.Kiểm tra số nguyên dương n có các chữ số giảm dần từ trái qua phải hay không?
Bài tập 11.Nhập n>0. Tìm số nguyên dương m lớn nhất sao cho 1+2+3+…+m<n.
Bài tập 12.Nhập n>0. Tìm số nguyên dương m nhỏ nhất sao cho 1+2+3+…+m>n.
Bài tập 13.Xuất số đảo của số nguyên dương n.
Xem thêm Cách sử dụng hàm trong lập trình