Bài tập Pascal – Procedure và Function
Function là hàm do người lập trình tự tạo để thực hiện một chức năng nào đó, TD:
Function GiaiThua(k: Integer): LongInt;
là hàm dùng để tính giai thừa của một số k và trả về giá trị giai thừa của K
Function GiaiThua(k: Integer): LongInt;
Var
GTGT: LongInt;
Begin
GTGT := 1;
For i := 1 to k do
GTGT := GTGT * i;
GiaiThua := GTGT;
End;
Bài 01 – In ra giá trị giai thừa của mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và tính giai thừa của từng số trong dãy đó.
(Dãy 1, 4, 7, 5, 2 => In ra 1, 24, 5040, 120, 2)
Var
A: Array [1..10] of Integer;
i, n: Integer;
Function GiaiThua(k: Integer): LongInt;
Var
GTGT: LongInt;
Begin
GTGT := 1;
For i := 1 to k do
GTGT := GTGT * i;
GiaiThua := GTGT;
End;
Begin
WriteLn('Hay nhap so phan tu cua day so');
ReadLn(n);
{Nhập dãy số}
For i := 1 to n do begin
WriteLn('Hay nhap phan tu thu ', i);
ReadLn(A[i]);
End;
Biên soạn: Th.s Nguyễn Anh Việt
Trang 1
Bài tập Pascal – Procedure và Function
{In ra giá trị giai thừa}
For i := 1 to n do
Write(GiaiThua(A[i]):6);
ReadLn;
End.
Bài 02 – In ra giá trị luỹ thừa 2 của các phần tử trong mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và tính luỹ thừa 2 của từng số trong dãy đó.
(Dãy 1, 4, 7, 5, 2 => In ra 1, 16, 49, 25, 4)
Var
A: Array [1..10] of Integer;
i, n: Integer;
Function LuyThua(a, k: Integer): LongInt;
Var
GTLT: LongInt;
Begin
GTLT := 1;
For i := 1 to k do
GTLT := GTLT * a;
LuyThua := GTLT;
End;
Begin
WriteLn('Hay nhap so phan tu cua day so');
ReadLn(n);
{Nhập dãy số}
For i := 1 to n do begin
WriteLn('Hay nhap phan tu thu ', i);
ReadLn(A[i]);
End;
{In ra giá trị luỹ thừa 2}
For i := 1 to n do
Write(LuyThua(A[i], 2):6);
ReadLn;
End.
Procedure cũng tương tự như Function, có thể có đối số, nhưng không giá trị trả về. TD:
Procedure NhanDoiMang;
Biên soạn: Th.s Nguyễn Anh Việt
Trang 2
Bài tập Pascal – Procedure và Function
Procedure NhanDoiMang;
Begin
For i := 1 to n do
A[i] := A[i] * 2;
End;
Bài 03 – In ra giá trị nhân đôi của các phần tử trong mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và nhân đôi từng số trong dãy đó.
(Dãy 1, 4, 7, 5, 2 => In ra 2, 8, 14, 10, 4)
Var
A: Array [1..10] of Integer;
i, n: Integer;
Procedure NhanDoiMang;
Begin
For i := 1 to n do
A[i] := A[i] * 2;
End;
Begin
WriteLn('Hay nhap so phan tu cua day so');
ReadLn(n);
{Nhập dãy số}
For i := 1 to n do begin
WriteLn('Hay nhap phan tu thu ', i);
ReadLn(A[i]);
End;
{Nhân đôi các phần tử của mảng}
NhanDoiMang;
{In dãy số}
For i := 1 to n do
Write(A[i]:4);
End;
WriteLn;
ReadLn;
End.
Biên soạn: Th.s Nguyễn Anh Việt
Trang 3
Bài tập Pascal – Procedure và Function
Bài 04 – In ra giá trị nhân 4 của các phần tử trong mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và nhân 4 từng số trong dãy đó. Chỉ được sử dụng Procedure
NhanDoiMang như trong Bài 03.
(Dãy 1, 4, 7, 5, 2 => In ra 4, 16, 28, 20, 8)
Bài 05 – In ra số nguyên tố trong mảng 1 chiều
Bạn hãy nhập một dãy số nguyên và in ra các số nguyên tố trong dãy đó. Số nguyên tố là các số chỉ
chia hết cho 1 và chính nó như 2, 3, 5, 7, 11, 13, …
(Dãy 1, 4, 7, 5, 23 => In ra 7, 5, 23)
Var
A: Array [1..10] of Integer;
i, n, Dem: Integer;
Function NguyenTo(k: Integer): Boolean; {Boolean: Chỉ có True và False}
Var
j: Integer;
Begin
If (k <= 0) or (k = 1) then begin NguyenTo := False; Exit; End;
For j := 2 to Trunc(Sqrt(k)) do
If k mod j = 0 then begin NguyenTo:= False; Exit; End;
NguyenTo := True;
End;
Begin
WriteLn('Hay nhap so phan tu cua day so');
ReadLn(n);
{Nhập dãy số}
For i := 1 to n do begin
WriteLn('Hay nhap phan tu thu ', i);
ReadLn(A[i]);
End;
{In ra các số nguyên tố }
For i := 1 to n do
If NguyenTo(A[i]) then Begin Write(A[i]:3); Dem := Dem + 1; End;
If Dem = 0 then WriteLn('Khong co so nguyen to nao');
ReadLn;
End.
Biên soạn: Th.s Nguyễn Anh Việt
Trang 4