1. Trang chủ
  2. » Công Nghệ Thông Tin

CÂU LỆNH LẶP FOR pdf

25 252 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 3,28 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

m1, m2 là các biểu thức có cùng kiểu dữ liệu với biến, LệnhP có thể là một lệnh đơn giản, lệnh có cấu trúc, hoặc là một lệnh ghép gồm nhiều lệnh đặt trong khối begin và end.. Nếu biến

Trang 1

biến phải thuộc kiểu dữ liệu đơn giản đếm được, thường là kiểu nguyên, ký

tự hay lô gic, không thể là kiểu thực hay chuỗi

m1, m2 là các biểu thức có cùng kiểu dữ liệu với biến,

LệnhP có thể là một lệnh đơn giản, lệnh có cấu trúc, hoặc là một lệnh ghép

gồm nhiều lệnh đặt trong khối begin và end

Hình 9.1 là sơ đồ khối của lệnh For với b là viết tắt của biến

Cách thức hoạt động của FOR:

Bước 1: Gán giá trị biến := m1;

Bước 2: Nếu biến m2 thì làm LệnhP, rồi sang bước 3;

Trang 2

Nếu biến >m2 thì không làm LệnhP mà chuyển sang lệnh kế tiếp ở phía dưới

Bước 3 : Tăng gía trị của biến : biến:=Succ(biến);

Quay lại bước 2

Tóm lại, LệnhP sẽ được làm đi làm lại, bắt đầu khi biến=m1, và kết thúc khi biến =m2+1, cả thảy là m2-m1+1 lần Vì thế, người ta gọi FOR là vòng lặp có số lần lặp đã biết trước

9.1.1.2 Các ví dụ cơ bản :

Ví dụ 9.1: Bài toán tính tổng :

Trang 3

Qúa trình từ bước 1 đến bước 10 được gọi là phép cộng dồn vào biến S

Tại bước thứ i, lấy gía trị của biến S cộng với i2, kết qủa lại được gán cho biến S, do đó gía trị của biến S được tăng thêm một lượng bằ?g i2 Khi i thay đổi từ 1 đến 10 thì các số 12, 22, 32, , 102 đều được cộng vào S, kết qủa là sau bước thứ 10 gía trị của S đúng bằng tổng 12 + 22 + 32 + + 102

Tóm lại, lệnh: S:=S + i*i; được làm cả thảy 10 lầ?, ứng với i=1, 2, , 10 Qúa trình này được diễn đạt bằ?g lệ?h FOR, như sau:

For i:=1 To 10 DO S:=S+ i*i ;

Trang 4

Một cách tổng quát, để tính tổng :S= 12 + 22+ 32+ + N2 , trong đó N là một số nguyên dương bất kỳ, ta dùng hai lệnh:

S:=0;

For i:=1 To N DO S:=S+ i*i ;

Dưới đây là chương trình cụ thể :

Trang 5

Writeln(‘S= ‘, S);

Readln;

End

Chạy<VD91.EXE>

Chép file nguồn <VD91.PAS>

Mở rộng bài toán tính tổng: Tính tổng đan dấu :

sẽ dùng là :

S:=0;

Trang 6

For i:=1 To N DO

if i mod 2 <> 0 then S:=S+ i*i else S:= S- i*i ;

Các bạn hãy viết chương trình để tính tổng đan dấu này

Trang 7

Nếu trong ví dụ 1, ta phải cộng dồn vào biến S thì trong ví dụ này ta phải nhân dồn vào biến S Tại bước thứ i, lấy gía trị của biến S nhân với i, rồi lại

gán kết qủa cho biến S Khi i thay đổi từ 1 đến 10 thì S sẽ tích lũy đủ các thừa số 1, 2, 3, ,10, và gía trị của S sau bước thứ 10 đúng bằng

Trang 8

Chép file nguồn <VD92.PAS>

Ví dụ 9.3: Bài toán tính lũy thừa:

Nhập số tự nhiên N và một số thực x bất kỳ, tính S= xN

Trang 9

Tương tự như tính N!: đầu tiên ta gán S:=1, sau đó tại mỗi bước lặp, ta nhân dồn x vào S bằng lệnh S:=S*x Sau N bước như vậy, S sẽ được nhân với x đúng N lần Vậy hai lệnh cần dùng là:

Trang 10

Chép file nguồn <VD93.PAS>

Ví dụ 9.4: In bảng các chữ cái từ A đến Z thành bốn cột như sau:

Trang 11

Trong chương trình ta dùng biến Dem để đếm số dòng đã in, mỗi khi in xong một dòng thì biến Dem được cộng thêm 1 Khi Dem = 15, 30, 45, (tức Dem mod 15=0) thì phải làm lệnh Readln; lệnh này sẽ dừng màn hình

cho đến khi ta gõ Enter mới in tiếp

Trang 13

Chép file nguồn <VD94.PAS>

Chương trình trên là một ví dụ về cách dùng biến chạy kiểu ký tự (ch) trong lệnh FOR, ngoài ra, đóng vai trò LệnhP là một lệnh ghép, gồm nhiều lệnh đặt trong khối begin và end

9.1.2 Câu lệnh FOR dạng 2:

