• Không có kết quả nào được tìm thấy

Một số hàm thông dụng

N/A
N/A
Protected

Academic year: 2022

Chia sẻ "Một số hàm thông dụng"

Copied!
1
0
0

Loading.... (view fulltext now)

Văn bản

(1)

một số hàm thờng dùng Bài tập

*****************

A-Một số hàm chuẩn của PASCAL I-kiểu nguyên :

1. ABS(x) : cho trị tuyệt đối của x . 2. SQR(x): Cho bình phơng của x

3. SUCC(x) : cho giá trị kế tiếp sau của x ,tức là x+1 4. PRED(x) : cho giá trị kế tiếp trớc x ,tức là x-1 II-Kiểu thực

* Các hàm sau có đối số thực và kết quả thực 1. ABS(x) : cho trị tuyệt đối của x . 2. SQRT(x): căn bậc hai của x 3. SQR (x) :bình phơng

4. INT(x) : cho phần nguyên của số x 5. FRAC(x) cho phần thập phân của số x *Các hàm sau có đối số thực nhng kết quả nguyên

1. TRUNC(x: real) : integer ; làm chòn bằng cách cắt bỏ phần lẻ của x 2. ROUND(x: real): integer : cho số nguyên gần x nhất

VD:

ROUND(3.1)=TRUNC(3.1)=3

ROUND(3.9)=4 trong khi đó TRUNC(3.9)=3

III- Kiểu kí tự (CHAR )

1. ORD(c: char) : integer cho thứ tự của kí tự c trong bảng chữ

2. CHR(i:integer) : char cho cho lí tự có thứ tự là I trong bảng chữ .Nếu I có giá trị cụ thể (ví dụ 65 ) thì chỉ cần viết # 65.

3. PRED (c: char ):char cho kí tự đứng trớc c trong bảng kí tự 4. SUCC(c:char):char cho kí tự đứng ngay sau c trong bảng kí tự 5. UPCASE(c: char ): char cho kí tự tơng ứng với c nhng viết hoa 6. Readkey :Lấy 1 kí tự từ bàn phím

VD: if upcase(readkey)= ‘C’ then begin...end;

IV. Kiểu xâu kí tự (String)

1. Hàm LENGTH (S) Cho độ dài của xâu s 2. Thủ tục Val (St,Num,code);

Biến đổi một xâu kí tự (St)thành một số nguyên lu vào biến (Num) mã lỗi code phải khai báo kiểu Integer khi phép biến dổi thành công thì mã lỗi bằng 0;

3. Thủ tục Str( Num,ST)

Biến đổi số thành một xâu kí tự lu vào xâu St.

4. Hàm Concat(ST1,St2,...,Stn); ghép xâu các xâu (cos thể cộng trực tiếp các xâu St:=St1+St2+...+StN)

5. Hàm Copy

Dùng để tách từ một xâu kí tự ra một xâu con . COPY (St,Pos,Num): string

Pos, Num là giá trị nguyên

Kết quả trả lại là một xâu đợc trích ra từ xâu St có độ dài Num tính từ vị trí Pos 6. Hàm POS (s,St) trả về vị trí đầu của xâu con s trong xâu mẹ St .Nếu s không nằm

trong xâu St thì POS bằng 0.

7. Thủ tục Delete (St,pos,Num) xoá bỏ trong xâu St từ vị trí Pos đi Num kí tự VD: St=’FILENAME’ Delete (St,2,3) khi đó St=’FNAME’

V. Dữ liệu kiểu tệp 1. Thủ tục Read, Readln : Dùng để đọc dữ liệu từ file : READ( F, var1, var2, var3 … );

Gán các giá trị thuộc dòng hiện thời của tệp F vào các biến var1, var2, … Sau khi thực hiện lệnh, con trỏ không chuyển xuống dòng kế tiếp.

READLN( F, var1, var2, var3 … );

Gán các giá trị thuộc dòng hiện thời của tệp F vào các biến var1, var2,… Sau khi thực hiện lệnh, con trỏ chuyển xuống dòng kế tiếp.

VD :

File VD.INP chứa thông tin của mảng : VD.INP

6

1

(2)

Ta dùng các lệnh sau để đọc dữ liệu vào mảng A : READLN( F, n );

For i := 1 to n do READ( F, A[i] );

2. Thủ tục Write, Writeln : Dùng để ghi dữ liệu ra file : WRITE( G, var1, var2 );

