CÂU LỆNH LẶP FOR pdf

25 252 0
CÂU LỆNH LẶP FOR pdf

Đ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

CÂU LỆNH LẶP FOR 9.1.1. Câu lệnh FOR dạng 1: 9.1.1.1. Cú pháp , lưu đồ, cách thức hoạt động : Cú pháp: FOR biến := m1 TO m2 DO LệnhP; Yêu cầu: 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ệnhcấ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; 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 : Hãy tính tổng : S= 1 2 + 2 2 + 3 2 + + 10 2 Thuật toán: Bước 0: gán S:=0; { gán gía trị ban đầ? cho S} Bước 1: gán S:=S+1*1; { được S=1 2 } Bước 2: gán S:=S+2*2; { được S=1 2 +2 2 } Bước 3: gán S:=S+3*3; { S=1 2 +2 2 +3 2 } .v.v. Bước 10: gán S:=S+10*10; { được S=1 2 +2 2 +3 2 + +10 2 } 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 i 2 , 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 i 2 . Khi i thay đổi từ 1 đến 10 thì các số 1 2 , 2 2 , 3 2 , , 10 2 đề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 1 2 + 2 2 + 3 2 + + 10 2 . 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 ; Một cách tổng quát, để tính tổng :S= 1 2 + 2 2 + 3 2 + + N 2 , 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ể : PROGRAM VIDU91; { Tính tổng các bình phương các số tự nhiên <=N} Var N, i : Integer; S : LongInt; Begin Write(‘ Nhập N :’); Readln(N); S:=0; For i:=1 to N do S:=S+i*i ; 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 = 1 2 - 2 2 + 3 2 - 4 2 + +(-1) N-1 N 2 Ta viết: S = 1 2 + (- 2 2 ) + 3 2 + (- 4 2 ) + +(-1) N-1 N 2 Nhận thấy, số hạng thứ i của vế phải có gía trị tuyệt đối bằng i 2 , mang dấu cộng nếu i lẻ, mang dấu trừ nếu i chẵn. Nói cách khác, ta sẽ cộng dồn i 2 vào S nếu i lẻ, và cộng dồn (- i 2 ) vào S nếu i chẵn. Việc xác định i lẻ hay chẵn dựa vào hàm Odd(i) hay kết qủa của phép toán i Mod 2. Vậy, các lệnh sẽ dùng là : S:=0; 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. Ví dụ 9.2: Bài toán tính tích: Tính S= 10! . Ta viết S=1*2*3* *10. Thuật toán: Bước 0: gán S:=1; { gán gía trị ban đầ? cho S} Bước 1: gán S:=S*1; { được S=1 } Bước 2: gán S:=S*2; { được S=1*2} Bước 3: gán S:=S*3; { được S=1*2*3} .v.v. Bước 10: gán S:=S*10; { được S=1*2*3* *10 =10!} 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 1*2*3* *10 =10!. Qúa trình thực hiện từ bước 1 đến bước thứ 10 được mô tả bằng câu lệnh For : For i:=1 to 10 DO S:=S * i ; Một cách tổng quát, để tính tích: S= 1*2* *N , trong đó N là một số nguyên dương bất kỳ, ta dùng hai lệnh: S:=1; For i:=1 To N DO S:=S* i ; Dưới đây là chương trình cụ thể : PROGRAM VIDU92; { Tính S=N! } Var N, i : Integer; S : LongInt; Begin Write(‘Nhập số dương N : ‘); Readln(N); S:=1; For i:=1 to N do S:=S * i ; Writeln(‘Giai thua = ‘, S); Readln; End. Chạy<VD92.EXE> 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= x N . 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à: S:=1; For i:=1 TO N DO S:=S*x; Dưới đây là chương trình cụ thể : PROGRAM VIDU93; { Tính S=lũy thừa N của x } Var N, i : Byte ; S, x : Real ; Begin Write(‘Nhập hai số x và N : ‘); Readln( x, N); S:=1; For i:= 1 to N do S := S * x ; Writeln(‘Luy thua= ‘, S : 6:2); Readln; End. Chạy <VD93.EXE> 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: KÝ TỰ MÃ KÝ TỰ MÃ A 65 a 97 B 66 b 98 Yêu cầu in thành từng trang màn hình, mỗi trang 15 dòng. [...]... 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... đến a} Var Ch: Char; Begin For ch:=‘Z’ downto ‘A’ do write(ch:3 ); Writeln; For ch:=‘z’ downto ‘a’ do write(ch :3 ); Writeln; Readln; End Chạy Chép file nguồn 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; Cách thức hoạt động của lệnh này như sau: {2} Ðầu... 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 . (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. 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. CÂU LỆNH LẶP FOR 9.1.1. Câu lệnh FOR dạng 1: 9.1.1.1. Cú pháp , lưu đồ, cách thức hoạt động : Cú pháp: FOR biến := m1 TO m2 DO LệnhP; Yêu cầu: biến phải thuộc

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan