Bài 10: Vòng lặp [Thực Hành]
Mục tiêu:
Kết thúc bài học này, bạn có thể:
Ø Sử dụng cấu trúc vòng lặp
Ø Viết một vài chương trình:
o
Sử
dụng vòng lặp ‘for’
o
Sử
dụng vòng lặp ‘while’
o
Sử
dụng vòng lặp ‘do...while’.
Các bước trong bài học này được trình bày chi tiết, rõ ràng và cẩn
thận. Điều này giúp ta hiểu rõ về công cụ lập trình. Thực hiện theo các bước
sau thật cẩn thận.
Phần I - Trong thời gian 1 giờ 30 phút đầu:
10.1 Sử dụng vòng lặp ‘for’:
Trong phần này chúng ta sẽ viết một chương trình sử dụng vòng lặp
‘for’. Chương trình hiển thị các số chẳn từ 1
đến 30.
Trong chương trình, một biến ‘số nguyên’, num, được
khai báo. Vòng lặp ‘for’ được sử dụng để hiển thị các số chẳn đến 30. Đối số
đầu tiên của vòng lặp ‘for’, khởi tạo biến num là 2. Đối số
thứ hai của vòng lặp ‘for’, kiểm tra giá trị của biến có nhỏ hơn hoặc bằng 30
không. Nếu điều kiện này thỏa, lệnh trong vòng lặp được thực hiện. Lệnh
‘printf()’ được sử dụng để hiển thị giá trị của biến num.
Trong đối số thứ ba, giá trị của biến num được
tăng lên 2. Trong C, num +=2 giống như num = num + 2. Lệnh ‘printf’ được thực
thi khi đối số thứ hai vẫn thỏa. Một khi giá trị của biến trở nên lớn hơn 30,
điều kiện không thỏa nữa và vì vậy vòng lặp không được thực thi. Dấu ngoặc nhọn
{} không cần thiết khi chỉ có một câu lệnh hiện diện trong vòng lặp, nhưng việc
sử dụng cặp dấu ngoặc {} là một thói quen lập trình tốt.
1.
Tạo một tập tin mới.
2.
Nhập vào đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{
int num;
printf("The even Numbers from 1 to 30
are\n");
for (num = 2; num <= 30; num +=2)
printf("%d\n", num);
getch();
}
3.
Biên dịch và thực thi chương trình.
|
KẾT QUẢ:
10.2 Sử dụng vòng lặp ‘while’:
Trong phần này chúng ta sẽ viết một chương trình sử dụng vòng lặp
‘while’. Chương trình hiển thị các số từ 10 đến 0
theo thứ tự đảo ngược.
Trong chương trình có một biến số nguyên num. Biến
được khởi tạo.
Xét dòng mã lệnh sau:
while (num >= 0)
{ printf("\n%d",
num);
num--;
}
Lệnh ‘while’ kiểm tra, giá trị của biến num có
lớn hơn 0 hay không. Nếu điều kiện thỏa lệnh ‘printf()’ được thực thi và giá
trị của biến num giảm 1. Trong C, num--làm việc giống nhu num = num –1. Vòng
lặp ‘while’ vẫn tiếp tục khi giá trị của biến lớn hơn 1 hoặc bằng 0.
1.
Tạo một tập tin mới.
2.
Nhập vào đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{
int num;
num = 10;
printf("Countdown");
while (num >= 0)
{
printf("\n%d", num);
num--;
}
getch();
}
3.
Biên dịch và thực thi chương trình.
|
KẾT QUẢ:
10.3 Sử dụng vòng lặp ‘do...while’:
Trong phần này chúng ta sẽ viết một chương trình sử dụng vòng lặp ‘do...while’. Vòng lặp ‘do...while’ khác với vòng lặp ‘while’ là nó thực thi lệnh trước khi đánh giá biểu thức. Một
điều quan trọng cần phải nhớ là, không giống như vòng lặp ‘while’, phần thân của
vòng lặp ‘do’
sẽ được thực hiện ít nhất một lần. Bởi vì vòng lặp ‘while’ đánh giá biểu
thức trước khi thực thi lệnh, nếu điều kiện là sai (0) ngay lúc bắt đầu, phần
lệnh sẽ không bao giờ được thực thi.
Chương trình sẽ nhận vào các số nguyên và hiển thị chúng cho đến
khi số 0 được nhập vào. Sau đó nó sẽ thoát khỏi vòng lặp ‘do...while’ và in ra
các số nguyên đã được nhập.
Chương trình khai báo hai biến cnt và cnt1.
Bên trong vòng lặp ‘do –while’ chúng ta sẽ nhập số bằng cách sử dụng mã lệnh
sau:
printf(“\nEnter a Number: “);
scanf(“%d”,&cnt);
Lệnh bên dưới sẽ hiển thị số đã nhập.
printf(“No. is %d”, cnt);
cnt1++ sẽ tăng giá trị biến cnt1 lên 1. Giả sử
nếu chúng ta nhập vào số 0, trước hết nó sẽ in giá trị và sau đó kiểm tra điều
kiện. Trong trường hợp này điều kiện là sai. Nó sẽ thoát khỏi vòng lặp và in
giá trị của biến cnt1. Biến cnt1 được giảm một đơn
vị trước khi in ra bởi vì số nguyên cuối cùng (0) không được đếm.
1.
Tạo một tập tin mới.
2.
Nhập vào đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{
int cnt = 0, num;
do
{
printf("\n Enter a Number: ");
scanf("%d", &num);
printf("No. is %d", num);
cnt++;
} while (num != 0);
printf("\n The total numbers entered
were %d", --cnt);
getch();
}
3.
Biên dịch và thực thi chương trình.
|
KẾT QUẢ:
10.4 Sử dụng lệnh break:
Lệnh break giúp thoát ra khỏi vòng lặp for, while, do-while hay
lệnh switch ngay lập tức.
Chương trình sau minh họa các dùng của lệnh break.
Quan sát đoạn mã lệnh sau:
for (cnt = 1; cnt <= 10; cnt++)
{ if (cnt == 5)
break;
printf(“%d\n”, cnt);
}
Đoạn mã lệnh trên sử dụng một vòng lặp ‘for’ để in ra các giá trị
từ 1 đến 10. Giá trị của biến cnt được khởi tạo là 1, và sau
đó nó sẽ kiểm tra điều kiện. Nếu điều kiện là đúng, nó sẽ thực thi các câu lệnh
bên trong vòng lặp.
Trong trường hợp này, chương trình chỉ in ra 1, 2, 3, 4. Khi giá
trị của biến cnt là 5, điều kiện if trở nên
đúng, và điều khiển sẽ thoát khỏi vòng lặp.
1.
Tạo một tập tin mới.
2.
Nhập vào đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{
int cnt;
for (cnt = 1; cnt <= 10; cnt ++)
{
if (cnt == 5)
break;
printf("%d\t", cnt);
}
getch();
}
3.
Biên dịch và thực thi chương trình.
|
KẾT QUẢ:
10.5 Sử dụng lệnh continue:
Lệnh continue khi được dùng trong một vòng lặp while, for, hoặc do-while sẽ bỏ
qua tất cả các câu lệnh phía sau và lần lặp kế tiếp được thực thi.
Chương trình sau minh họa cách sử dụng của lệnh continue.
Xem đoạn mã lệnh sau:
for ( cnt = 1; cnt <=10; cnt++)
{ if (cnt ==5)
continue;
printf("%d\t", cnt);
}
Đoạn mã lệnh sử dụng một vòng lặp for để in ra các giá trị từ 1
đến 10. Giá trị của biến cnt được khởi tạo là 1, sau đó điều
kiện sẽ được kiểm tra. Nếu điều kiện là đúng,các lệnh trong vòng lặp sẽ được
thực thi.
Trong trường hợp này, chương trình chỉ in ra các số 1, 2, 3, 4, 6,
7, 8, 9 và 10. Khi giá trị của biến cnt là 5, điều kiện if trở
nên đúng và điều khiển trở về đầu vòng lặp for mà không in ra giá trị 5.
1.
Tạo một tập tin mới.
2.
Nhập vào đoạn mã lệnh sau:
#include <stdio.h>
#include <conio.h>
main()
{
int cnt;
for (cnt = 1; cnt <= 10; cnt++)
{
if (cnt == 5)
continue;
printf("%d\t", cnt);
}
getch();
}
3.
Biên dịch và thực thi chương trình.
|
KẾT QUẢ:
Phần II: Trong thời gian 30 phút kế tiếp:
1. Tìm giai thừa của một số.
Gợi ý: Xem công thức tính giai thừa của một số :
· n!
= n * (n-1) * (n-2) * ... * 1
· 4!
= 4 * 3 * 2 * 1
· 1!
= 1
· 0!
= 1
Gợi ý:
· Nhập
vào một số.
· Khởi
đầu, thiết đặt giai thừa của một số là 1.
· Trong
khi số còn lớn hơn 1.
· Tính
giai thừa của một số bằng giai thừa nhân với số đó.
· Giảm
số xuống một đơn vị.
· In
ra giai thừa.
Bài tập tự làm
1. Khai báo một biến lưu tuổi
của một người. In ra tên của người đó với số lần in bằng số tuổi.
2. Viết chương trình sinh dãy
số theo dạng sau:
1
12
123
1234
12345
123456
1234567
12345678
123456789
3. Viết chương trình in ra bảng
cửu chương của một số được nhập vào.
0 nhận xét:
Đăng nhận xét