Ghi ra dòng hiện thời của file giá trị của các biến var1, var2 . Sau khi thực hiện lệnh, con trỏ chuột không xuống dòng.

WRITELN( G, var1, var2 );

Ghi ra dòng hiện thời của file giá trị của các biến var1, var2 . Sau khi thực hiện lệnh, con trỏ chuột xuống dòng.

3. Hàm Eof, Seekeof, Eoln, Seekoeln :

EOF( F ) ; Nhận giá trị True nếu đã đọc hết file và False nếu cha hết file.

SEEKEOF( F ); Tơng tự nh hàm EOF nhng bỏ qua các ký tự trống.(hay lỗi ) EOLN( F ); Nhận giá trị True nếu đã đọc hết dòng và False nếu cha hết dòng.

SEEKEOLN( F ); Tơng tự nh hàm EOLN nhng bỏ qua các ký tự trống.

VD :

Tệp VD.INP chứa một mảng gồm các xâu ký tự :

Nếu đọc theo cách thông thờng READLN( F, S1, S2, S3 ) thì xâu S1 sẽ nhận giá trị ab bc de còn S2 và S3 rỗng. Vì vậy ta phải đọc từng ký tự và kiểm tra đã hết dòng cha.

Var ch : char;

Fillchar( s, sizeof( s ) , ’’);{ gán cho mảng s giá trị ban đầu =’’ } I:=1;

While not eoln( f ) do Begin

Read( f, ch );

If ch <> ‘’ then s[i] := s[i] + ch Else

Begin

While ch = ‘’ do read( f, ch );

If ch <> ‘’ then Begin

Inc( i );

S[i] := ch;

End; End;

End;

……….

Procedure DocTep(tep:string);

Var i:integer; f:text;

Begin i := 1;

While not eoln( f ) do Begin

Read( f, ch );

If ch <> ‘’ then s[i] := s[i] + ch Else

Begin

While ch = ‘’ do read( f, ch );

If ch <> ‘’ then Begin

VD.INP ab bc de

(3)

Inc( i );

S[i] := ch;

End; End;

End;

……….

Mở của sổ theo dõi sự thay dổi của các biến khi chạy chơng trình từng bớc một :

ấn F7 vào menu Debug -> Watches ấn Insert ->Nhập tên biến cần theo dõi (có thể nhập nhiều biến ) ấn F7 từng bớc để theo dõi sự thay đổi của các biến trong chơng trình xem đúng hay sai để từ đó có thể phát hiện thuật toán của mình mà sửa chữa.

{Tìm UCLN của hai số a và b}

Function USCLN(a,b:integer): integer;

Var sodu: integer;

Begin

if b=0 then uscln:= a else

begin

While b<>0 do Begin

sodu:= a mod b;

a:=b; b:= sodu;

End;

USCLN:=a;

End;

End;

...

Function USCLN(a,b: longint): longint;

Begin

If b=0 then USCLN:=a

Else USC:=USCLN(b,a mod b);

End;

...

Function USCLN(a,b: longint): longint;

Begin

While a<>b do if a>b then a:=a-b Else b:=b-a;

UCLN:=a;

End;

...

function NT(n:longint):boolean;

var i:longint;

begin NT:=False;

for i:=2 to TRUNC(SQRT(n)) do if n mod i = 0 then exit;

NT:=n>1;

end;

...

function NT(n:longint):boolean; ( Nên dùng ) var i:longint;

begin

NT:=False;

if n mod 2 = 0 then exit;

if n mod 3 = 0 then exit;

if n <25 then exit;

i:=5;j:=2;

While i<=trunc(sqrt(n)) do begin

if n mod i = 0 then exit;

(4)

inc(i,j);j:=6-j;

end;

NT:=n>1;

end;

...

function NT(n:longint):boolean;

var i:longint;

begin

if n<2 then nt:=false else begin

i:=2;

while (i<=sqrt(n)) and (n mod i<>0) do inc(i);

NT:=(i>sqrt(n));

end;

end;

...

function MU(a,n:longint):longint;

begin

if n=0 then mu:=1 else MU:=a*MU(a,n-1);

end;

...

function ktChinh_Phuong(a:longint):bolean;

var i:longint;

begin

for i:=1 to a do if i*i= a then

begin ktChinh_Phuong:=True; exit; end;

ktChinh_Phuong:=false;

end;

...

function ktChinh_Phuong(a:longint):bolean;

var i:longint;

begin

ktChinh_Phuong:=frac(sqrt(a))=0;

end;

...

function FIBONACI(n :longint):longint;

begin

if n<3 then fibonaci:=1 else fibonaci:= fibonaci(n-1)+fibonaci(n-2);

end;

...

{Kiem tra mot so co phai fibinaxi khong}

BEGIN

write('Vào số n: ');readln(n);

A:=1;B:=1;t:=2;

write(A,B: 6);

while n>2 do begin

A:=a+b;

t:=t+a;

write(A:6);

b:=a-b;

end;

writeln('Tổng của ',n,' số ****naci đầu tiên là: ',t);

END.

function ktFIBO(n:longint):boolean;

var i:integer;

(5)

begin

i:=0;ktfibo:=false;

REPEAT inc(i);

ktfibo:= fibo(i)=n;

until fibo(i)>=n;

end;

...

function DOIXUNG(s:string):boolean;

var s1:string; i,m,n,kt1,kt2:integer;

begin s1:='';

for i:= length(s) downto 1 do s1:=s1+s[i];

DOIXUNG:=(s1=s);

end;

...

function DOIXUNG(n:longint):boolean;

var s1,s:string; i:integer;

begin

str(n,s);

s1:='';

for i:= length(s) downto 1 do s1:=s1+s[i];

DOIXUNG:=(s1=s);

end;

...

function DOINHIPHAN(n:longint):string;

var i:integer;st:string;

Begin st:='';

while n>0 do begin

if n mod 2=0 then st:='0'+st else st:= '1'+st;n:=n div 2;end;

DOINHIPHAN:=st;

end;

...

function DOITHAPPHAN(st:string):longint;

var i,gt,lt:integer;

Begin

lt:=1;gt:=0;

for i:= length(st) downto 1 do

begin if st[i]='1'then gt:=gt+lt;lt:=lt*2;end;

DOITHAPPHAN:=gt;

end;

...

function ktBN:boolean;{kt co hai so duong bang nhau dung canh nhau khong}

var i:integer;

begin

for i:=1 to n-1 do

if (a[i]>0)and (a[i]=a[i+1]) then begin kt:=true;exit; end;

ktbn:=false;

end;

...

function Shang(k:integer):real;{tinh tong hang}

var j:integer; S:real;

begin s:=0;

for j:=1 to n do s:=s+a[k,j];

shang:=s;

end;

(6)

...

function ShangMax(k:integer):real;{hang co tong lon nhat}

var j:integer; S:real;

begin

max:=shang(1);

for j:=2 to n do

if max<shang(i) then max:=shang(i);

ShangMax:= max;

end;

...

{ kiem tra xem trong day co hai so nguyen to bang nhau khong}

function ktntBN:booleanvar i,j:integer;

begin

for i:=1 to n-1 do for j:=i+1 to n do

if ktnt(a[i]) and (a[i]=a[j]) then begin kt:=true;exit; end;

ktbn:=false;

end;

...

{KiÓm tra kÝ tù ch cã ph¶i lµ sè hay kh«ng } function ktcs(ch:char):bolean;

begin

ktcs:=('0'<= ch)and(ch<='9');

end;

...

function ucln(n,m:integer):integer;

var i:integer;

begin i:=1 ;

while m<>n do begin

if m>n then m:=m-n else n:=n-m;

inc(i);

end;

ucln:=n end;

...

function kt(w:string):boolean;

var i:integer;

begin kt:=true;

for i:=1 to length(w) do if w[i]='['then exit;

kt:=false;f ktnt(a[i]) and (a[i]=a[j]) then kt:=true;

...

function chuanXau(var w:string):string;{chuan xau ho ten}

var kt:boolean;i,k,n:integer;

begin kt:=true;

while kt do begin

kt:=false;

if w[1]=' 'then begin delete(w,1,1);kt:=true;end;

n:=length(w);

if w[n]=' 'then begin delete(w,n,1);kt:=true;end;

k:=pos(' '+' ',w);

if k>0 then begin delete(w,k,1);kt:=true;end;

end;

w[1]:=upcase(w[1]);

for i:=2 to n-1 do

if w[i]=' 'then w[i+1]:=upcase(w[i+1]);

(7)

chuanxau:=w;

end;

...

function sk(n:longint):longint;{ Tim số chữ số 0 của N!}

var tam:longint;

begin tam:=0;

ưhile n>=5 do begin

inc(tam,n div 5);

