Vòng Lặp Trong C

vòng lặp trong c

Khi tiến hành lập trình có thể bạn sẽ gặp phải tình huống đó là một khối mã cần được thực thi nhiều lần, khi đó các câu lệnh được thực thi tuần tự: Câu lệnh đầu tiên trong một hàm được thực hiện trước tiên, tiếp theo là câu lệnh thứ hai và tiếp tục như vậy. Vòng lặp trong C nhằm cung cấp các loại vòng lặp sau đây để xử lý các yêu cầu lặp:

vòng lặp trong c
vòng lặp trong c
  • Vòng lập while trong C
  • Vòng lặp for
  • Vòng lặp do…while
  • Vòng lặp nested

Một câu lệnh vòng lặp cho phép chúng ta thực hiện một câu lệnh hoặc một nhóm các câu lệnh nhiều lần. Dưới đây là hình thức chung của một vòng lặp trong hầu hết các ngôn ngữ lập trình:

vòng lặp trong c (2)
vòng lặp trong c (2)

1. Vòng Lặp While Trong C

Vòng lặp while thường được sử dụng để lặp đi lặp lại một khối lệnh không biết trước số lần lặp. Dưới đây là cú pháp của vòng lặp while:

while(condition) {

statement(s);

}

Ở đây, (các) câu lệnh có thể là một câu lệnh đơn hoặc một khối câu lệnh. Điều kiện có thể là bất kỳ biểu thức nào và là bất kỳ giá trị nào khác. Vòng lặp lại khi điều kiện là đúng. Khi điều kiện sai, chương trình sẽ thoát khỏi vòng lặp và chuyển đến dòng ngay sau vòng lặp.

Bài tập thực hành:

In ra các số lẻ <= 10

Lời Giải:

#include <stdio.h>
 
int main(){
    /*
        In ra các số lẻ <= 10.
     */
 
    int number = 1;
    while (number <= 10){
        if(number % 2 == 1){
            printf("%d\t", number);
        }
        number++;
    }
}

Kết Quả:

PS G:\c_cources\day_19> g++ .\WhileLoop.cpp -o .\WhileLoop
PS G:\c_cources\day_19> .\WhileLoop.exe
1       3       5       7       9

 

2. Vòng Lặp For Trong C

Vòng lặp For là một cấu trúc điều khiển lặp lại cho phép bạn viết một cách hiệu quả một vòng lặp mà cần phải thực hiện một số cụ thể.

Cú pháp của vòng lặp for trong ngôn ngữ lập trình C là:

for ( init; condition; increment ) {

statement(s);

}
  • Bước init được thực thi đầu tiên, và chỉ một lần. Bước này cho phép bạn khai báo và khởi tạo bất kỳ biến điều khiển vòng lặp nào.
  • Tiếp theo, điều kiện được đánh giá. Nếu nó là đúng, phần thân của vòng lặp được thực thi. Nếu nó sai, phần thân của vòng lặp không thực thi và luồng điều khiển nhảy đến câu lệnh kế tiếp ngay sau vòng lặp for.
  • Sau khi vòng lặp for thực hiện, luồng điều khiển nhảy ngược lại câu lệnh tăng dần. Câu lệnh này cho phép bạn cập nhật bất kỳ biến điều khiển vòng lặp nào. Câu lệnh này có thể để trống, miễn là dấu chấm phẩy xuất hiện sau điều kiện.
  • Điều kiện hiện được đánh giá lại. Nếu nó là true, vòng lặp thực hiện và quá trình lặp lại chính nó và nếu điều kiện sai, vòng lặp for chấm dứt.

Vòng lặp For là thường được sử dụng trong khóa học lập trình C

Bài Tập:

In ra 3 dòng chữ “Hoc C ba dao tai Lap trinh khong kho!”

Lời Giải:

/*
    In ra 3 dòng chữ "Hoc C ba dao tai Lap trinh khong kho!"
 */
 
 
#include <stdio.h>
 
int main(){
    for(int i = 0; i < 3; i++){
        printf("Hoc C ba dao tai Lap trinh khong kho!\n");
    }
    // Continue ...
    printf("Ket thuc vong lap!\n");
}
 
/*
    Giải thích:
    B1. Gán biến lặp i = 0
    B2. Kiểm tra điều kiện (i = 0) < 3 => Đúng
    B3. Do kiểm tra điều kiện đúng => Thực hiện thân vòng lặp for
    B4. Gọi tới (i++) => tăng i lên 1 đơn vị => i = 1
    B5. Kiểm tra điều kiện (i = 1) < 3 => Đúng
    B6. Do kiểm tra điều kiện đúng => Thực hiện thân vòng lặp for
    B7. Gọi tới (i++) => tăng i lên 1 đơn vị => i = 2
    B8. Kiểm tra điều kiện (i = 2) < 3 => Đúng
    B9. Do kiểm tra điều kiện đúng => Thực hiện thân vòng lặp for
    B10. Gọi tới (i++) => tăng i lên 1 đơn vị => i = 3
    B11. Kiểm tra điều kiện (i = 3) < 3 => Sai => Kết thúc vòng lặp
 */

Kết Quả:

Hoc C ba dao tai Lap trinh khong kho!
Hoc C ba dao tai Lap trinh khong kho!
Hoc C ba dao tai Lap trinh khong kho!
Ket thuc vong lap!

3. Vòng Lặp Do While

Không giống như vòng lặp for và while tiến hành kiểm tra điều kiện lặp ở đầu vòng lặp, do … while trong lập trình C kiểm tra điều kiện ở dưới cùng của vòng lặp.

Vòng lặp do … while tương tự như một vòng lặp while, tuy nhiên do … while luôn được thực hiện ít nhất một lần.

Cú pháp của vòng lặp do … while trong ngôn ngữ lập trình C là:

do {

statement(s);

} while( condition );

 

Lưu ý rằng biểu thức điều kiện xuất hiện ở cuối vòng lặp, do đó (các) câu lệnh trong vòng lặp thực hiện một lần trước khi điều kiện được kiểm tra.

Nếu điều kiện là đúng, luồng điều khiển nhảy trở lại để làm, và (các) câu lệnh trong vòng lặp thực hiện lại. Quá trình này lặp lại cho đến khi điều kiện đã cho trở thành sai.

Ví Dụ:

#include <stdio.h>
  
int main () {
    int a = 10;
 
    do {
        printf("Gia tri cua a: %d\n", a);
        a++;
    } while( a < 20 );
  
    return 0;
}

Kết Quả:

Gia tri cua a: 10
Gia tri cua a: 11
Gia tri cua a: 12
Gia tri cua a: 13
Gia tri cua a: 14
Gia tri cua a: 15
Gia tri cua a: 16
Gia tri cua a: 17
Gia tri cua a: 18
Gia tri cua a: 19

 

4. Vòng lặp nested

Lập trình C cho phép sử dụng vòng lặp nested (vòng lặp bên trong vòng lặp khác). Phần sau đây cho thấy một vài ví dụ để minh họa:

  • Cú pháp cho câu lệnh vòng lặp nested với vòng lặp for trong C như sau:

f

or ( init; condition; increment ) {

for ( init; condition; increment ) {

statement(s);

}

statement(s);

}

 

  • Cú pháp cho câu lệnh vòng lặp nested với vòng lặp while trong ngôn ngữ lập trình C như sau:
while(condition) {

while(condition) {

statement(s);

}

statement(s);

}

 

  • Cú pháp cho câu lệnh lồng nhau do … while trong ngôn ngữ lập trình C như sau:
do {

statement(s);

do {

statement(s);

}while( condition );

}while( condition );

 

Lưu ý cuối cùng về việc lồng vòng lặp là bạn có thể đặt bất kỳ loại vòng lặp nào bên trong loại vòng lặp khác.

5. Câu lệnh điều khiển vòng lặp

C hỗ trợ các câu lệnh điều khiển sau:

  • Chấm dứt vòng lặp hoặc switch tuyên bố và chuyển thực hiện để báo cáo kết quả ngay sau khi vòng lặp hoặc switch.
  • Làm cho vòng lặp bỏ qua phần còn lại của chương trình và ngay lập tức kiểm tra lại tình trạng của nó trước khi lặp lại.
  • Chuyển quyền kiểm soát vào câu lệnh được dán nhãn.

6. Vòng lặp vô hạn

Một vòng lặp trở thành một vòng lặp vô hạn nếu một điều kiện không bao giờ trở thành sai. Các vòng lặp theo truyền thống được sử dụng cho mục đích này, vì không có biểu thức nào trong số ba biểu thức tạo thành vòng lặp for là bắt buộc, bạn có thể tạo vòng lặp vô tận bằng cách để trống biểu thức điều kiện.

#include

int main () {

for( ; ; ) {

printf("This loop will run forever.\n");

}

return 0;

}

Khi biểu thức điều kiện để trống, nó được giả định là đúng. Bạn có thể có một biểu thức khởi tạo và gia tăng, nhưng các lập trình viên C thường sử dụng cấu trúc for (;;) để biểu thị một vòng lặp vô hạn. Bạn có thể chấm dứt vòng lặp vô hạn bằng cách nhấn các phím Ctrl + C.

7. Một số bài tập về vòng lặp trong C

Bài 1:

Viết chương trình nhập số nguyên dương n. Tính S(n)= 1 + (1+2)/2! + (1+2+3)/3! + … + (1+2+3+…+n)/n! (n>0)

Lời giải:

// Tính S(n)= 1 + (1+2)/2! + (1+2+3)/3! + ... + (1+2+3+..+n)/n! (n>0)

===========================================================================


#include <iostream>
using namespace std;

int Nhap()
{
   int x;
   do
   {
      cin >> x;
      if (x < 0)
         cout << "Nhap sai, yeu cau nhap lai!";
   } while (x < 0);
   return x;
}

double Tinh(int n)
{
   float s = 0, t = 0;
   long p = 1;
   for (int i = 1; i <= n; i++)
   {
      t = t + i;
      p = p * i;
      s = s + (double)t / p;
   }
   return s;
}

int main()
{
   int n; 

   cout << "Nhap so nguyen n: ";
   n = Nhap();
   cout << "Ket qua la: "<< Tinh(n) << endl;

   return 0;
}

Bài 2:

Viết chương trình nhập số nguyên dương n. Tính S(n) = 1-2+3-4+5+…+((-1)^(n+1))*n (n>0)

Ví dụ:

Input: 5

Output: 3

Lời Giải:

// Tinh P(n) = 1-2+3-4+5+...+((-1)^(n+1))*n (n>0)

===========================================================================


#include <iostream>
using namespace std;

int Nhap()
{
   int x;
   do
   {
      cin >> x;
      if (x < 0)
         cout << "Nhap sai, yeu cau nhap lai!";
   } while (x < 0);
   return x;
}

long Tinh(int n)
{
   long p = 0;
long tmp = 1;
   for (int i = 1; i <= n; i++)
{
      p += tmp*i;
      tmp *= -1;
}
   return p;
}

int main()
{
   int n; 

   cout << "Nhap so nguyen n: ";
   n = Nhap();
   cout << "Ket qua la: "<< Tinh(n) << endl;

   return 0;
}

 

Bài viết liên quan

Leave a Reply

Your email address will not be published. Required fields are marked *

Hotline: 0353.366.750
Chat Facebook
Gọi điện ngay