
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
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.
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
C# Programming: Loop Constructs
Related Tags :WritingObsolete
No comments:
Post a Comment
Commets Download Photoshop Actions, Lightroom Presets, PSD Template, Mockups, Stocks, Vectors, Fonts. Download free