1.Vòng Lặp For
Vòng lặp giúp bạn thực hiện các câu lệnh nhiều lần tùy theo ý bạn muốn. Ví dụ bạn muốn in ra 1000 dòng chữ "28tech.com.vn" thì thay vì bạn viết 1000 câu lệnh printf bạn có thể viết 1 câu lệnh printf và cho nó lặp 1000 lần.
Cú pháp :
for(Câu_lệnh_khởi_tạo ; Điều_kiện_lặp; Câu_lệnh_cập_nhật){ //code }
Cách vòng lặp For hoạt động :
- Câu lệnh khởi tạo được thực hiện 1 lần duy nhất khi bắt đầu vào vòng lặp
- Sau đó điều kiện lặp được kiểm tra, nếu đúng thì sẽ tiến thành thực hiện các câu lệnh trong for, sai sẽ không thực hiện và kết thúc vòng lặp
- Sau khi các câu lệnh trong vòng lặp được thực hiện xong thì tới phần câu lệnh cập nhật được thực thi
- Câu lệnh cập nhật được thực hiện xong sẽ tiếp tục kiểm tra điều kiện lặp và nếu đúng tiếp tục thực hiện code trong vòng lặp, sai sẽ kết thúc vòng lặp
Ví dụ 1 : In ra 4 dòng "28tech.com.vn"
#include "stdio.h" int main(){ int i; for(i = 1; i <= 4; i++){ printf("28tech.com.vn\n"); } return 0; }
Output :
28tech.com.vn 28tech.com.vn 28tech.com.vn 28tech.com.vn
Giải thích :
- Biến i được khởi tạo giá trị bằng 1, sau đó kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 1 và in ra 28tech.com.vn
- Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 2, kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 2 và in ra 28tech.com.vn
- Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 3, kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 3 và in ra 28tech.com.vn
- Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 4, kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 4 và in ra 28tech.com.vn
- Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 5, kiểm tra điều kiện i <= 5 sẽ có giá trị sai. Vòng lặp kết thúc
2.Sơ Đồ Khối Vòng Lặp For
Sơ đồ khối mô tả trực quan cách vòng for hoạt động
3. Ví Dụ
Các ví dụ dưới đây sẽ giúp các bạn làm quen với các vòng lặp thường xuyên được sử dụng, bạn cố gắng viết ra giấy từng bước của vòng lặp như phần giải thích của mình ở mục 1 để hiểu rõ hơn cách vòng for chạy.
Ví dụ 1 : In ra các số từ 1 đến n và từ n về 0
Thông thường nếu bạn muốn thực hiện các khối lệnh n lần thì bạn làm vòng for chạy từ 1 tới n.
#include "stdio.h" int main(){ int n = 10; for(int i = 1; i <= n; i++){ printf("%d ", i); } printf("\n"); for(int i = n; i >= 0; i--){ printf("%d ", i); } return 0; }
Output :
1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1 0
Ví dụ 2 : In ra các ước của N
#include "stdio.h" int main(){ int n = 100; for(int i = 1; i <= n; i++){ if(n % i == 0){ printf("%d ", i); } } return 0; }
Output :
1 2 4 5 10 20 25 50 100
Ví dụ 3 : Tính tổng các ước của N
#include "stdio.h" int main(){ int n = 100; int tong = 0; for(int i = 1; i <= n; i++){ if(n % i == 0){ tong += i; } } printf("%d", tong); return 0; }
Output :
217Ví dụ 4 : Tính N giai thừa (N! = 1.2.3....N)
#include "stdio.h" int main(){ int n = 5; int giaithua = 1; for(int i = 1; i <= n; i++){ giaithua *= i; } printf("%d", giaithua); return 0; }
Output :
120Ví dụ 5 : Tính tổng và in ra bội số của 3 trong đoạn [a, b]
#include "stdio.h" int main(){ int a = 10, b = 31; int tong = 0; for(int i = a; i <= b; i++){ if(i % 3 == 0){ printf("%d ", i); tong += i; } } printf("\nTong boi cua 3 la : %d\n", tong); return 0; }
Output :
12 15 18 21 24 27 30 Tong boi cua 3 la : 147
4. Một Số Vòng Lặp For Đặc Biệt
Vòng lặp for thường có 3 phần và các câu lệnh, tuy nhiên đôi khi bạn có thể để khuyết các phần này.
Ví dụ 1 : Vòng lặp for không có điều kiện lặp sẽ lặp vĩnh viễn
#include "stdio.h" int main(){ for(int i = 1; ;i++){ printf("28tech\n"); printf("lap vinh vien\n"); printf("lap trinh C\n"); } return 0; }
Ví dụ 2 : Vòng lặp không có điều kiện lặp và câu lệnh cập nhật cũng lặp vĩnh viễn
#include "stdio.h" int main(){ for(int i = 1; ;){ printf("28tech\n"); printf("lap vinh vien\n"); printf("lap trinh C\n"); } return 0; }
Ví dụ 3 : Vòng lặp for có thể khuyết cả 3 phần, mục đích là tạo vòng lặp vĩnh viễn
Code sau sẽ yêu cầu người dùng nhập số cho tới khi nào nhập số 28 mới dừng vòng lặp.
#include "stdio.h" int main(){ int n; for(; ;){ printf("Nhap n : "); scanf("%d", &n); if(n == 28){ goto nhan; } } nhan: printf("n = %d\n", n); printf("Ket thuc !!!\n"); return 0; }
Xem thêm bài giảng của mình về Vòng Lặp For trong C :