Está en la página 1de 23
Vietebooks Nguyén Hoang Cuong Bait: C4c ham va thd tyc trong Pascal Ye 2 Dunk shim Fi, Alt FA, + F1_ xem cfu tric vi thén: dau vo cua tiing Iénh trong Pascal va ghi vao déng phia duéi cua céc cau iénh. Vi du: = Window Teo mét cifa sé man hinh méi * Procedure Window (X1,Y1,X2,¥2:Byte); Ban cé thé Copy cdc vi du_cuia Pascal va thi chay né dé hiéu ré hon vé céch si dung cua cac ham va céc thi tuc... I. Mat sé Unit hay ding trong Pascal for DOS, Khi str dung mét Unit nao 66 ban cn phai khai bdo tén Unit sau tir khod uses. Céc Unit c6 thé 43 dugc Pascal tao truéc 6 ho&c do chinh ban dinh nghia. 1. Unit System: Khéng phai khai bao sau tiv khod uses, né Ia thu vién chifa cdc hang, biénn thi tuc, ham dé xuat, nhap, xt ly dif ligu, c&p phat, quan ly bé nhé, Céc thii tuc va ham trong Unit system: Céc thu tuc (Procedure): = Append Md mét tap tin vin ban dé ghi —- Reset Md mét tp tin dA cé dé doc thém dif liéu - ReWrite Tao mdi va md tp tin = Assign Gn tén mét tp tin ngoai trd vo = Read_—_Gin gid tri cho mét hay nhiéu bién bign tap tin. = Readin Gan gid tri cho mét hay nhiéu bién = Close Bbng bién tp tin. = Str Gi gid tri kigu sé sang dang chubi - Exit Thoat chiténg trinh ho&c vong ky ty. lp. = Val B81 gi tri kiéu chudi sang dang sé. -Fillchar in mot sé byte 6 gid tri vo Write __Xudt dif ligu ra tp tin, man hinh. mét bién. - Writeln Xu&t diy liéu ra tp tin, man hinh - Halt Két thic ngang chung trinh. = Inc Tang gid tri mot bién. = Randomizekhdi tao ché nhién. tao sé ngdu Céc ham (Function = ABS Léy gid tri tuyét d61 -Paramcount —Téng sé tham sé truyén vao - Arctang Lay gid tri Arctang cla mét gid tri cla chuong trinh, lugng giéc. ~ ParamStr Ndi dung ciia tham sé. = Cos Lay gid tri ludng gidc Cosin cua mot - Pi Gid tri 3,1416... géc. =Pos Vi tri cia _mét chubi con trong Chr Lay ky ty trong bang ma ASCII chusi lén. = Concat_ Ndi céc chusi. = Random Tao mét sé ngdu nhién. -Eof — Kiém tra trang thdi két thc cla tp = Round Lam tron mét sé. tin. -Sin Cho gid tri lugng gidc Sinus cia = Eoln Trang thai két thic dong cila tp tin mot géc. vin ban -Sqr Binh phugng cua mét sé -Exp Ly luf thie co sé e cila mot sé. -Sqrt Cn bac hai cla mat $6. = Length Lay chiéu dai cue mét chudi - Upcase Béi ky ty thung thanh ky ty in. -Ord Lay this ty cla mét ky ty trong ban mé ASCIL. 2. Unit Crt: Trang 1 Vietebooks Nguyén Hoang Cuong La thy vién chia cdc hang, bién, thu tuc, ham ding dé xuat div ligu dang van ban trén man hinh, cdc thii tuc c6 lién quan dén 4m thanh. Unit Crt gm cé: Cac hang lién quan dén mau: Blank 0 Blue 1 Green 2 Syan 3 Red 4 Magenta 5 Brow 6 LightGray 7 DarkGray 8 LightRed 12 LightMagent 13 Yellow 14 White 15 Blink 128 Céc bién: Winma: ié tri dinh duéi phai cua ct sé. Winmi id tri dinh trai trén cua cite sé. Céc ham va thi tue: ~ Cirser: Xod va t6 mu cho ctfa sé hién tal - Textcolor Binh mu chit = Delay: Dung chudng trinh trong mét thai = Window Tao mét cifa sé man hinh méi gian -Keypressed —_Kigm tra néu cé mot phim = Gotoxy: Dua con tré téi toa 63 man hinh. due nhn = NoSound: Tat 8m thanh = ReadKey Lay git bj clamot phi md ue htm - Sound: Phat &m thanh véi mét t8n sé. -WhereX Vi tf edt ciacon to - Textbackground: Binh mau nén. -WhereY Vi of hing cia con 03, 3. Unit Dos: La thy vién chia cdc hang, bign, thu tye diing dé truy xuat d€n céc tép tin trén dia, truy xudt b6 nhé méy tinh... Unit DOS gdm cé: - GetDate Lay ngay cla hé théng may tinh -GetTime Lay gid cua hé théng méy tinh - SetDate Bat lai ngay cho may tinh SetTime BSL lal gid cho may tinh = DiskFree Cho sé byte cdn tréng trén dia - DiskSize Cho — dung lugng cia dia. 4. Unit Graph: . La thy vién chia céc hang, bign, thi tuc, ham ding dé truy xuét dif ligu ra man hinh trong ché d6 d@ hoa. Unit Graph gm cé: = CloseGraph éng ché dé dd hoa = DetectGraph Xe dinh Card va Mode a3 hoa ~ Initgraph Khdi tao ché d6 63 hoa = GraphResult Kt qua khdi dng & hoa = ClearDevice Xo man hinh do hoa = SetViewport Binh cifa sé trén man hinh ~ClearViewport Xo ctia sé tao béi Viewport - GetMaxx Lay gid tri lén nhat cua tao 6 X trong ché 66 a hoz - GetMaxY Lay gid tri lén nhat cua tao d6 Y trong ché 49 4 hoa - Getx Lay gid tri hign hanh cia tgo dé X trong ché dé dB hoa - GetY Lay gid tri hién hanh ciia tao 46 Y trong ché 66 43 hoa - Moveto Di chuyén co tré tdi mat toa 46 mdi - MoveRel Di chuyén con tré ngm dinh dén mét khoang cach - SetBkColor gt mau nén trong ché dd dB hoa - SetColor Bat mau vé - Get8kColor Lay mu nn trong ché 46 d8 hoe ~ GetColor Lay mau vé ~ PutPixel Ve mét diém anh tai toa 66 Trang 2 Vietebooks Nguyén Hoang Cuong - GetPixel Lay mau cua diém anh tai toe 6 * Céc kiéu bién, hing, ham, thd tyc lién quan dén céch viét chi trong dé hoa: + Hing lién quan dén Font chi Const DefaultFont SansSerifFont TriplexFont ‘SmallFont 3; GothichFont + Hing lién quan dén huéng chi Const HorizDir = 0 VertDir = 1 + Hing lién quan dén d6 Ién chit: UserCharSize = 0; + Hang lién quan dén can chinh ch CenterText = 1; LeftText BottomText = 0; TopText ightText = 2; + Céc thd tye lién quan: ~ GetTextSettings Lay céch dinh chit - OutText Viét mét chuéi tal toa 66 - OutTextxY Viet mét chudi tai_toa 6d - SetTextustify gt céch cén chudi -SetTextStyle —B&t kidu chit - TextHight Lay d6 cao cia chudi - TextWidth Lay 46 réng cua chudi * Cac kiéu bién, hang, thi tuc lién quan dén vé duéng: + Hing lién quan dén loai duéng Const Solidin = 0; Dottedin CenterLn Dashedin = 3 + Cc thi tuc lign quan: ~ GetLineSettings Lay théng sé thiét ké dung ~SetLineStyle Bt kiéu dung ~ SetWritemode Dinh Mode vé dung ~ Line Ve mét doan thang - LineRel VE doan tif vi tri con tré cdch mot doan - LineTo Vé doan th&ng ti vi trf con tré dén vi tri méi - DrawPoly Vé hinh da gide ~ Circle Vé duiing tron - Arc VE cung tron - Ellipse VE cung Ellipse - Rectangle Vé hinh chir nhat * Céc hang, bién, thd tuc lién quan dén vé hinh: ~ SetfillStyle Dat kidu t6 - SetfillPattern Bat mu td - FloodFill T6 mét ving - Ber Vé hinh chi nhat 6 t6 - Bar3D Vé hinh khéi chi nhat 3 chiéu Trang 3 Vietebooks Nguyén Hoang Cuong ~ FillPoly VE da gidc co td - PieSlice Vé hinh quat Ellipse - Sector Vé hinh ré quat tron - FillEllipce Vé hinh Ellipce * Cac thi tuc dac biét: + Const: NormalPut = 0; CopyPut XORPut =1; ' ORPut = 2; ANDPut = 3 NOTPut = 4; + Thu tue: - Getimage Luu trot mét ving man hinh - PutImage Vé lai ving man hinh 48 lwu trot - SetActivePage Bat tran vé hoat déng = SetVisualPage Dt trang hién thi - ImageSize Lay 48 én ving man hinh ~ Sector Vé hinh ré quat tran - FillEllipce Vé hinh Ellipce * Cac thid tuc dic biét: + Const: NormalPut = 0; CopyPut XORPut ORPut = 2; ANDPut NOTPut = 4; + Thu tue: ~ Getimage Luu tro mét ving man hinh - PutImage Vé lai ving man hinh 48 lau troy = SetActivePage Bat tran vé hoat déng = SetVisualPage Dt trang hién thi - ImageSize Lay 48 1én ving man hinh ~ Sector Vé hinh ré quat tran - Fillellipce Vé hinh Ellipce IL. Cu trae mot chufong trinh viét bang Pascal M@t chuong trinh may tinh la mét day lénh nh&m chi thi, huéng din méy tinh. thuc hién mét thao téc no dé, thye hién céc phép tinh trén cdc dif liu. Cu tric chung nhat cita Pascal gm 3 pha 1. Phan tiéu d8 2. Phan khai bao 3. Ph&n than chung trinh Ching duge quy dinh bang ci phdp sau Program wu; bit tén cho chuong trinh Khai bdo cdc Unit sif dung trong chudng trinh Khai bdo cdc hang st dung trong chuong trinh Binh nghia cdc kiéu bién Khai bdo cdc bién suf dung trong chuong trinh Céc chuong trinh con st dung trong chuong trinh Cac ham sif dung trong chudng trinh Begin Statement; Céc thi tuc va /énh End. Trang 4 Vietebooks Nguyén Hoang Cuong 1. Phan tigu 4 cua chuong trinh: Bat dau bing tix khod PROGRAM tigp dé la tén cla chutong trinh do ban dat ra (Tén chung trinh khéng c6 ky ty tréng). VD: Program Chao Cac Ban; 2. Phan khai bao: M6 td céc kiéu di liéu, céc bién, céc hng, cdc chuong trinh con USES Dang khai bdo cdc Unit (néu c6), céc Unit céch nhau bei déu phay (,), cuéi khai bao la dau cham phay (; VD: Uses Crt,Graph; Const Tir khoa dé khai bao hang sé Vo: Const Max=40; TYPEDing Khai béo céc kiéu dif ligu do ban dinh nghia Var Dang khai béo céc bién cua chudng vb: Var M,N:integer; sT:String; Functiong é khai béo va trign khai ham ty tao do ban tao ra. Procedure 3. Phan thn chugng trinh: Gém hai tir khod BEGIN va END bao cdc lénh cla chuong trinh. Sau tir khod END la d&u chém (.) béo hiéu chm ditt chuong trinh. Cac cau lénh trong phan than chudng trinh sé dugc thyc hién tuan ty, lénh nao nam truéc sé dudc thuc hién truéc, lénh nao n&m sau sé duge thuc hién sau. Bai 2 chuan 1. Khai bao bign: Bat ky mét bin nao khi sir dung trong chung trinh déu phai khai bdo, viéc kai bao bién gm hai phan: ~ Khai béo tén bign (tén bién do ban dat), + Khai béo kiéu dif liu, 1a tén céc kiéu di ligu chudn, dif ligu khéng chuén. Phan tén va phan dif ligu cach nhau béi ddu hai cham (:). Cac bin khai bdo dugc bat dau bing tir khod Var , céc bién cing kigu céch nhau bang dau phay (,), cdc bién khac kiéu céch nhau bang d&u chém phéy (;) Var , _: ; 2 ; 2. Khai bao Hang va hang bi Hang cling giéng nhu bién nhung trong ndi dung cla hang sé khéng thay di trong qua trinh thc hién chuong trinh. Viée khai béo hang bat dau bing tir khod Const Const = ; Hang dudc gan thang mét gid tri ma khéng cn khai béo kiéu. vo: N=20 Str = String; Trang 5 Vietebooks Nguyén Hoang Cuong Thoat=True; . u kigu sé: a. Céc phép ton trén dif liéu kiéu s6 nguyén: Trong Pascal dinh nghia kiéu sé nguyén chudn nhu sau Kiéu (type) Pham vi (Range) 6 Ién Shortint 7128 ... 128 1 Byte Integer -32768 ... 32767 2 Byte Longint -2147483648 ... 2147483647 4 Byte Byte 0... 255 1 Byte Word 0... 65535 2 Byte * Phép todn sé hoc: Chite ning ky higu Phép cng + Phép triy - Phép nhan * Phép chia nguyén Div Phép Idy phan dur Mod Céc phép ton nay téc déng nén kiéu di liéu sé nguyén cho dif liéu kiéu nguyén. * Ham, thi tuc trén dif liéu sé nguyén: ~'PRED(x) Cho phan tit diing true x = SUCC(x) Cho ra phn tir ding sau x = INC(x,r) Tang gid tri cle x nén r don vl. Tuong duong véi x:=x+r. = DEC(x/r) _Giam gid tri cua x xuéng r don vi. Tuong dudng véi x:=x-r. (Thi tuc INC(x), DEC(x) xem nhu tng, giém x mét don vi) * Phép so sdnh Logic Cac phép so sdnh nhu: Chic ning ky hiéu Bang nhau = Khac nhau <-> Nho hon < Lén hon > L6n han va bang Nhé han va bang tac dng [én kigu dif ligu nguyén cho dif ligu kiéu Boolean cé gid tri [a dling (True) hoc sai (False). vi du Var a,b:Integer; Kiemtra:Boolean; Begin a:=10; sé cho Kt qui B True di léu kéu b:=20; Boolean va gin cho bif nKiemtra. Kiemtra:=a nhé ma pham vi la 256 ky ty trong bang ma ACSIL b. Céc ham va thi tuc téc d6ng Ién dif liéu kiéu Char: ~ ord(ch:Char):Byte Cho sé thié ty trong bang ma ACSII cua ky tu ch ~ Chr(N:byte):Char Cho ky ty thiy N trong bang ma ACSII. Cé thé ding ky kiéu # dé mé ta ky tu N (VD: Chr(65) hodc #65 déu cho ky tu A). ~Pred(ch:char):char Cho ky ty dling truéc ky ty Ch = Succ(ch:char):char Cho ky ty dling sau ky ty ch Vi du: Cho Ch va St la dif liéu kiéu Char Ch:='C’; St:=Prec(Ch); Két qua St= B ‘St:=Suce(Ch); Kat qua St= D - Upcase(Ch:Char):Char Bi chit thuding thanh chit in Upcase(ch); Cho két qua A Chui ¥: Muén ding kiéu Single, Double, Extended, Comp phai adi tl’ SoftWare sang '8087/80287 trong menu Option/Compiler va may tinh phai trang bi mach coprocessor 80287. * Cac phép tinh trén dif liéu kiéu s6 thyc: + Phép tinh todn hoc Chie nang ky higu Phép céng + Phép trit - Phép nhan * Phép chia / Céc phép tinh nay tac déng nén dif liéu kiéu 56 thuc va s& nguyén cho dif liéu kiéu sé thyc. Trong mét biéu thic tinh néu céc s6 hang kiéu sé nguyén sé ty déng bién déi kiéu thanh s6 thuc dé cdc todn tif trén thuc hién phép tinh. + Phép so sdnh: Sif dung gidng hét cdc phép so sanh cia sé nguyén. + Cac trén kiéu s6 nguyén va thuc: ham Kidu tac ddng Cho ra kigu Chife nang Round(x) Real Longint Lam tron x Trune(x) Real Longint Lay phan nguyén Int) Real Real Lay phan nguyén Fractx) Real Real Lay phan lé ABS(x) Real/Nguyén —Real/Nguyén _Lay gia tri tuyét déi Arctang —-Real/Nguyén_—_Real Cho arctang cua x Cos(x) Real/Nguyén Real Cho Cosin cua x (tinh theo radian) Sin(x) Real/Nguyén Real Cho Sin cua x (tinh theo radian) Trang 8 Vietebooks Nguyén Hoang Cuong Expo) Real/Nguyén Real Ham s6 mii cia x theo co se Pi Real Cho hang 3,1416... Sar(x) Real/Nguyén Real Binh phuong cia x Sart Real/Nguyén Real Can bac 2 cla x Loo) Real/Nguyén Real Logarit Neper cue x 6. CSu tric cau lénh: Chung trinh cua Pascal 18 tap hgp cdc cdu [énh tuan ty tuan theo ci phép cua Pascal. D6 la céc chi thi cho may tinh thuc hién, cd chi thi nay dugc may tinh thi hanh tun ty cdu lénh ghi truéc sé duge thyc hién truéc, cau ghi sau sé duge thuc hign sau. Mét cu lénh trong chuong trinh Pascal c6 thé Ia ~ assignment Phép gén - Procedure call Li goi mét chuong trinh con - Begin ... End Khdi cu [nh ~if... then ... else Céu Iénh cé diéu kién = Case... of... else... end Cu lénh ré nhénh ~ Repeat ... Until Lénh lap Repeat = While ... do Lénh Ip While - For ... to/downto ... do —_Lénh lap For - With ... do Cau lénh with a. C4u Iénh don, cau Iénh ghép: Ve phusng dién cd php chung trinh cua Pascal dugc xem nhut la mét tap hgp. lién tip cdc lénh don. Cac cau lénh nay chi thi cho may tinh thuc hién mét thao tac nao dé. Néu nhy mat thao téc khdng thé mé td qua mét cdu ln don ma can phai két hgp nhiéu céu lénh don ghép lai thi céc cau Iénh ghép nay dugc dua vé mét cdu lénh don bang cach dat tap hgp cdc lénh don 6 trong cap ti khod Begin ... End. b. Cu Iénh gan: Dung dé gén gid tri hay két qua cle mét biéu thie hay néi dung cla mét bién cho mét bién. ; = ; ; ¢. LOi goi mét thi tuc: ‘Cc thi tue (Procedure) I8 cdc chutong trinh con. Céc chufdng trinh con nay do Turbo tao ra hay do nguti l8p trinh tao ra véi muc dich chi thi may tinh thu hién mat céng viée nao dé. Cac tha tue chugn dude Turbo dat trong cdc Unit, céc thu tuc do nui Ip trinh tao ra dugc dat trong chung trinh hoac trong céc Unit do ngudi ding dinh nghia. Cac thu tue nay cé mt tén. Trong chung trinh khi can dén chic nang nao tuong ting véi thu tuc thi tén tha tuc dat trong chudng trinh coi nits | mot lénh. Tuy theo yéu cBu cua thu tuc ma lén dé cé tham d6i hay khéng. Cac tham déi dude dat trong dau (). Vi du: Writeln la mét thi tuc trong Unit System cua Turbo Pascal lm chife ning xuat cdc tham déi ra man hinh. Trong chudng trinh cn chifc n&ng nay ta goi thi tuc: Writeln( Tong so la:_,S); Tong so la: va S la cdc tham déi ciia Iénh Writeln nhu vay Writeln( Tong so la: /S); 18 mét cau lénh don, 46 12 81 goi mat thd tuc. Trang 9 Vietebooks Nguyén Hoang Cuong Cac thu tyc do ngubi lap trinh tao ra phai khai béo ndi dung cua thi tuc 46 trong chuong trinh hay khai béo tén. Néu cdc thi tuc dé dugc dat trong Unit do ngufdi lap trinh ld ban tao ra thi ban phai khai bao nhu sau: Unit Ctr, MyUnit; d. Cau Iénh dieu kié Cu lénh diéu kién [a cu lénh lam cho chuong trinh: = Chon lua thuc hién mét trong hai cau lénh. - Thy hién hay khéng mét cau Iénh tuy thug vao diéu kién ban dua ra cé tho’ mén hay khéng * Cau tric: + Lénh digu kién thiéu if then ; Sw dung khi chi thuc hién mat lénh don if then Begin ; } En Sw dung khi thyc hién nhiéu enh don + Lénh digu kién du if then Else then Begin ; ; End Else Begin ; ; End; Sw dung khi thuc hién nhiéu lénh don Ghi chi: Truéc Else khéng cé du chéim phy (;). Trong 46: * cé thé: ~ Mt bién kiéu Boolean Vi dy: Nhap hai sd, tim sé nhé nhat. Thudt todn 4& gidi cé thé nhu sau! + Nh&p 56 thi nhat; Nhap s6 this hai. + So sénh sé thif nhat va s6 thif hai, néu s6 thi nhat la ding néu khéng thi sai. Doan chufong trinh cé thé nhu sai Var a,b:Integer; Nho:Boolean; Begin Write(Nhap a:”); Readin(a); 6 this hai thi so sénh Trang 10 Vietebooks Nguyén Hoang Cuong Write(Nhap b:’); Readin(b); Nho:=a<=b; If Nho then WriteIn('So nho nhat laf a’) Else Writeln('So nho nhat lab’); Readin; End. - Két hgp céc biu thiic logic théng que cdc phép logic And, ot, Xor, Not. Ghi chi: Néu trong diéu kién cé tiy hai cu lénh don tré nén ban can phai dat ching trong khéi Begin...End; khi d6 cé thé coi cdc cu lénh dan trong khéi Begin ... End; la mét cu lénh don (26 thé goi la nhém cdc cau lénh thanh mét cu lénh). e. Cu I6nh ré nhdnh. Cu lénh ré nhanh Ia c&u [énh lam chuong trinh thuc hién trong nhiéu hanh déng dé thuc hién. Cau trac: Case of tr) 1>!; tri 2>:; c chon Iva mot Else ; End; Trong a6: - Bign, biéu thiic I& mot bién hay biéu thifccho ra dif liéu rdi rac, dém dugc nhur kiu Nguyén(Integer), Char, kiéu ligt ké. Kigu Real khdng ding lam bign digu khién ré nhanh ~ Gid tri phai cing kiéu véi bién, cdc gié tri trong c&u lénh khéng dude tring nhau, cdc gia tri trong mét truding hgp céch nhau bdi dau phay (,). Vi du: Var Ch:char; Begin Write(Nhan mot phim:’); Readin(ch); Case Ch of ‘A’..'2//2..'2":Writeln(‘ban nhap mot ky tu’); 0".'9: Writeln(‘ban nhap mot so’); else WriteIn(Mot ky tu dac biet’); Readin; End. f. Cu Iénh Ip For: Trong chung trinh lénh lap For lam chung trinh thyc hién lip lai mét sé Fan nhat dinh. Cu trac: For := to do ; For := Downto do ; Cau Iénh For chi thi may tinh thyc hién mét sé fan nhét dinh ti gid tri dau dn khi vuot qua gid tri cudi . Sau mdi lin thyc hién thi sé dugc ting ho&c giam mét don vi. Vi du: Lit ké céc ky ty trong bang ma ACSI Var i:byte; Begin Trang 11 Vietebooks Nguyén Hoang Cuong 0 to 255 do Write(i:6,Chi For i: Readin; End. 9. Vong lp Repeat Cau lénh lap Repeat ... Until la lénh yéu cau chudng trinh lap lai nhiéu lan mot hanh déng cho dén khi thoa man mét diéu kién dé thoat ra khdi vong lap. Cu tric: Repeat ; ; Until ; Lénh Repeat ... until lp la cdc lénh cho téi khi cho két qué True. Vi du: Tinh giai thive Var N,i:Integer; GT:Longint; Begin Writeln(Tinh giai thua cua mot so nguyen); Write(INhap N= voi N<17);Readin(N); Until i>N; WriteIn(IN =0,GT); Readin; End. Toan bd c&u tric repeat ... Until 18 mét cu lénh don do dé ban cé thé sit dung Repeat I mét cu lénh don cia cdu lénh khac. Hodc ban cé thé sir dung nhiéu cdu kénh Repeat ... Until fdng nhau. g. L6nh lp While ... do Cu tric: While do ; Cu lénh While I8p lai cho téi khi nhan gid tri sai (False). Bn than 1a mét buéc kiém tra truée khi véo ving lp While. Nu tho man thi dudc thuc hién néu khéng thog man sé bé qua ving lap nay khac véi ving [gp Repeat ... Until 18 cdc lénh trong né it nhat cling dugc thyc hién mot lan. * Vang lp v6 tan va céch thodt khéi né Vang lap While do sé lap Iai v6 tan khi <éiéu kién> luéng bang True. Cu tric: While True do ; Vong [ip Repeat ... Until Ip lai v6 tan khi ludng sai (False) Cu tric: Repeat ... Until False; Trong chung trinh khi muén thoat ra khéi vong lp v6 tan ban cé thé két hop vdi cu Iénh digu kigen 48 kiém tra khi nao thi cho phép thoat ra khéi ving lap v6 tan Thutsng si dung if then exit; hoc if then Halt; Trang 12 Vietebooks Nguyén Hoang Cuong Bai3 M@t sé céch sit dung vé thuat todn ye Phén the ng Hen thudt todn 1. Sif dung ving For: 1. Ding man hinh khi sé déng qué 25: Var i:byte Begin for i:=0 to 200 do if (i+1) mod 24 = 0 then Begin Writeln(INhan Enter de tiep tuc ...0); Readin; end else writeln(IDong: 1,i); Readin; end. 2. Tinh trung binh cia 10 sé nhép tiv ban phim: Const Solap=10; Ver Ketqua,so:real; i:Byte; Begin Ketqua: For i:=1 to Solap do Begin . Write(ICho so thu nhatO,i:2);Readin(So); Ketqua:=Ketqua+So; En Ketqua:=Ketqua/Solap; . WriteIn(ITri trung binh cua 10 so vua nhapO,Ketqua:6:: Readin; End. 3. Vé hinh chi nhat bang dau y*6: Var dyr:byte; i,j:byte; Begin . Write(IChieu rong cua HCN 0);readin(r); Write(IChieu cao cue HCN 1);readin(d); For i:=1 tod do Begin . For j:=1 to r do write(I*0); writeln; End; Readin; End. 4. Cac doan chung trinh sau lam gi Trang 13 Vietebooks Nguyén Hoang Cuong 2. Su dung céch viét quy cac! var i,j:byte; Begin for i:=1 to 8 do Begin for j:=1 to i do write(i:i); Writeln Writeln; End; b. C6 bao nhiéu dau * hién ra trong 2 doan chuong trinh sau: Doan 1: For i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do wi Doan 2: For i:=1 to 3 do For j:=3 to 6 do for k:+i to j do Writeln(’*"); ? Thur viét chuong trinh hién bang clu chudng lén man hinh ? Tao day Fibonaci biét sé thir nhat va tht 2 cla day bang 1 vao tir s6 thir 3 tré di dug tinh bang tdng cua hai sé trude né. II. Si’ dung Repeat 1. Lap lai mét bai toan: Var rireal; Traloi:Char: Begin Repeat Write(‘Cho ban kinh : *);Readin(r); Writeln(Dien tich cua hinh tron: *,Pi * r * r); writeln; Write(’ban co lam tiep khong (C/K), Nhan K de thoi Until Upcase(Traloi End. 2, Tao Menu chon dan gian: Var Chon:Byte; Thoat:Boolean; a,b,c:real; Begin Repeat Writeln(‘1. Phep cong’); Writeln(‘2. Phep tru’); Writeln(‘3. Phep nhan’); Writeln(’4. Phep chia’); Writeln(S. Ket thuc’); Write(‘Cho hai so a,b :’);ReadIn(a,b); Writeln; Thoat:=False; Repeat Write(‘Ban thuc hien phep tinh nao voi a,b ? ');ReadIn(chon); Until (Chon>=1) and (chon<=S); Trang 14 Vietebooks Nguyén Hoang Cuong Case Chon of Carb; 2 3: 4 5: Thoat:=True; End; WriteIn(*Ket qua tinh la: ',C:6:2); Readin; Until Thoat; End. III. Sif dung While ... do: 1. Gia str bai ton giai thifa nhu sau: Pa1*2*3*...*N, Diing cil phdp lénh 8p While ... do nao ding: a. b. c. b=; Pr=l; While i<=N do Begin i:sitt; Writeln(P); Writein(P); End; Writeln(P); 2. Khi nao thi cau Chao ban hign ra trong doan chuong trinh sau: Repeat readin(ch); Until Upcase(ch)="*; Writeln( Chao ban }; Vit Igi doan trén sur dung while ... do. IV. Céch str dung mét sé ham va thi tuc: 1. Ham Chr(ch:Byte):Char Dung lay ky ty thir Ch trong bang ma ACSII For ch:=0 to 255 do Begin if (ch mod 10) =0 then writeln else write(ch,chr(ch):4); end; 2. Tao 4m thanh: Mt nét nhac trong &m nhac cé cao 46 va tru¥ng d6 nhat dinh Tan sé cua cdc nét nhac nhu sau 6 «Pst Re Ret Mi Fa Fat Sol Sol# Le la# Si 512 542575 «609.645 683624767 «B13, 861912967 Bay [a cac ndt nhac trong quang tém trung binh. Néu trong ban nhac cé cac ndt cao han hoc thép hon ban hay g&p déi hodc giém mét nia tn sé cia ndt nhac dé 6 quang trung bin, ‘Sound(Tans6:Word); Tao ra m@t £m thanh cé tin sé Tansé Delay(Ms:Word); Ding chung trinh mét thdi gian tinh bang mini gidy. NoSound; Tat 4m thanh duc tzo ra tit Sound; Trang 15 Vietebooks Nguyén Hoang Cuong 3. Cifa s6 man hinh va mau: = Window(x1,y1,x2,y2:Integer); Tao clfa sé riéng dé lam viée x1y1: Tog 66 dinh trél trén cia man hinh x2,y2: Tog 66 géc phai duéi cla man hinh Thutng duge két hgp nhu sau: Window (x1,y1,x2,y3); TextbackGround(Maunen); Tao m&u nén Cirscr; T6 mu n&n cho cifa sé ~ GotoXY(X,Y:Integer); Di chuyén con tré tdi toa dé X,Y cia man hinh, - Keypressed:Boolean; Kiém tra xem trén man hinh cé mat phim nao b&m hay khéng Thuténg duge ding trong cau Iénh: if, Repeat, Whil VD: Repeat Céc cau lénh; Until Keypressed; Lap lai téi khi ban nh&n mét phim bat ky. - Readkey:Char; Nan gid tri cua mét phim ky ty duc nh&n nhung khéng hién ra man hinh. Néu so sénh Readkey va readin véi bign Ch:Char ta thy + Readin(Ch); Man hinh disng lai v8 ch ban nhan mét phim, ky ty nhép vao dugc hién lén man hinh. Sau khi nhén Enter két qué sé gén vao bién Ch; + Ch:=Readkey; Man hinh sé dimg va chd ban nhn mét phim, ky ty nhap khéng hién lén man hinh va duge gén ngay vao bién Ch khéng c&n ban phai nh&n Enter; 4, Tao cdc sé ngau nhién: Randomize; Khdi tao ché d6 tao s6 ngdu nhién. Random(N:Word):word; tao mét s6 nguyén dufong bat ky tif O ( N-1 uses Crt} Begin Randomize; Repeat Gotoxy(Random(80)+1,Random(25)+1); TextColor(Random(15)+1); Write(Chr(Random(256))); Until Keypressed; End Baia Céch su dung mét sé kiéu di ligu 1. Sif dung kiéu dif ligu String: String [a m@t dang kigu dif liu khéng chudn gdm mét chuéi cdc ky ty trong bang ma ACSII. Ban cé thé khai bao cdc bién kiéu String theo mét trong hai céch sau Var _Bign:String; Bign:String[N]; Vid: Var Hoten:String[25]; Thongbao:String; a. Truy xudt kiéu di ligu String: Véi kigu dif ligu String ban od thé str dung phép gn, str dung cée th tue Writein, Write, Readin dé truy xudt cdc bién dang nay. Trang 16 Vietebooks Nguyén Hoang Cuong Vi du Var Hoten:String; Begin Write(’Cho biet ho va ten: ‘);Readin(Hoten); End. * Pascal cho phép truy xuat dén ting ky ty cia dif ligu kiéu String bang cach sit dung cu phap Bién{i]. Véi i la thir tu cla ky ty dé trong chudi dugc xem nhu dif liéu kiéu Char va cé thé tac déng bang cdc todn tw, ham trong dif liéu kiéu Cher. b. Cac ham va thi tuc trén di ligu kiéu String: Phép céng chu + Céc chu6i néi véi nhau bang phép céng (+) Vi dy: Sti:= Turbo ; St2:= Pascal ;St: ‘TurboPascal t1+St2; khi 46 bign St cé ngi dung + Siidyng ham céng chudi cua Pascal: Concat(st,st2,...stn:String):String; Vi du: sti hoc tre + Lay chiéu dai chuéi: Ham Length(st:string):integer; Cho chigu dai thyc cla chuéi st, gid tri nay dudc ghi trong bign st tai vi tri dau tién cla chuéi. Nghia la d@ biét chiéu dai thyc cua chudi st ban cé thé ding truy xuat ORD(St{0}); + V/ trf cla chudi con trong mét chuéi Ham POS(Chuoicon:String;Chuoi:String):Byte; ECS jst2:= Tin hoc tre ;st:=concat(sti,st2); c6 ngi dung ECS Tin Ham POS tim chuéi Chuoicon trong Chuéi. Néu Chuoicon n&m trong Chuoi thi ham POS tré vé vi tri ciia Chuoicon trong Chuoi, néu khéng sé tré gid tri bang 0 Vidu: St:= Turbo Pascal_; thi POS( ascal_,st) cho gid tri 8 8. + Lay mat chudi con tiv mét chudi: Ham Copy(st:String; vitrisinteger; Sotu:Integer):String; Ham Copy cho mét chudi ky ty con cila chudi st. chudi nay dugc lay ti vitri véi Sotu Vi du: St:="Turbo Pascal’; st’ ‘opy(st,7,6);, khi d6 sti c6 gid tri" Pascal ; + Xod mat chudi trong mat chub Ham Delete(Var St:string; Vitri,sotu:integer); Xoé khdi chudi st sotu tri vitri cén lai sé gan tré lai chudi cho bién St; Vidu: St:= Turbo Pascal ; Delete(st,7,6);, Writeln(st); (cu lénh nay hién néi dung Turbo } + Chén chudi con vao trong chuéi: Tha tue: insert(chuoicon:String; Var st:string; Vitrisinteger); Chén Chuvicon vao chuéi st bat dau tir Vitri Vidy: St:= Tin hoc tre ; Chuoicon:="ECS *; insert(Chuoicon,st,1); Writein(st); {néi dung cua st 8. ECS Tin hoc tre } * Chuyén déi gitfa sé va chudi: + Bi mot sé thénh chudi ham Str Trang 17 Vietebooks Nguyén Hoang Cuong + Bi Mot chudi thanh sé: ham Val c. Céc giai thugt co ban trén dif ligu kiéu String: (D6) chudi ky ty sang ky ty in Ver i:byte st:string; doan chyong trinh: For i:=1 to length(st) do St(i]: (C8t ky ty tring bén trai chudi ky ty: Vi du chuéi Turbo Pascal co mét s6 ky ty trang bén trai ban cé thé xod nd dé dua vé chudi_ Turbo Pascal ban bat dau tim ti vi tri dau tién cue chudi, kiém tra xem cé phai [8 mat ky tu trang hay khéng néu diing xéc dinh vj tri va xod ky tut trang 6 khéi day Ver i:byte; st:string; Boan chung trinh: ined; While st{i]=#32 do inc(i); {#3218 ky ty tréng > Delete(st,1,i-1); pease(st[i]); (Ct ky tu tréing bén phai: Ban dung vong While ... do véi digu kién cdn tim thay ky ty tréng nhung bat @8u ttr vj tri cudi cing ngusc téi vi tri dau. Var i:byte; st:string; oan chung trinh: is=length(st); while st{i]=#32 then dec(i); st[0] hr(i) ( Cit cdc khodng trang 6 gitta chudi: Var i:byte; st:string; oan chugng trinh: i:=pos(#32#32,st); while i<>0 do begin end; 2. Sit dung dé ligu kigu array Array la. mét kiéu dif liéu 06 cu tric bao gm mét sé cé dinh cdc thanh phn 6 cling kiéu dif liu. Méi thanh phn cla array dude truy xuat thdng que cdc chi sé mét ta vi tri thanh phan dé trong array. a. Khai béo kiéu: Ci phap: Type = array[chi s6] of ; vidu Type rray[Oto, Tai, Buyt, Dulich] of Integer; rray{1..30] of String; array[’A’..'Z'] of Byte; Ordtype=Array[Char] of Byte; AsciiType=Array[Byte] of Char; Trang 18 Vietebooks Nguyén Hoang Cuong b. Khai bo bi Ci phap: Var — :ARRAY[Chi sd] of ; vi du Ver Diem:array[1..30] of Byte; Type Xe=(Oto, Tai, Buyt, Dulich); Tocdo=Array[Xe] of Integer; Y¥ nghia: Ban co thé tudng tugng mét bién nhu mét hép dé chia dif liéu_va Array la mét tap hyp ndi tip cdc hép lai vdi nhau dé chifa di liéu c6 cling kiéu, méi hop dugc danh sé this tu bang chi sé da khai bao va day hép duc dat chung bang mét tén d6 [8 tén cua bién kiéu Array. Ghi chi: Bé khai bdo Array nhiéu chiéu ban theo cui phdp sau: Var :Array[Chi s61, chi sé 2,...] of ; iu:Manhinh: Array[1..25,1..80.0..15] of Integer; c. Truy xuét d@/liéu kiéu Array: (xuat div liéu kiéu Array. Cac tha tuc xugt nhap bién nhu Writeln, Readin khéng thé truy xudt thang bign Array ma phai théng qua timng thanh phn cua Array dé. Vi du! Var a,b:Array[1..100] of String[30]; c:Array[1..30,1..4] of String; Ban khéng thé viét: Write(a); Readin(b); Readin(c); Ma ban phai viét: Write(a[1]); Write(a[2]); Write(a[100)); Readin(C[1]); Array thudng kém theo bién dém cé cling kiéu v 8 cua Array, thay déi bién d&m ciia ving lp ban sé [Sn luot truy xuat hét cdc thanh phn cua Array nhu sau: For i:= to do Begin Readin([i]); Writeln([il); End; Vi du! Ver Hoten:Array[1..100] of String; i:Byte; Begin For i:=1 to 100 do Begin Write(’Nhap ho ten: ");Readin(Hoten(i]); End; End. (Gan dif ligu kigu Array: Ban o6 thé gén n6i dung cla hai bign Array cng kigu Vi du! Ver a,b:Array[1..10] of Integer; Trang 19 Vietebooks Nguyén Hoang Cuong i:Byte; Begin For i:=1 to 10 do Readin(a{i]); bisa; For i:=1 to 10 do Writeln(bli); Readin; End. d. S8p xép dif lieu trén day: Sap xép la mt qué trinh té chic lai mét day cdc dif liéu theo mét trat ty nhat dinh. Muc dich cua viéc sap xép la giip cho vic tim kiém dif liéu trong mot day dugc dé dang hon. Nguyén ly chung cua s8p xép 18 So sénh va hoan vi. Sp xép bang phuong phép chon lua don gian bat dau t thanh phan dau tién clia d8y so sénh véi cdc thanh ph&n d6 véi nhau. Tiép tuc dén thanh phan ké tigp so sanh véi cdc thanh phan cén lai cho téi khi gp thanh phan cudi cung. Vi sau thanh phn cudi cling khéng cén thnh phan nao nia dé so sénh nén viéc sép sép 43 hoan tat. Véi phusng phép nay hinh thanh hai vong lp. Vang Ip thir nhdt ISy thénh phn thir i tir 1 téi N-1 so sénh va hoén vi véi ving [gp thir 2 véi j tisi+1 tdi N Giai thuat: Cho i tiv] dén n-1 thuc hién Cho J tiri+1 d8n n thye hién N&u thanh phn te’ nhd hdn thanh phan thit j th) Hoan vj hai thanh phan thi i va this j. Vi du var i,j:Byte; Trunggian:Real; Begin For i:=1 ton -1 do For j:=it1 to n do if A[j]:File of Trang 20 Vietebooks Nguyén Hoang Cuong Vi du! Var fiFile of Byte; S:File of String; Type Hosocanbo=Record Hoten:String; Diachi:String; End; Ver _FiFile of Hosocanbo; Véi File dang Text Ver :Text; Khi khai béo tp tin kiéu Text dif igu ghi v8o dia dang File ASCII nhu la mét tap tin vn ban b. Cac thi tuc chuan trén di ligu kiéu File: (Gan tén tap tin cho mét bién: Thi tuc Assign(Var ,:String); Thi tuc nay nhim muc dich gan mét tap tin trén dia cho Tén bign File trong RAM. vi du Ver Begin sText; ASsign(f,'Chaoban.txt’); End; (M6 va tao méi mét tap tin: Thi tuc: Rewrite(Var ); (Vi du: Rewrite(f);) Thi tuc nay tao mét tp tin trén dia c6 tén da gén cho Tén bién File bang Iénh gén Asign dong thi mé tap tin dé ra dé truy xuat dif liéu Chu y: Khi mé tap tin bang lénh Rewrite néu trén dia dé cé tp tin tring vdi tén ban 8t thi tap tin trén dia sé bi xod thay vao dé [a mét tap tin tréng ma ban da gén tén cho Tén bién File. Nén ban cn cén than khi mé tap tin bang lénh Rewrite. (Mé mét tap tin d3 6: Thi tuc: ——_Reset(Var ); Mé mat tp tin 48 gan cho Tén bign File, nap néi dung cua tap tin nay vao trong Tén bign File trong RAM dé chuén bi cho viéc truy xuat dif liéu Chu y: Khi md mét tap tin bang lénh Reset néu tép tin khéng cé trén dia sé gay 16i (BEng mbt tap tin dd mé: Thi tye: Close(Var_); Tha tye nay chuyén ni dung trong bé nhé vao tép tin trén dia dong thai déng tép tin lai gidi toa bd nhé danh cho bién tap tin Chi ¥ : Cc tap tin khi d3 mé n€u khéng déng lai sé mat cdc dif ligu truy xuat trén Tén bién File, (Tray xuat da liéu: Viée xuat nhap dif ligu trén bién File cé kiéu chi dugc thyc hién théng qua ting Record - Boc dif ligu tY tap tin dung thi tuc Read(,); - Ghi dif ligu vao dia: ding thu tuc Write(,); Trang 21 Vietebooks Nguyén Hoang Cuong Chi y: Khéng ding céc thi tuc Readin, Writeln vi sau khi doc, ghi xong mét Record con tré sé ty déng nhay sang Record tiép theo. ¢. Fille van ban: DE doc dif liéu trén File van ban (Text File) ban dung céc thrid tye sau ~ Read(Var f:Text;GT1,GT2...); - Readin(Var f:Text; v1,v2,...); Doc dif liéu trén mét dang va gén cho mét hay nhiéu bign * cc ham tién (ch trén kiéu Text File: - Eoln(Var f:Text):Boolean; Cho biét tinh trang hién thdi cua con tré trén ding dang truy xuat 68 hét déng hay chua, néu da hét dong ham Eoln cho gid tri True. - Eof(Var F:text):Boolean; Cho biét con tré hién thdi di d&n cudi tap tin hay chua, néu da 6 cudi tp tin ham Eof sé tra vé gid tr] True. * Mét sé vi du: (Hign toan bé néi dung File lén man hinh: Var f:Text; ch:Char; Begin {Tén tp tin gé vao tir ding Iénh} then Assign(f,ParamStr(1)); Reset(f); While not Eof(f) do Begin Read{f,Ch); Write(ch); (uat dif liéu ra man hinh} End; End; End. ( Boe ngi dung mét File hién ra man hinh ding big Line kiéu String dé doc tng déng: Var f:Text; Line:String; Begin {Tén tp tin g6 vao tir dang lénh} if Paramcount=1 then Begin Assign(f,ParamStr(1)); Reset(f); Repeat Readin(f,Line); Writeln(Line); (Xuat dif ligu ra man hinh} Until Eof(A); End; End. (Ban cé thé tao mét chuong trinh phat nhac tir mét File nhac tao ra theo cau truc Cao dé, tru’éng dé theo ting ding? vi du {----Lambada.Not- Trang 22 Vietebooks 1318 60 1174 20 1046 20 988 20 Trong dé s6 dau chi cao d6, s6 sau chi trudng 46. Program Lambada; Uses Ctr; Const Dieuchinh Var f:Text; Caodo,Truongdo: Word; Begin Assign(f,'Lambada.not’); Reset(f); While (not Eof(f)) and (not Keypressed) do Begin Readin(f,Caodo,truongdo); Sound(Caodo); Delay(Dieuchinh*Truongdo); Nosound; End; Close(f); Nosound; End, Trang 23 Nguyén Hoang Cuong

También podría gustarte