Hướng dẫn thực hành Nhập môn lập trình - Bài: Câu lệnh lặp for, while, do…while - Bùi Thị Danh

ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
HƯỚNG DẪN THỰC HÀNH  
CÂU LỆNH LẶP FOR, WHILE, DO…WHILE  
1 Lệnh FOR  
1.1 Cú pháp  
for(<Khởi tạo>; <Biểu thức điều kiện>; <Bước nhảy>)  
<Lệnh>;  
Quy trình thực hiện vòng lặp for:  
Bước 1: Khi bắt đầu vòng lặp for, phần <Khởi tạo> được thực hiện, và thực hiện  
đúng 1 lần. Sau đó chuyển sang bước 2  
Bước 2: Kiểm tra <Biểu thức điều kiện>, nếu đúng thì thực hiện <Lệnh>, rồi sang  
bước 3; nếu sai kết thúc vòng lặp.  
Bước 3: Thực hiện <Bước nhảy>, rồi trở lại bước 2  
Ví dụ 1: Hiển thị lên màn hình câu “xin chao” 10 lần  
#include "stdio.h"  
void main()  
{
int i;  
for(i = 0; i < 10; i++)  
{
printf("xin chao\n");  
}
}
Ví dụ 2: Xuất các số chẵn trong khoảng từ 1 tới 10  
#include "stdio.h"  
void main()  
{
int i;  
for(i = 2; i <= 10; i+=2)  
{
printf("%d\n", i);  
}
}
1.2 Lệnh continue  
Trong <Lệnh>, nếu gặp lệnh continue thì quy trình thực hiện lặp tức chuyển sang bước 2,  
các câu lệnh bên dưới tại bước lặp hiện tại sẽ không được thực thi  
Ví dụ: Xuất các số lẻ trong khoảng từ 1 tới 10  
GVHD: Bùi Thị Danh  
Page 1  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
#include "stdio.h"  
void main()  
{
int i;  
for(i=1; i<=10; i++)  
{
if (i%2 == 0)  
continue;  
printf("%d\n", i);  
}
}
1.3 Lưu ý  
Câu lệnh for là một câu lệnh đơn và có thể lồng nhau.  
Ví dụ:  
void main()  
{
int n=3,m=3,i,j;  
if (n < 10 && m < 20)  
{
for (int i = 0; i < n; i++)  
{
for (int j = 0; j < m; j++)  
{
printf("%d", i + j);  
}
printf("\n");  
}
}
}
Không được thêm dấu ; ngay sau lệnh for, vì nó tương đương câu lệnh rỗng  
Ví dụ:  
void main()  
{
int i;  
for (i = 0; i < 10; i++);  
{
printf("%d\n", i);  
}
// Tương đương với  
for (i = 0; i < 10; i++)  
{
}
printf("%d\n", i);  
GVHD: Bùi Thị Danh  
Page 2  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
}
Thông thường, <Bước nhảy> phải làm ảnh hưởng đến <Biểu thức điều kiện>, làm cho  
<Biểu thức điều kiện> có thể đạt được giá trị sai, nếu không, vòng lặp sẽ lặp vô tận  
(không dừng lại được)  
Ví dụ: (lặp vô tận)  
void main()  
{
int i;  
for(i=0; i<10; i--)  
printf("Cau lenh lap\n");  
}
2 Lệnh while  
2.1 Cú pháp  
while(<Biểu thức điều kiện>)  
<Lệnh>  
Quy trình thực hiện vòng lặp while:  
Bước 1: Kiểm tra <Điều kiện lặp>, nếu đúng thì sang bước 2, nếu sai thì kết thúc  
vòng lặp  
Bước 2: Thực hiện <Câu lệnh>; sau đó quay lại bước 1  
Ví dụ: Hiển thị lên màn hình câu “xin chao” 10 lần  
#include "stdio.h"  
void main()  
{
int i=1;  
while(i<=10)  
{
printf("xin chao\n");  
i++;  
}
}
2.2 Lưu ý  
Câu lệnh while là một câu lệnh đơn và có thể lồng nhau. Ví dụ:  
void main()  
{
int m=3;  
int n=3;  
if (n < 10 && m < 20)  
{
GVHD: Bùi Thị Danh  
Page 3  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
while (n >= 1)  
{
while (m >= 1)  
{
printf("%d", m);  
m--;  
}
n--;  
}
}
}
Trong <Lệnh>, phải có câu lệnh ảnh hưởng đến giá trị của <Biểu thức điều kiện>,  
làm cho <Biểu thức điều kiện> có thể đạt đến giá trị sai. Nếu không đạt đến điều  
kiện dừng (<Biểu thức điều kiện> sai) thì vòng lặp sẽ lặp vô tận. Ví dụ:  
#include "stdio.h"  
void main()  
{
int i=1;  
while(i<=10)  
{
printf("Cau lenh lap\n");  
}
}
Không được thêm ; ngay sau lệnh lệnh while. Ví dụ:  
#include "stdio.h"  
void main()  
{
int n = 0;  
while (n < 10);  
{
printf("%d\n", n);  
n++;  
}
// Tương đương  
while (n < 10)  
{
}
printf("%d\n", n);  
n++;  
}
GVHD: Bùi Thị Danh  
Page 4  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
3 Lệnh do … while  
3.1 Cú pháp  
Do  
<Lệnh>  
while(<Biểu thức điều kiện>);  
Quy trình thực hiện vòng lặp lặp do …while:  
Bước 1: Thực hiện <Lệnh> sau đó sang bước 2  
Bước 2: Kiểm tra <Biểu thức điều kiện>, nếu đúng thì trở lại bước 1, nếu sai thì  
kết thúc vòng lặp  
Ví dụ: Hiển thị lên màn hình câu “Cau lenh lap” 10 lần  
#include "stdio.h"  
void main()  
{
int i=1;  
do  
{
printf("Cau lenh lap\n");  
i++;  
} while(i<=10);  
}
3.2 3.3.2 Lưu ý  
Câu lệnh do… while là một câu lệnh đơn và có thể lồng nhau. Ví dụ:  
#include "stdio.h"  
void main()  
{
int a = 1, b;  
do  
{
b = 1;  
do  
{
printf(" %d ", a + b);  
b = b + 2;  
} while (b < 10);  
a++;  
printf("\n");  
} while (a < 10);  
}
Câu lệnh do… while sẽ được thực hiện ít nhất 1 lần do điều kiện lặp được kiểm tra ở  
cuối. Ví dụ:  
GVHD: Bùi Thị Danh  
Page 5  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
#include "stdio.h"  
void main()  
{
int n;  
do  
{
printf("Nhap n: ");  
scanf("%d", &n);  
} while (n < 1 || n > 100);  
}
Sau dấu ‘)’ ở dòng while có dấu ‘;’, nếu không có sẽ bị sai cú pháp  
Trong <Lệnh>, phải có câu lệnh ảnh hưởng đến giá trị của <Biểu thức điều kiện>,  
làm cho <Biểu thức điều kiện> có thể đạt đến giá trị sai. Nếu không đạt đến điều  
kiện dừng (<Biểu thức điều kiện> sai) thì vòng lặp sẽ lặp vô tận  
4 Lệnh break  
Trong các lệnh lặp, nếu gặp lệnh break, vòng lặp lập tức kết thúc  
Ví dụ: Xuất số chẵn nhỏ nhất trong đoạn [a, b].  
// Viết bằng lệnh for  
#include "stdio.h"  
void main()  
{
int a, b, i;  
scanf("%d%d", &a, &b);  
for(i=a; i<=b; i++)  
{
if(i%2 == 0)  
{
printf("%d", i);  
break;  
}
}
}
Ví dụ: Xuất số chẵn nhỏ nhất trong đoạn [a, b].  
// Viết bằng lệnh while  
#include "stdio.h"  
void main()  
GVHD: Bùi Thị Danh  
Page 6  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
{
int a, b, i;  
scanf("%d%d", &a, &b);  
i = a;  
while(i<=b)  
{
if(i%2 == 0)  
{
printf("%d", i);  
break;  
}
i++;  
}
}
5 Bài tập  
1. Tìm số nguyên duơng n nhỏ nhất sao cho 1 + 2 + 3 + …… + n > 1000.  
2. Nhập số nguyên dương  , tính:  
 
    
    
 
√
√
√
√
        
        
                √  
