05/09/14
CẤU TRÚC LẶP
05/09/14
Cấu trúc lặp
Nhất quán : Đúng thì lặp, Sai thì thoát
Dạng for
for (<bthức khởi động>;<bthức điểu kiện >;<bthức
lặp> ) <lệnh>;
Mô tả
B1 : Thi hành biểu thức khởi động
B2 : Nếu biểu thức điều kiện Sai thì sang B6
B3 : Thi hành lệnh
B4 : Thi hành biểu thức lặp
B5 : Quay về B2
B6 : Thoát vòng lặp
05/09/14
Cấu trúc lặp
Thể hiện sơ đồ :
2
1
for (<btkđ>;<btđk >;<btlặp> )
<lệnh>;
3 (Đ)
4
5
6 (S)
05/09/14
Cấu trúc lặp
Lưu ý:
for : chữ thường
Các thành phần cách nhau bằng ;
Có thể bỏ bớt bất kỳ thành phần
nào
Ví dụ : Tính tổng N số nguyên
đầu tiên
Chương trình ViDu1_11.cs
05/09/14
Cấu trúc lặp
int S= 0;
for (int i=1; i<= N; i ++)
S = S+ i ;
+Không có biểu thức khởi động
int S= 0 , i=1 ;
for ( ; i<= N; i ++)
S = S+ i ;
05/09/14
Cấu trúc lặp
+Không có biểu thức khởi động,bt lặp
int S= 0, i = 1;
for ( ; i<= N; )
{ S = S+ i ; i = i + 1 ; }
int S= 0, i = 1;
for ( ; i<= N; )
S = S + i++ ;
05/09/14
Cấu trúc lặp
+Không có biểu thức nào trong vòng for
int S= 0, i = 1;
for ( ; ; )
{
if (i>N) break ;
S = S+ i ;
i + + ;
}
Nên viết đầy đủ, đừng bỏ phần nào !!!
05/09/14
Cấu trúc lặp
Vòng lặp for giảm dần
So sánh với Pascal
Các biến,biểu thức không nhất thiết phải là kiểu liệt kê
Bước tăng giảm không nhất thiết là 1
05/09/14
Cấu trúc lặp
Cấu trúc do while
do
{
lệnh;
}
while (điều kiện);
Lưu ý :
Từ khóa do và while là chữ thường
Dùng break và continue
05/09/14
Cấu trúc lặp
Cấu trúc do while
do
{
lệnh;
}
while (điều kiện);
Sai
Đúng
Hay quên ( và ) !!!!!
05/09/14
Cấu trúc lặp
float R=0;
do
{
Console.Write(“Nhap ban kinh : “);
string s=Console.ReadLine();
R=Single.Parse(s);
if (R<=0) Console.WriteLine(“SAI!”);
}
while (R<=0)
05/09/14
Cấu trúc lặp
float R=0;
do
{
Console.Write(“Nhap ban kinh : “);
string s=Console.ReadLine();
R=Single.Parse(s);
if (R<=0) Console.WriteLine(“SAI!”);
else break;
}
while (true)
05/09/14
Cấu trúc lặp
Học viên đã sử dụng Pascal thường lầm lẫn với
Repeat Until (điều kiện-Đ)
Ví dụ
Nhập 1 số N thỏa điều kiện N lớn hơn 0 và nhỏ hơn hay
bằng 10
Repeat
………
Until (N>0)and(N<=10)
Thủ thuật : lấy phủ định mệnh đề
Trong ví dụ trên : p là N>0 và q là N<=10
! (p /\ q ) ==> (!p) V (!q) ==> (N<=0) V (N>10)
do { … } while ( (N<=10) || (N>10) );
05/09/14
Cấu trúc lặp
Hay đơn giản hơn !!!
do
{
………
if (điều kiện tương tự trong Pascal) break;
}
while (true);
do
{
……….
If (N>0&&N<=10) break;
}
while (true);
Không nên viết ở dạng này !!!!!
05/09/14
Cấu trúc lặp
Cấu trúc while
while (điều kiện)
{
lệnh;
}
Lưu ý :
Từ khóa while là chữ thường
Dùng break và continue
Cặp dấu ( và )
05/09/14
Cấu trúc lặp
Cấu trúc lặp while
while (điều kiện)
{
lệnh;
}
Sai
Đúng
Thường hay quên cặp dấu ( và ) !!!!!!
05/09/14
Cấu trúc lặp
Tương tự while do trong Pascal → dễ
hiểu và dễ sử dụng
Ví dụ
while ( i<=N && num[i]!=X ) i++;
int S=0, i=1;
while (i<=N)
{ S = S + i; // S+=i;
i=i+1; // i++;
}