hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Học C căn bản
Vòng lặp trong C – các cấu trúc vòng lặp for, while, do while

Vòng lặp trong C – các cấu trúc vòng lặp for, while, do while

  • 08-01-2023
  • Toanngo92
  • 0 Comments

Một trong những ưu điểm lớn nhất của máy tính nằm ở khả năng thực hiện lặp đi lặp lại một loạt các lệnh với tốc độ nhanh chóng. Khái niệm này được gọi là vòng lặp (loop). Vòng lặp là một đoạn mã trong chương trình được thực hiện lặp đi lặp lại cho đến khi một điều kiện cụ thể được thỏa mãn.

Trong ngôn ngữ lập trình C (tương tự với nhiều ngôn ngữ khác) cung cấp các cấu trúc vòng lặp sau:

  • Vòng lặp for
  • Vòng lặp while
  • Vòng lặp do while

Điều kiện kiểm soát việc thực hiện vòng lặp được mã hóa bằng toán tử Quan hệ (Relational operators) và Logic (Logical operators) trong C.

Mục lục

  • Vòng lặp for
    • Toán tử ‘,’ trong vòng lặp for
    • Vòng lặp for lồng nhau (nested for loop)
    • Một số đặc tính khác của vòng lặp for
  • Vòng lặp while
    • Khác biệt cách sử dụng giữa vòng lặp for và vòng lặp while
  • Vòng lặp do while

Vòng lặp for

Cú pháp tổng quát:

for(initialize counts;conditional test; re-evaluation expression){
      // todo
      statements;
}

Vòng lặp for có 3 thành phần:

  • Bộ đếm khởi tạo (initialize counts) là một câu lệnh gán thiết lập biến điều khiển vòng lặp, trước khi vào vòng lặp. Lệnh này được thực hiện chỉ một lần.
  • Phép thử điều kiện (conditional test) là một biểu thức quan hệ, nó xác định khi nào vòng lặp sẽ kết thúc.
  • Biểu thức đánh giá lại (re-evaluation expression) xác định biến điều khiển vòng lặp thay đổi như thế nào (chủ yếu là tăng hoặc giảm trong biến được đặt ở trạng thái) mỗi khi vòng lặp được lặp lại.

Ba phần này của vòng lặp for phải được phân tách bằng dấu chấm phẩy “;”. Câu lệnh tạo thành phần thân của vòng lặp, có thể là câu lệnh đơn hoặc kết hợp nhiều câu lệnh.

Vòng lặp hoặc tiếp tục thực hiện miễn là kiểm tra điều kiện trả ra true. Khi điều kiện trở thành false, chương trình sẽ thoát vòng lặp và tiếp tục với câu lệnh theo sau vòng lặp for.

Trong vòng lặp for, kiểm tra điều kiện luôn được thực hiện ở đầu vòng lặp. Điều này có nghĩa là mã bên trong vòng lặp không được thực thi nếu điều kiện ban đầu là false.

Ví dụ:

void defaultloopexample(){
	int count;
	for(count = 1; count <= 5 ; count++){
		printf("\ncount %d",count);	
	}	
}

void loopexample2(){
	int i;
	for(i = 0; i <=20; i = i+5){
		printf("%d \n",i);
	}
	//output
	//0
	//5
	//10
	//15
	//20
}

int main()
{
  defaultloopexample();
  loopexample2();
  return 0;
}

Toán tử ‘,’ trong vòng lặp for

Phạm vi của vòng lặp for có thể được mở rộng bằng cách triển khai nhiều hơn một biểu thức khởi tạo hoặc biểu thức tăng giảm trong đặc tả vòng lặp for.

Các biểu thức được phân tách bằng toán tử ‘dấu phẩy’ và được đánh giá từ trái sang phải. Thứ tự đánh giá là quan trọng nếu giá trị của biểu thức thứ hai phụ thuộc vào giá trị mới được tính toán của biểu thức đầu tiên. Toán tử này có độ ưu tiên thấp nhất trong số các toán tử C.

Cú pháp tổng quát:

for(initialize1,initialize2;conditional test; re-evaluation1,re-evaluation1){
      // todo
      statements;
}

Ví dụ:

void extendloopexample(){
		int i, j , max;
		printf("Please enter the maximum value \n");
		printf("for which a table can be printed: ");
		scanf("%d", &max);
		for(i = 0 , j = max ; i <= max ; i++, j--){
			printf("\n%d + %d = %d",i, j, i + j);
		}
}
int main()
{
  extendloopexample();
  return 0;
}

Vòng lặp for lồng nhau (nested for loop)

Một vòng lặp For được gọi là lồng nhau khi nó xảy ra bên trong một vòng lặp khác.

Ví dụ:

void nestedloopdongian(){
	int i,j;
	for(i = 0; i <=3 ; i++){
		printf("\nVao vong lap so %d",i+1);
		for(j = 0 ; j <=2 ; j++){
			printf("\n+ Vao vong lap trong so %d",j+1);
		}
	}
}
int main()
{
  nestedloopdongian();
  return 0;
}
void nestedloopexample(){
	int i, j, k;
	printf("Enter no. of rows :");
	scanf("%d", &i);
//	printf("\n");
	for (j = 0; j < i ; j++)
	{
		printf("\n");
		for (k = 0; k <= j; k++) /*inner for loop*/
			printf("*");
	}
}

Một số đặc tính khác của vòng lặp for

vòng lặp có thể được sử dụng mà không cần một hoặc tất cả các định nghĩa của nó. Tuy nhiên, để đúng cú pháp, chúng ta vẫn cần viết đầy đủ dấu “;” phân tách các thành phần

Ví dụ:

