Home > Pascal > Pascal căn bản > Tạo function trong Pascal
Cần 2 bạn dịch bài về C#, Winform, .NET ... nói chung là viết bài về các công nghệ sử dụng code C#. Yêu cầu phải có kiến thức nên tảng lĩnh vực bạn chọn, nhuận bút 50k / bài. inbox mình nếu có nhu cầu nhé.

Tạo function trong Pascal

Trong bài này ta sẽ học đến một phần rất hấp dẫn, đó là cách tạo function trong Pascal. Đây được xem là bài đầu tiên trong phần học Pascal nâng cao, nó còn được gọi là lập trình hướng cấu trúc.

Trước khi vào bài thì mình muốn nhắc lại rằng, từ bài 1 đến giờ chúng ta chỉ code trong một chương trình duy nhất có tên là program, đây được gọi là chương trình chính của ứng dụng. Vậy có cách nào để ta có thể tự tạo ra một chương trình riêng không? Hãy tham khảo function.

1. Tìm hiểu function trong Pascal

Function là một nhóm lệnh được gom lại và có phạm vi biên dịch từ BEGIN đến END nhằm thực hiện một công việc cụ thể nào đó. Function bắt buộc có lệnh return để trả về một giá trị nào đó.

Trong Pascal cũng có các function có sẵn như function AppendStr() dùng để nối thêm chuỗi, function New() dùng để cấp phát bộ nhớ động cho các biến.

Tạo function

Trong Pascal, tên function phải bắt đầu bằng chữ cái in hoa hoặc in thường, không được có khoảng trắng và các kỹ tự đặc biệt.

Mỗi function có các tham số, đây là những giá trị đầu vào của function.

function name(argument(s): type1; argument(s): type2; ...): function_type;
local declarations;

begin
   ...
   < statements >
   ...
   name:= expression;
end;

Trong đó:

  • Cấu trúc của function giống như chương trình chính mà bạn đã học.
  • name là tên của function
  • argument là các tham số truyền vào function
  • local declarations là những khai báo biến có trong function. Những biến này chỉ có tác dụng trong phạm vi của function này, từ là từ begin đến end;.
  • function_type là kiểu dữ liệu mà function trả về. Ví dụ hàm tính căn bậc hai thì sẽ trả về kiểu float.
  • name:= expression; bắt buộc phải có, đoạn này gán giá trị trả về cho function name.

Ví dụ: Viết function tìm giá trị lớn nhất của hai số truyền vào.

function max(num1, num2: integer): integer;

var
   (* biến result cục bộ *)
   result: integer;

begin
   if (num1 > num2) then
      result := num1
   
   else
      result := num2;
   max := result;
end;

Cách gọi function

Câu hỏi đặt ra là trong function trong pascal sẽ được đặt ở đâu? Và gọi như thế nào? Chúng ta cùng xem ví dụ dưới đây để hiểu rõ hơn nhé.

program FunctionFreetuts;

(*biến dùng trong chương trình chính*)
var
   a, b, ret : integer;

(*tao function *)
function max(num1, num2: integer): integer;
var
   (* bien cục bo, chi co tác dụng trong function max *)
   result: integer;

begin
   if (num1 > num2) then
      result := num1
   
   else
      result := num2;
   max := result;
end;

(*chuong tỉnh chinh*)
begin
   a := 100;
   b := 200;
   (* goi function da tao o tren *)
   ret := max(a, b);
   
   writeln( 'Gia tri lon nhat la : ', ret );
end.

Như vậy danh sách các function sẽ được đặt trên khối begin .. end của chương trình chính.

2. Ví dụ tạo function trong Pascal

Mình sẽ lấy một ví dụ nữa về cách tạo function trong Pascal để giúp các bạn hiểu rõ hơn.

Bài toán như sau: Viết chương trình kiểm tra một số có phải là số nguyên tố trong Pascal.

Để làm được bài này thì bạn phải hiểu rằng số nguyên tố là số chỉ chia hết cho 1 và chính nó. Các số như: 2, 3, 5, 7, 11, 13 ... chính là các số nguyên tố. Số nhỏ nhất là 2 và không có số lớn nhất.

Giả sử số cần kiểm tra là N, lúc này ta chỉ cần lặp từ 2 đến (N-1), nếu tồn tại số nào mà N chia hết thì N không phải là số nguyên tố, ngược lại thì đúng là SNT.

  • Mình sẽ đặt tên hàm là kiem_tra_nguyen_to()
  • Có một tham số truyền vào, chính là số N cần kiểm tra
  • Giá trị trả về là TRUE hoặc FALSE. TRUE => là SNT, FALSE => không phải SNT.

Ok, bài giải như sau:

program FunctionFreetuts;

(*biến dùng trong chương trình chính*)
var
   n : integer;

(*Hàm kiểm tra số nguyên tố*)
function isSNT(n: integer): boolean;
var 
    i : integer; 
    bl : boolean;
begin
    bl := true;

    (*Nếu số n bé hơn 1 thì chắc chắn không phải SNT*)
    if (n <= 1) then bl := false;

    (*Lặp và kiểm tra*)
    for i := 2 to (n - 1) do
        if (n mod i = 0) then bl := false;
    isSNT := bl;
end;

(*chuong trình chinh*)
begin
    n := 13;
    if (isSNT(n) = true) then
        begin
            writeln(n, ' la so nguyen to ');
        end
    else 
        begin
            writeln(n, ' khong phai so nguyen to');
        end;
    readln; 
end.

Quá đơn giản phải không các bạn. Trong lập trình quan trọng nhất là cú pháp, vì vậy bạn phải nắm vững cú pháp của từng câu lệnh thì mới không bị lỗi.

3. Tại sao cần tạo function?

Câu hỏi lúc này đặt ra là tại sao cần tạo function trong Pascal? Trong khi ví dụ trên hoàn toàn có thể viết được ở chương trình chính thì sẽ ngắn gọn hơn nhiều.

Bạn cứ tưởng tượng thế này. Giả sử bạn cần kiểm tra 100 số khác nhau thì lúc này nếu có hàm sẵn rồi thì bạn chỉ việc gọi hàm 100 lần. Nhưng nếu bạn code thủ công trong chương trình chính thì bạn phải lặp đoạn code dài dòng kiểm tra số nguyên tố đó 100 lần. Như vậy quá phức tạp phải không các bạn.

Trên là những chia sẻ về cách tạo function và gọi function trong Pascal. Hy vọng bài viết hữu ích!

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net.

BÀI VIẾT

notice png LIST home png HOME hot gif BÁO
LỖI
top png TOP