Cú pháp:

FOR biến := m2 DOWNTO m1 DO LệnhP;

Cách thức hoạt động của FOR dạng 2:

Bước 1: gán gía trị biến := m2;

Bước 2: Nếu biến  m1 thì làm LệnhP, rồi sang bước 3

Nếu biến<m1 thì không làm LệnhP mà chuyển sang lệnh kế tiếp ở

phía dưới

Bước 3 : Giảm gía trị của biến : biến:=Pred(biến);

Quay lại bước 2

Trang 14

Tóm lại, LệnhP sẽ được làm đi làm lại, bắt đầu khi biến=m2, và kết thúc

khi biến = m1-1, cả thảy là m2-m1+1 lần

Trang 15

S:=1;

For i:=N downto 1 do S:=S* x;

Như vậy, lệnh FOR dạng 2 về bản chất chỉ là một cách viết khác của dạng

1 Thông thường người ta hay dùng lệnh FOR dạng 1, tuy nhiên có khá nhiều tình huống mà việc dùng lệnh FOR dạng 2 tỏ ra rất hiệu qủa, như ví

Trang 16

For ch:=‘Z’ downto ‘A’ do write(ch:3 );

Chép file nguồn <VD96.PAS>

9.1.3 Câu lệnh FOR lồng nhau :

Trong cấu trúc FOR, khi LệnhP cũng là một lệnh FOR thì ta có cấu trúc FOR lồng nhau:

FOR biến1:= m1 TO m2 DO {1}

FOR biến2:=n1 TO n2 DO LệnhP; {2}

Cách thức hoạt động của lệnh này như sau:

Trang 17

Ðầu tiên cho biến1:=m1 và làm lệnh ở dòng {2} Vì dòng {2} là lệnh FOR nên với mỗi gía trị của biến2=n1, , n2, đều phải làm LệnhP, kết qủa

là LệnhP được làm n2-n1+1 lần

Bây giờ tăng: biến1:=Succ(biến1), rồi lại làm lệnh FOR ở dòng {2}, kết qủa lệnhP được làm thêm n2-n1+1 lần nữa

.v.v

Qúa trình trên cứ tiếp tục cho đến khi biến1=m2+1 thì dừng

Lệnh FOR {1} làm m2-m1+1 lần lệnh FOR {2}, còn chính lệnh FOR {2} lại làm n2-n1+1 lần LệnhP Vì thế lệnhP được làm cả thảy là (m2-

Trang 18

For j:=1 to m do write(‘A’);

Lệnh Write in m chữ A trên một dòng In xong, con trỏ vẫn nằm ở cuối dòng đó, vì thế trước khi in dòng tiếp theo, cần phải đưa con trỏ xuống dòng dưới bằng lệnh:

Trang 19

U0=1, U1=1 , Uk=Uk-1 + Uk-2 với mọi k= 2, 3, 4,

Gọi U là số hạng thứ k, Uo và U1 lần lượt là hai số hạng đứng ngay trước U Ðầu tiên ta gán:

Uo:=1;

U1:=1;

Trang 20

Bước 1: tính U:=Uo+U1 và in U Lúc này U=2 chính là U2

Ðể chuẩn bị tính U3, ta cho Uo đóng vai trò của U1 và U1 đóng vai trò của U, tức là gán:

Uo:=U1;

U1:=U;

Kết qủa là Uo=1 và U1=2

Bước 2: tính U:=Uo+U1 và in U Lúc này U=3 chính là U3

Ðể chuẩn bị tính U4, ta lại cho Uo đóng vai trò của U1 và U1 đóng vai trò của U, tức là gán:

Trang 22

Chép file nguồn <VD98.PAS>

Ví dụ 9.9: Bài toán tính tiền lãi gửi ngân hàng:

Trang 23

Nhập tiền vốn ban đầu, số tháng gửi N và lãi suất hàng tháng Tính số tiền nhận được sau mỗi tháng gửi biết rằng tiền lãi hàng tháng được gộp vào tiền vốn

Ví dụ, tiền vốn là100, lãi suất tháng là 2% Sau 1 tháng gửi sẽ có số tiền là:

Số tiền=100 + 100*0.02 = 102

Sau 2 tháng gửi sẽ có số tiền là:

Số tiền=102 + 102*0.02 = 104.04

Công thức tính tiền thu được sau mỗi tháng gửi là:

Số tiền := Tiền vốn + Tiền vốn * Lãi suất

Số tiền này lại trở thành tiền vốn của tháng sau, tức là:

Tiền vốn := Số tiền;

Qúa trình cứ lặp đi lặp lại từ tháng 1 đến tháng N

Chương trình cụ thể như sau:

PROGRAM VIDU99;

Trang 24

{ Tính tiền gửi ngân hàng sau N tháng}

Sotien:= Tienvon + Tienvon*Laisuat;

Writeln(‘Số tiền sau ‘, i , ‘ tháng =‘ , Sotien:8:2);

Tienvon:=Sotien;

end;

Readln;

Trang 25

End

Chạy<VD99.EXE>

Chép file nguồn <VD99.PAS>

Ngày đăng: 19/06/2014, 09:20

TỪ KHÓA LIÊN QUAN

w