THỦ TỤC (Procedure)
Số trang: 12
Loại file: pdf
Dung lượng: 199.15 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Thủ tục và cách khai báo: Giống như hàm, thủ tục cũng là một chương trình con, song thủ tục khác hàm ở chỗ: nếu như hàm luôn trả về một gía trị duy nhất thông qua tên hàm thì thủ tục lại không trả về?một gía trị nào thông qua tên gọi của nó. Một thủ tục thực chất là một nhóm các lệnh được sắp xếp theo một trình tự nhất định có tác dụng giải quyết một nhiệm vụ cụ thể, và được đặt một cái tên để gọi. ...
Nội dung trích xuất từ tài liệu:
THỦ TỤC (Procedure) THỦ TỤC (Procedure) 12.3.1. Thủ tục và cách khai báo: Giống như hàm, thủ tục cũng là một chương trình con, song thủ tục kháchàm ở chỗ: nếu như hàm luôn trả về một gía trị duy nhất thông qua tên hàmthì thủ tục lại không trả về?một gía trị nào thông qua tên gọi của nó. Một thủ tục thực chất là một nhóm các lệnh được sắp xếp theo một trìnhtự nhất định có tác dụng giải quyết một nhiệm vụ cụ thể, và được đặt một cáitên để gọi. Trong đời sống hàng ngày, ta thường nghe nói đến thủ tục nhậphọc của sinh viên, thủ tục mua bán nhà đất, thủ tục xuất cảnh, thủ tục nhậpcảnh,.v.v. mỗi thủ tục đó là một dãy có trình tự các công việc phải làm. Thủ tục Readln(x, y, z) có nhiệm vụ nhập các gía trị từ bàn phím cho cácbiến x, y, z. Thủ tục Write(x, y, z) in gía trị của x, y, z . Thủ tục Gotoxy(x, y)định vị con trỏ vào toạ độ cột x, dòng y trên màn hình. Thủ tục Clrscr thì chỉđơn giản là xóa màn hình .v.v. . Như vậy thủ tục có thể không có tham sốhoặc có từ một đến nhiề? tham số. Khi gọi thực hiện một thủ tục, ta viết tên thủ tục đó và thay các tham sốhình thức bằng các tham số thực sự, kết thúc bằng dấu chấm phẩy ; . Ví dụ, nếu a, b là hai biến đã được khai báo trong chương trình thì đểnhập dữ liệu cho hai biến a, b ta viết : Readln(a, b); Ðể in biểu thức 4+5*6 lên màn hình, ta viết : Write(4+5*6); Ðể đặt con trỏ vào vị trí cột 8, dòng 2 trên màn hình ta viết: Gotoxy(8, 2); Như vậy, lời gọi thủ tục là một lệnh đơn giản. Do thủ tục không trả về gía trị nào thông qua tên gọi của nó nên tên thủtục không thể đứng trong các biểu thức. Ví dụ các lệnh sau là sai cú pháp: St1 := Delete( St, 1, 1); Write( Val(‘123’, x, k) );vì Delete và Val là hai thủ tục chứ không phải là hai hàm. Ngoài các thủ tục chuẩn đã có sẵn trong Turbo Pascal, người thảo chươngcó thể tự xây dựng các thủ tục mới nhưng phải khai báo theo cú pháp sau: Procedure Tênthủtục( tênthamsố : kiểuthamsố ) ; { Các khai báo Const, Type, Var dùng trong thủ tục } Begin {Các lệnh của thủ tục } End; Ðoạn khai báo trên phải được đặt sau phầ? khai báo VAR và trướcBEGIN của thân chương trình chính. 12.3.2. Các ví dụ về thủ tục : Ví dụ 12.4:Giải và biện luận phương trình ax+b= 0 với a=4.5, b=13.5, và với các cặp a,b tạo bởi a=-1, a=0, a=1, b=0, b=1, b=2. Ta viết một thủ tục có nhiệm vụ giải và biện luận phương trình ax+b=0với hai tham số a, b tùy ý, và gọi thực hiện thủ tục này 10 lần ứng với cácgía trị cụ thể của a, b cho trong gỉa thiết. PROGRAM VIDU12_4;{ Giải phương trình AX+B=0 bằng thủ tục}Uses Crt;Var i, j: integer;Procedure Giaipt (a, b: Real);Begin Writeln( -Giải phương trình : , a:4:1, x+ , b:4:1, =0); If a0 then Writeln( Nghiem x=, -b/a:4:2) else if b0 then Writeln( Vo nghiem) else Writeln( Vo so nghiem);End;BEGIN { Thân chương trình chính } Clrscr; Writeln( KẾT QỦA GIẢI CÁC P.TRÌNH: ) ; Giaipt (4.5, 13.5); For i:=-1 to 1 do For j:=0 to 2 do Giaipt (i, j); Readln; END. Chạy Chép tập tin nguồn Khi gọi Giaipt (4.5, 13.5); là ta yêu cầu máy thực hiện thủ tục Giaipt vớitham số a=4.5 và b=13.5. Hai vòng lặp For xác định 9 cặp gía trị i, j cụ thể,và cứ mỗi lần như vậy lại gọi thực hiện thủ tục Giaipt với tham số a=i, b=jtương ứng : For i:=-1 to 1 do For j:=0 to 2 do Giaipt (i, j); Do tách riêng việc giải phương trình ax+b=0 thành một thủ tục nên sốlệnh trong thân chương trình chính giảm đi, nổi bật được thuật toán chínhcủa chương trình. Ở đây, ta chọn chương trình con Giaipt là thủ tục chứ không phải là hàmvì phương trình ax+b=0 có thể vô nghiệm hoặc vô số nghiệm (khi a=0).Thành ra ta không tìm được một gía trị thích hợp để gán cho tên hàm. Vậykết qủa giải phương trình phải xuất ra ngay trong chương trình con, đó làcông việc của thủ tục. Ví dụ 12.5:Nhập vào một mảng A1, A2,...,An, sắp xếp dãy tăng rồi in dãy lên màn hình.Có thể chia bài toán ra thành ba công việc lớn sau: a-Nhập dãy A1, A2,...,An, b-Sắp xếp dãy A1, A2,...,An, tăng c-In dãy A1, A2,...,An, lên màn hình Mỗi công việc a, b, c thuộc về một lãnh vực riêng nên có thể xây dựngthành các thủ tục độc lập với nhau. Ðể liên kết chúng lại, trong chương trìnhchính, ta chỉ cần gọi tên các thủ tục này theo thứ tự a, b, c với các tham sốthích hợp. Khi thiết kế thủ tục sắp xếp dãy tăng, có một việc phải làm nhiều lần làđổi chỗ hai phần tử A[i] và A[j] nên cũng có thể xây dựng thành một thủ tụcgọi tên là Ðổi chỗ, nó lại là chương trình con của thủ tục sắp xếp. Chươngtrình cụ thể như sau:PROGRAM VIDU12_5; { Sắp xếp dãy A tăng dần bằng thủ tục }Uses CRT;Type Kmang = Array[1..20] of Real;Var N : Integer; A: Kmang;Procedure Nhap(Var X: Kmang ; N: Integer ; ten: Char ); Var i : Integer; Begin For i:=1 to N do { nhập mảng X } begin Write(‘Nhập ‘, ten , ‘[‘ , i , ‘]: ‘); Readln(X[i]); end; End;Procedure SapTang( Var X : Kmang ; N: Integer); { Sắp dãy X tăng} Var i, j : Integer; Procedure Doicho(Var u, v : Real) ; { hoán vị các gía trị của u và v} Var Tam: Real; Begin Tam:=u; u:=v; v:=Tam; End; { Hết Doicho } Begin { Vào Saptang } For i:=1 to N-1 do For j:=i+1 to N do If X[i]>X[j] then Doicho(X[i], X[j]) ; End; { Het Saptang }Procedure Inday( Chugiai: String ; X: Kmang ; N: Integer); { In dãy X lên màn hình } Var i : Integer; Begin Writeln(Chugiai); For i:=1 to N do write(X[i]:5:1); writeln; End;BEGIN { chương trình chính } Clrscr; Repeat Write(‘ Nhập số phần tử N : ‘); Readln(N); Until (N>0) and ( N SapTang( A, N); Inday( ‘ Dãy đ ...
Nội dung trích xuất từ tài liệu:
THỦ TỤC (Procedure) THỦ TỤC (Procedure) 12.3.1. Thủ tục và cách khai báo: Giống như hàm, thủ tục cũng là một chương trình con, song thủ tục kháchàm ở chỗ: nếu như hàm luôn trả về một gía trị duy nhất thông qua tên hàmthì thủ tục lại không trả về?một gía trị nào thông qua tên gọi của nó. Một thủ tục thực chất là một nhóm các lệnh được sắp xếp theo một trìnhtự nhất định có tác dụng giải quyết một nhiệm vụ cụ thể, và được đặt một cáitên để gọi. Trong đời sống hàng ngày, ta thường nghe nói đến thủ tục nhậphọc của sinh viên, thủ tục mua bán nhà đất, thủ tục xuất cảnh, thủ tục nhậpcảnh,.v.v. mỗi thủ tục đó là một dãy có trình tự các công việc phải làm. Thủ tục Readln(x, y, z) có nhiệm vụ nhập các gía trị từ bàn phím cho cácbiến x, y, z. Thủ tục Write(x, y, z) in gía trị của x, y, z . Thủ tục Gotoxy(x, y)định vị con trỏ vào toạ độ cột x, dòng y trên màn hình. Thủ tục Clrscr thì chỉđơn giản là xóa màn hình .v.v. . Như vậy thủ tục có thể không có tham sốhoặc có từ một đến nhiề? tham số. Khi gọi thực hiện một thủ tục, ta viết tên thủ tục đó và thay các tham sốhình thức bằng các tham số thực sự, kết thúc bằng dấu chấm phẩy ; . Ví dụ, nếu a, b là hai biến đã được khai báo trong chương trình thì đểnhập dữ liệu cho hai biến a, b ta viết : Readln(a, b); Ðể in biểu thức 4+5*6 lên màn hình, ta viết : Write(4+5*6); Ðể đặt con trỏ vào vị trí cột 8, dòng 2 trên màn hình ta viết: Gotoxy(8, 2); Như vậy, lời gọi thủ tục là một lệnh đơn giản. Do thủ tục không trả về gía trị nào thông qua tên gọi của nó nên tên thủtục không thể đứng trong các biểu thức. Ví dụ các lệnh sau là sai cú pháp: St1 := Delete( St, 1, 1); Write( Val(‘123’, x, k) );vì Delete và Val là hai thủ tục chứ không phải là hai hàm. Ngoài các thủ tục chuẩn đã có sẵn trong Turbo Pascal, người thảo chươngcó thể tự xây dựng các thủ tục mới nhưng phải khai báo theo cú pháp sau: Procedure Tênthủtục( tênthamsố : kiểuthamsố ) ; { Các khai báo Const, Type, Var dùng trong thủ tục } Begin {Các lệnh của thủ tục } End; Ðoạn khai báo trên phải được đặt sau phầ? khai báo VAR và trướcBEGIN của thân chương trình chính. 12.3.2. Các ví dụ về thủ tục : Ví dụ 12.4:Giải và biện luận phương trình ax+b= 0 với a=4.5, b=13.5, và với các cặp a,b tạo bởi a=-1, a=0, a=1, b=0, b=1, b=2. Ta viết một thủ tục có nhiệm vụ giải và biện luận phương trình ax+b=0với hai tham số a, b tùy ý, và gọi thực hiện thủ tục này 10 lần ứng với cácgía trị cụ thể của a, b cho trong gỉa thiết. PROGRAM VIDU12_4;{ Giải phương trình AX+B=0 bằng thủ tục}Uses Crt;Var i, j: integer;Procedure Giaipt (a, b: Real);Begin Writeln( -Giải phương trình : , a:4:1, x+ , b:4:1, =0); If a0 then Writeln( Nghiem x=, -b/a:4:2) else if b0 then Writeln( Vo nghiem) else Writeln( Vo so nghiem);End;BEGIN { Thân chương trình chính } Clrscr; Writeln( KẾT QỦA GIẢI CÁC P.TRÌNH: ) ; Giaipt (4.5, 13.5); For i:=-1 to 1 do For j:=0 to 2 do Giaipt (i, j); Readln; END. Chạy Chép tập tin nguồn Khi gọi Giaipt (4.5, 13.5); là ta yêu cầu máy thực hiện thủ tục Giaipt vớitham số a=4.5 và b=13.5. Hai vòng lặp For xác định 9 cặp gía trị i, j cụ thể,và cứ mỗi lần như vậy lại gọi thực hiện thủ tục Giaipt với tham số a=i, b=jtương ứng : For i:=-1 to 1 do For j:=0 to 2 do Giaipt (i, j); Do tách riêng việc giải phương trình ax+b=0 thành một thủ tục nên sốlệnh trong thân chương trình chính giảm đi, nổi bật được thuật toán chínhcủa chương trình. Ở đây, ta chọn chương trình con Giaipt là thủ tục chứ không phải là hàmvì phương trình ax+b=0 có thể vô nghiệm hoặc vô số nghiệm (khi a=0).Thành ra ta không tìm được một gía trị thích hợp để gán cho tên hàm. Vậykết qủa giải phương trình phải xuất ra ngay trong chương trình con, đó làcông việc của thủ tục. Ví dụ 12.5:Nhập vào một mảng A1, A2,...,An, sắp xếp dãy tăng rồi in dãy lên màn hình.Có thể chia bài toán ra thành ba công việc lớn sau: a-Nhập dãy A1, A2,...,An, b-Sắp xếp dãy A1, A2,...,An, tăng c-In dãy A1, A2,...,An, lên màn hình Mỗi công việc a, b, c thuộc về một lãnh vực riêng nên có thể xây dựngthành các thủ tục độc lập với nhau. Ðể liên kết chúng lại, trong chương trìnhchính, ta chỉ cần gọi tên các thủ tục này theo thứ tự a, b, c với các tham sốthích hợp. Khi thiết kế thủ tục sắp xếp dãy tăng, có một việc phải làm nhiều lần làđổi chỗ hai phần tử A[i] và A[j] nên cũng có thể xây dựng thành một thủ tụcgọi tên là Ðổi chỗ, nó lại là chương trình con của thủ tục sắp xếp. Chươngtrình cụ thể như sau:PROGRAM VIDU12_5; { Sắp xếp dãy A tăng dần bằng thủ tục }Uses CRT;Type Kmang = Array[1..20] of Real;Var N : Integer; A: Kmang;Procedure Nhap(Var X: Kmang ; N: Integer ; ten: Char ); Var i : Integer; Begin For i:=1 to N do { nhập mảng X } begin Write(‘Nhập ‘, ten , ‘[‘ , i , ‘]: ‘); Readln(X[i]); end; End;Procedure SapTang( Var X : Kmang ; N: Integer); { Sắp dãy X tăng} Var i, j : Integer; Procedure Doicho(Var u, v : Real) ; { hoán vị các gía trị của u và v} Var Tam: Real; Begin Tam:=u; u:=v; v:=Tam; End; { Hết Doicho } Begin { Vào Saptang } For i:=1 to N-1 do For j:=i+1 to N do If X[i]>X[j] then Doicho(X[i], X[j]) ; End; { Het Saptang }Procedure Inday( Chugiai: String ; X: Kmang ; N: Integer); { In dãy X lên màn hình } Var i : Integer; Begin Writeln(Chugiai); For i:=1 to N do write(X[i]:5:1); writeln; End;BEGIN { chương trình chính } Clrscr; Repeat Write(‘ Nhập số phần tử N : ‘); Readln(N); Until (N>0) and ( N SapTang( A, N); Inday( ‘ Dãy đ ...
Tìm kiếm theo từ khóa liên quan:
Tin học căn bản giáo trình tin học hướng dẫn học tin học bài tập tin học tài liệu tin họcGợi ý tài liệu liên quan:
-
Giáo trình Tin học (Trình độ: Trung cấp nghề) - Trường Trung cấp nghề Củ Chi
268 trang 334 4 0 -
122 trang 214 0 0
-
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 213 0 0 -
Xử lý tình trạng máy tính khởi động/tắt chậm
4 trang 211 0 0 -
UltraISO chương trình ghi đĩa, tạo ổ đĩa ảo nhỏ gọn
10 trang 203 0 0 -
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 198 0 0 -
Giới thiệu tổng quan về SharePoint 2007
41 trang 172 0 0 -
TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KHAI BÁO HẢI QUAN ĐIỆN TỬ phần 1
18 trang 158 0 0 -
Memory-RAM - Một số thuật ngữ và kỹ thuật tin học
5 trang 156 0 0 -
Hướng dẫn tạo file ghost và bung ghost
12 trang 153 0 0