Trong Bài 7: Câu lệnh lặp chúng ta đã làm quen với các hoạt động lặp và cách chỉ thị cho máy tính thực hiện các hoạt động lặp với số lần đã được xác định trước. Trong thực tế có nhiều hoạt động được thực hiện lặp đi lặp lại với số lần lần chưa được biết trước. Vậy để hiểu rõ hơn về vấn đề này, mời các em cùng theo dõi Bài 8: Lặp với số lần chưa biết trước để tìm hiểu nội dung chi tiết.
Ví dụ 1: Một ngày chủ nhật Long gọi điện cho Trang. Không có ai nhấc máy. Long quyết định gọi lại thêm 1 lần nữa. Như vậy Long đã biết trước là mình sẽ lặp lại gọi điện thêm 2 lần. Một ngày khác, Long quyết định cứ 10 phút gọi điện một lần cho Trang cho đến khi có người bắt máy.
Điều kiện: Có người nhấc máy thì kết thúc hoạt động lặp.
Ví dụ 2: Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,...), cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?
Điều kiện: Khi tổng Tn nhỏ nhất lớn hơn 1000 thì kết thúc hoạt động lặp
Mô tả thuật toán bằng liệt kê:
Mô tả thuật toán bằng sơ đồ khối:
Hình 1. Mô tả thuật toán bằng sơ đồ khối
KẾT LUẬN:
Cú pháp:
While < Điều kiện > do < Câu lệnh >;
Trong đó:
Hoạt động:
Ví dụ 3:
While a<=b do a:=a+1;
Ví dụ 4:
While a>b do
Begin
write('a>b');
a:=a-1;
End;
Ví dụ 5: Viết câu lệnh in ra 5 số tự nhiên liên tiếp bắt đầu bằng số 1.
Gợi ý giải:
Sử dụng lệnh lặp với số lần lặp chưa biết trước while…do
Đoạn chương trình mẫu:
n:=1
while n<=5 do
begin
writeln(n);
n:=n+1;
end;
Khi viết chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc.
Chẳng hạn, chương trình dưới đây sẽ lặp lại vô tận:
var a:integer;
begin
a:=5;
while a<6 do
writeln('A');
end.
Sau khi học xong Bài 8: Lặp với số lần chưa biết trước, các em cần ghi nhớ:
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 8 Bài 8 cực hay có đáp án và lời giải chi tiết.
Việc đầu tiên mà câu lệnh While ... do cần thực hiện là gì?
< câu lệnh > sau từ khóa Do trong câu lệnh While ... do được thực hiện ít nhất mấy lần?
Cho biết câu lệnh sau Do thực hiện mấy lần trong đoạn chương trình sau:
i := 5;
While i>=1 do i := i – 1;
Câu 4- 10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 8 Bài 8để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Bài tập 1 trang 71 SGK Tin học 8
Bài tập 2 trang 71 SGK Tin học 8
Bài tập 3 trang 71 SGK Tin học 8
Bài tập 4 trang 71 SGK Tin học 8
Bài tập 5 trang 71 SGK Tin học 8
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 8 DapAnHay
Việc đầu tiên mà câu lệnh While ... do cần thực hiện là gì?
< câu lệnh > sau từ khóa Do trong câu lệnh While ... do được thực hiện ít nhất mấy lần?
Cho biết câu lệnh sau Do thực hiện mấy lần trong đoạn chương trình sau:
i := 5;
While i>=1 do i := i – 1;
Hãy cho biết kết quả của đoạn chương trình dưới đây?
a:=10;
While a < 11 do write (a);
Khi sử dụng lệnh lặp While ... do cần chú ý điều gì?
Hoạt động nào sau đây lặp với số lần lặp chưa biết trước?
Câu lệnh viết đúng cú pháp lệnh lặp với số lần chưa biết trước?
Câu lệnh lặp while…do có dạng đúng là:
Pascal sử dụng câu lệnh lặp nào sau đây để lặp với số lần chưa biết trước?
Hãy chỉ ra < câu lệnh > được lặp đi lặp lại trong đoạn lệnh: x:=1; While x<=5 do write(‘Hoa hau’);
Nêu một vài ví dụ về hoạt động lặp với số lần chưa biết trước.
Hãy phát biểu sự khác biệt giữa câu lệnh lặp với số lần lặp cho trước và câu lệnh lặp với số lần lặp chưa biết trước.
Hãy tìm hiểu các thuật toán sau đây và cho biết khi thực hiện thuật toán, máy tính sẽ bao nhiêu vòng lặp? Khi kết thúc, giá trị của S bằng bao nhiêu? Viết chương trình Pascal thể hiện các thuật toán đó:
a) Thuật toán 1
Bước 1. S \(\leftarrow\) 10, x \(\leftarrow\) 0.5
Bước 2. Nếu S \(\leq\) 5.2, chuyển tới bước 4.
Bước 3. S \(\leftarrow\) S - x và quay lại bước 2.
Bước 4. Thông báo S và kết thúc thuật toán.
b) Thuật toán 2
Bước 1. S \(\leftarrow\) 10, n \(\leftarrow\) 0.
Bước 2. Nếu S ≥ 10, chuyển tới bước 4.
Bước 3. n \(\leftarrow\) n + 3, S \(\leftarrow\) S - n quay lại bước 2.
Bước 4. Thông báo S và kết thúc thuật toán.
Hãy tìm hiểu các cụm câu lệnh sau đây và cho biết với các câu lệnh đó chương trình thực hiện bao nhiêu vòng lặp? Hãy rút ra nhận xét của em.
a)
S:=0; n:=0;
while S<=10 do
begin n:=n+1; S:=S+n end;
b)
S:=0; n:=0;
while S<=10 do
n:=n+1; S:=S+n;
Hãy chỉ ra lỗi trong các câu lệnh sau đây:
a) X:=10; while X:=10 do X:=X+5;
b) X:=10; while X=10 do X=X+5;
c) S:=0; n:=0; while S<=10 do n:=n+1; S:=S+n;
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Viết chương trình nhập vào số n in ra màn hình các số nhỏ hơn hoặc bằng n chia hết cho 5
Câu trả lời của bạn
program bai1;
var n,i:longint;
begin
write('N= ');readln(n);
for i:=1 to n do
if i mod 5=0 then writeln(i,' ');
readln
end.
như thế nào là lặp vô hạn?
lỗi lập trình cần tránh?
(pascal)
Câu trả lời của bạn
_Lặp vô hạn là việc chương trình thực hiện liên tục và lặp câu lệnh vô số lần ko kết thúc _Lỗi lập trình cần tránh là tránh viết điều kiện sai học luôn luôn thỏa mãn trong bất kì trường hợp nào (nhằm tránh lặp vô hạn).
lặp vô hạn là việc chương trình thực hiện liên tục và lặp câu lệnh vô số lần ko kết thúc
lỗi lập trình cần tránh laftranhs viết điều kiện sai học luôn luôn thỏa mãn trong bất kì trường hợp nào ( nhằm tránh lặp vô hạn)
Sử dụng vòng lặp While..do... viết chương trình tính n!
Cực kì gấp
Câu trả lời của bạn
program bai1;
var i,n,s:longint;
begin
write('N= '); readln(n);
i:=0;s:=1;
while i<=n do
begin
i:=i1;
s:=s*i;
end;
write(n,'!= ',s);
readln;
end.
program bai1;
var i,n,s:longint;
begin
write('N= ');
readln(n);
i:=0;s:=1;
while i<=n do
begin
i:=i1;
s:=s*i;
end;
write(n,'!= ',s);
readln
end.
Viết chương trình tính tổng các số chẵn số tự nhiên từ 1 đến 100.
Câu trả lời của bạn
5050
Program viet_chuong_trinh_tinh_tong;
Uses Crt;
Var i,s:integer;
Begin
Clrscr;
i:=2;
While (i>1) and (i<=100) do
Begin
s:=s+i;
i:=i+2;
End;
Writeln(S);
Readln;
End.
Viết chương trình in ra màn hình các số nguyên tố có hai chữ số và toonggr các số đó
Câu trả lời của bạn
USES crt;
VAR i:byte; s:integer;
Function kt(x:byte):boolean;
Var i:byte;
Begin
kt:=true;
if (x mod 2=0) or (x mod 3=0) then
begin
kt:=false;
exit;
end;
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then
begin
kt:=false;
exit;
end;
End;
BEGIN
clrscr;
writeln('Cac so nguyen to co 2 chu so gom:');
s:=0;
for i:=10 to 99 do
if kt(i) then
begin
write(i:4);
s:=s+i;
end;
readln;
END.
BÀI 1: Viết chương trình người dùng nhập vào giá trị cho biến nguyên N. Nếu người dùng nhập vào -1 thì xuất ra màn hình thông báo: Chương trình kết thúc.
BÀI 2: Viết chương trình yêu cầu người dùng nhập vào tên đăng nhập và mật khẩu. Nếu nhập đúng thì xuất ra thông báo ? Đăng nhập thành công. Nếu tên đăng nhập hoặc mật khẩu không đúng thì yêu cầu người dùng nhập lại
GIÚP MÌNH VỚI Ạ !!!!!
Câu trả lời của bạn
c1:begin
write('nhap vao so n: '); readln(n);
if n<0 then writeln('CHUONG TRINH KET THUC');
readln;
end.
Program Nhap;
Uses Crt;
Var N: Integer;
Begin
Repeat
writeln('Nhap N:'); Readln(N);
until N=-1;
write('CT ket thuc');
readln
End.
nhập số tự nhiên N . Sau đó in ra chữ số đầu tiên của số N
Câu trả lời của bạn
uses crt;
var n:integer;
begin
clrscr;
write('nhap n: '); readln(n);
while n div 10>0 do n:=n div 10
write(n,'la chu so dau tien');
readln;
end.
uses crt;
var n:integer;
begin
clrscr;
write('Nhap so tu nhien N: '); readln(n);
while n div 10 > 0 do n:=n div 10;
write('Chu so dau tien cua so N la: ',n);
readln;
end.
Lệnh While... do với lệnh for... do, dùng lệnh nào hay hơn? Vì sao?
Câu trả lời của bạn
tùy vào yêu cầu của thuật toán nha bạn
và còn tùy vào điều kiện bài nữa
tùy vào đề bài yêu cầu và cho biết là lệnh lặp với số lần chưa biết trước và số lần biết trước
Hãy mô tả thuật toán và Viết chương trình nhập n số nguyên tử bàn phím và in ra màn hình số nhỏ nhất?
đang cần gấp
Câu trả lời của bạn
Nêu cú pháp câu lệnh lặp với số lần chưa biết trước. Nêu hoạt động của câu lệnh lặp?
Giúp mình với sắp thi rồi
Câu trả lời của bạn
hãy nêu cú pháp sử dung câu lệnh lặp với số lần chưa biết trước ?ý nghĩa của cú pháp ?
Mổ tả thuật toán và viết chưởng trình pascal tính tổng của. 50 số tự nhiên
Cú pháp:
While < điều kiện > do < câu lệnh >;
Trong đó:
- Điều kiện thường là một phép so sánh
- Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép.
Câu lệnh lặp này được thực hiện như sau: (Hoạt động)
(1) Kiểm tra điều kiện:
(2) Nếu điều kiện SAI, câu lệnh sẽ bị bỏ qua và chuyển sang câu lệnh tiếp theo trong chương trình. Nếu điều kiện ĐÚNG, thực hiện câu lệnh và quay lại bước (1 )
Viết chương trình tính tổng của số tự nhiên từ 100-200(sử dụng câu lệnh while-do)
làm ơn giúp mk vs ạ,mai mk thi r
cảm ơn mn nhìu ạ
Câu trả lời của bạn
Câu hỏi của Ngân Nguyễn - Tin học lớp 8 | Học trực tuyến
nhớ khai báo thêm biến S nhé
Viết chương trình nhập vào n số bất kì từ bàn phím và tính tổng các số chẵn?
(Sử dụng câu lệnh while..do)
Câu trả lời của bạn
program bai_tap;
type mang = array[1..1000] of integer;
var a:mang;
i,j,n:integer;
begin
writeln('nhap n:');
readln(n);
i:=1;j:=0;
while i <= n do
begin
write('nhap so thu ',i,': ');
readln(a[i]);
if a[i] mod 2 = 0 then j:=j+a[i];
inc(i);
end;
write(j);
readln
end.
viết chương trình tính tổng S=1+3+5+...+(2n+1) với n là số nguyên nhập từ bàn phím.
giúp mình với !!!
Câu trả lời của bạn
program tinhtong;
var s, n longint;
begin
s:=1
write('nhap n tu ban phim'); readln(n);
For i:=1 to n do s:=s+(2*i+1);
readln;
end.
viết chương trình tính tổng các số từ 1 đến n bằng lệnh lặp repeat until
Câu trả lời của bạn
program bai1;
var n,i,s:longint;
begin
write('N= ');readln(n);
s:=0;i:=1;
repeat
s:=s+i;
i:=i+1;
until i>n;
writeln('Tong la ',s);
readln
end.
Giải giùm mik vs
1
Viết chương trình nhập vào 1 dãy số nguyên n, đếm xem trong dãy số đó có bao nhiu phần tử
2
Viết C.trình nhập vào 1 dãy số thực n, tính tổng dãy số thực đó
Câu trả lời của bạn
Dãy số thực gồm tổng các số lẻ (dương)
Program Tinh_tong_so_le;
Uses CRT;
Var i,n,S:integer;
sl:boolean;
Begin
Clrscr;
Write('Nhap so n:');Readln(n);
sl:=True;
For i:=1 to n do
Begin
If sl=True then S:=S+i;
sl:= not True;
End;
Writeln('Tong cua n so le la:', S);
Readln;
End.
VIẾT CHƯƠNG trình nhập vào giá trị của n(n<5) nếu người dùng nhập sai thì phài nhập lại. Sử dụng câu While ...do...
Câu trả lời của bạn
Cấu trúc vòng lặp khiến chương trình thực hiện lặp đi lặp lại một chuỗi các câu lệnh cho đến khi không còn thõa mãn một điều kiện nào đó.
Ví dụ:
int main() { //do A //do B 0 or more times //do C }
Như vậy, chúng ta hiểu rằng có một cấu trúc vòng lặp được đặt tại B, nó có thể bắt buộc chương trình thực hiện công việc B 1 lần, hoặc cũng có thể thực hiện công việc B vô số lần mà không thể chuyển sang thực hiện công việc C sau đó. Số lần thực hiện công việc B nó sẽ phụ thuộc vào biểu thức điều kiện được đặt trong cấu trúc vòng lặp.
Mình lấy một ví dụ trong đời sống hằng ngày. Sinh viên A đăng kí học môn lập trình C++ tại trường đại học, nếu sinh viên A không đủ điểm để qua môn học này thì sinh viên A sẽ phải học lại. Trong trường hợp sinh viên A phải học lại lần thứ 2, chúng ta lại nói rằng nếu sinh viên A không đủ điểm qua môn học này thì sinh viên A phải học lại... Vậy việc sinh viên A học lại là công việc sẽ được lặp đi lặp lại nhiều lần trong khi điều kiện sinh viên A đủ điểm để qua môn vẫn còn sai.
0.png878x463
While statement là cấu trúc vòng lặp đơn giản nhất trong số các kiểu vòng lặp cơ bản mà ngôn ngữ C++ cung cấp.
while (expression) { statements; }
Vòng lặp while được định nghĩa bởi từ khóa while. Một khi vòng lặp while được thực thi, biểu thức điều kiện trong while sẽ được đánh giá. Nếu biểu thức điều kiện cho giá trị đúng, các câu lệnh trong khối lệnh của vòng lặp while sẽ được thực thi.
Trong trường hợp chúng ta chỉ thực hiện 1 câu lệnh khi biểu thức điều kiện đúng, chúng ta có thể bỏ cặp dấu ngoặc nhọn đi.
while (expression) statement;
Nhưng mình không khuyến khích điều này.
Khác với if statement, một khi kết thúc 1 lần lặp của vòng lặp while, chương trình sẽ quay lên lại vị trí bắt đầu vòng lặp while để đánh giá lại biểu thức điều kiện, nếu biểu thức điều kiện vẫn còn cho giá trị đúng, các câu lệnh trong khối lệnh của vòng lặp while được thực hiện lại.
Ví dụ:
int main() { int score = 0; while (score < 4) { cout << "Learn C++ programming language..." << endl; cout << "Enter your final score: "; cin >> score; //new score } cout << "Congratulation! You passed the exam" << endl; system("pause"); return 0; }
Trong ví dụ trên, đến khi nào biến score không còn thõa mãn điều kiện (score < 4) thì vòng lặp while mới kết thúc. Chúng ta cùng xem kết quả chương trình:
Khi số điểm được nhập vào là 10, ngay lập tức mệnh đề (score < 4) được đánh giá là false, vòng lặp ngừng thực thi ngay sau đó.
Với vòng lặp while, chúng ta không thể biết trước số lần lặp lại khối công việc. Chúng ta chỉ biết rằng, vòng lặp while sẽ ngừng thực thi khi nào biểu thức điều kiện cho giá trị false.
Chúng ta có thể sử dụng thêm một biến để đếm số lần thực hiện khối lệnh của vòng lặp while:
int score = 0; int count = 0; while (score < 4) { count++; cout << "Learn C++ programming language..." << endl; cout << "Enter your final score: "; cin >> score; //new score } cout << "Congratulation! You passed the exam after " << count << " times" << endl;
Vòng lặp vô tận xảy ra trong trường hợp không có sự tác động đến biểu thức điều kiện của vòng lặp while và nó luôn luôn đúng. Ví dụ:
int count = 0; while (count < 10) { cout << count << " "; }
Biến count trong trường hợp này không bị ai tác động đến giá trị, nên nó vẫn là 0 và luôn bé hơn 10. Dó đó, điều kiện luôn luôn đúng và vòng lặp không thể kết thúc được.
Chúng ta có thể cố ý khai báo vòng lặp vô hạn bằng cách sau:
while (true) { //This loop will be executed forever }
Cách duy nhất để thoát ra khỏi vòng lặp vô tận là sử dụng từ khóa break, return, goto,...
Thông thường, chúng ta muốn vòng lặp thực hiện công việc trong một số lần có giới hạn. Để làm điều này, chúng ta thường sử dụng thêm các biến vòng lặp (loop variable), những biến này thường được sử dụng cho mục đích đếm số lần thực hiện khối lệnh của vòng lặp.
Mình lấy ví dụ chương trình đếm ngược từ 10 về 0 như sau:
int count = 10; while (count >= 0) { _sleep(1000); //stop 1000 miliseconds if (count == 0) cout << "Finished" << endl; else cout << count << " "; count--; }
Kết quả:
10 9 8 7 6 5 4 3 2 1 Finished
Tại cuối vòng lặp, mình thực hiện trừ giá trị của biến count đi 1, điều này sẽ dẫn đến mệnh đề (count >= 0) sẽ sai trong tương lai. Như vậy, vòng lặp while này có điểm dừng.
Cũng tương tự như if statement hay switch case statement, chúng ta có thể đặt vòng lặp while bên trong khối lệnh của vòng lặp while khác.
int outer = 1; while (outer <= 5) { int inner = 1; while (inner <= 5) { cout << inner << " "; inner++; } cout << endl; // print a newline at the end of each row outer++; }
Cứ mỗi lần lặp của vòng lặp while ngoài, chương trình lại thực hiện toàn bộ vòng lặp while trong, sau đó thực hiện tăng biến outer lên 1 giá trị. Kết quả chương trình sẽ là:
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Tìm hiểu về vòng lặp while giúp chúng ta định hình tư duy về cấu trúc vòng lặp trong ngôn ngữ C/C++. Cấu trúc vòng lặp while khá ngắn gọn, dễ hiểu. Chúng ta thường sử dụng vòng lặp while cho các trường hợp số lần lặp lại công việc là chưa biết trước.
viết chương trình tính trung bình cộng của các số nhập từ bàn phím.khi muốn kết thúc nhập thì nhấn phím 0.in kết quả ra màn hình (sử dụng thêm repeat..until0
giúp nhanh nhanh huhuihuhuhuh
Câu trả lời của bạn
program bai1;
var i,d:longint;tbc,x,s:real;
begin
s:=0;d:=1;
repeat
write('Phan tu thu ',d,' = ');
readln(x);
s:=s+x;
d:=d+1;
until x=0;
tbc:=s/d;
readln('TBc= ',tbc);
readln
end.
Để mở rộng giao diện pascal ta dùng tổ hợp phím nào?
Câu trả lời của bạn
Câu lệnh được lặp với số lần chưa xác định trước phụ thuộc vào gì?
a. Biến và hằng b. Điều kiện
c. Câu lện d. Số lần lặp
Cho biết giá trị i,j,k trong đoạn CT sau :
a ) i:=1 ; j:=2 ; k:=3;
while i<=6 do
i:=i+1;
j:=j+1;
k:=k+j;
b) i:=1 ; j:=2 ; k:=3;
while i<=6 do
begin
i:=i+1;
j:=j+1;
k:=k+j;
end;
( Giải thích cách dùm mình luôn nha , tks!!! )
Câu trả lời của bạn
a) i=7, j=3, k=6
vòng lặp while <ĐK> do lặp cho đến khi đk sai, vậy i+1 cho đến i không <=6.
Sau đó j:=j+1 <=> j=2+1 = 3 và k:=k+j <=> k= 3 + 3, 2 dòng này nằm ngoài vòng lặp while do vì không có cặp begin end .
b) i = 7, j= 8, k=28
j:=j+1 và k:=k+j nằm cùng khối với i:=i+1 trong begin end, nên mỗi khi i tăng lên thì j và k lần lượt cũng được tính
ví dụ: bắt đầu vòng lặp
*điều kiện i<=6? True
{
i+1 => i= 2
j+1 => j=3
k+j => k= 3 + 3 = 6
}
* tương tự
Nhập số tự nhiên N sau đó hãy cho biết N có bao nhiêu chữ số là số chẵn
sử dung lệnh while...do
Câu trả lời của bạn
{Lập trình cơ bản}
var
result, a : integer;
N: longint;
begin
readln(N);
result:=0;
while n<>0 do
begin
a:= n mod 10;
n:= n div 10;
if ( a mod 2 =0) then result:= result + 1;
end;
write(result);
end.
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *