Hàm Thủ tục Pascal

Đối số là một biến được cấp cho một thủ tục hoặc một hàm cần nó để thực hiện nhiệm vụ đã định. Đưa đối số cho một thủ tục hoặc hàm được gọi là chuyển chúng

Để khai báo hoặc xác định một thủ tục hoặc một hàm nhận một đối số, hãy nhập tên của đối số giữa các dấu ngoặc đơn theo sau tên của thủ tục hoặc hàm đó. Giữa các dấu ngoặc đơn này, tên của đối số phải được theo sau bởi loại của nó như thể nó được khai báo thường xuyên. Đây là một ví dụ

Procedure ShowMe(Length : Double);

Để khai báo một thủ tục hoặc một hàm nhận nhiều hơn một đối số, hãy nhập từng đối số và kiểu dữ liệu của nó, sau đó là dấu chấm phẩy ngoại trừ đối số cuối cùng. Đây là một ví dụ

Procedure ProcessRectangle(Length : Double; Width : Double);

Nếu thủ tục hoặc hàm nhận hai hoặc nhiều đối số cùng loại, bạn có thể nhập từng đối số cùng loại, phân tách chúng bằng dấu phẩy. Đây là một ví dụ

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;

Trong phần thân của thủ tục hoặc hàm, hãy xác định hành vi của phép gán

Procedure ProcessRectangle(Length : Double; Width : Double);
var
	Perimeter : Double;
	Area : Double;
begin
	Perimeter := 2 * (Length + Width);
	Area := Length * Width;

	writeln('The perimeter of the rectangle is ', Perimeter);
	writeln('The area of the rectangle is ', Area);
end;

Khi chúng tôi xem xét trước đó về cách gọi một thủ tục hoặc một hàm đơn giản, chúng tôi thấy rằng bạn chỉ có thể nhập tên của thủ tục hoặc hàm khi bạn cần. Quy tắc này không được áp dụng nghiêm ngặt khi thủ tục hoặc hàm nhận ít nhất một đối số

Khi một thủ tục hoặc hàm nhận ít nhất một đối số, thì đối số đó là bắt buộc khi gọi thủ tục hoặc hàm đó. nếu bạn không cung cấp giá trị cho đối số, chương trình sẽ không biên dịch và bạn sẽ gặp lỗi. Ví dụ, chương trình sau sẽ không biên dịch

program Project1;

{$APPTYPE CONSOLE}

Procedure StopHere(GoodBye: string);
begin
	write(GoodBye);
	readln;
end;

begin
	StopHere;
end.

Chương trình này không hoạt động vì thủ tục StopHere nhận một đối số nhưng khi gọi nó thì đối số không được truyền theo yêu cầu. Khi gọi một thủ tục hoặc hàm nhận một đối số, hãy cung cấp một giá trị mà thủ tục hoặc hàm đó sẽ sử dụng giữa các dấu ngoặc đơn của nó. Đối số có thể được truyền dưới dạng một giá trị không đổi. Đây là một ví dụ

program Project1;

{$APPTYPE CONSOLE}

Procedure StopHere(GoodBye: string);
begin
	write(GoodBye);
	readln;
end;

begin
	StopHere('Press any key to continue');
end.

Bạn cũng có thể truyền đối số bằng biến được khai báo và có thể được khởi tạo. Đây là một ví dụ

program Project1;

{$APPTYPE CONSOLE}

Procedure StopHere(GoodBye: string);
begin
write(GoodBye);
readln;
end;

Function TwoTimes(Nbr: Double) : Double;
begin
Result := Nbr * 2;
end;

var
Number: Double;
Multiplied: Double;
begin
Number := 252.88;
Multiplied := TwoTimes(Number);
Writeln(Multiplied:2:2);

StopHere('Press any key to continue');
end.

4. 5. 2 đối số theo giá trị

Có hai cách một đối số được truyền cho một thủ tục hoặc một hàm. theo giá trị hoặc theo tham chiếu. Cách thông thường nhất để truyền đối số cho thủ tục hoặc hàm là theo giá trị. Đó là cách chúng ta đã sử dụng đối số trên các chức năng cho đến nay

Chúng ta đã thấy trước đó rằng, để sử dụng một hàm bên trong một hàm khác, nghĩa là gọi một hàm từ một hàm khác, hãy chỉ định tên của hàm và danh sách các đối số của nó, nếu có, bên trong dấu ngoặc đơn. Hãy xem xét công thức sau để tính số tiền thuế áp dụng cho một mặt hàng trong cửa hàng bách hóa;

Công thức tính giá cuối cùng của một mặt hàng là

Giá cuối cùng = Giá mặt hàng + Số tiền thuế

Đây là một ví dụ về việc truyền đối số theo giá trị, giống như cách chúng ta đã làm cho đến nay.  

program Project1;

{$APPTYPE CONSOLE}

function PurchasePrice(ItemPrice, TaxRate: double) : double;
var
	Price: Double;
begin
	Price := ItemPrice + (ItemPrice * TaxRate / 100);
	Result := Price;
end;

var
	ItemPrice, TaxRate: Double;
begin
	Write('Enter the price of the item: ');
	Readln(ItemPrice);
	Write('Enter the tax rate: ');
	Readln(TaxRate);

	Writeln;
	Writeln('The final price is: $', PurchasePrice(ItemPrice, TaxRate):2:2);

	write('Press any key to continue');
	readln;
end.

Đây là một ví dụ về chạy chương trình.  

________số 8_______

Khi bạn khai báo một biến trong chương trình, trình biên dịch sẽ dành một khoảng trống cho biến đó. Nếu bạn cần sử dụng biến đó ở đâu đó trong chương trình của mình, bạn gọi nó và tận dụng giá trị của nó. Có hai vấn đề chính liên quan đến một biến. giá trị và vị trí của nó trong bộ nhớ. Hãy tưởng tượng bạn khai báo một biến có tên là Biến1

Vị trí của một biến trong bộ nhớ được gọi là địa chỉ của nó

Nếu bạn cung cấp đối số bằng tên của nó, trình biên dịch chỉ tạo một bản sao giá trị của đối số và đưa nó vào hàm gọi. Mặc dù hàm gọi nhận giá trị của đối số và có thể sử dụng nó theo bất kỳ cách nào, nhưng nó không thể (vĩnh viễn) thay đổi nó. Object Pascal cho phép hàm gọi sửa đổi giá trị của đối số đã truyền nếu bạn thấy cần thiết. Nếu bạn muốn hàm gọi sửa đổi giá trị của đối số được cung cấp và trả về giá trị đã sửa đổi, bạn nên chuyển đối số dưới dạng tham chiếu

Để truyền đối số dưới dạng tham chiếu, khi khai báo hàm, đặt trước tên đối số bằng từ khóa var. Bạn có thể chuyển một hoặc nhiều đối số làm tham chiếu trong chương trình hoặc chuyển tất cả các đối số làm tham chiếu. Quyết định về việc (các) đối số nào sẽ được chuyển theo giá trị hoặc theo tham chiếu dựa trên việc bạn có muốn hàm được gọi sửa đổi đối số và thay đổi vĩnh viễn giá trị của nó hay không

Dưới đây là các ví dụ về việc chuyển một số đối số theo tham chiếu.  

procedure Area(var Side: Double); // The argument is passed by reference

function Decision(var Answer: Char; Age: Integer) : Boolean; // One argument is passed by reference

// All arguments are passed by reference
function Purchase(var DiscountPrice, NewDiscount: Single; var Commission: Char) : Single;

Bạn thêm từ khóa var khi khai báo một hàm và khi định nghĩa nó. Khi gọi thủ tục hoặc hàm, chỉ cung cấp tên của (các) đối số được tham chiếu. Ở trên sẽ được gọi với.  

Procedure ProcessRectangle(Length : Double; Width : Double);
0

Thông thường, bạn sẽ cần biết điều gì xảy ra với giá trị được chuyển đến hàm gọi vì phần còn lại của chương trình có thể phụ thuộc vào giá trị đó. Hãy tưởng tượng rằng bạn viết một hàm tính toán tiền lương hàng tuần của nhân viên với tổng số giờ hàng tuần và tỷ lệ hàng giờ. Chương trình bắt đầu sẽ như sau

Procedure ProcessRectangle(Length : Double; Width : Double);
1

Nếu bạn kiểm tra chương trình bằng cách gõ 32 cho giờ hàng tuần và 6. 45 cho tiền lương, bạn sẽ nhận thấy các giá trị hàng tuần là như nhau

Procedure ProcessRectangle(Length : Double; Width : Double);
2

Hãy tưởng tượng rằng nhân viên tuyên bố đã làm việc 42 giờ thay vì số giờ hàng tuần đã qua. Bạn có thể tạo chức năng sau để tìm hiểu

Procedure ProcessRectangle(Length : Double; Width : Double);
3

Nếu bạn kiểm tra chương trình với giá trị số giờ hàng tuần là 35. 50 và lương 8. 50, bạn sẽ nhận thấy rằng tiền lương hàng tuần khác bên trong hàm Earnings() nhưng được giữ nguyên trong phần chính của chương trình, trước và sau hàm Earnings().  

Procedure ProcessRectangle(Length : Double; Width : Double);
4

Lưu ý rằng mức lương hàng tuần là như nhau trước và sau khi gọi thủ tục Eranings. Nếu bạn muốn một hàm gọi sửa đổi giá trị của một đối số, bạn nên cung cấp tham chiếu của nó chứ không phải giá trị của nó. Bạn có thể thay đổi chức năng như sau.  

Procedure ProcessRectangle(Length : Double; Width : Double);
5

Đây là một thử nghiệm mới của chương trình

Procedure ProcessRectangle(Length : Double; Width : Double);
6

Lưu ý rằng, lần này, khi quy trình Thu nhập đã được gọi, lương hàng tuần, có tính toán liên quan đến đối số ThisWeek được chuyển làm tham chiếu, có giá trị thay đổi

Chúng tôi đã đề cập trước đó rằng, bất cứ khi nào một hàm nhận một đối số, thì đối số đó là bắt buộc. Nếu hàm gọi không cung cấp đối số (bắt buộc), trình biên dịch sẽ báo lỗi. Hãy tưởng tượng bạn viết một hàm sẽ được sử dụng để tính giá cuối cùng của một mặt hàng sau khi giảm giá. Hàm sẽ cần tỷ lệ chiết khấu để thực hiện tính toán. Một chức năng như vậy có thể trông như thế này

Procedure ProcessRectangle(Length : Double; Width : Double);
7

Vì chức năng này yêu cầu một đối số, nếu bạn không cung cấp nó, chương trình sau sẽ không biên dịch.  

Procedure ProcessRectangle(Length : Double; Width : Double);
8

Đây là một ví dụ về chạy chương trình

Procedure ProcessRectangle(Length : Double; Width : Double);
9

Hầu hết thời gian, một chức năng như chức năng của chúng tôi sẽ sử dụng lặp đi lặp lại cùng một tỷ lệ chiết khấu. Do đó, thay vì cung cấp một đối số mọi lúc, Object Pascal cho phép bạn xác định một đối số mà giá trị của nó sẽ được sử dụng bất cứ khi nào hàm không được cung cấp đối số

Để gán giá trị mặc định cho một đối số, khi khai báo hàm, hãy nhập tên của đối số theo sau là toán tử dấu hai chấm �. �, theo sau là kiểu dữ liệu của đối số, theo sau là toán tử đẳng thức và theo sau là giá trị mặc định mong muốn. Hàm TínhNetPrice(), với giá trị mặc định, có thể được định nghĩa như sau.  

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
0

Khi gọi thủ tục, bạn có thể bỏ qua việc truyền giá trị cho đối số. Nếu bạn không vượt qua nó, giá trị mặc định sẽ được sử dụng. Do đó, bạn chỉ có thể gọi thủ tục như sau.  

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
1

Nếu một thủ tục hoặc một hàm nhận nhiều hơn một đối số, bạn có thể cung cấp một đối số mặc định cho từng đối số và chọn đối số nào sẽ có giá trị mặc định. Nếu bạn muốn tất cả các đối số đều có giá trị mặc định, khi định nghĩa thủ tục hoặc hàm, hãy gõ dấu = cho mỗi đối số. Đây là một ví dụ.  

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
2

Đây là kết quả được tạo ra.  

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
3

Nếu một hàm nhận nhiều hơn một đối số và bạn muốn cung cấp các giá trị mặc định cho các tham số đó thì thứ tự xuất hiện của các đối số là rất quan trọng

1/ Nếu một hàm nhận hai đối số, bạn có thể khai báo nó với các giá trị mặc định. Chúng tôi đã biết làm thế nào để làm điều đó. Nếu bạn chỉ muốn cung cấp giá trị mặc định cho một trong các đối số, thì đối số có giá trị mặc định phải là đối số thứ hai trong danh sách. Đây là một ví dụ.  

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
4

Khi gọi một hàm như vậy, nếu bạn chỉ cung cấp một đối số, trình biên dịch sẽ gán giá trị của nó cho tham số đầu tiên trong danh sách và bỏ qua việc gán giá trị cho tham số thứ hai.  

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
5Đây là một ví dụ về việc chạy chương trình.
procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
6

Nếu bạn định nghĩa hàm và gán giá trị mặc định cho đối số đầu tiên, nếu bạn chỉ cung cấp một đối số khi gọi hàm, bạn sẽ gặp lỗi

2/ Nếu hàm nhận nhiều hơn hai đối số và bạn chỉ muốn một số đối số đó có giá trị mặc định, thì các đối số có giá trị mặc định phải ở cuối danh sách. Bất kể có bao nhiêu đối số sẽ có hoặc không có giá trị mặc định, hãy bắt đầu danh sách các đối số mà không có những đối số không sử dụng giá trị mặc định.  

Một chương trình có thể bao gồm rất nhiều tên đại diện cho các biến, thủ tục và hàm thuộc nhiều loại khác nhau. Trình biên dịch không cho phép hai thực thể dùng chung một tên. Ví dụ 2 biến không được trùng tên trong cùng 1 hàm. Mặc dù hai chức năng nên có tên duy nhất trong cùng một chương trình, Object Pascal cho phép bạn sử dụng cùng một tên cho các chức năng khác nhau của cùng một chương trình theo các quy tắc nhất định. Khả năng có nhiều hàm khác nhau có cùng tên trong cùng một chương trình được gọi là nạp chồng hàm

Để thực hiện nạp chồng hàm, đảm bảo rằng mỗi thủ tục hoặc hàm có một số khác nhau hoặc các loại đối số khác nhau. Khi khai báo hoặc định nghĩa thủ tục hoặc hàm, hãy nhập từ khóa quá tải ở cuối phần khai báo của nó. Khi gọi thủ tục hoặc hàm, trình biên dịch sẽ định vị thủ tục hoặc hàm phù hợp dựa trên số đối số bạn cung cấp. Ví dụ: bạn có thể tạo một hàm có tên là Diện tích() nhưng xác định hàm này để tính diện tích của các hình dạng khác nhau.  

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
7

Đây là kết quả chạy chương trình

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
8

Để tính mômen quán tính đối với trục X, hãy thay đổi tệp như sau

Khi một thủ tục nhận được một đối số, nó sẽ thực hiện một trong hai hành động liên quan đến giá trị của đối số; . Hãy xem xét chức năng Hai lần sau

procedure MbrRegist(Gender, Category: Char; Fee: Double);
begin

end;
9

Nếu bạn biết rằng quy trình không được phép thay đổi giá trị của một đối số, bạn nên cho trình biên dịch biết. Đây là một biện pháp bảo vệ phục vụ ít nhất hai mục đích. Đầu tiên, trình biên dịch sẽ đảm bảo rằng đối số được cung cấp vẫn nguyên vẹn; . Thứ hai, điều này tăng tốc độ thực thi

Để cho trình biên dịch biết rằng giá trị của một đối số phải không đổi, hãy nhập từ khóa const ở bên trái tên của đối số. Ví dụ, hàm Twice ở trên không làm thay đổi giá trị của đối số của nó. Do đó, đối số có thể được truyền dưới dạng hằng số và điều này sẽ được thực hiện như sau

Procedure ProcessRectangle(Length : Double; Width : Double);
var
	Perimeter : Double;
	Area : Double;
begin
	Perimeter := 2 * (Length + Width);
	Area := Length * Width;

	writeln('The perimeter of the rectangle is ', Perimeter);
	writeln('The area of the rectangle is ', Area);
end;
0
Procedure ProcessRectangle(Length : Double; Width : Double);
var
	Perimeter : Double;
	Area : Double;
begin
	Perimeter := 2 * (Length + Width);
	Area := Length * Width;

	writeln('The perimeter of the rectangle is ', Perimeter);
	writeln('The area of the rectangle is ', Area);
end;
1

Theo cách tương tự, bạn có thể chuyển bao nhiêu đối số liên tục mà bạn cho là cần thiết cho một thói quen. Bạn chỉ có thể tạo một hoặc nhiều đối số thành hằng số và không có thứ tự nào có thể tạo đối số không đổi. Đây là một hàm khác có hai đối số không đổi

Thủ tục và hàm trong Pascal là gì?

Pascal cung cấp hai loại chương trình con − Hàm − các chương trình con này trả về một giá trị. Quy trình − các chương trình con này không trả về giá trị trực tiếp .

Các chức năng của máy Pascal là gì?

Mục đích chính hoặc chủ yếu của máy tính pascal là để cộng hoặc trừ trực tiếp hai trong số các số và cũng để thực hiện phép nhân và chia các số giống nhau thông qua phép cộng và phép tính lặp đi lặp lại. . Máy tính hoặc máy tính Pascal được làm bằng kim loại. . The Pascal calculator or machine is made up of metal.

Chức năng của ngôn ngữ Pascal là gì?

Pascal là ngôn ngữ lập trình mệnh lệnh và thủ tục, do Niklaus Wirth thiết kế như một ngôn ngữ nhỏ, hiệu quả nhằm khuyến khích thực hành lập trình tốt bằng cách sử dụng lập trình có cấu trúc và cấu trúc dữ liệu.

Kết quả hàm trong Pascal là gì?

Trong Pascal, hàm là một chương trình con trả về một giá trị. Giá trị mà hàm trả về được gọi là kết quả của hàm. Có ba cách để đặt kết quả của hàm, tùy thuộc vào trình biên dịch và phiên bản Pascal. Sử dụng biến Kết quả.