Vòng lặp, một kĩ thuật cực kỳ quan trọng trong ngôn ngữ lập trình. Chắc bạn đã biết, C# rất tương đồng với một số ngôn ngữ phổ biến như C,C++,Java.....
Do đó cú pháp C# rất dễ làm quen nếu bạn đã biết các ngôn ngữ kể trên. Nếu là người mới, điều đó cũng chẳng quan trọng, bạn sẽ nắm rõ bất kỳ ngôn ngữ nào nếu chịu bỏ thời gian nghiên cứu nó.

Hôm nay, chúng ta tìm hiểu các kiểu vòng lặp trong C#. Tương tự, C# có các kiểu vòng lặp cơ bản sau:For, While, Do-While ngoài ra còn có Foreach, Goto ta sẽ tìm hiểu cụ thể trong phần này.

Ý tưởng của các loại vòng lặp phần lớn là như nhau, mục đích chính là thực thi việc gì đó lặp lại nhiều lần thỏa mãn điều kiện cho sẵn.
Ví dụ như bạn muốn in ra màn hình dãy số liên tục từ 1 đến 100. Bạn có thể gõ 100 dòng lệnh in ra màn hình từng số nhưng như vậy hơi kỳ cục vì quá mất thời gian. Ta có thể dùng vòng lặp với điều kiện thỏa mãn để lặp lại 100 lần lệnh in ra màn hình.




1. Vòng lặp For


using System;

namespace ConsoleApplication2
{
class Program
{

static void Main(string[] args)
{
const int n = 100;
for (var i = 0; i < n; i++)
{
Console.WriteLine("{0}",i);
}
Console.ReadLine();
}
}
}

Ở trên là ví dụ demo in ra màn hình dãy số  từ  1 đến 100.
  • Khởi tạo: i = 0
  • Điều kiện: i < n
  • Lặp lại: i++ tăng đều lên 1. Sửa lại i++ thành i=i+2 thì vòng lặp tăng mỗi lần 2 đơn vị
  • Tuyên bố lệnh: in ra màn hình i
=> Kết quả ta có dãy số: 0,1,2,3 ... 98,99. Vì ta cho i chạy bắt đầu từ 0 và điều kiện bé hơn n nên dãy in ra bắt đầu từ 0 kết thúc 99, mỗi lần nhảy 1 đơn vị. Thỏa mã điều kiện.

for (;;)
{
Console.WriteLine("Hello");
}

Nếu bạn để trống như vậy sẽ xảy ra một vòng lặp vô hạn, nếu không can thiệp.

Chú ý vòng lặp for lặp lại theo số lần cụ thể, nghĩa là số lần lặp là một số kiểu integer.
For được dùng phổ biến trong mảng và phần sau chúng ta sẽ tìm hiểu. Có nhiều cách vận dụng vòng lặp for như i++,i+=3,i--,i-=2,++i,--i .... và bạn phải thay đổi điều kiện thỏa mãn lại một chút.

2. Vòng lặp While

Xem ví dụ sau:

using System;

namespace ConsoleApplication2
{
class Program
{

static void Main(string[] args)
{
var n = 1;
while (n<=100)
{
Console.WriteLine("{0}",n);
n++;
}
Console.ReadLine();
}
}
}


Điều kiện ở đây là nếu n vẫn bé hơn hoặc bằng 100 thì in ra màng hình n, cứ mỗi lần như vậy tăng n lên 1. Vòng lặp này sẽ dừng đến khi n tăng lên 100. Vì khi n tăng 101 sẽ không thỏa mãn điều kiện nữa. Kết thúc vòng lặp tại đây


using System;

namespace ConsoleApplication2
{
class Program
{

static void Main(string[] args)
{
var n = 1;
while (true)
{
Console.WriteLine("{0}",n);
n++;
}
// Warning: Function Never Returns
}
}
}

Còn nếu gán điều kiện true thì sẽ xảy ra một vòng lặp vô hạn nếu không được can thiệp. True ở đây ngoài từ khóa "true" để tượng trưng thì ý ám chỉ rằng nếu bạn gán một điều kiện mà điều kiện đó sẽ luôn đúng thì quả thật rất tồi tệ, vòng lặp sẽ không có điểm dừng.

Lấy một ví dụ vòng lặp vô hạn như bên dưới:

