Cấu trúc lặp

Một phần của tài liệu TÀI LIỆU THAM KHẢO HƯỚNG DẪN THỰC HÀNH CƠ SỞ LẬP TRÌNH TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP. HỒ CHÍ MINH KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ (Trang 48 - 53)

Cấu trúc lặp cho phép lặp lại nhiều lần một câu lệnh hay một khối lệnh cho đến khi biểu thức điều kiện còn thỏa.

Các loại cấu trúc lặp trong C: - Cấu trúc lặp for

- Cấu trúc lặp while - Cấu trúc lặp do … while

43

3.3.1 Cấu trúc lặp for

Cấu trúc lặp for cho phép lặp lại một câu lệnh hay khối lệnh với số lần lặp được xác định trước với cú pháp sau đây:

for ([<phần khởi tạo>] ; [<điều kiện>] ; [<phần hiệu chỉnh>]) <lệnh>;

trong đó:

- <phần khởi tạo>: một hay nhiều biểu thức gán (được phân cách bởi dấu phẩy) có nhiệm vụ khởi tạo giá trị ban đầu cho các biến đếm

- <điều kiện>: biểu thức logic, cho kết quả đúng (true, khác 0), sai (false, bằng 0)

- <phần hiệu chỉnh>: một hay nhiều biểu thức gán (được phân cách bởi dấu) có nhiệm vụ thay đổi giá trị của các biến đếm

- <lệnh>: câu lệnh đơn, khối lệnh, hoặc câu lệnh điều khiển Lưu đồ câu lệnh for như hình sau:

Trình tự thực hiện câu lệnh for:

Bước 1: Thực hiện <phần khởi tạo> (nếu có)

Bước 2: Tính giá trị của <điều kiện>

Bước 3: Nếu <điều kiện> đúng (true, khác 0) thì thực hiện <lệnh>, sau đó thực hiện <phần hiệu chỉnh> (nếu có) và quay về Bước 2, ngược lại, nếu <điều kiện> sai (false, bằng 0) thì chuyển sang Bước 4

Bước 4: Thoát khỏi cấu trúc lặp for, và chuyển quyền điều khiển sang câu lệnh kế tiếp sau lệnh for

44

/*su dung cau truc for day du*/ #include <stdio.h>

int main(){ int n;

printf("Nhap n = "); scanf("%d", &n); long giai_thua = 1;

for (int i=2; i<=n; i++) giai_thua *= i;

printf("Ket qua: %d! = %ld\n", n, giai_thua); return 0;

}

Ví dụ 3.7. Tính giai thừa của số n nhập từ bàn phím

/*su dung cau truc for thieu phan khoi tao*/ #include <stdio.h>

int main(){ int n, i=2;

printf("Nhap n = "); scanf("%d", &n); long giai_thua = 1;

for (; i<=n; i++) giai_thua *= i;

printf("Ket qua: %d! = %ld\n", n, giai_thua); return 0;

}

Ví dụ 3.8. Tính giai thừa của n nhập từ bàn phím

/*su dung cau truc for thieu phan dieu kien*/ #include <stdio.h>

int main(){

int n; long giai_thua = 1;

printf("Nhap n = "); scanf("%d", &n); for (int i=2; ; i++) {

if (i > n) break; giai_thua *= i; }

printf("Ket qua: %d! = %ld\n", n, giai_thua); return 0;

}

3.3.2 Cấu trúc lặp while

Cấu trúc lặp while cho phép xem xét điều kiện lặp, chỉ khi điều kiện này đúng mới thực hiện hành động lặp (câu lệnh hay khối lệnh). Cú pháp của cấu trúc lặp while:

45

while (<điều kiện>) <lệnh>;

trong đó:

- <điều kiện>: biểu thức logic cho kết quả đúng (true, khác 0), sai (false, bằng 0) - <lệnh>: câu lệnh đơn, khối lệnh, hoặc câu lệnh điều khiển

Lưu đồ câu lệnh while như hình sau:

Trình tự thực hiện câu lệnh while:

Bước 1: Tính giá trị của điều kiện (đúng hoặc sai)

Bước 2: Nếu giá trị của <điều kiện> là đúng (true, khác 0), thực hiện <lệnh>, sau đó quay về Bước 1, ngược lại, chuyển sang Bước 3.

Bước 3: Thoát khỏi vòng lặp, và chuyển quyền điều khiển sang câu lệnh kế tiếp sau lệnh while.

Chú ý:

- Do <điều kiện> được kiểm tra trước, nên xảy ra trường hợp nội dung lặp (<lệnh>) của cấu trúc while không được thực hiện dù chỉ một lần.

- Để bảo đảm cho cấu trúc lặp while kết thúc sau một số lần lặp (không xác định), trong nội dung lặp phải có ít nhất một câu lệnh làm thay đổi giá trị <điều kiện>.

Ví dụ 3.9. Xuất m giá trị giai thừa đầu tiên với m nhập từ bàn phím

#include <stdio.h> int main(){

int m, i = 1; long giai_thua = 1;

printf("Nhap m = "); scanf("%d", &m); while (giai_thua <= m) { giai_thua *= i; printf("%d! = %ld\n", i, giai_thua); i++; } return 0;

46 }

3.3.3 Cấu trúc do … while

Cấu trúc lặp do … while cho phép lặp lại một hành động (câu lệnh hay khối lệnh) trong khi điều kiện lặp đúng với cú pháp sau đây:

do <lệnh>; while (<điều kiện>);

trong đó:

- <điều kiện>: biểu thức logic cho kết quả đúng (true, khác 0), sai (false, bằng 0) - <lệnh>: câu lệnh đơn, khối lệnh, hoặc câu lệnh điều khiển

Lưu đồ câu lệnh do … while như hình sau:

Trình tự thực hiện câu lệnh do … while:

Bước 1: Thực hiện hành động lặp <lệnh>

Bước 2: Tính giá trị của <điều kiện>, nếu là đúng (true, khác 0), quay về Bước 1, ngược lại, chuyển sang Bước 3.

Bước 3: Thoát khỏi vòng lặp, và chuyển quyền điều khiển sang câu lệnh kế tiếp sau lệnh do … while.

Chú ý:

- Do <lệnh> được thực hiện trước rồi mới đánh giá <điều kiện>, nên nội dung lặp (<lệnh>) của cấu trúc dowhile được thực hiện ít nhất một lần.

- Để bảo đảm cho cấu trúc lặp dowhile kết thúc sau một số lần lặp (không xác định trước), trong nội dung lặp phải có ít nhất một câu lệnh làm thay đổi giá trị <điều kiện>.

Ví dụ 3.10. Nhập một số nguyên dƣơng (nhập lại khi nhập số không dƣơng)

#include <stdio.h> int main() {

47 int n;

do {

printf("Hay nhap mot so >0: "); scanf("%d", &n);

} while (n<=0);

printf("So hop le n = %d\n", n); return 0;

}

Một phần của tài liệu TÀI LIỆU THAM KHẢO HƯỚNG DẪN THỰC HÀNH CƠ SỞ LẬP TRÌNH TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP. HỒ CHÍ MINH KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ (Trang 48 - 53)

Tải bản đầy đủ (PDF)

(182 trang)