3. Nhập số nguyên dương  , tính:  
    
 
    
 
√
√
√
√
( )  
                   √   
(
)
    
     
          
4. Nhập số nguyên dương  , tính:  
√
√
√
(
)
                                √  
5. Nhập số nguyên dương  , tính:  
    
 
 
 
 
 
 
       
         
   
6. Nhập số thực  , tính:  
 
 
   
 
 
 
 
        
 
    (  )  
(
)
     
      
7. Nhập số thực           , tính:  
GVHD: Bùi Thị Danh  
Page 7  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
 
 
 
 
                  ∑   
      
    
8. Nhập số thực  , tính:  
( )  
 
 
 
 
 
(  )  
(
 
 
 
   
                
    
           ∑  
 
)
 
   
    
     
    
9. Nhập số thực  , tính:  
 
 
 
 
 
 
 
 
(  )  
 
 
 
 
     
( )  
                                           ∑  
 
 
 
 
 
 
 
       
    
10. Nhập số thực           , tính:  
 
    
 
 
 
(  )  
 
 
 
     
( )  
                                  ∑  
 
 
 
 
       
    
11. Nhập số thực  , tính:  
 
 
 
 
 
 
 
 
 
 
                    
         ∑  
 
 
 
   
   
    
12. Nhập số thực  , tính:  
 
    
 
 
 
(  )  
 
 
 
 
(
)
                                ∑  
 
 
 
 
 
    
13. Nhập số thực  , tính:  
      
 
 
 
 
 
 
 
 
     
    (  
)                         ∑  
 
      
 
 
 
       
    
14. Nhập số thực  , tính:  
 
 
 
     
 
 
 
 
 
( )  
            
 
 
      (  )  
(
)
         
         
15. Nhập sô nguyên dương n.  
a. Kiem tra có phải là số nguyên tố.  
b. In ra tất cả các số nguyên tố nhỏ hơn hoặc bằng n.  
c. Tìm các thừa số nguyên tố của n.  
d. In các chữ số trong n từ phải qua qua trái.  
e. In các chữ số trong n từ trái qua phải.  
f. Tính tổng các chữ số cho đến khi tổng này nhỏ hơn 10 (Ví dụ : n = 1589  
1+5+8+9=23 1+5+ 8= 14 1 + 5 = 6)  
g. Chứa toàn số lẻ hay toàn số chẵn?  
h. Số có đối xứng hay không  
i. Các chữ số xếp tăng dần hay giảm dần (từ trái qua phải) không?  
j. Chữ số lớn nhất và nhỏ nhất xuất hiện trong n.  
 
 
k. In ra tất cả các cặp số nguyên dương a và b, sao cho           
GVHD: Bùi Thị Danh  
Page 8  
ĐH KHTN TP. HCM, Khoa CNTT/Nhập Môn Lập Trình  
16. Nhập 2 số nguyên duơng a, b khác không.  
a. Tìm USCLN(a, b)  
b. Tìm hai số nguyên x và y sao cho: USCLN(a, b) = a * x + b * y.  
c. Tìm BSCNN(a, b)  
17. Nhập 3 sô nguyên duơng a, b và c. Tìm USCLN(a, b, c).  
18. Xác định phần tử thứ k của dãy Fibonacci:                       
    
 
 
 
 
    
           .  
19. In ra bình phuơng của n số nguyên duơng đầu tiên, nhưng chỉ dùng phép ‘+’  
và/hoặc phép ‘–’.  
20. Nhập hai số nguyên               . Gọi q là kết quả của phép chia nguyên a cho  
d và r là số dư. Hãy xác định giá trị của q và r, nhưng không sử dụng phép toán ‘/’  
và ‘%’.  
21. Cho hai số nguyên duơng a và b.  
a. Tính a * b (không dùng phép *)  
b. Tính a % b (không dùng phép % và /)  
22. Tính a + b. Yêu câu: Chỉ sử dụng phép gán có dạng:  
<biến> = <số>;  
<biến> = <biến> + 1;  
<biến> = <biến>;  
23. 23.Nhập vào dãy số thực dương. Giả sử rằng quá trình nhập số sẽ dừng khi nhập  
số 0.  
a. Tìm và in ra số lớn nhất, số nhỏ nhất trong số các số thực đã nhập.  
b. Tính tổng các số đã nhập và in ra.  
24. Nhập vào một sô nguyên dương n, tính giá trị của vế phải và vế trái của mỗi công  
thức sau đây, in kết quả ra màn hình. Kiểm tra và in ra kết quả cho biết hai vế có  
bằng nhau không  
 
 
 
 
(
)
a.                             (      )   
(
)
(
)
b.                                                             
(
)(  
)(  
)
              
 
(
)
c.                                                     
 
 
 
 
 
d.  
 
 
      
      
) (  
            
(
)
   
   
   
GVHD: Bùi Thị Danh  
Page 9  
pdf 9 trang myanh 23380 Free
Bạn đang xem tài liệu "Hướng dẫn thực hành Nhập môn lập trình - Bài: Câu lệnh lặp for, while, do…while - Bùi Thị Danh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfhuong_dan_thuc_hanh_nhap_mon_lap_trinh_bai_cau_lenh_lap_for.pdf