1. Trang chủ
  2. » Công Nghệ Thông Tin

Ebook tự học lập trình pascal (tập 4) phần 2 bùi việt hà (chủ biên)

123 186 2
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 123
Dung lượng 1,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cách 2: truyền bằng đối dạng tham biến giá trị.. Cách 3: truyền bằng đối dạng tham số biến.. Sai vì thủ tục TINH sử dụng tham số biến X, Y còn lời gọi thủ tục TINH bên trong chương trình

Trang 1

§5 BIEN CUC BO, BIEN TONG THE

TRUYEN THAM BIEN CHO THU TUC / HAM

Cách 2: truyền bằng đối dạng tham biến giá trị

Cách 3: truyền bằng đối dạng tham số biến

4 Sai vì thủ tục TINH sử dụng tham số biến X, Y còn lời

gọi thủ tục TINH bên trong chương trình chính lại không sử

\

dụng tham số biến để truyền giá trị

5 Được

6 Giải thích;

a Cả 2 tham số x và y của thủ tục VD_ thamso đều là

tham trị cho nên khi gọi thủ tục VD_fhamso (a, b) với a=1; b=4 thì x=2; y=5 và trên màn hình in ra:

Kết thúc thủ tục này biến a và b không bị thay đổi giá trị

vì vậy lệnh Witein (a:5 b:5); in ra

Trang 2

122 Tee fee Lip Drink Pascal

7 Được vi trong Turbo Pascal có từ khóa Forward giúp

cho ta làm được điều này

Ví dụ: chương trình tính tổng của 10 số tự nhiên liên tiếp

Trang 3

If i< 10 then Begin inc(i);

S:=Sti;

P2; {gọi.thủ tục P2) End;

End;

8 Được (đây chính là thủ tục hoặc hàm đệ quy)

Trang 4

124 Tu hoe bap Drink Pascal

Trang 5

slop:=false;

Repeat y:=c1*a1;

Trang 6

126 Ie hoe Lg Lash Pascal

Trang 7

Function ki(ch: char; st: string): boolean;

{Kiểm tra xem kí tự ch cô trong xâu s† hay không Nếu có

thì hàm trả về giá trị True Nếu không thì hàm trả về giả

Trang 8

128 Tee Kae Ly Prtok Pascal

Begin {Than cua thu tuc compare}

kq=", — {Xâurỗng}

For i:=1 to length(s1) do

If (not kt(s1i],kq)}and(kt(s1[i].s2)) then kq:=concat(kq,s1[i);

compare(xau1, xau2, xau);

lfxau<>" then Writeln(Xâu chung là: ,xau)

Else Writeln('Không có kí tự nào có trong cả hai

12 Program P4512

Uses Crt;

Const M=100;

Var S: array[1 M] of string;

max, min, i, j, n: byte;

Trang 9

S, luu: string;

Begin

luu:=";{Xâu rỗng}

For id:=1 to length(U) do

If (pos(Ufid}, V)=0)and(pos{Ufid],luu)=0) then

luu:=concat(uu,U[id]);

For id:=1 to length(V).do

lf (pos(V[id].U)=0)and(pos(V[id]luu)=0) then luu:= concat(luu, V[id]);

Until n>=2;

Writeln(Nhập ',n, xâu kí tự);

For Ì:=1 to n do

Begin Write('S'i,"="); Readin(Sii]):

End:

Begin { Main Program }

Trang 10

130 Tue hoe big tink Paseal

If max<d(S[i],S[j}) then max:=d(S[i], Sf);

If min>d(S[i],S[j]) then min:=d(S[],S[]); End;

