1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo Trình Pascal 7.0 Phan Văn Dương

116 286 0

Đ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 116
Dung lượng 1,05 MB

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

Nội dung

Nên ch y Borland Pascal...  Ch n th Program và đánh check nh hình sau... Pg Down Page Down Xu ng m t trang màn hình... KY TU Sai vì có kho ng tr ng space... Chèn thêm vào dòng: CLRSCR;

Trang 1

Giáo trình

Ch biên: Phan V n D ng

Hi u đính và b sung:

Bình nh, 6-2014

Trang 2

M C L C

M C L C 2

L I M U 5

Ch ng 1 6

GI I THI U NGÔN NG L P TRÌNH PASCAL 6

VÀ BORLAND PASCAL 7.0 6

I.1 GI I THI U NGÔN NG PASCAL 6

I.1.1 Ngôn ng Pascal 6

I.1.2 Turbo Pascal 6

I.2 S D NG PASCAL 7.0 7

I.2.1 Cài đ t và s d ng Borland Pascal 7.0 7

I.2.2 Kh i đ ng Turbo Pascal 7

I.2.3 Các thao tác th ng s d ng trên Turbo Pascal 8

Ch ng 2 10

CÁC THÀNH PH N C B N C A 10

NGÔN NG L P TRÌNH PASCAL 10

II.1 CÁC T P TIN C N THI T KHI L P TRÌNH V I TURBO PASCAL 10

II.2 CÁC B C C B N KHI L P M T CH NG TRÌNH PASCAL 10

II.3 C U TRÚC CHUNG C A M T CH NG TRÌNH PASCAL 10

II.4 CÁC THÀNH PH N C B N C A NGÔN NG PASCAL 11

II.4.1 T khóa – B ch vi t – Tên 11

II.4.2 Ki u d li u 12

II.4.3 Bi n – H ng s 15

II.4.4 Bi u th c – d u ch m ph u – L i gi i thích 16

II.4.5 Câu l nh 16

BÀI T P TH C HÀNH 20

LÀM QUEN V I PASCAL 20

BÀI T P M U 20

BÀI T P T GI I 22

Ch ng 3 24

CÁC CÂU L NH CÓ C U TRÚC 24

III.1 L NH C U TRÚC R NHÁNH 24

III.1.1 D ng Không y 24

III.1.2 D ng y 24

III.2 L NH C U TRÚC L A CH N 25

III.3 CÁC L NH VÒNG L P 26

III.3.1 Vòng l p xác đ nh 26

III.3.2 Vòng l p không xác đ nh 27

III.3.3 S khác nhau gi a vòng l p WHILE … DO và REPEATE … UNTIL và FOR TO DO 29

BÀI T P TH C HÀNH 30

BÀI T P M U 30

BÀI T P T GI I 36

Ch ng 4 39

CH NG TRÌNH CON: TH T C VÀ HÀM 39

IV.1 KHÁI NI M V CH NG TRÌNH CON 39

Trang 3

IV.2 HÀM (FUNCTION) 39

IV.3 TH T C (PROCEDURE) 42

IV.4 BI N TOÀN C C VÀ BI N A PH NG 43

IV.5 V N XÂY D NG CH NG TRÌNH CON VÀ TRUY N THAM S 44 IV.6 TÍNH QUY C A CH NG TRÌNH CON 45

IV.6.1 Khái ni m đ quy 45

IV.6.2 Ch ng trình con đ quy 45

IV.6.3 C u trúc c a m t ch ng trình con đ quy 46

IV.6.4 Ph ng pháp thi t k gi i thu t đ quy 46

IV.7 T O TH VI N (UNIT) 46

IV.7.1 Khái ni m v Unit 46

IV.7.2 Thi t l p Unit 48

BÀI T P TH C HÀNH 51

BÀI T P M U 51

BÀI T P T GI I 54

Ch ng 5 56

D LI U KI U M NG (ARRAY) 56

V.1 KHÁI NI M 56

V.2 M NG M T CHI U 56

V.2.1 Khai báo 56

V.2.2 Truy xu t các ph n t c a m ng 57

V.3 M NG NHI U CHI U 57

V.3.1 Khai báo 57

V.3.2 Truy xu t các ph n t c a m ng 58

V.4 M T S GI I THU T S P X P TRÊN M NG 59

V.4.1 Gi i thu t Select Sort (l a ch n) 59

V.4.2 Bubble sort (n i b ) 60

V.4.3 M t s thu t toán khác 61

BÀI T P TH C HÀNH 62

Ch ng 6 76

XÂU KÝ T (STRING) 76

VI.1 KHAI BÁO KI U STRING 76

VI.2 TRUY XU T D LI U KI U STRING 76

VI.3 CÁC PHÉP TOÁN, TH T C VÀ HÀM TRÊN XÂU KÝ T 76

VI.3.1 Các phép toán trên xây ký t 76

VI.3.2 Các th t c và hàm trên xây ký t 76

BÀI T P TH C HÀNH 79

BÀI T P M U 79

BÀI T P T GI I 85

Ch ng 7 87

KI U B N GHI (RECORD) 87

VII.1 KHAI BÁO D LI U KI U RECORD 87

VII.2 XU T NH P D LI U KI U RECORD 87

VII.2.1 Truy nh p tr c ti p: 87

VII.2.2 S d ng câu l nh WITH 87

VII.2.3 Gán bi n Record: 87

Trang 4

BÀI T P TH C HÀNH 88

BÀI T P M U 88

BÀI T P T GI I 92

Ch ng 8 94

D LI U KI U CON TR 94

VIII.1 KHAI BÁO 94

VIII.2 LÀM VI C V I BI N NG 94

VIII.2.1 C p phát vùng nh 94

VIII2.2 Gi i phóng vùng nh 95

VIII.3 DANH SÁCH NG 95

VIII.3.1 Khái ni m 95

VIII.3.2 Khai báo 95

VIII.3.3 Các thao tác th ng g p trên danh sách liên k t đ n 95

BÀI T P TH C HÀNH 98

BÀI T P M U 98

BÀI T P T GI I 111

TÀI LI U THAM KH O 116

Trang 5

L I M U

Theo khung ch ng trình c a B Giáo D c và ào T o, Ngôn ng L p trình Pascal là m t ph n quan tr ng trong h c ph n Tin h c i c ng thu c các kh i ngành Khoa h c T nhiên, đ c bi t là ngành Công ngh Thông tin

Nh m đáp ng yêu c u h c t p c a h c sinh, sinh viên b c đ u làm quen v i công

vi c l p trình, chúng tôi đã biên so n b Giáo Trình Bài t p Pascal nh m giúp cho

H c sinh Sinh viên có m t tài li u h c t p, rèn luy n t t kh n ng l p trình, t o n n

t ng v ng ch c cho các môn h c ti p theo trong ch ng trình đào t o C nhân Công ngh Thông tin

Giáo trình bao g m r t nhi u bài t p t đ n gi n đ n ph c t p Các bài t p này đ c

biên so n d a trên khung ch ng trình gi ng d y môn Ngôn ng L p trình (MH11)

Bên c ch đó, chúng tôi c ng b sung m t s bài t p d a trên c s m t s thu t toán chu n v i các c u trúc d li u đ c m r ng nh m nâng cao k n ng, ph ng pháp l p trình cho H c sinh Sinh viên

N i dung c a giáo trình đ c chia thành 8 ch ng Trong m i ch ng đ u có ph n tóm t t lý thuy t, ph n bài t p m u và cu i cùng là ph n bài t p t gi i đ b n đ c t mình ki m tra nh ng ki n th c và kinh nghi m đã h c Trong ph n bài t p m u, đ i

v i nh ng bài t p khó ho c có thu t toán ph c t p, chúng tôi th ng nêu ra ý t ng và

gi i thu t tr c khi vi t ch ng trình cài đ t

Xin chân thành c m n các đ ng nghi p T Công ngh Thông tin Tr ng Cao

ng Ngh C i n – Xây D ng & Nông Lâm Trung B đã giúp đ , đóng góp ý ki n

đ hoàn ch nh n i dung giáo trình này

Chúng tôi hy v ng s m nh n đ c nh ng ý ki n đóng góp, phê bình c a b n đ c v

n i dung, ch t l ng và hình th c trình bày đ giáo trình này ngày m t hoàn thi n h n Bình nh, Tháng 06 N m 2014

CÁC TÁC GI

Trang 6

Ch ng 1

GI I THI U NGÔN NG L P TRÌNH PASCAL

VÀ BORLAND PASCAL 7.0 I.1 GI I THI U NGÔN NG PASCAL

I.1.1 Ngôn ng Pascal

Pascal là m t ngôn ng l p trình b c cao do Niklaus Wirth, giáo s đi n toán tr ng

i h c k thu t Zurich (Th y S ) đ xu t n m 1970 Ông l y tên Pascal đ k ni m nhà toán h c và nhà tri t h c ng i Pháp n i ti ng Blaise Pascal

Pascal là m t ngôn ng l p trình có c u trúc th hi n trên 3 ph ng di n:

- V m t d li u: Ngoài các ki u d li u đ n gi n còn có các ki u d li u có c u trúc Ta có th xây d ng các ki u d li u ph c t p t các ki u d li u đã có

- V m t câu l nh: T các câu l nh đ n gi n và l nh có c u trúc ta có th xây

d ng các câu l nh h p thành

- V m t ch ng trình: M t ch ng trình có th chia làm nhi u ch ng trình con

I.1.2 Turbo Pascal

Khi m i ra đ i, Standart Pascal là m t ngôn ng đ n gi n, dùng đ gi ng

d y và h c t p, d n d n các u đi m c a nó đ c phát huy và tr thành m t ngôn

ng m nh T Pascal chu n ban đ u, đã đ c nhi u công ty ph n m m c i ti n

v i nhi u thêm b t khác nhau

TURBO PASCAL là s n ph m c a hãng Borland đ c dùng r t ph bi n trên th gi i vì nh ng u đi m c a nó nh : t c đ nhanh, các c i ti n so v i Pascal chu n phù h p v i yêu c u ng i dùng

TURBO PASCAL 4.0 tr đi có c i ti n r t quan tr ng là đ a khái ni m Unit đ có th d ch s n các Module trên đ a, làm cho vi c l p trình tr nên ng n

g n, d dàng, ch ng trình vi t d hi u h n

T phiên b n 5.5 (ra đ i n m 1989) tr đi, Turbo Pascal có m t ki u d

li u hoàn toàn m i là ki u Object cho phép đ a các mã l nh xen k v i d li u Ngoài ra nó còn th vi n đ ho r t phong phú v i nhi u tính n ng m nh, ngôn

ng l p trình c p cao Delphi c ng s d ng cú pháp t ng t nh Turbo Pascal

Turbo Pascal 7.0 là phiên b n cu i cùng c a Borland Sau phiên b n này hãng Borland chuy n sang Pascal For Windows trong m t th i gian ng n r i s n

xu t DELPHI Turbo Pascal 7.0 h tr m nh m l p trình h ng đ i t ng nh ng

có nh c đi m là b l i “Devide by zero” trên t t c các máy có xung nh p l n

h n 300 MHz Gi i quy t v n đ này có hai ph ng án:

1 C p nh t file TURBO.TPL trong th m c \BP\BIN

2 S d ng Free Pascal

Ngoài ra c ng nên l u ý là Turbo Pascal ch y ch đ th c (real mode) nên khi

ch y trên n n Windows XP nó hay kh i đ ng l i máy Nên ch y Borland Pascal

Trang 7

Khi đó Windows s t o m t môi tr ng DOS gi l p và ch y ch đ đa nhi m

ti n l i h n

I.2 S D NG PASCAL 7.0

I.2.1 Cài đ t và s d ng Borland Pascal 7.0

Gói cài đ t Borland Pascal th ng đ c đ t trong th m c BP70 M

th m c này và ch y file cài đ t INSTALL.EXE Làm theo các h ng

d n trong quá trình cài đ t Thông th ng sau khi cài đ t xong, ch ng

trình s đ c đ t trong C:\BP Hãy vào C:\BP\BIN đ c p nh t l i file

Turbo.tpl (Chép đè file cùng tên trong th m c \BP70\Huongdan\ lên file này) Thay

vì ch y TURBO PASCAL (File th c thi: BP\BIN\Turbo.exe) hãy t o Shorcut và ch y

BORLAND PASCAL (File th c thi: BP\BIN\BP.exe) Các thao tác s d ng trên

Borland Pascal hoàn toàn gi ng v i các thao tác trên Turbo Pascal nói d i đây

I.2.2 Kh i đ ng Turbo Pascal

N u máy tính chúng ta đã cài đ t Turbo Pascal trên đ a, ta có th kh i đ ng chúng

nh sau (N u máy tính ch a có, chúng ta ph i cài đ t Turbo Pascal sau đó m i th c thi

đ c)

+ T MS-DOS: m b o r ng th m c hi n hành đúng v trí cài đ t (ho c dùng

l nh PATH) Turbo Pascal Ta đánh vào TURBO r i Enter

+ T Windows: Ta nên gi l p MS-DOS Mode cho t p tin TURBO.EXE ho c

Shortcut c a nó, n u không m i khi ta th c thi TURBO PASCAL ch ng trình

s thoát kh i Windows, tr v MS-DOS Sau khi thoát Turbo Pascal ta ph i đánh

l nh EXIT đ kh i đ ng l i Windows Cách gi l p nh sau:

 Nh p chu t ph i lên t p tin TURBO.EXE ho c Shortcut c a nó, ch n Properties

 Ch n th Program và đánh check nh hình sau

Click vào đây và

ch n nh hình d i

Trang 8

Ch n OK trên các h p tho i, sau đó kh i đ ng Turbo Pascal, màn hình so n th o sau khi kh i đ ng TURBO PASCAL nh d i đây xu t hi n

I.2.3 Các thao tác th ng s d ng trên Turbo Pascal

Pg Up Page Up Lên m t trang màn hình

Pg Down Page Down Xu ng m t trang màn hình

Del Delete Xoá ký t t i v trí con tr

Back BackSpace Xoá ký t tr c con tr

Insert Insert Thay đ i ch đ vi t xen hay vi t ch ng

Các thao tác trên kh i v n b n Ctrl + PgUp a con tr v đ u v n b n

Trang 9

+ Copy kh i vào clipboard: CTRL+ Ins (phím Insert)

+ Dán kh i (đã copy vào clipboard) vào v trí m i: SHIFT+ Ins

Ctrl + F4 Ki m tra giá tr bi n khi ch y ch ng

trình

Trang 10

Ch ng 2

C ÁC THÀNH PH N C B N C A NGÔN NG L P TRÌNH PASCAL II.1 CÁC T P TIN C N THI T KHI L P TRÌNH V I TURBO PASCAL

l p trình đ c v i Turbo Pascal, t i thi u c n 2 file sau:

• TURBO.EXE: Dùng đ so n th o và d ch ch ng trình

• TURBO.TPL: Th vi n ch a các đ n v chu n đ ch y v i TURBO.EXE Ngoài ra, mu n l p trình đ ho thì ph i c n thêm các t p tin:

• GRAPH.TPU: Th vi n đ ho

• *.BGI: Các file đi u khi n các lo i màn hình t ng ng khi dùng đ ho

• *.CHR: Các file ch a các font ch đ h a

II.2 CÁC B C C B N KHI L P M T CH NG TRÌNH PASCAL

B c 1: So n th o ch ng trình

B c 2: D ch ch ng trình (nh n phím F9), n u có l i thì ph i s a l i

B c 3: Ch y ch ng trình (nh n phím Ctrl-F9)

II.3 C U TRÚC CHUNG C A M T CH NG TRÌNH PASCAL

{ Ph n tiêu đ }

PROGRAM Tên_ch ng_trình;

{ Ph n khai báo }

USES ;

CONST .;

TYPE ;

VAR .;

PROCEDURE .;

FUNCTION ;

{ Ph n thân ch ng trình } BEGIN

END

Ví d 1: Ch ng trình Pascal đ n gi n nh t

BEGIN

Write(‘Hello World!’);

END

Ví d 2:

Program Vidu2;

Const PI=3.14;

Trang 11

II.4 CÁC THÀNH PH N C B N C A NGÔN NG PASCAL

II.4.1 T khóa – B ch vi t – Tên

If Implementation

In Inline Interface Interrupt Label

Mod Nil Not Object

Of

Or Packed Procedure Program Record Repeat Set Shl

Shr String Then

To Type Unit Until Uses Var Virtual While With Xor

Chú ý: V i Turbo Pascal 7.0 tr lên, các t khoá trong ch ng trình s đ c hi n

Trang 12

- Các ký hi u toán h c: +, -, *, /, =, <, >, (, )

- Các ký hi u đ c bi t: , : ; [ ] ? % @ \ | ! # $ { }

- D u kho ng cách (kho ng tr ng – Space)

II.4.1.3 Tên (đ nh danh)

nh danh là m t dãy ký t dùng đ đ t tên cho các h ng, bi n, ki u, tên ch ng trình con Khi đ t tên, ta ph i chú ý m t s đi m sau:

• Không đ c đ t trùng tên v i t khoá

• Ký t đ u tiên c a tên không đ c b t đ u b i các ký t đ c bi t ho c ch s

• Không đ c đ t tên v i ký t space, các phép toán

Ví d : Các tên vi t nh sau là sai

1XYZ Sai vì b t đ u b ng ch s

#LONG Sai vì b t đ u b ng ký t đ c bi t

FOR Sai vì trùng v i t khoá

KY TU Sai vì có kho ng tr ng (space)

LAP-TRINH Sai vì d u tr (-) là phép toán

- Ki u chu n là ki u Pascal đ nh ngh a s n D i đây là danh sách các ki u d

li u chu n cùng v i mi n giá tr và kích th c mà m i ki u chi m trong b nh

11 Extended 10 byte 3.4E-4932 1.1E+4932

Trang 13

Trong đó 7 ki u đ u g i là ki u đ m đ c (ordinal type), còn các ki u sau là không

đ m đ c

- Ki u do ng i l p trình đ nh ngh a thông qua vi c khai báo ki u Cú pháp:

Ví d : TYPE NguyenDuong = 1 MaxInt;

− Tr S nguyên, s th c Gi ng đ i s 10 - 9  1

* Nhân S nguyên, s th c Gi ng đ i s 10*9  90

/ Chia S nguyên, s th c S th c 10 / 4  2.5 Div Chia l y ph n nguyên S nguyên S nguyên 10 div 3  3 Mod Chia l y ph n d S nguyên S nguyên 10 mod 3  1

b) M t S Hàm s h c s d ng cho ki u s nguyên và s th c

D i đây là m t s hàm đ c Pascal thi t k s n Ng i s d ng có th g i và s

d ng chúng mà không c n ph i khai báo unit qua câu khai báo USES

COS(x) Hàm l ng giác S nguyên, s th c S th c Cos(PI)  1

ARCTAN(x) Hàm l ng giác S nguyên, s th c S th c Arctan(1) 

SUCC(x) Succ(x)  x + 1 S nguyên S nguyên

PRED(x) Pred(x)  x −1 S nguyên S nguyên

ROUND(x) Làm tròn S th c S nguyên Round(8.6)  9 TRUNC(x) Làm tròn S th c S nguyên Trunc(8.6)  8 INC(x) T ng 1 đ n v S nguyên S nguyên Inc(5)  6

DEC(x) Gi m 1 đ n v S nguyên S nguyên Dec(5)  4

ODD(x) TRUE n u x s l S nguyên Logic Odd(5)  True

TYPE <Tên ki u> = <Ki u>;

[<Tên ki u> = <Ki u>;]

Trang 14

c) M t s hàm trên ki u ký t

Hàm Ý ngh a Ki u đ i s Ki u tr v Ví d

UPCASE(ch) In hoa Ký t (char) Gi ng đ i s UPCASE(‘a’)  A SUCC(cg) Succ(x)  x + 1 Ký t (char) Gi ng đ i s Succ(‘B’)  C PRED(ch) Pred(x)  x −1 Ký t (char) Gi ng đ i s PRED(‘B’)  A ORD(x) L y mã ASCII Ký t S nguyên Ord(‘a’)  97 CHR(x) ký t  mã ASCII S nguyên Ký t Chr(65)  ‘A’

d) Các phép toán logic

Các phép toán logic, toán h ng c a nó ph i là m t ki u Boolean Toán h ng c ng

nh các k t qu c a phép toán ch nh n 1 trong 2 giá tr : ho c là TRUE ho c là FALSE (không có giá tr khác)

Các toán t logic tác đ ng lên ki u Boolean, cho k t qu là ki u Boolean AND (và),

OR (ho c), XOR, NOT (ph đ nh) Sau đây là b ng chân tr c a các toán t này

Trang 15

Còn có hai phép toán bit n a là SHIFT LEFT và SHIFT RIGHT, l n l t đ c kí

hi u là SHL và SHR Phép toán SHL làm đ y các bit lên m t s v trí v bên trái và thêm các giá tr 0 vào các bit t n cùng bên ph i Cú pháp:

<Bi u th c nguyên> SHL <s bit>

Ví d :

X 0 0 0 0 1 0 1 0

X SHL 1 0 0 0 1 0 1 0 0 { y v bên trái 1 bit}

X SHL 2 0 0 1 0 1 0 0 0 { y v bên trái 2 bit}

V y (10 SHL 1) cho k t qu 20 (10 SHL 2) cho k t qu 40

Ch ng trình qu n lý bi n thông qua tên bi n và m i bi n t ng ng v i m t ki u

d n (help) đ i v i m i Unit đ bi t trong Unit có các h ng nào đã đ c đ nh ngh a

- H ng s do ng i dùng đ nh ngh a thông qua vi c khai báo Cú pháp:

VAR <Tên bi n> ,[< Tên bi n>]: <Ki u>;

[ <Tên bi n>,[< Tên bi n>]: <Ki u>;]

Trang 16

• Phép toán m t ngôi (NOT, -)

• Phép toán *, /, DIV, MOD, AND

• Phép toán +, -, OR, XOR

FOR i:=1 TO 10 DO Write(i);

Trong câu l nh trên, l nh Write(i) đ c th c hi n 10 l n N u hi u d u ch m ph y

là k t thúc câu l nh thì l nh Write(i) ch th c hi n 1 l n

II.4.4 3 L i gi i thích

Các l i bàn lu n, l i chú thích có th đ a vào b t k ch nào trong ch ng trình đ cho ng i đ c d hi u mà không làm nh h ng đ n các ph n khác trong ch ng trình L i gi i thích đ c đ t gi a hai d u ngo c { và } ho c gi a c m d u (* và *)

Ví d :

Var a,b,c:Rea; {Khai báo bi n}

Delta := b*b – 4*a*c; (* Tính delta đ gi i ph ng trình b c 2 *)

II.4.5 Câu l nh

II.4.5.1 Khái ni m v m t câu l nh

- M t câu l nh đ nxác đ nh m t công vi c mà ch ng trình ph i th c hi n đ x

lý các d li u đã đ c mô t và khai báo Các câu l nh đ c phân cách b i d u (;)

D u (;) có tác d ng ng n cách gi a các câu l nh, nó không thu c vào câu l nh

CONST <Tên h ng> = <Giá tr h ng>;

[<Tên h ng> = <Giá tr h ng>;]

Trang 17

Ví d :

CLRSCR; {Xóa màn hình}

Writeln(‘Nhap vao day mot so nguyen:’); {Thông báo nh p li u}

Readln(SoNguyen); {Ch nh p li u}

Writeln(‘Binh phuong cua no la: ’,SoNguyen*SoNguyen); {K t xu t}

- Câu l nh h p thành: N u trong ch ng trình có nhi u câu l nh liên ti p c n đ c

x lí và xem nh m t câu l nh đ n chúng ta c n bao nó gi a hai t khóa BEGIN

và END;

- Câu l nh có c u trúc: Bao g m c u trúc r nhánh, c u trúc đi u ki n ch n l a,

c u trúc l p M i câu l nh có c u trúc (IF , CASE , FOR , REPEAT ,

Trang 18

Chú ý

- Khi m t giá tr gán cho bi n, nó s thay th giá tr c mà bi n đã l u gi tr c

đó (bi n s nh n giá tr m i)

- Trong l nh gán, bi u th c bên ph i và bi u th c bên trái phép gán ph i cùng

ki u d li u N u không s có thông báo l i “Type Mismatch” khi biên d ch

Các tham s có th là các h ng, bi n, bi u th c N u có nhi u tham s trong câu

l nh thì các tham s ph i đ c phân cách nhau b i d u ph y Khi s d ng l nh

WRITE/WRITELN, ta có hai cách vi t: không qui cách và có qui cách

- Vi t không qui cách: d li u xu t ra s đ c canh l phía bên trái N u d

500

500 1.2345700000E+02 123.46

c) L nh nh p d li u t bàn phím

nh p d li u t bàn phím vào các bi n có ki u d li u chu n (tr các bi n ki u BOOLEAN), ta s d ng cú pháp sau đây:

READLN(<bi n 1> [,<bi n 2>, ,<bi n n>]);

Chú ý: Khi g p câu l nh READLN; (không có tham s ), ch ng trình s d ng l i ch

ng i s d ng nh n phím ENTER m i ch y ti p

Trang 19

d) Các hàm và th t c th ng dùng trong nh p xu t d li u

- Hàm KEYPRESSED: Hàm tr v giá tr TRUE n u nh có m t phím b t k

đ c nh n, n u không hàm cho giá tr là FALSE

- Hàm READKEY: Hàm có ch c n ng đ c m t ký t t b đ m bàn phím

- Th t c GOTOXY(X,Y:Integer): Di chuy n con tr đ n c t X dòng Y

- Th t c CLRSCR: Xoá màn hình và đ a con tr v góc trên bên trái màn hình

- Th t c CLREOL: Xóa các ký t t v trí con tr đ n h t dòng

- Th t c DELLINE: Xoá dòng t i v trí con tr và d n các dòng phía d i lên

- Th t c TEXTCOLOR(color:Byte): Thi t l p màu cho các ký t Trong đó

color ∈ [0,15]

- Th t c TEXTBACKGROUND(color:Byte): Thi t l p màu n n cho màn

hình

Trang 20

BÀI T P TH C HÀNH LÀM QUEN V I PASCAL

Bài t p 2.0: Làm quen v i Pascal

1 Kh i đ ng Turbo Pascal

2 Nh p vào đo n ch ng trình sau:

Uses Crt;

Begin

Writeln(‘***********************************************************’);

Writeln(‘* CHUONG TRINH PASCAL DAU TIEN CUA TOI *’);

Writeln(‘* Oi! Tuyet voi! *);

Writeln(‘***********************************************************’); Readln; End 3 D ch và ch y ch ng trình trên 4 L u ch ng trình vào đ a v i tên BAI1.PAS 5 Thoát kh i Pascal 6 Kh i đ ng l i Turbo Pascal 7 M file BAI1.PAS 8 Chèn thêm vào dòng: CLRSCR; vào sau dòng BEGIN 9 D ch và ch y th ch ng trình 10 L u ch ng trình vào đ a 11 Thoát kh i Pascal 12 Vi t ch ng trình in ra màn hình các hình sau: * ******** *******

*** ** ** ** **

** ** ** ** **

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

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

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

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

BÀI T P M U

Bài t p 2.1: Vi t ch ng trình nh p vào đ dài hai c nh c a tam giác và góc gi a hai

c nh đó, sau đó tính và in ra màn hình di n tích c a tam giác

Ý t ng:

Công th c tính di n tích tam giác: S = sin( )

2

1a b θ v i a,b là đ dài 2 c nh và θ là góc

k p gi a 2 c nh a và b

Trang 21

Program Tinh_dien_tich_tam_giac;

Var a,b,goc,dientich: Real;

Begin

Write('Nhap vao do dai canh thu nhat: '); Readln(a);

Write('Nhap vao do dai canh thu hai: '); Readln(b);

Write('Nhap vao goc giua hai canh: '); Readln(goc);

Write('Nhap vao n= '); Readln(n);

Write('Nhap vao x= '); Readln(x);

Write('Nhap vao a= '); Readln(a);

Write('Nhap vao b= '); Readln(b);

tam:=a; {tam l y giá tr c a a}

Trang 22

b/ Không đ c phép dùng bi n trung gian

Program Swap;

Var a,b: Integer;

Begin

Write('Nhap vao a= '); Readln(a);

Write('Nhap vao b= '); Readln(b);

a:=a+b; {a l y t ng giá tr c a a+b}

B A

C y B x

+

++

Bài t p 2.7: Vi t ch ng trình tách m t s n thành 2 s a, b sao cho tích P=a*b2 đ t

Bài t p 2.8: Màn hình đ h a c a m t máy tính có đ phân gi i: 640x480 Bi t r ng,

m i đi m trên màn hình chi m 1 byte H i c n bao nhiêu byte đ l u tr toàn b màn hình đ h a đó?

Có 2 sinh viên vi t ch ng trình tính s byte l u tr màn hình đ h a:

Trang 23

Hãy cho bi t 2 ch ng trình trên cho k t qu đúng hay sai? T i sao?

Bài t p 2.9: Màn hình đ h a c a m t máy tính có đ phân gi i: 640x480 Bi t r ng,

m i đi m trên màn hình chi m 1 byte H i c n bao nhiêu byte đ l u tr m t vùng có kích th c b ng 1/10 màn hình đ h a đó?

Có 2 sinh viên vi t ch ng trình gi i bài toán này nh sau:

Trang 24

Ch ng 3 CÁC CÂU L NH CÓ C U TRÚC III.1 L NH C U TRÚC R NHÁNH

III.1.1 D ng Không y

N u đi u ki n là đúng thì th c hi n công vi c (ng c l i là đi u ki n sai thì không

th c thi công vi c) L u đ kh i (hình bên)

N u đi u ki n là đúng thì th c hi n công vi c 1, ng c l i là đi u ki n sai thì th c

thi công vi c 2 L u đ kh i (hình bên)

CV2

Trang 25

Const 2: S2;

Const n: S n ; ELSE S n+1 ; END;

Trong đó:

 B: Bi u th c ki u vô h ng đ m đ c nh ki u nguyên, ki u logic, ki u ký t ,

ki u li t kê

 Const i: H ng th i, có th là m t giá tr h ng, các giá tr h ng (phân cách nhau

b i d u ph y) ho c các đo n h ng (dùng hai d u ch m đ phân cách gi a giá tr

đ u và giá tr cu i)

 Giá tr c a bi u th c và giá tr c a t p h ng i (i=1¸n) ph i có cùng ki u

Khi g p l nh CASE, ch ng trình s ki m tra:

- N u giá tr c a bi u th c B n m trong t p h ng const i thì máy s th c hi n l nh

Trang 26

Chú ý: Khi s d ng câu l nh l p FOR c n chú ý các đi m sau:

Không nên tu ti n thay đ i giá tr c a bi n đ m bên trong vòng l p FOR vì làm

nh v y có th s không ki m soát đ c bi n đ m

Giá tr Max và Min trong câu l nh FOR s đ c xác đ nh ngay khi vào đ u vòng

l p Do đó cho dù trong vòng l p ta có thay đ i giá tr c a nó thì s l n l p c ng không thay đ i

Ví d 1: in lên màn hình dãy s t 1, 2, 3, …, n ta có th làm nh sau:

Var i, n: Integer;

Begin

Write( ‘Nh p vào m t s : ’); Readln(n);

Wrtieln( ‘D i đây là dãy s t 1 đ n s b n v a nh p’ );

Trang 27

Ví d 2: Li t kê các s nguyên d ng là c s c a m t s cho tr c

Var i, n: Integer;

Begin

Write( ‘Nh p vào m t s : ’); Readln(n);

Wrtieln( ‘D i đây li t kê các c s c a s b n v a nh p’ );

Until B;

While B Do S;

Ý ngh a:

D ng REPEAT: L p l i công vi c S cho đ n khi bi u th c B=TRUE thì d ng

D ng WHILE: Trong khi bi u th c B=TRUE thì ti p t c th c hi n công vi c S

Ví d 1: Tính ti n g i ngân hàng Lãi su t hàng tháng là 1.7%, ng i đó g i vào ngân hàng v n ban đ u là 1000000 (1 tri u), c sau m i tháng ti n lãi đ c g p vào v n và

tr thành v n m i đ tính cho tháng sau H i sau bao lâu ng i đó đ c 1 t đ ng?

Repeat

S

B

+ -

Trang 28

var Ls, Vn, Mm, tam: real;

tam := Vn;

While (tam<Mm) do

begin tam := tam + Ls*tam;

sothang := sothang + 1;

end;

Writeln('So thang = ' ,sothang);

Writeln('Tien von cong lai la: ',tam:12:2);

readln;

End

Ví d 2: Vi t ch ng trình nh p vào bán kính, tính chu vi và di n tích c a hình tròn Sau khi in ra chu vi, di n tích thì h i ng i dùng có ti p t c không? (C/K) Khi nào

ng i dùng n phím ‘K’ thì thoát, ng c l i cho ng i dùng ti p t c nh p vào bán kính khác và in ra chu vi và di n tích m i

Trang 29

III.3.3 S khác nhau gi a vòng l p WHILE … DO và REPEATE … UNTIL và FOR TO DO

Vòng l p FOR là vòng l p xác đ nh tr c s l n l p Tr khi c n thi t, nói chung không nên can thi p vào bi n đ m vòng l p

C hai vòng l p While và Repeat đ u là vòng l p không xác đ nh tr c s l n l p

C n ph i có câu l nh thay đ i giá tr bi n đi u khi n vòng l p đ có th thoát ra kh i vòng l p

Trong vòng l nh WHILE … DO thì đi u ki n s đ c ki m tra tr c, n u đi u ki n đúng thì th c hi n công vi c Còn trong l nh REPEAT … UNTIL thì ng c l i, công

vi c đ c làm tr c r i m i ki m tra đi u ki n, n u đi u ki n đúng thì vòng l p k t thúc Nh v y đ i v i vòng l p REPEAT bao gi thân vòng l p c ng đ c th c hi n ít

nh t m t l n, trong khi thân vòng l p WHILE có th không đ c th c hi n l n nào

Tu nh ng hoàn c nh khác nhau mà ta l a ch n lo i vòng l p cho thích h p N u dùng

2 l nh này đ gi i cùng m t bài toán, cùng m t gi i thu t nh nhau thì đi u ki n sau WHILE và đi u ki n sau UNTIL là ph đ nh nhau

Trang 30

BÀI T P TH C HÀNH BÀI T P M U

Bài t p 3.1: Vi t ch ng trình nh p vào m t s nguyên và ki m tra xem s v a nh p

Trang 31

Var tuoi:Byte;

Begin

Write(Nhap vao tuoi cua mot nguoi:'); Readln(tuoi);

Case tuoi Of

1 17: Writeln(Nguoi nay la thieu nien');

18 39: Writeln(Nguoi nay la thanh nien');

40 60: Writeln(Nguoi nay la trung nien');

Else Writeln(Nguoi nay la lao nien');

Trang 33

Ý t ng:

Bài toán này không bi t chính xác s l n l p nên ta không th dùng vòng l p FOR

Vì ph i nh p vào s nguyên N tr c, sau đó m i ki m tra xem N=0? Do đó ta nên dùng vòng l p REPEAT

Write('Nhap vao mot so nguyen N= '); Readln(N);

If N MOD 2 = 0 Then dem:=dem+1;

Vì tính s Pi v i đ chính xác Epsilon nên không bi t tr c đ c c th s l n l p,

do đó ta ph i dùng vòng l p WHILE ho c REPEAT Có ngh a là ph i l p cho t i khi t=4/(2*i+1) ≤ Epsilon thì d ng

Trang 34

- Tìm USCLN: L y s l n tr s nh cho đ n khi a=b thì d ng Lúc đó: USCLN=a

- BSCNN(a,b) = a*b DIV USCLN(a,b)

Trang 35

Bài t p 3.11: Vi t ch ng trình nh p vào s t nhiên N r i thông báo lên màn hình s

đó có ph i là s nguyên t hay không

Ý t ng: N là s nguyên t n u N không có c s nào t 2 → N div 2 T đ nh ngh a

For i:=2 To N div 2 Do

If N MOD i=0 Then d:=d+1;

{Ki m tra}

If d=0 Then Writeln(N,’ la so nguyen to’)

Else Writeln(N,’ khong phai la so nguyen to’);

End;

Readln;

End

Trang 36

Delta<0: Ph ng trình vô nghi m

Delta=0: Ph ng trình có nghi m kép: x = -b/(2*a)

Delta>0: Ph ng trình có 2 nghi m phân bi t: x1,2 = (-b±SQRT(Delta))/(2*a)

Bài t p 3.13: Vi t ch ng trình nh p vào t bàn phím: gi , phút, giây C ng thêm m t

s giây c ng đ c nh p t bàn phím Hãy in ra k t qu sau khi c ng xong

G i ý:

- G i s giây đ c c ng thêm là: ss Gán giây:=giây+ss

- N u giây≥60 thì: phút:=phút + giây DIV 60 và giây:=giây MOD 60

- N u phút≥60 thì: gi :=gi + phút DIV 60 và phút:=phút MOD 60

Bài t p 3.14: Vi t ch ng trình tìm Max, Min c a 4 s : a, b, c, d

Bài t p 3.15: Vi t ch ng trình nh p vào ngày, tháng, n m Máy s hi n lên ngày, tháng, n m hôm sau

G i ý:

Bi n lu n theo tháng Gom tháng thành 3 nhóm: tháng có 31 ngày (1,3,5,7,8,10,12), tháng có 30 ngày (4,6,9,11) và tháng 2 (có 28 ho c 29 ngày tùy theo n m nhu n) Dùng l nh l a ch n:

Trang 37

S5 = 1 + sin(x) + sin2(x) + + sinn(x)

Bài t p 3.20: Vi t ch ng trình đ tìm l i gi i cho bài toán sau:

H i có bao nhiêu trâu đ ng, trâu n m, trâu nghé?

Bài t p 3.22: Vi t ch ng trình nh p vào các s nguyên t bàn phím cho đ n khi nào

g p s nguyên t thì k t thúc nh p Tính t ng các s ch n và trung bình c ng các s l

G i ý:

Dùng vòng l p REPEAT UNTIL NTo; đ nh p Trong đó, NTo là bi n ki u Boolean đ ki m tra s đ c nh p vào có ph i là s nguyên t hay không

Trang 38

Bài t p 3.23: Vi t ch ng trình nh p vào m t s nguyên d ng Hãy thông báo lên màn hình s đó có bao nhiêu ch s và t ng các ch s c a s đó

G i ý:

Dùng vòng l p WHILE Trong khi N>0 thì: l y ra ch s cu i cùng c a N đ tính

b ng phép toán MOD 10, sau đó b b t đi ch s cu i cùng c a N b ng phép toán DIV

Bài t p 3.26: S hoàn thi n là s t nhiên có t ng các c c a nó (không k chính nó)

b ng chính nó Vi t ch ng trình ki m tra xem m t s đ c nh p vào t bàn phím có

ph i là s hoàn thi n hay không? Ví d : 6, 28 là các s hoàn thi n

Trang 39

Ch ng 4

IV.1 KHÁI NI M V CH NG TRÌNH CON

Trong ch ng trình, có nh ng đo n c n ph i l p đi, l p l i nhi u l n nh ng ch khác nhau tránh ph i vi t l i các đo n đó ng i ta th ng phân ch ng trình ra thành nhi u module, m i module gi i quy t m t công vi c nào đó, các module nh v y

là nh ng ch ng trình con (subprogram)

M t ti n l i khác c a vi c s d ng module là ta có th d dàng ki m tra tính đúng

đ n c a nó tr c khi ráp n i vào ch ng trình chính Do đó vi c xác đ nh sai sót và

ti n hành đi u ch nh trong ch ng trình s thu n l i h n

Trong Pascal ch ng trình con đ c vi t d i d ng hàm (FUNCTION) ho c th t c (PROCEDURE) Hàm và th t c đ u là nh ng ch ng trình con, nh ng hàm khác th

t c ch hàm tr v m t giá tr cho l nh g i thông qua tên hàm còn th t c thì không

Do đó ta ch dùng hàm khi tho mãn các yêu c u sau

- Ta mu n nh n m t k t qu và ch m t mà thôi

- Ta c n dùng tên ch ng trình con (ch a k t qu đó) đ vi t trong các bi u th c

N u không th a hai yêu c u trên thì ta dùng th t c

Borland Pascal thi t k và cài đ t s n trong các Unit đi gèm theo gói ph n m m nhi u th t c và hàm r t ti n dùng Mu n s d ng các th t c ho c hàm trong Unit nào

ta ch c n khai báo tên Unit đó trong câu l nh USES Tuy nhiên ph n l n các th t c

và hàm dùng trong ch ng trình là do ng i dùng ph i t vi t

IV.2 HÀM (FUNCTION)

Hàm là m t ch ng trình con tính toán tr v cho ta m t giá tr ki u vô h ng C u trúc hàm nh sau:

FUNCTION <Tên hàm>[(<Th.s >:<Ki u>[;<Th.s >: <Ki u>])]:

[VAR <Bi n>:<Ki u>[;<Bi n>: <Ki u>]] Khai báo các

Trang 40

- Tên hàm là m t danh bi u, ph i tuân th theo qui t c đ t danh bi u đã đ c p

FUNCTION TEST(x,y:Integer; z:Real): Real;

ây là m t hàm có tên là TEST, v i 3 tham s , x và y thu c ki u Integer, z thu c ki u real, hàm tr v m t k t qu ki u real

- Trong hàm, ta có th s d ng các h ng, ki u, bi n dùng riêng trong n i b hàm

- Thông th ng m c đích s d ng hàm là đ l y tr tr v do đó c n l u ý gán k t

qu cho tên hàm trong thân hàm

Ví d 1: Ta xây d ng hàm DT truy n tham s vào là bán kính c a hình tròn, hàm này

Writeln(‘Di n tích hinh tron tuong ung: ‘ ,DT(Bankinh):0:2);

Writeln;

Write(‘Ti p t c (C/K)? ’);

Repeat ch:=readkey;

Ngày đăng: 09/11/2015, 17:49

TỪ KHÓA LIÊN QUAN

w