void exampleloop(){
  int a;
  a = 0;
  for (; a !=100;){
     printf("\nNhap lieu");
     scanf("%d",&a);
  }
}
int main()
{
  exampleloop();
  return 0;
}

Vòng lặp while

Loại cấu trúc vòng lặp tiếp theo trong C là vòng lặp while.

Cú pháp tổng quát:

while(condition is true)
{
   //todo
   statements;
}

Trong đó, câu lệnh là một câu lệnh rỗng, một câu lệnh đơn hoặc một khối câu lệnh. Nếu một tập hợp các câu lệnh xuất hiện trong một vòng lặp while thì chúng phải được đặt bên trong dấu ngoặc nhọn {}. Các
điều kiện có thể là biểu thức bất kỳ. Vòng lặp tiếp tục lặp lại khi điều kiện trả về true. Vòng lặp thoát và luồng chương trình chuyển đến dòng sau mã vòng lặp, khi điều kiện trả về false.

Ví dụ:

void whileloopexample(){
	int count = 1;
	while( count <= 10)
	{
		printf("\n This is iteration %d\n",count);
		count++;
	}
	printf("\n The loop is completed. \n");
}
int main()
{
  whileloopexample();
  return 0;
}

Khác biệt cách sử dụng giữa vòng lặp for và vòng lặp while

Mặc dù, chúng ta có thể sử dụng tùy ý tùy theo ngữ cảnh, tuy nhiên chúng ta có thể xét tình huống có thể sử dụng vòng lặp for với điều kiện là biết trước số lần lặp trước khi vòng lặp bắt đầu thực hiện. Khi không biết trước số lần lặp sẽ được thực hiện, vòng lặp while có thể được ưu tiên sử dụng.

Vòng lặp do while

Vòng lặp do while đôi khi được gọi là vòng lặp do trong C. Giống như vòng lặp for và while, tuy nhiên có sự khác biệt nhỏ vòng lặp này kiểm tra điều kiện của nó ở cuối vòng lặp, nghĩa là sau khi vòng lặp đã được thực hiện. Điều này có nghĩa là vòng lặp do … while sẽ thực hiện ít nhất một lần, ngay cả khi điều kiện kiểm tra trả ra false.

Cú pháp tổng quát:

do{

   //todo
   statements;
} white (condition);

Vòng lặp do while lặp lại cho đến khi điều kiện trả ra false. Trong vòng lặp do while câu lệnh hoặc khối câu lệnh được thực hiện trước, sau đó điều kiện được kiểm tra. Nếu true, Luồng chương trình tiếp tục được chuyển sang câu lệnh do. Khi điều kiện trả ra false, luồng chương trình được chuyển sang câu lệnh sau vòng lặp.

Ví dụ:

void dowhileexample(){
	int num1, num2;
	num2 = 0;
	do
	{
	printf( "\nEnter a number : ");
	scanf("%d",&num1);
	printf( " No. is %d",num1);
	num2++;
	} while (num1 != 0);
	printf ("\nThe total numbers not 0 entered were %d",--num2);
	/*num2 is decremented before printing because count for last 
	integer (0) is not to be considered */	
}
void difference_whileanddowhile(){
	int i = 0;
	while(i != 0){
		printf("\n i khac 0 while");
	}
	do{
		printf("\ni khac 0 do while");
	}while(i != 0);
}
int main()
{
  dowhileexample();
  difference_whileanddowhile();
  return 0;
}

Bài tập

1. Viết chương trình in dãy số 100, 95 , 90, 85, ... 5,0.
2. Nhập vào hai số number1 và number2. Tìm tổng tất cả các số lẻ giữa hai số đã nhập.
3. Viết chương trình tạo dãy Fibonacci. (0,1,2,3.5,8.13,......)
4. Viết chương trình in bảng cửu chương bằng vòng lặp. 
5. Viết chươg trình yêu cầu người dùng nhập độ dài và  in hoa thị như định dạng
1
12
123
1234
12345
12345
1234
123
12
1
 
6. Yêu cầu người dùng nhập vào n là độ dài, y/c n là số lẻ, in tam giác cân dựa theo n.
Ví dụ n=5
  *
 ***
*****
 
7. Yêu cầu người dùng nhập vào độ dài cạnh n, in ra hình chữ nhật dưới hình
Ví dụ n = 5
 
*****
** **
* * *
** **
*****
 
8. Yêu cầu người dùng nhập vào độ dài cạnh n, in ra hình tam giác dưới hình
  1
 121
12321
 
9. Yêu cầu người dùng nhập vào độ dài cạnh n, in ra hình vuông dưới hình
 
1234
3455
2766
1987

Bài viết liên quan:

Kiểu dữ liệu Struct và một số thuật toán sắp xếp
Xử lý tệp tin (File Handling)
Hàm trong C (Functions)
Chuỗi trong C (String)
Con trỏ trong C (Pointers)
Mảng trong C – Mảng một chiều và mảng đa chiều
Các lệnh rẽ nhánh vô điều kiện trong C – return, goto, break, continue, hàm exit
Điều kiện trong C – các cấu trúc điều kiện if/else, switch case
Các toán tử và biểu thức trong C
Thao tác Input / Output trong C
Các kiểu dữ liệu cơ bản trong C
Biến và hằng số, định danh trong ngôn ngữ C

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

KHÁI NIỆM QUẢN LÝ DỰ ÁN CÔNG NGHỆ THÔNG TIN (IT PROJECT MANAGEMENT)

Cấu trúc lập trình và Mảng

Bắt đầu với C#

1. GIỚI THIỆU KHÁI NIỆM CHUẨN MỰC – ĐẠO ĐỨC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

2. ÁP DỤNG CÁC CHUẨN MỰC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×