CHƯƠNG TRÌNH CON 1 Lợi ích của dùng chương trình con (CTC) – Chương trình có nhiều phân đoạn mỗi phân đoạn thực hiện một chức năng nào đó => CTC là một đoạn chương trình thực hiện trọn vẹn hay một chứ.
CHƯƠNG TRÌNH CON Lợi ích dùng chương trình (CTC) – Chương trình có nhiều phân đoạn phân đoạn thực chức => CTC đoạn chương trình thực trọn vẹn hay chức - Trong Turbo Pascal, có dạng CTC: Hàm Thủ tục Hàm thủ tục CTC, hàm khác thủ tục chỗ hàm trả giá trị cho lệnh gọi thơng qua tên hàm cịn thủ tục không Khai báo CTC – Nhắc lại cấu trúc chương trình: PROGRAM Tên_chương_trình; { Tên chương trình} USES ; {Khai báo thư viện} CONST ;{Khai báo hằng} TYPE ;{Khai báo kiểu} VAR ;{Khai báo biến} Khai báo CTC BEGIN {Chương trình chính} ; END Như phần khai báo CTC nằm phần cuối phần khai báo a Khai báo lời gọi hàm – Khai báo: FUNCTION (Danh sách tham số):; [Khai báo Const, Type, Var] BEGIN ; :=; END; Chú ý: ln có phép gán tên hàm cho giá trị để hàm trả giá trị gọi Ví dụ: tính tổng số x y Function tong(x,y:integer):integer; {Do có giá trị trả về} var s:integer; begin s:=x+y; tong:=s; end; – Lời gọi hàm: (danh sách tham số thực); Ví dụ: tong(4,5); b Khai báo lời gọi thủ tục – Khai báo: PROCEDURE (Danh sách tham số);{khơng có giá trị trả về} [Khai báo Const, Type, Var] BEGIN ; END; Ví dụ: Procedure inso(n:integer); var i:inteher; Begin for i:=1 to n write(i:5); end; – Lời gọi thủ tục (danh sách tham số thực); Ví dụ: inso(6); Biến toàn cục biến cục – Biến toàn cục biến khai báo chương trình Các biến co thẻ dùng nơi chương trình tồn suốt thời gian làm việc chương trình – Biến cục (biến địa phương) biến khai báo CTC Các biến sử dụng phạm vi ctc mà khai báo Sau kết thức ctc biến khơng cịn tồn Ví dụ: PROGRAM vidu; Var a,b,c:integer; {3 biến toàn cục} PROCEDURE thutuc(n:integer);{n biến cục bộ} var i:integer; {i biến cục bộ} begin for i:=1 to 10 writeln(i); end; BEGIN a:=5;b:=6;c:=8; thutuc( a); thutuc( b); thutuc( c); readln; END – Trong trường họp biến cục trùng tên với biến tồn cục máy khơng bị nhầm lẫn mà thực biến cục Biến tồn cục khơng bị ảnh hưởng Cách truyền tham số chương trình CTC khơng cần có tham số (sau tên ctc) không dùng đến chúng dùng trực tiếp biến toàn cục – Khi truyền tham số tham số lời gọi ctc phải thứ tự kiểu tương ứng với khai báo ctc Ví dụ: Procedure inso(a:integer; ch:char); begin {các lệnh CTC} end; Khi gọi: inso(13,'a'); {lời gọi inso('a',13); {loi goi sai} inso(13);{lời gọi sai} – Tham số hình thức (đối) tham số sau tên hàm thủ tục khai báo – Tham số thực tham số sau tên hàm thủ tục lời gọi – Tham biến: tham số khai báo sau từ khóa var Các tham số thực phải biến khơng giá trị Tham biến thay đổi CTC sau khỏi CTC giữ giá trị thay đổi – Tham trị: tham số khia báo mà khơng đứng sau từ khóa var Các tham số thực giá trị, hằng, biến Tham trị thay đổi ctc sau kết thúc ctc giá trị trở ban đầu – Các tham số hàm tham trị, tham số thủ tục tham trị tham biến Phân biệt cách sử dụng hàm thủ tục Hàm khác thủ tục chỗ hàm trả giá trị cho lệnh gọi thơng qua tên hàm cịn thủ tục khơng *Dùng hàm – Kết tốn trả giá trị (kiểu vô hướng, kiểu string kiểu trỏ) – Lời gọi CTC cần nằm biểu thức tính tốn *Dùng thủ tục – Kết tốn khơng trả giá trị trả nhiều giá trị trả kiểu liệu có cấu trúc (Array, Record, File) – Lời gọi CTC không nằm biểu thức tính tốn Chú ý: Nếu cơng việc làm hàm chắn làm thủ tục {tuy nhiên phức tạp dùng hàm} chương trình làm thủ tục chưa ta làm hàm Đối với Borland Pascal 7.0 ta gọi hàm gọi thủ tục Không thiết phải lấy giá trị trả Để thực điều menu Options > Compiler cần khai báo cú pháp mở rộng (Extended syntax), chương trình cần có dẫn hướng biên dịch {$ X+} Nếu không, biên dịch (gõ F9) Pascal thông báo lỗi "Error 122: Invalid variable reference" Tính đệ quy chương trình Một CTC Pascal gọi Một lời gọi gọi lời gọi đệ quy Ta xét ví dụ sau: Nhập vào số n tính n! Ta biết n! = n =0 trường hợp n>=1 ta có n!=n.(n-1)! Hàm tính n! function giai_thua(n:integer):longint; begin if n=0 then giai_thua:=1 else giai_thua:=n*giai_thua(n-1); end; – Lưu ý: + Khi sử dụng đệ quy phải có điều kiện kết thúc đệ quy (trường hợp suy biến) Trong ví dụ ta xét điều kiện kết thúc đệ quy n=0 Nếu khơng có điều kiện kết thúc chương trình ta lặp vơ hạn + Ln có lời gọi đệ quy, trường hợp lời gọi giai_thua(n1); ... Biến toàn cục biến cục – Biến toàn cục biến khai báo chương trình Các biến co thẻ dùng nơi chương trình tồn suốt thời gian làm việc chương trình – Biến cục (biến địa phương) biến khai báo CTC... lệnh gọi thông qua tên hàm cịn thủ tục khơng *Dùng hàm – Kết toán trả giá trị (kiểu vô hướng, kiểu string kiểu trỏ) – Lời gọi CTC cần nằm biểu thức tính toán *Dùng thủ tục – Kết toán không trả giá... khai báo sau từ khóa var Các tham số thực phải biến không giá trị Tham biến thay đổi CTC sau khỏi CTC giữ giá trị thay đổi – Tham trị: tham số khia báo mà khơng đứng sau từ khóa var Các tham