/*Example: BravoHex*/
using System;
namespace ConsoleApplication2
{
class Program
{

static void Main(string[] args)
{
var n = 1;
while (n < n+1)
{
Console.WriteLine("{0}",n);
n++;
}
// Warning: Function Never Returns
}
}
}

3. Vòng Lặp Do-While


/*Example: BravoHex*/
using System;
namespace ConsoleApplication2
{
class Program
{

static void Main(string[] args)
{
var n = 1;
do
{
Console.WriteLine(n);
n++;
} while (n<=100);
Console.ReadLine();
}
}
}

Ví dụ trên vẫn in ra kết quả dãy số từ 1 đến 100. Nhưng hãy xem ví dụ bên dưới:

/*Example: BravoHex*/
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var n = 1;
do
{
Console.WriteLine(n);
n++;
} while (n<=0);
// Output: 1
Console.ReadLine();
}
}
}

Với n ở trên chắc chắn sẽ không đáp ứng được điều kiện trong While vậy nên chương trình in ra kết quả là 1.Điều đáng chú ý là n không đáp ứng đủ điều kiện nhưng chương trình vẫn thực thi lệnh trong Do.
Bạn có thể rút ra khái niệm: vòng lặp Do-While sẽ thực thi 1 lần các tuyên bố lệnh trong DO sau đó mới kiểm tra điều kiện trong While, nếu thỏa mãn tiếp tục lặp lại quy trình nếu không dừng. Như vậy dù đúng dù sai chương trình vẫn thực thi tối thiểu 1 lần mệnh lệnh khai báo trong DO.
(xem lại sơ đồ bên trên)
Quay lại kiểu vòng lặp While, nó khác với Do-While là nếu không đáp ứng đúng điều kiện thì các tuyên bố lệnh không được thực thi.
Important
Với các kiểu vòng lặp kể trên, có 4 điều bạn cần quan tâm: Khởi tạo, tăng , giảm ,chấm dứt. Đó là mấu chốt của vòng lặp và bạn cần thông thao nó qua những bài tập thực hành

4. Vòng Lặp Foreach
Nó khác hoàn toàn  những kiểu đã nêu trên, không có khởi tạo, tăng hay giảm, chấm dứt. Vòng lặp foreach chạy từ đầu đến cuối và lấy ra các phần tử trong mảng, hoặc đối tượng của bộ sưu tập được thực thi các interface IEnumerable, IEnumerable<T>. Foreach duyệt qua các tập hợp để lấy ra giá trị mà bạn muốn tuy nhiên chúng ta không thể thay đổi (thêm, sửa, xóa) giá trị đó.

Hãy xem ví dụ dưới:

/*Example: BravoHex*/
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var array = new[] {1,2,3,4,5,6,7,8,9,10};

foreach (int i in array)
{
Console.WriteLine("{0} ",i);
}
//Output: 1,2,3,4,5,6,7,8,9,10
Console.ReadLine();
}
}
}

i là phần tử trong mảng array và mỗi lần duyệt bạn có thể lấy ra một phân tử i cho đến khi không còn phần tử nào trong mảng.


var str = new[] {"Hello","world","!"};

foreach (var i in str)
{
Console.WriteLine("{0} ",i);
}
//Output: Hello world !

5. Một Số Ví Dụ Về Vòng Lặp

a.) In ra bảng cửu chương từ 2 đến 9

/*Example: BravoHex*/
using System;
namespace ConsoleApplication2
{
class Program
{
private static void Main()
{
var newline = Environment.NewLine;

var colorNames = new[] {"Red", "White", "Blue", "Green", "Yellow", "DarkRed", "Gray", "Cyan"};
for (var i = 0; i <=7; i++)
{
var color = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), colorNames[i]);

Console.ForegroundColor = color;

for (var j = 1; j <= 9; j++)
{
var result = (i+2) * j;
Console.WriteLine("{0} x {1} = {2}", i+2, j, result);
}
Console.WriteLine(newline);
}

Console.ReadLine();
}
}
}



(Đang biên tập)

Update: 11/03/2014

thumbnail C# Programming: Loop Constructs

data:label.name author

premiumpng.com

Design Publisher

Download 0
No comments
Template in .PSD format

MR Laboratory License

Free for personal purpose use . More info


Buy Now This Template

No comments:

Post a Comment

Commets Download Photoshop Actions, Lightroom Presets, PSD Template, Mockups, Stocks, Vectors, Fonts. Download free

Newer Post Older Post Home

Copyright © 2021 MR Laboratory All rights reserved.

Setting