Đăng Nhập
Latest topics
Thống Kê
Hiện có 1 người đang truy cập Diễn Đàn, gồm: 0 Thành viên, 0 Thành viên ẩn danh và 1 Khách viếng thăm Không
Số người truy cập cùng lúc nhiều nhất là 48 người, vào ngày 2/8/2017, 00:32
Statistics
Diễn Đàn hiện có 74 thành viênChúng ta cùng chào mừng thành viên mới đăng ký: AlinaL92956302
Tổng số bài viết đã gửi vào diễn đàn là 107 in 53 subjects
Bài 6: Vòng lặp không biết trước số lần lặp(While và Repeat)
Trang 1 trong tổng số 1 trang
Bài 6: Vòng lặp không biết trước số lần lặp(While và Repeat)
A. Lý thuyết
1. Lệnh While
- Cú pháp: While (Biểu thức so sánh) do
Câu lệnh
- Ý nghĩa: Trước tiên máy tính kiểm tra biểu thức so sánh, nếu đúng thì thực hiện câu lệnh, tiếp tục quay lại kiểm tra biểu thức so sánh và nếu đúng lại thực hiện câu lệnh, ... cứ thực hiện hoài cho đến khi biểu thức so sánh sai thì ngưng vòng lặp.
- VD: Tính tổng các số từ 1 đến 10
Program vd;
uses crt;
var
tong,i:integer;
BEGIN
tong:=0;
while i<=10 do
begin
tong:=tong+i;
i:=i+1;
end;
END.
- Chú ý:
Nếu ngay từ đầu máy tính kiểm tra biểu thức so sánh mà sai thì không thực hiện lệnh nào trong vòng lặp(thoát khỏi vòng lặp).
Sử dụng lệnh này rất dễ rơi vào trạng thái lặp vô hạn, để không bị lặp vô hạn cần thực hiện tốt 2 điều sau:
+ Biểu thức so sánh cần chặn ở đích(ở VD trên chính là i<=10)
+ Vòng lặp này không tự thay đổi giá trị của biến trong biểu thức như vòng lặp for. Do vậy trong vòng lặp cần có 1 câu lệnh làm thay đổi giá trị của biến trong biểu thức, câu lệnh đó phải đảm bảo qua một số bước nào đó biểu thức so sánh sẽ bị sai(ở VD trên chính là i:=i+1).
Nếu rơi vào trạng thái lặp vô hạn, nhấn tổ hợp phím CTRL + BREAK
Nếu có cần thực hiện nhiều lệnh(từ 2 lệnh trở lên) cần đặt các lệnh đó trong cặp từ khóa Begin ... end;
2. Lệnh Repeat
- Cú pháp: Repeat
lệnh 1;
lệnh 2;
.......
lệnh n;
Until (Biểu thức so sánh);
- Ý nghĩa: Máy tính sẽ thực hiện các lệnh trong cặp từ khóa Repeat .. Until trước sau đó kiểm tra biểu thức, nếu sai quay lại thực hiện các lệnh, ... vòng lặp sẽ kết thúc khi biểu thức là đúng.
- VD: Tính tổng các số từ 1 đến 10
Program vd;
uses crt;
var
tong,i:integer;
BEGIN
tong:=0;
i:=1;
Repeat
tong:=tong+i;
i:=i+1;
Until i>10;
END.
- So sánh lệnh While và Repeat
B. Bài tập
Bài 1: Tính tổng các số từ 2 đến 100
Bài 2: Cho số thực a và số tự nhiên n nhập từ bàn phím. Viết chương trình tính công thức a mũ n
Gợi ý:
- Nhập a,n
- Khai báo thêm biến ketqua
- Dùng vòng lặp Repeat
- ketqua=a*a*...*a(có n số a)
- Điều kiện: không vượt quá n
VD: a = 3, n = 2 thì 3^2 = 9
Bài 3: Cho số nguyên dương n nhập từ bàn phím. Tính tổng sau:
1+1/2+1/3+1/4+ ... +1/n
Gợi ý:
- Nhập n
- Dùng vòng lặp While hoặc Repeat đều được
- Biểu thức so sánh: biến chạy không vượt quá n
Bài 4: Viết chương trình nhập vào số thực a. Tìm số tự nhiện n sao cho:
1+1/2+1/3+1/4+ ... +1/n > a
Gợi ý:
- Nhập a
- Làm giống bài 2
- Tuy nhiên không in ra kết quả Tong như bài 2 mà lấy kết quả Tong làm điều kiện, Tong > a thi in ra biến chạy.
Bài 5: Tìm ước chung lớn nhất của hai số nguyên a và b
Thuật toán:
- Nếu a = b thì UCLN chính là a(hoặc b)
- Ngược lại:
+ Lấy số lớn chia cho số nhỏ được số dư thứ 1
+ Lấy số chia, chia cho số dư thứ 1 được số dư thứ 2
...................
+ Thực hiện cho đến kho số dư thứ n bằng 0 thì U7CLN = số dư thứ n-1
VD: Tim U7CLN của 9 va 6 thực hiện như sau:
- lấy 9 chia 6 được 1 (dư 3)
- lấy 6 chia 3 được 2 (dư 0)
- vậy U7CLN của 9 va 6 là số dư trước đó(tức là số 3)
Gợi ý:
+ Nhập a,b
+ Dùng vòng lặp Repeat
+ Gán r:=a mod b;
a:=b;
b:=r;
Bài 6: Tìm bội chung nhỏ nhất của hai số nguyên a và b
Gợi ý:
- Tìm UCLN của a và b
- Bội cung nhỏ nhất bằng tích 2 số chia cho ước chung lớn nhất của hai số đó(BCNN = a*b/UCLN)
Bài 7: Viết chương trình thực hiện công việc sau:
Nhập một ký tự bất kỳ là chữ cái từ bàn phím. Dừng nhập khi kí tự là ‘C’. In ra các kí tự hoa tương ứng của các kí tự được nhập trên một hàng.
Gợi ý:
- Nhập biến chu(char)
- Dùng vòng lặp Repeat
- Mỗi lần nhập 1 kí tự(nhưng chưa in ra màn hình), cứ nhập cho đến khi nhập chữ C thì ngưng(chính là điều kiện để kết thúc vòng lặp).
- Sau khi thoát khỏi vòng lặp thì in tất cả các kí tự vừa nhập trên 1 hàng(in ra bằng chữ HOA)
- Lệnh upcase(n) : đổi kí tự chữ thường sang chữ hoa.
1. Lệnh While
- Cú pháp: While (Biểu thức so sánh) do
Câu lệnh
- Ý nghĩa: Trước tiên máy tính kiểm tra biểu thức so sánh, nếu đúng thì thực hiện câu lệnh, tiếp tục quay lại kiểm tra biểu thức so sánh và nếu đúng lại thực hiện câu lệnh, ... cứ thực hiện hoài cho đến khi biểu thức so sánh sai thì ngưng vòng lặp.
- VD: Tính tổng các số từ 1 đến 10
Program vd;
uses crt;
var
tong,i:integer;
BEGIN
tong:=0;
while i<=10 do
begin
tong:=tong+i;
i:=i+1;
end;
END.
- Chú ý:
Nếu ngay từ đầu máy tính kiểm tra biểu thức so sánh mà sai thì không thực hiện lệnh nào trong vòng lặp(thoát khỏi vòng lặp).
Sử dụng lệnh này rất dễ rơi vào trạng thái lặp vô hạn, để không bị lặp vô hạn cần thực hiện tốt 2 điều sau:
+ Biểu thức so sánh cần chặn ở đích(ở VD trên chính là i<=10)
+ Vòng lặp này không tự thay đổi giá trị của biến trong biểu thức như vòng lặp for. Do vậy trong vòng lặp cần có 1 câu lệnh làm thay đổi giá trị của biến trong biểu thức, câu lệnh đó phải đảm bảo qua một số bước nào đó biểu thức so sánh sẽ bị sai(ở VD trên chính là i:=i+1).
Nếu rơi vào trạng thái lặp vô hạn, nhấn tổ hợp phím CTRL + BREAK
Nếu có cần thực hiện nhiều lệnh(từ 2 lệnh trở lên) cần đặt các lệnh đó trong cặp từ khóa Begin ... end;
2. Lệnh Repeat
- Cú pháp: Repeat
lệnh 1;
lệnh 2;
.......
lệnh n;
Until (Biểu thức so sánh);
- Ý nghĩa: Máy tính sẽ thực hiện các lệnh trong cặp từ khóa Repeat .. Until trước sau đó kiểm tra biểu thức, nếu sai quay lại thực hiện các lệnh, ... vòng lặp sẽ kết thúc khi biểu thức là đúng.
- VD: Tính tổng các số từ 1 đến 10
Program vd;
uses crt;
var
tong,i:integer;
BEGIN
tong:=0;
i:=1;
Repeat
tong:=tong+i;
i:=i+1;
Until i>10;
END.
- So sánh lệnh While và Repeat
While | Repeat |
- Biểu thức đúng thì thực hiện lệnh | - Biểu thức đúng thì ngưng vòng lặp |
- Kiểm tra biểu thức trước rồi thực hiện lệnh | - Thực hiện lệnh trước rồi kiểm tra điều kiện |
- Biểu thức sai thì không thực hiện lệnh nào | - Biểu thức dù đúng hay sai cũng thực hiện ít nhất 1 lệnh. |
Bài 1: Tính tổng các số từ 2 đến 100
Bài 2: Cho số thực a và số tự nhiên n nhập từ bàn phím. Viết chương trình tính công thức a mũ n
Gợi ý:
- Nhập a,n
- Khai báo thêm biến ketqua
- Dùng vòng lặp Repeat
- ketqua=a*a*...*a(có n số a)
- Điều kiện: không vượt quá n
VD: a = 3, n = 2 thì 3^2 = 9
Bài 3: Cho số nguyên dương n nhập từ bàn phím. Tính tổng sau:
1+1/2+1/3+1/4+ ... +1/n
Gợi ý:
- Nhập n
- Dùng vòng lặp While hoặc Repeat đều được
- Biểu thức so sánh: biến chạy không vượt quá n
Bài 4: Viết chương trình nhập vào số thực a. Tìm số tự nhiện n sao cho:
1+1/2+1/3+1/4+ ... +1/n > a
Gợi ý:
- Nhập a
- Làm giống bài 2
- Tuy nhiên không in ra kết quả Tong như bài 2 mà lấy kết quả Tong làm điều kiện, Tong > a thi in ra biến chạy.
Bài 5: Tìm ước chung lớn nhất của hai số nguyên a và b
Thuật toán:
- Nếu a = b thì UCLN chính là a(hoặc b)
- Ngược lại:
+ Lấy số lớn chia cho số nhỏ được số dư thứ 1
+ Lấy số chia, chia cho số dư thứ 1 được số dư thứ 2
...................
+ Thực hiện cho đến kho số dư thứ n bằng 0 thì U7CLN = số dư thứ n-1
VD: Tim U7CLN của 9 va 6 thực hiện như sau:
- lấy 9 chia 6 được 1 (dư 3)
- lấy 6 chia 3 được 2 (dư 0)
- vậy U7CLN của 9 va 6 là số dư trước đó(tức là số 3)
Gợi ý:
+ Nhập a,b
+ Dùng vòng lặp Repeat
+ Gán r:=a mod b;
a:=b;
b:=r;
Bài 6: Tìm bội chung nhỏ nhất của hai số nguyên a và b
Gợi ý:
- Tìm UCLN của a và b
- Bội cung nhỏ nhất bằng tích 2 số chia cho ước chung lớn nhất của hai số đó(BCNN = a*b/UCLN)
Bài 7: Viết chương trình thực hiện công việc sau:
Nhập một ký tự bất kỳ là chữ cái từ bàn phím. Dừng nhập khi kí tự là ‘C’. In ra các kí tự hoa tương ứng của các kí tự được nhập trên một hàng.
Gợi ý:
- Nhập biến chu(char)
- Dùng vòng lặp Repeat
- Mỗi lần nhập 1 kí tự(nhưng chưa in ra màn hình), cứ nhập cho đến khi nhập chữ C thì ngưng(chính là điều kiện để kết thúc vòng lặp).
- Sau khi thoát khỏi vòng lặp thì in tất cả các kí tự vừa nhập trên 1 hàng(in ra bằng chữ HOA)
- Lệnh upcase(n) : đổi kí tự chữ thường sang chữ hoa.
Được sửa bởi Admin ngày 16/1/2015, 17:16; sửa lần 3.
Similar topics
» Bài 5: Vòng lặp biết trước số lần lặp(For .. to .. do)
» Ghost HDD không cần đĩa
» Hướng dẫn Ghost HDD không cần đĩa CD
» Tạo USB Boot và Ghost không cần đĩa
» Quan sát hình không gian với phần mềm Yenka
» Ghost HDD không cần đĩa
» Hướng dẫn Ghost HDD không cần đĩa CD
» Tạo USB Boot và Ghost không cần đĩa
» Quan sát hình không gian với phần mềm Yenka
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|
2/2/2016, 18:55 by crazy
» Bài 3: Câu lệnh điều kiện(if .. then ..)
17/1/2016, 20:30 by TranAi
» Bài 2: Nhập dữ liệu vào biến(Readln)
3/1/2016, 16:25 by crazy
» Bài 4: Cấu trúc rẽ nhánh(Case .. of)
29/11/2015, 18:11 by TranAi
» Bài 1: Lệnh thông báo ra màn hình(Write)
19/11/2015, 14:45 by caodao
» Hướng dẫn Ghost HDD không cần đĩa CD
12/6/2015, 16:44 by duchiep0123
» Bài tập tổng hợp
15/4/2015, 19:23 by TranAi
» Bàn ghế tre – cafe, nhà hàng giá xuất xưởng chỉ với 380k/1b
18/7/2014, 09:42 by hoaithuong
» Bài thuốc truyền đời chữa bệnh viêm gan B và xơ gan cổ trướng của lương y nức tiếng Hà thành
27/5/2014, 10:30 by hatcatvothuong