CHƯƠNG 3: CÁC CÂU LỆNH LẶP
Nội dung
Câu lệnh
Câu lệnh
Câu lệnh
Câu lệnh
Câu lệnh
for
do while
while
break
continue
•
•
•
•
•
•
•
•
Câu lệnh for
for(<bt1>; <bt2>; <bt3>)
<lệnh>
Khi gặp câu lệnh máy sẽ
Bước 1: Tính giá trị của biểu thức <bt1>
Bước 2: Tính giá trị của biểu thức <bt2>.
Bước 3: Nếu giá trị của <bt2> là sai thì máy sẽ ra khỏi câu lệnh for,
ngược lại máy sẽ thực hiện <lệnh>
Bước 4: Tính giá trị biểu thức <bt3> và quay về Bước 2
Chú ý:
Khi <bt2> vắng mặt thì nó được coi là đúng
<bt1>, <bt2> có thể bao gồm nhiều biểu thức cách nhau bởi dấu phẩy
<bt2> cũng có thể bao gồm nhiều biểu thức tuy nhiên tính đúng sai của
nó được xem là tính đúng sai của biểu thức cuối cùng.
•
•
•
•
•
•
•
•
•
•
•
•
Ví dụ 1: Nhập n nguyên dương, tính và in ra tổng s = 1 + 2 + … + n
•
•
Ví dụ 2: đoạn mã lặp trong phần else trên có thể viết gọn như sau
for(i = 1, s = 0; s += i, i < n ; i++);
<nhap n>
if(n <= 0)
<in thông báo không hợp lệ>
else
{
s = 0;
for(i = 1; i <= n; i++)
s += i;
<in s>
}
•
•
•
•
•
•
•
•
•
•
•
•
•
Câu lệnh while
while(<bt>)
<lệnh>;
Khi gặp câu lệnh này máy sẽ:
Bước 1: Tính giá trị của biểu thức <bt>
Bước 2: Nếu giá trị của <bt> là sai thì ra khỏi câu lệnh while, nguợc lại thì
máy sẽ thưc hiện <lệnh> và quay trỡ lại bước1.
Ví dụ 3: Làm lại ví dụ 1
s = 0; i =1;
while(i <= n)
{
s += i;
i++;
}
<in s>
•
•
•
•
•
•
•
•
3.3 Câu lệnh do while
do
{
<lệnh>
}while (<bt>);
khi gặp câu lệnh này máy sẽ:
Bước 1: Thực hiện <lệnh>
Bước 2: Tính giá trị của biểu thức <bt>, nếu giá trị <bt> sai thì ra khỏi câu
lệnh do while, nguợc lại thì máy quay trở lại bước 1.
•
Chú ý:
Trong câu lệnh while thì <bt> được kiểm tra trước, nếu <bt> đúng thì
<lệnh> mới được thực hiện, còn trong câu lệnh do while thì <lệnh>
được thưc hiện trước khi kiểm tra <bt> do đó <lệnh> bao giờ cũng
được thực hiện ít nhất một lần.
Biểu thức <bt> cũng có thể bao gồm nhiều biểu thức tuy nhiên tính
đúng sai của nó được xem là tính đúng sai của biểu thức cuối cùng.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Ví dụ 4: Làm lại ví dụ 1 nhưng cho phép người sử dụng chạy chương trình
nhiều lần, mỗi lần kết thúc tính tóan thì nhắc người sử dụng “tiếp tục chạy”
hay “ngưng chương trình”
do
{
<nhap n>
if(n <= 0)
<in thông báo không hợp lệ>
else
{
//các câu lệnh
}
printf(“Tiep tuc hay ngung ? (Y/N)”);
fflush(stdin);
scanf(“%c”, &ch);
} while(ch == ‘Y’ || ch == ‘y’);
•
•
Câu lệnh break
break;
Khi gặp câu lệnh này trong các vòng lặp, máy sẽ ra khỏi vòng lăp và
chuyển tới câu lệnh sau các câu lệnh trên. Khi có nhiều chu trình lồng nhau
thì câu lệnh break sẽ nhảy ra khỏi chu trình sâu nhất.
•
•
•
•
•
•
•
•
•
Ví dụ 5: Làm lại ví dụ 1
s = 0; i = 1;
while(1) //biểu thức trong ngoặc luôn luôn đúng
{
s += 1;
i++;
if(i > n) break;
}
<in s>
•
•
•
•
•
•
•
•
•
•
•
Câu lệnh continue
continue;
Khi gặp câu lệnh này trong các vòng lặp, máy sẽ bỏ qua phần còn lại trong
vòng lặp và tiếp tục thực hiện vòng lặp tiếp theo. Đối với câu lệnh for thi
máy sẽ tính lại giá trị của biểu thức <bt3> và quay lại bước 2, còn đối với
câu lệnh while và do while thi máy sẽ tính lại giá trị của <bt> và quay lại
bước 1.
Ví dụ 6:
int n;
for(; ;)
{
<nhập n>
if(n % 2 == 0) continue;
else if(n % 3 == 0) break;
printf(“%d khong chia het cho 2 va 3\n”, n);
}
printf(“Da tim đuoc 1 so chia het cho 3 do la %d\n”, n);