n:=n div 5;

end;

sk:=tam;

end;

bài tập : ớc số - nguyên tố.

1/ Cho trớc số tự nhiên n. Lập trình phân tích số n thành tích các thừa số nguyên tố.

2/ Cho trớc số tự nhiên n. Tìm số Mersen <=n (số nguyên tốMersen có dạng 2p -1, p là nguyên tố).

3/ Đọc ra các số nguyên tố sinh đôi trong đoạn (m,n) ( số nguyên tố mà khoảng cách giữa chúng =2)

4/ Cho số tự nhiên n . Tìm các số <=n là tích đúng 2 thừa số nguyên tố có thể trùng nhau ( 3 thừa số nguyên tố).

5/ Đọc ra tất cấc số hoàn thiện < n (số bằng tổng các ớc thực sự ).

6/ Đọc ra tất cấc số gần hoàn thiện < n (số gần hoàn thiện là số không phải hoàn thiện nhng sau khi đục bỏ một chữ số bất kỳ nào đó và giữ nguyên vị trí và bỏ đi chữ số 0 ở đầu nếu có thì nó trở thành số hoàn thiện ).

7/ Tìm tất cả các cặp số nguyên tố cùng nhau trong khoảng m,n (UCLN=1) 8/ Cho n tính tổng các ớc số nguyên tố của n .

9/ Đọc ra tất cặp số nguyên tố tơng trong khoảng n,m (hai số đợc gọi là nguyên tố tơng đơng nếu chúng có chung các ớc nguyên tố) .

10/ Tìm số tự nhiên nhỏ nhất <> n và nguyên tố tơng đơng với n . 11/ Tìm số nhỏ nhất <10000 không có ớc nguyên tố nào khác 3,5,7 12/ Tìm số nhỏ nhất >10000 không có ớc nguyên tố nào khác 3,7,11

13/ Đọc ra tất cả các sô gần nguyên tố lớn nhất nhỏ hơn N (n<1000000) (số gần nguyên tố là số không phải nguyên tố nhng sau khi sắp xếp lại các chữ số bỏ đi các chữ số 0 vo nghĩa ở đấu nếu có thì nó trở thành số nguyên tố) .

14/ Đọc ra tất cả các số siêu nguyên tố có m chữ số .Có bao nhiêu số ? Số nà xuất hiện trong tất cả các số siêu nguyên tố đó?

15/ cho Nlà một số nguyờn dương <=2000000000. Hóy tỡm số chữ số 0 của n!

...

Tài liệu tham khảo

Tài liệu liên quan

Trong tù nhiªn cacbon lu«n chuyÓn ho¸ tõ d¹ng nµy sang d¹ng kh¸c thµnh mét chu tr×nh khÐp kÝn.. C«ng

BÀI: Ph©n sè vµ phÐp chia sè tù nhiªn... mÉu sè lµ

NÕu tæng cña chóng kh«ng lµ sè Palindrom th× lÆp l¹i qu¸ tr×nh trªn víi tæng ®ã cho ®Õn khi nhËn ®îc mét sè Palindrom.. Cho tríc mét m¶ng N sè nguyªn

Với những lý do trên, tôi thực hiện đề tài “Nghiên cứu giá trị Doppler động mạch tử cung và một số yếu tố liên quan tiên lượng kháng Methotrexat ở bệnh

Theo quy luËt ph©n li, trong qu¸ tr˘nh ph¸t sinh giao tö mçi nh©n tè di truyÒn trong cÆp nh©n tè di truyÒn ph©n li vÒ mét giao tö vµ gi÷ nguyªn b¶n chÊt nh√ ë c¬ thÓ

Xuất phát từ tầm quan trọng và ý nghĩa trên, chúng tôi tiến hành thực hiện đề tài “Nghiên cứu tình trạng sức khỏe răng miệng, nhu cầu điều trị và đánh giá hiệu quả một

- Mẫu nội kiểm miễn dịch (gồm 3 mức nồng độ thấp, trung và cao) được thực hiện vào đầu buổi sáng hằng ngày hoặc trước khi thực hiện phân tích mẫu bệnh phẩm theo theo

®Èy thuyÒn ®i mét gãc nhän ng−îc víi chiÒu giã thæi.. Ng−êi ta cßn gäi tÝch cña vect¬ víi mét sè lμ tÝch cña mét sè víi mét vect¬.. Bμi to¸n sau cho ta c¸ch ph©n