Write(Max(d(Si,Sj)=';max,' Min(d(Si,Sj)=', min); Readin;

If Sobonghoa<=1 then Write(#7, Nhập lại.)

Trang 11

If Mayhai then Begin

If (Sobonghoa mod (Motlanhai+1))=0 then Dahai:=1

Else Dahai:=(Sobonghoa mod (Motlanhai+1));

Writeln(-Máy hai’ Dahai,"béng hea’);

End Else Begin Repeat Write(- Bạn hái bao nhiéu béng hoa:’); Readln(Dahai);

Trang 12

132 Tue hac Lip think Pascal

if (Dahai<=0)or(Dahai>Motlanhai) then Writeln(#7,Bạn đã sai luật); Until (0<Dahaijand(Dahai<=Motlanhai): End;

Mayhai:=not Mayhai;

Dec(Sobonghoa,Dahal);

Writeln( Còn lại ,Sobonghoa, bông hoa);

End;

lf Mayhai then Writeln(Bạn đã thắng ')

Else Writeln( Bạn đã thua.), Write(Tiếp tục chơi (C#J?-), - Repeal

Trang 13

max1, max2, max3: Real:

lf m1<alij] then m1:=ali,j]:

lfm2<a{n-i+1,n-j+1] hen m2.=a[n-i+1,n-jJ+ 1];

Trang 14

134 7 hoe Lif Pais Pager

Procedure Max_cde(Var mc, md, me: real);

If md<a[n-i+1,n-j+1] then md:=a[n-i+4 ,n-j+1]};

If me<alfj,n-i+1] then me:=alj,n-i+1];

inc(j);

Until j>kt:

inc(bd);

dec(kt) End;

Trang 15

Function nguyento(Ns: longint}: boolean;

{Trả về giá trị True néu Ns là s6 nguyén t6, ngược lại trả

về giá trị False }

Trang 16

136 7 hoe Lig Brink Payeal

Trang 17

U:=2;

While (u<=(LN div 2))and(u<=NS) do Begin

lf (NS mod uz0)and nguyento(u) then

{u là ước số nguyên tố của NS}

1:lf dl>1 then kq:=0 Else (Dem>=2 }

If dem mod 2=0 then kq:=1 Else kq:=-1;

Trang 19

b Ta chứng minh công thức:

C(n+r+ 1,r)= Ð`Cín+ jÿ

j=0

bằng qui nạp toán học theo r: Với r=0,1 công thức hiển nhiên

đúng Giả sử công thức đúng cho r>=1 ta chứng minh nó cũng đúng cho r+†1, ta có:

Function check: boolean;

{ check= TRUE nếu a.,a;, ,8, là 1 hoán vị không cân

bằng, ngược lại check=FAL SE}

Var kt: boolean;

id: khoang;

Begin

Trang 20

140 Tu hae lig Drink Pascal

kt:=true;

id:=1;

While kt and (id<=N} do

If alid]=id then kt:=false Else inc(id);

check:=kt;

End;

Procedure doicho(Var so1, so2: knoang);

{Đổi giá trị của hai biến so1 và so2 cho nhau}

Trang 21

lfN<2 then Write(#7,'Nhập lại( N>=2 ):);

Until (=N)or{not dk);

If check=true then Begin inc{Dn); print;

End;

stop:=(dk)and(i=N):

Until stop=true;

Trang 22

142 7 hae hip Laisk Pascal

Writeln( Có ',n,' hoán vị không cân bằng của ˆ,N,

- Khả năng thứ nhất a,,,<>i Khi đó nếu bỏ a/=n+1 đi và thay vào đó bằng a„., thì ta được một hoán vị không cân bằng của n phần tử Nói cách khác, hoản vị không cân bằng của n+1 phần tử có thể nhận được từ hoán vị không cân bằng của n phần tử bằng cách xếp n+1 vào vị trí thứ ¡ và đổi

a ra vị trí cuối cùng Vì ¡ có thể chọn từ 1 đến n nên số các

hoán vị như vậy là nD,

- Khả năng thứ hai: a.,,=ì Khi đó nếu bỏ cả a, và a„„; đi

thì ta được một hoán vị không cân bằng của (n-1) phần tử Vi 1<i<n nên ta có tất cả nD, các hoán vị như vậy

Vậy số các hoán vị không cân bằng của n+1 phần tử là:

D,„;=nD„+nD, = n(D„+Ð,.,) - điều phải chứng minh

20 Ta chứng mình: D„=nD, ;+(-1)" (2) bằng qui nạp theo n

Với n=2: (2) có dạng 1=1.0+(-1)* - đúng

Trang 23

Điều phải chứng minh

§6 LAM VIEC VOI FILE TRONG PASCAL

Readln(fm,n), — {đọc mội dòng vào hai biến m, n}

Writeln(m, ‘‘, n);

Readln;

End.

Trang 24

144 Vue hae Lif, Brink pascal

Readin(f,m); (đọc dòng đầu vào biến mì

Readin(f,n); {đọc dòng sau vào biến n} close(f);

Readin(f,n); {doc déng déu vao bién n}

For i:=1 to n do Readin(f,a{ij); — {đọc n dòng sau

vào các biến a[ï])

Trang 26

146 Tu hee lip trink Pascal

{hàm SeekEof báo cho ta biết đã hết file)

Wile not SeekEoF(f) do

Begin Readin(f,afi});

Trang 27

assign(fdata.tt’),

reset(f);

i:=0;

(hàm SeekEoLn(f) báo cho ta biết đã hết dòng}

Whiie not SeekEoLn(f) do

Readin(f);

End:

close(f);

Trang 28

148 ?z fac Lip rind Pageal

For i:=1 ton do

Begin For j:=1 to m do Write(ali,j}:8);

Readin (f, hei) ti, x! [i]) ;

close(f); {Kiém tra}

For i:=1 to n do Writeln(ht{i), t[i]:4,xl{i}: 3);

Readln,

End

Trang 29

Readin(f,ht{ij, [i], xi[i]); inc(i);

End;

n:=i-1;

close(f); {kiểm tra}

For ¿=1 to n do Writeln(hf[]| 1I]:4,xI[Ì]3);

Trang 30

150 Tue hae bhp tink Pascal

Begin

Cirscr;

m:=10;

n:=4,

assign(f, 'son.inf); .{hai thủ tục mở file}

reWrite(f); (SON.INF dé ghi}

Writeln(f, m,"’,n); {ghi giá trị các biểu thức m,

n vào một dòng của file}

close(f); {dong file}

assign(f, 'son.inf); {đọc lại để kiểm tra}

Trang 31

assign(f, ‘sod inf);

End;

assign(f, đata.txf)

rewrite();

Writeln(fn); — {ghi n vào dòng đầu của file}

For i:=1 to n do Writein(f,alij);

{ghi afi] vào các dòng sau của file}

close(f);

Trang 32

152 Tuc bee bi tein Pascal

Trang 33

reWnite();

L=1;

Repeat Write(ắi:2,]= , Readln(a[i;

Trang 34

154 lee hee hig Brink Pascal

reset(f);

While not(seekeoln(f)) do

Begin Readin(f,afi}); Writeln(afi});

Write(‘Tén file cần doc: ); Readln(fn);

Write{(Số lượng học sinh: ); Readin(n);

Trang 35

l:=length(ht[i);

lf (I<20) then For j;=l+1 to 20 do hi{i}:=htfi]+' ':

Write(‘Nhap tuổi: `); ReadIn(f[i]);

\:=length(f[i]);

lf (I<3) then For j:=l+1 to 3 do t[i):=' +I];

Write(Nhập xếp loại: }; Readin(xI]]);

Writeln(ht[ij, t[i}:4, xifij:3);

Trang 36

156 Tec hac Lip Lrinh Pagal

Trang 37

Var tfin, tfou: string;

fin, fou: text;

n, |, J: integer;

Trang 38

158 Tự đa Lig, Drink pageal

Trang 40

460 Iie bee big trink Pascal

For i:=1 ton do

lf (copy(a[[,21,3)= Nam) then snam:=snam+† Else snu:=snu+1;

Writeln(Số nam: ',snam,' Số nữ : ',snu,.;

Fori:=1tondo {Tìm người chung họ)

Trang 41

If (ho(a[i])=ho(a[il))and(i<>i) then t:=true: inc(j);

Var - tfin, tfou: string;

fin, fou: text;

Trang 42

162 Tu hac Lig trink Pasenl

While (hvf[i]<>' ) do

Begin ten[j]:=hwvt[i]:

End;

n:=i-1;

Trang 44

164 Tuc hoe by Drink Pascal

If ((st[fF 1}and(stf-1]E0)}or((s{[1}Ƒ 1)and(st[2]0)) then

Writeln('Không thể biến đổi được!)

Else

Begin assign(fou, oufput.txf);

rewrite(fou);

Trang 45

Writeln(fou,st);

If (st{]='1')and(st{l-1]='1') then ghi1(I-1);

Repeat _ ( bién d6t x4u con '11'}

Trang 46

166 le foe Lip Drink Pasect

Trang 48

168 Tye hoe kit bà-£ Dxsez£

st1:=st1+’ '+st:

Repeat i:=length:stt);

p:=pos(';’, st);

lf (p<>0) then Begin st:=copy(sf†, 1, p);

Trang 49

While not(seekeof(fou)) do

Begin Readin{fou, st); Writeln(st);

Var fin, fou, fhuy: text;

sum, can: real;

Trang 50

170 Tee đạc Lif Prink Pascal

Begin

Read(fin,can):

sum:=sum+cany, k:=k+1;

End;

close(fhuy);

Readin;

End

Trang 51

§7 ÔN LUYỆN

1 Program P4701;

Uses Crt;

Const —— Pi: rea) =3.14;

Var r,a, ht, h2: real;

Trang 52

172 Tec hae big trek Pascal

Begin {Main Program}

Clrscr;

Writeln(‘Nhap ban kinh hinh trdn:'); Readin(r):

Writeln(Nhập cạnh hình vuông:); Readln(a);

Writeln( Nhập đường chéo hình thoi: h1, h2);

Readin(h1, h2);

Writeln(Bạn muốn tính diện tích hình gi:);

Writeln{'1 - Tính diện tích hình tròn );

Writeln(2 - Tính diện tích hình vuông );

Writeln(3 - Tính diện tích hình thoi.);

Writeln( Chọn 1, 2 hoặc 3: ); Readln(chon);

Procedure Giai_PT_bac_hai {a, b, c: real};

Var Delta, x1, x2: real;

Trang 53

If delta=0 then Delta_khong;:

lf delta>0 then Delta_ duong;

lf delta<0 then Write (Phương trình vô nghiệm); End

3 Program P4703;

Uses Crt;

Trang 54

174 Tw loc ⁄% Drink Pascal

Trang 55

While (i<=sqrt(m)) and (n Mad i >0) do inc(i);

If j>sqrt(n) then ngto:=true

Else ngto:=False;

End;

Function dx(n: integer): boolean;

Var A: array{1 16] of integer;

Al]:=n mod 2;

n:=n div 2;

End;

jt;

While (j<=i div 2} and (AljJ=A[i-+7]) do inc();

If j=(t div 2) + 1 then dx:=true

Trang 56

176 Tue hac Ly Link Pascal

If j>(L div 2) then Wrfteln( Đây là từ đối xứng)

Etse Writein(’Tir không đối xứng);

Readin;

End

6 Để ý rằng nếu 2" =3"+‡ và n<=10 thì ta phải có am= 2" - 1<2!% =1024 < 3” suy ra m<=6

Program P4706;

Uses Crt;

Trang 57

If hai_mu(n)=ba_ma(m)+1 then Writeln(n:2, m:2); End;

Readln;

End

Trang 58

178 ue hac big trink Pascal

B[2*i-1]:= gt Mod 3;

B[2"ï]:= gt Div 3;

End;

Writein(Bidu diễn của số trong hệ cơ số 3 là:);

For ¡ =2*Ì downfo 1 do Write (B[i)):

Var N: Jongint;

A: array [1 16] of char;

i, j: byte;

Trang 59

Writeln (biểu diễn của n trong hệ Hexa là: ');

For j:=i downto 1 do Write(Alj)):

lí (M[I)>= 0) and (Mfil)<="9'} then Ali]: =ord(M[i}}-48

Etse A [i]:= ord (M[i]) - 55;

GTM:=0,

Trang 60

180 Tee hoe bf Dried Pascal

For i=1 to Length (M) do GTM:=16*GTM + Aji}:

End;

Begin {Chuang trinh chinh}

Write (‘cho mét sé tu nhién N:’}; Readin (N);

Wriet(‘cho mdt sé tu nhién M trong hé dém Hexa:’); Readin(M);

Trang 61

Function F(x: integer): integer;

{tính giá trị hàm f(x)=vế trái tại điểm x}

Var id, S: integer;

lf a[0]=0 then

Trang 62

182 - Tec hee big, think Pascal

Begin ine{sn); ng{sn]:=0; End;

For i:=1 to sb do Writeln(‘X’, i, ‘=’, ng[i]):

End

Else Writeln(Phương trình vô nghiệm );

Write(‘Nhan Enter dé thoat ");

Trang 63

Procedure nhap(tenx: string;Var x: np);

Var n, i, x0, code: integer;

Write(ch);

inc(n);

If (n>O) then For i:=n downto 1 do x{i):=x{i-1];

Trang 64

184 Tue haz Lif brink Pascal

Trang 65

Repeat

Repeat ch:=readkey;

Unfil (ch in[0,'1.#13]):

lf not(ch=#13) then Begin

For i:=maxnp downto 0 do

If (i>=k) then y{i}:=x[i-k]

Trang 66

186 Tuc hae big triph Pascal

For i:=0 to maxnp do

Begin f:=(x[*y[i+e) div 2;

For i:=0 to maxnp do p{i]:=0;

For i:=0 to maxnp do

Begin

If bfi]=1 then left(a,i,c) Else For j:=0 to maxnp do cfj]:=0;

con§(p,c,p), End;

13 Program P4713;

Uses Crt;

Type np=array [0 1000) of byte;

Var a, b, c, a0, a1, b0, b1, p, p0, pt: np;

Trang 67

maxnp, i, j, na, nb, n: integer;

Trang 68

488 ye bee lip think Pascal

Var i: integer,

Begin

For i:=maxnp downto 1 do

If (i>k) then y[i}:=x[i4d Else y[i]:=0;

End;

Procedure cong(x, y: np; var z: np); {x,y>=0}

End;

Procedure tru(X, y: np; var z: np), {x>=y>z0}

Var i, nho: integer;

Begin

nho:=0;

For i:=1 to maxnp do

Begin Z[Ï:=(2+x{il-y[il-nho) mod 2;

if (x[i}-y[i}-nho>=0) then nho:=0 Else nho:=1;

End;

Trang 69

End;

Function daucong(var x, y: np): byte;

{xét dấu của tổng x+y sắp xếp theo trị tuyệt đối

Var u, í, đ; integer; |

Begin

I:=maxnp;

While (x[i]=y[i]} and (i>0) do dec(i):

If (>=1) and (x{i]<yfi]) then

Begin daucong:=yj0];

For i:=0 to maxnp do Begin

u=l x[]=yf], y[]=zu;

End;

End Else daucong:=x{0};

End Else

Begin 2[0]:=daucong(x, y); tru(x, y, z);

Trang 70

190 Tue hae hip Brink Pascal

If (x{O]=y[0]) then z{0]=1 else z{0]:=0;

For i:=1 to maxnp do 2{i]:=0;

For i:=1 to maxnp do

Trang 71

End Else Begin

Trang 72

192 Te koe Lig tink Papen

left(a1, n, b1);

cong(b†, p0, p):

Write{a"b = },

While p[maxnp]=0 do dec(maxnp),

For Ì:Zmaxnp downfto 1 do Write(pji));

Readln;

End

14 Ta chứng minh F,F„ạ + F,.;Fa:¿= Fax.y (1) đúng với

mọi k, n bằng quy nạp theo k:

Với k=1: (1) có dạng 1.Fn+1.Fn.¡ = Fas - đúng với mọi n

Giả sử (1) đúng đến k, nghĩa là F„F„ + Fu.,F„.,= Fass;

với mọi n, mọi ki<=k; ta phải chứng minh (1) đúng đến k+1,

nghĩa là:

FkutFa + FvaFnsi Fnx+2 (2)

Thực vậy, vế trái của (2) = (F¿ + Fi)Fn + (Fv.ị + F2)Fn~

= FyFn + FgaFn + FvejFn+i + FuF ni

= (FiFn + Fu.iFmxg) + (Pin + FvFn+)

= F.„ ;¡ + F, (theo giả thiết quy nạp)

= Fs.v„¿ = Vẽ phải của (2)

Vậy (1) đúng đến k+1, nghĩa là (1) đúng với mọi k, mọi n

15, a Ta ching minh F,? + F,? + F,2= F,F,.1 (1) bang quy

nap theo n:

Vdi n=1: (1) c6 dang 1? = 1.1 - đúng

Giả sử (1) đúng đến n Ta sẽ chứng minh (1) đúng đến

n+†, nghĩa là:

Trang 73

FytF gt Fong + Foes = Fost (2)

Thực vậy: vế trái của (2) = (F,+Fa+ Fan ¡) + Fa„

= F„, +Fz„„¡ (theo giá thiết quy nạp)

= Fi.) = vẽ phải của (2)

Vậy 1 đúng đến (n+1) Do đó (1) đúng với mọi n

Trang 74

194 Tec hae Li, brink Pascal

Fast + Finsyys 2 Lenape (2)

Thue vay: vé trai cua (2) =F.) + Farag

=F A+ Fay + Fpeg + Fass

= (FitF pez) + (Fat + Fras)

= Lạ +L, (theo gia thiết quy nạp)

= Liss = vế phải của (2)

Vậy (1) đúng đến n+1 suy ra (1) đúng với mọi n

Lott bye Ly? +L? + LE, = La¿jLạ„2+2 (2)

Thực vậy: vế trái của (2) = (Lạ?+ L,2+ Lạ? + L„2) + LỆ,

Ngày đăng: 04/12/2015, 02:29

TỪ KHÓA LIÊN QUAN