Vòng lặp trong Pascal
Chia sẻ bởi Phạm Quốc Thái |
Ngày 16/10/2018 |
131
Chia sẻ tài liệu: Vòng lặp trong Pascal thuộc Tư liệu tham khảo
Nội dung tài liệu:
Vòng Lặp
I. Vòng lặp có số bước lặp các định
Trước hết chúng ta xét ví dụ sau :
Giả sử ta phải viết ra màn hình các số từ 0 đến 24, mỗi số chiếm 1 dòng
Việc này có thể thực hiện bằng 25 lệnh Writeln
Writeln(0)
Writeln(1)
..........
Writeln(24)
Cách viết này rõ ràng là dài dòng và tẻ nhạt trong khi nó có quy luật
Chúng ta có thể thay thế bằng lệnh Writeln(I) trong đó I là một biến nguyên bất kì nhận giá trị từ 0..24
FOR I:=0 TO 24 DO Writeln(I)
Vòng lặp này cho I chạy từ 0 đến 24 với mỗi giá trị của I, máy sẽ thực hiện công việc viết sau chữ DO (làm), ở đây là Writeln(I)
Mẫu viết tổng quát :
FOR Biến_điều_khiển:=Giá_trị_đầu TO Giá_trị_cuối DO
Và ngược lại ta có mẫu :
FOR Biến_điều_khiển:=Giá_trị_đầu DOWNTO Giá_trị_cuối DO
II. Vòng lặp có số bước lặp không xác định
Có 2 kiểu vòng lặp không xác định
REPEAT WHILEDO
; BEGIN
UNTIL; ;
END;
Trong lệnh REPEAT ... UNTIL ... máy tính sẽ lặp đi lặp lại chu kì sau : thực hiện cho đến khi có giá trị TRUE. Giữa REPEAT và UNTIL không cần dùng BEGIN và END
Còn trong vòng lặp WHILE ... DO máy tính sẽ lặp đi lặp lại chu kì sau : chừng nào có giá trị TRUE thì đi thực hiện được đặt giữa BEGIN và END
Cả hai vòng lặp đều có số lần lặp không xác định trước. Cần phải lưu ý là trong khi thực hiện lặp, ta phải có một lệnh làm thay đổi một biến trong biểu thức Boolean để thay đổi giá trị biểu thức nhằm dừng vòng lặp lại vì nếu không vòng lặp sẽ chạy mãi không dừng
VD : Tính A = 1 + 1/2 + 1/3 + ... + 1/N
Dùng REPEAT và cho I chạy thuận
A:=0;I:=1;
REPEAT
A := A + 1/I;
I := I + 1;
UNTIL I>N;
Writeln(`Tổng = `,A:10:8);
Dùng WHILE và cho I chạy ngược
A:=0;I:=N;
WHILE I>0 DO
BEGIN
A := A + 1/I;
I := I - 1;
END;
Bài 1:{ Nhập số nguyên dương N. Sau đó nhập N số nguyên dương. Tìm số lớn nhất,
nhỏ nhất và tính trung bình của các phần tử}
var i,a,n:integer;{Khai báo i,a,n kiểu integer}
max,min,tong:integer;{Khai báo max,min,tong kiểu integer}
begin
write(`N = `);readln(n);{Nhập N}
min:=maxint;{Gán min bằng maxint}
max:=0;tong:=0;{Gán max và tổng bằng 0}
for i:=1 to n do{Cho i chạy từ 1 đến n}
begin
write(`So thu `,i,` : `);readln(a);{Đọc số thứ i vào biến a}
if min>a then min:=a;{Nếu min>a thì gán min bằng a}
if max
I. Vòng lặp có số bước lặp các định
Trước hết chúng ta xét ví dụ sau :
Giả sử ta phải viết ra màn hình các số từ 0 đến 24, mỗi số chiếm 1 dòng
Việc này có thể thực hiện bằng 25 lệnh Writeln
Writeln(0)
Writeln(1)
..........
Writeln(24)
Cách viết này rõ ràng là dài dòng và tẻ nhạt trong khi nó có quy luật
Chúng ta có thể thay thế bằng lệnh Writeln(I) trong đó I là một biến nguyên bất kì nhận giá trị từ 0..24
FOR I:=0 TO 24 DO Writeln(I)
Vòng lặp này cho I chạy từ 0 đến 24 với mỗi giá trị của I, máy sẽ thực hiện công việc viết sau chữ DO (làm), ở đây là Writeln(I)
Mẫu viết tổng quát :
FOR Biến_điều_khiển:=Giá_trị_đầu TO Giá_trị_cuối DO
Và ngược lại ta có mẫu :
FOR Biến_điều_khiển:=Giá_trị_đầu DOWNTO Giá_trị_cuối DO
II. Vòng lặp có số bước lặp không xác định
Có 2 kiểu vòng lặp không xác định
REPEAT WHILE
UNTIL
END;
Trong lệnh REPEAT ... UNTIL ... máy tính sẽ lặp đi lặp lại chu kì sau : thực hiện
Còn trong vòng lặp WHILE ... DO máy tính sẽ lặp đi lặp lại chu kì sau : chừng nào
Cả hai vòng lặp đều có số lần lặp không xác định trước. Cần phải lưu ý là trong khi thực hiện
VD : Tính A = 1 + 1/2 + 1/3 + ... + 1/N
Dùng REPEAT và cho I chạy thuận
A:=0;I:=1;
REPEAT
A := A + 1/I;
I := I + 1;
UNTIL I>N;
Writeln(`Tổng = `,A:10:8);
Dùng WHILE và cho I chạy ngược
A:=0;I:=N;
WHILE I>0 DO
BEGIN
A := A + 1/I;
I := I - 1;
END;
Bài 1:{ Nhập số nguyên dương N. Sau đó nhập N số nguyên dương. Tìm số lớn nhất,
nhỏ nhất và tính trung bình của các phần tử}
var i,a,n:integer;{Khai báo i,a,n kiểu integer}
max,min,tong:integer;{Khai báo max,min,tong kiểu integer}
begin
write(`N = `);readln(n);{Nhập N}
min:=maxint;{Gán min bằng maxint}
max:=0;tong:=0;{Gán max và tổng bằng 0}
for i:=1 to n do{Cho i chạy từ 1 đến n}
begin
write(`So thu `,i,` : `);readln(a);{Đọc số thứ i vào biến a}
if min>a then min:=a;{Nếu min>a thì gán min bằng a}
if max
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Phạm Quốc Thái
Dung lượng: 10,02KB|
Lượt tài: 1
Loại file: rar
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)