Ng !i ó làm th nào mang chúng sang sông... Ví d# vi t begin hay Begin hay BEGIN là nh nhau.. 5.Câu l nh trong Pascal... Các phép toán lôgic g m có: NOT, AND, OR và XOR... Ghi chú: Cách
Trang 1- Các l nh c thi hành m t cách tu n t , thi hành xong m t l nh m i thi hành l nh k ti p
- Khi thi hành ch ng trình c n thêm d li u t bên ngòai, i u này làm cho ch ng trình tr nên phong phú và t ng quát
Ch ng trình có th c vi t b ng các ngôn ng l p trình khác nhau 2.Ngôn ng l p trình
Có hàng tr m lo i ngôn ng l p trình khác nhau, m i lo i ngôn ng u có
cú pháp riêng c a nó Ngôn ng l p trình có th c phân chia thành 3 lo i chính : ngôn ng máy, h p ng và ngôn ng c p cao
2.1 Ngôn ng máy
Ngôn ng máy (mã máy) là ngôn ng n n t ng c a b vi x lý Bao g m các câu l nh là nh ng dãy s nh phân 0 và 1 r t khó c, khó vi t Ch có các chuyên gia v máy tính m i vi t c u i m c a vi c vi t ch ng trình b ng ngôn ng máy là l p trình viên có th i u khi n máy tính tr c ti p và t c chính xác i u mình mu n làm, t c thi hành ch ng trình nhanh và kích
th c ch ng trinh nh Nh c i m c a ch ng trình ngôn ng máy là thông
th !ng s" m t r t nhi u th!i gian vi t, r t khó c, khó tìm l i và ch ng trình ph# thu c vào b vi x lý nên ch ng trình ch ch y c trên nh ng máy tính
có cùng b vi x lý mà thôi Ngôn ng máy còn c g i là ngôn ng c p th p (low-level language)
2.2 H p ng
H p ng c phát tri n nh m giúp các l p trình viên d$ nh các ch th
c a ch ng trình h n Các ch ng trình h p ng còn bao g m các ch th v% mô (macro instruction) có th t o ra nhi u l nh mã máy Các ch ng trình h p ng
c chuy n sang mã máy thông qua m t ch ng trình &c bi t g i là trình h p
d ch (assembler) M&c dù h p ng t ng i d$ dùng h n mã máy nh ng h p
ng v'n c xem là ngôn ng c p th p b i vì nó v'n còn r t g n v i t ng thi t
k c a máy tính
2.3 Ngôn ng c p cao
Ngôn ng c p cao g n g(i h n v i ý ni m ngôn ng mà h u h t m i
ng !i u bi t, nó bao g m các danh t , ng t , ký hi u h c, liên h và các thao tác lu n lý Các y u t này có th c ph i h p, liên k t v i nhau t o thành m t hình th)c c a câu Các "câu" này c g i là các m nh c a
ch ng trình (program statement) Chính vì nh ng &c i m này, các l p trình viên d$ dàng c và d$ h c ngôn ng c p cao h n so v i ngôn ng máy ho&c
h p ng M t l i i m quan tr ng là ngôn ng c p cao thông th !ng không ph# thu c vào máy tính, ngh%a là các ch ng trình vi t b ng ngôn ng c p cao có
th ch y trên các lo i máy tính khác nhau (s d#ng các b vi x lý khác nhau) 2.4 Các ngôn ng l p trình thông d ng
Hi n nay có r t nhi u ngôn ng l p trình c p cao là :BASIC, COBOL, C, FORTRAN, PASCAL.v.v Ngày này còn có thêm r t nhi u các ngôn ng l p trình h ng i t ng r t ti n l i cho các l p trình viên nh : C++, Visual Basic , Visual C, Denphi, Javal v.v
Trang 23.Trình thông d ch và biên d ch
M i ch ng trình c vi t b ng các ngôn ng không ph i là ngôn ng máy cu i cùng u ph i c chuy n i sang ngôn ng máy tr c khi c thi hành Ch ng trình ngôn ng c p cao c d ch sang ngôn ng máy b ng m t trong hai cách: b ng trình biên d ch (compiler) ho&c trình thông d ch (interpreter) 3.1 Trình biên d ch :
S" chuy n i toàn b ch ng trình sang mã máy, r i ch)a k t qu vào
%a có th thi hành v sau Trình biên d ch t o ra m t danh sách l i c a t t c
m nh trong ch ng trình vi ph m cú pháp c a ngôn ng Danh sách này giúp
b ng ng l i và trình thông d ch s" thông báo l i ng !i l p trình c n c) vào l i
Trong khoa h c máy tính, thu t gi i c nh ngh a là m t dãy h u h n các
b c rõ ràng và có th thi hành c, quá trình hành ng theo các b c này
Ng !i l p trình dùng ngôn ng c a mình mô t thu t Ng !i l p trình
li t kê có th) t các b c c a thu t gi i Tuy v y thu t gi i th !ng dài dòng khó
hi u và th !ng không theo m t qui t*c nh t nh.
Ví d 1 : Thu t gi i ph ng trình b c hai ax 2 +bx+c=0 (a<>0)
Trang 33.2 N u ∆ > 0 thì
3.2.1 Ph ng trình có hai nghi m phân bi t x 1 và x 2 3.2.2 Giá tr c a hai nghi m c tính theo công th)c sau
3.2.3 K t thúc
3.3 N u ∆ = 0 thì
3.3.1 Ph ng trình có nghi m kép x 0 3.3.2 Giá tr c a nghi m kép là : x=-b/2a 3.3.3 K t thú c
L u hay s kh i là m t công c# tr c quan di$n t các thu t gi i
Bi u di$n thu t gi i b ng l u s" giúp ng !i c theo dõi c s phân c p các tr !ng h p và quá trình x lý c a thu t Ph ng pháp l u th !ng c dùng trong nh ng thu t có tính r*c r i, khó theo dõi c quá trình x lý
Trong thu t gi i dùng l u th !ng dùng các hình v" qui c sau mô
2
1
∆+
−
=
a
bx
2
2 − − ∆
=
Trang 4x1,2=-b/2a D>0 Pt có 2 nghi m
Trang 52.Vi t thu t gi i tim s l n nh t trong 3 s a, b, c
3.Vi t thu t gi i tìm s Pibonanci th) n v i
F 0 =0, F 1 =1, F n =F n-2 +F n-1
4.Vi t thu t gi i tim các s nguyên t trong dãy s n s t a 1 a n
5.Vi t gi i thu t tìm USCLN, BSCNN c a 2 s a, b
6.Vi t gi i thu t tính t ng l0 , t ng ch1n c a dãy n s t nhiên a 1 a n
7.Vi t thu t gi i tìm n! =1*2*3* .*n
8.Xác nh d li u và d li u ra cho các thu t gi i sau
a.Ki m tra xem ba s cho tr c a, b, c có th là dài ba c nh c a m t tam giác hay không ?
10.Vi t thu t gi i vi t gi i thu t xác nh ma tr n n v
11.Vi t thu t gi i in ra ma tr n chuy n v c a ma tr n ã nh p tr c
12.Vi t thu t gi i In ra ma tr n tích cu hai ma tr n ã nh p tr c
13 Có 3 bình A, B, C Bình A có dung tích 8 lít và ng y 8 lít r u, bình B có dung tích 5 lít, bình C có dung tích 3 lít Trình bày các b c th c hi n có
c 4 lít r u bình A và 4 lít r u bình B
14 M t ng !i có 1 con g u, 1 con dê và 1 cái b*p c i N u không có ng !i bên chúng thì con g u s" n th t con dê ho&c con dê s" n b*p c i Thuy n ch
có th ch c ng !i ó v i con g u ho&c con dê ho&c b*p c i Ng !i ó làm
th nào mang chúng sang sông
D
Dx a b b a
c b b c
b a
b a
b c
b c
2 1 2 1
2 2
1 1
2 2
1 1
D
Dy a b b a
c a a a
b a
b a
a c
a c
2 1 2 1
2 2
1 1
2 2 1 1
Trang 6Ch ng 2
GI I THI U NGÔN NG L P TRÌNH PASCAL
I.Gi i thi u chung
1.Xu t x : PASCAL là ngôn ng l p trình c p cao c giáo s Niklaus Wirth
tr !ng i h c K2 thu t Zurich (Th#y s%) thi t k và công b vào n m 1971 Ông
&t tên cho ngôn ng c a mình là Pascal t ng nh nhà h c n i ti ng ng !i Pháp th k3 17: Blaise Pascal, ng !i ã sáng ch ra chi c máy tính c khí u tiên c a nhân lo i
Thành công c a ngôn ng Pascal là ch : nó là ngôn ng u tiên a
ra và th hi n c khái ni m l p trình có c u trúc Ý t ng v m t ch ng trình có c u trúc xu t phát t suy ngh% cho r ng có th chia m t bài l n, ph)c
t p thành nhi u bài nh , n gi n h n N u m i bài nh c gi i quy t b ng
m t ch ng trình con, thì khi liên k t các ch ng trình con này l i s" t o nên m t
ch ng trình l n gi i quy t c bài ban u
II.S d ng ph!n m"m Turbo Pascal
1 Kh#i $ng Turbo Pascal:
Trong ph n này s" trình bày cách s d#ng Turbo Pascal 7.0.phiên b n
th !ng c dùng ph bi n hi n nay
1.1 Các t p tin chính c a Turbo Pascal: TP có hàng tr m t p tin nh ng
ch y c Turbo Pascal 7.0, ch c n hai t p tin sau là :
- TURBO.EXE : t p tin chính c a TP
- TURBO.TPL : t p tin ch)a các th vi n c a TP
N u mu n v" h a thì ph i có thêm các t p tin:GRAPH.TPU, t p tin ch)a th vi n h a *.BGI : các t p tin màn hình h a *.CHR : các t p tin t o
ki u ch
N u mu n xem h ng d'n s d#ng Turbo Pascal thì c n có thêm t p tin TURBO.HLP
1.2 Kh#i $ng Turbo Pascal:
Thông th !ng hi n nay các máy s d#ng h i u hành Windows nên có các kh i ng nh sau :
- Tr !ng h p có s1n m t Shortcut ch)a Turbo Pascal trên Desktop : hãy Double click vào bi u t ng Shortcut c a Turbo Pascal
- Tr !ng h p không có s1n m t Shortcut ch)a Turbo Pascal: hãy ch n
l nh Start, ch n ti p l nh Run, r i gõ vào !ng d'n y c a t p tin TURBO.EXE, ch4ng h n:
C:\TP\TURBO.EXE ↵ , n u kh i ng TP t %a C
Trang 7A:\TP\TURBO.EXE ↵ , n u kh i ng TP t %a A
1.3 C a s màn hình Turbo Pascal và cách ch n l nh :
Trong c a s này, dòng trên cùng là m t th c n ngang, li t kê 9 nhóm
l nh chính c a TP Mu n ch n m t l nh trong th c n này, có th ti n hành theo m t trong hai cách:
+ Cách 1: Gõ phím F10 Lúc này, trên th c n xu t hi n m t khung sáng (th !ng là màu xanh) Mu n ch n l nh nào thì gõ các phím m(i tên ← , → d!i
khung sáng n l nh ó r i Enter M t th c n con c a l nh v a ch n hi n ra,
g i là th c n hàng d c Ví d#, khi ch n l nh File, ta c th c n con nh sau:
+ ch n m t l nh trong th c n hàng d c, hãy gõ các phím m(i tên ↑ , ↓ d!i khung sáng n l nh ó r i Enter Khi không mu n ch n l nh nào thì gõ phím ESC tr v vùng so n th o
+ Cách 2 : Ch n m t l nh trong th c n ngang b ng cách gõ ng th!i phím Alt v i phím ch cái u tiên c a tên l nh mu n ch n Ví d#, mu n ch n menu File thì gõ ng th!i hai phím Alt và F (vi t t*t là Alt-F), t ng t , mu n
ch n menu Compile thì gõ Alt-C
+ Cách 3 : Dùng phím gõ t*t
Có m t s l nh c gán cho nh ng phím &c bi t g i là phím "gõ t*t”, ví d# l nh Open: F3, l nh Save : F2, l nh Exit : Alt-X + th c hi n nh ng l nh này, thay vì ph i ch n nó t trong th c n, ta ch c n gõ phím nóng t ng )ng v i
Con tr dùng
so n th o
ch ng trình
Trang 8nó Ví d#, thay vì ch n l nh Open thì gõ phím F3, thay vì ch n l nh Save thì gõ phím F2,
D i th c n ngang là vùng so n th o dùng gõ ch ng trình vào + u c a vùng này hi n tên c a t p tin ang so n, và n u ng !i th o ch ng
ch a &t tên thì TP s" &t m t tên m&c nhiên là NONAME00.PAS
Dòng cu i cùng tóm t*t m t s phím " gõ t*t" hay dùng, nh phím F1 xem h ng d'n, phím F2 l u t p tin lên %a, phím F3 dùng m xem m t
t p tin, phím F10 kh i ng th c n,.v.v
1.4 Thoát kh i Turbo Pascal
Ch n l nh File trong th c n ngang, ch n ti p l nh Exit trong th c n
d c (vi t g n là ch n l nh File/ Exit) ho&c gõ c&p phím gõ t*t Alt-X
Ch n l nh Compile/ Compile (ho&c gõ c&p phím Alt-F9 hay F9) Máy s"
d ch ch ng trình sang mã máy, n u g&p l i thì d ng và hi n thông báo l i màu
u màn hình, ng th!i con tr &t v trí có l i Ng !i th o ch ng ph i
t mình s a l i, r i gõ Alt-F9 d ch và s a l i ti p cho n khi h t l i D u hi u cho bi t vi c d ch ã xong là màn hình xu t hi n c a s thông báo có dòng ch
Trang 9ki m tra xem k t q a in lên màn hình có úng không và có phù h p v i th c ti$n không? n u sai c n ki m tra l i
2 M$t vài k% thu t trong so&n th o
- +ánh d u kh i c n di chuy n
- + a con tr n n i c n chuy n kh i t i -Gõ l nh ^K_V
d) Xóa kh i:
- +ánh d u kh i c n xóa
- Gõ l nh ^K_Y e) Che ho&c hi n l i kh i ã ánh d u : l nh ^K_H
2.2 Các phím l nh so n th o thông d ng
- Phím Home : a con tr v u dòng hi n th!i
- Phím End : a con tr v cu i dòng hi n th!i
- Phím Delete : xóa ký t ngay t i v trí con tr N u con tr ang )ng
cu i c a dòng trên mà gõ phím Delete thì s" n i dòng d i vào cu i dòng trên
-Phím Back Space : Xóa ký t tr c con tr
- C&p phím Ctrl_Y:xóa toàn b dòng hi n th!i và ôn các dòng d i lên
- Nhóm phím Ctrl_Q_Y : xóa t v trí con tr n cu i dòng
- Các phím ← , ,↓ ,→ : d!i con tr theo h ng m(i tên
- Phím Insert :Dùng chuy n i ch chèn è
- Phím Enter : Xu ng dòng
Trong ch vi t chèn: gõ Enter có tác d#ng a con tr xu ng u dòng
d i, do ó toàn b các ch )ng sau con tr (n u có) s" b c*t xu ng dòng
d i Khi con tr ang )ng u m t dòng mà Enter thì s" t o ra m t dòng
tr ng ngay t i v trí ó
III Các ph!n t c b n c a ngôn ng Pascal
1.T p ký t c b n : M i ngôn ng u c xây d ng t m t t p ký t nào
ó Ngôn ng Pascal c xây d ng trên b ký t c b n, g m:
- Các ch cái la tinh: A, B, C, ,Z, a, b, c, , z
- Các ch s :0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Các ký hi u &c bi t: +, -, *, /, =, <, {, }, [, ], %, $, &, #,
- Ký t g ch n i ‘_’ và ký t tr*ng ‘ ‘ ( space)
Trang 102 T' khóa (Keyword)
Có m t s t c Pascal dành riêng cho vi c xây d ng các câu l nh, các khai báo, các phép tính, g i là t khóa Ng !i l p trình không c &t m t tên
m i (tên bi n, tên h ng, tên hàm, tên th t#c, ) trùng v i m t trong các t khóa
D i ây là danh sách các t khóa c a Pascal :
Absolute, and, array, begin, case, const, div, do, downto, else, end, file, for, forward, function, goto, if, implementation, in, inline, interface, interrupt, label, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, shl, shr, string, then, to, type, unit, until, uses, var, while, with, xor
Các t khóa có th vi t d i d ng ch hoa hay ch th ng hay xen k ch hoa v i ch th ng u c Ví d# vi t begin hay Begin hay BEGIN là nh nhau
3.Tên (identifier)
Các bi n, các h ng, các hàm, các th t#c, c s d#ng trong ch ng trình u c n ph i &t tên, còn g i là nh danh hay danh hi u Các tên này do
ng !i th o ch ng t &t và ph i m b o úng quy t*c: tên ph i b*t u b ng
ch cái, k ó có th là ch cái, ch s , hay d u g ch n i ‘_’ Tên không c
&t trùng v i t khóa Chi u dài c a tên t i a là 127 ký t Thông th !ng tên nên &t ng*n g n và có tính g i nh
Ví d#:Delta, X1, X2, i, j , Chuc_vu, Luong,Phuong_Trinh_Bac_Hai…
4.Tên chu(n
Trong Pascal có m t s tên ã c &t s1n r i, g i là tên chu/n, ch4ng
h n : Abs, Arctan, Boolean, Byte, Char, Cos, Copy, Delete, Eof, False, Longint, Ord, Integer, Real, Readln, Writeln, True, Text,
Pasal có th cho phép ng i th o ch ng t l i tên chu n, nh ng không nên t l i
5.Câu l nh trong Pascal
Trang 11Ví d# : Program Btap1; ho&c : Program Giai_pt_bac2;
Ph n tiêu chi m m t dòng, còn g i là ph n u c a ch ng trình, nó
có th không có.
1.2 Ph!n khai báo
Ph n khai báo có nhi m v# gi i thi u và mô t các i t ng, các i
l ng s" tham gia trong ch ng trình
Nó g m có 7 lo i khai báo sau
- USES Khai báo n v s d#ng (Unit)
- LABEL Khai báo nhãn,
- CONST Khai báo h ng
- TYPE khai báo ki u d li u m i,
- VAR Khai báo bi n
- PROCEDURE khai báo các ch ng trình con là th t#c
- PUNCTION Khai báo các ch ng trình con là hàm
Tùy theo yêu c u c# th mà m i khai báo này có th có ho c không có khai báo
1.3 Ph!n thân ch ng trình
+ây là ph n ch y u nh t c a m t ch ng trình, b t bu c ph i có
Thân ch ng trình b*t u b ng t khóa BEGIN và k t thúc b ng END (có d u
ch m cu i) Gi a kh i BEGIN và END là các l nh M i l nh ph i k t thúc b ng
d u ch m ph/y ‘;’
Begin
Các l nh;
End
2.Khai báo trong ch ng trình Turbo Pascal
2.1 Khai báo n v s d ng (Unit)
Turbo Pascal có s1n trên 300 hàm và th t#c chu/n, chúng c phân thành t ng nhóm theo ch)c n ng, g i là các th vi n hay n v ch ng trình ( Unit) bao g m : System ,Crt, Graph, Dos, Printer, v.v Mu n s d#ng các hàm hay th t#c c a n v nào, tr System còn l i ta ph i khai báo, Cách khai báo
Trang 12- + nh mà cho dòng ch vi t lên màn hình theo b ng màu sau :
Bi n là i l ng có giá tr thay i trong ch ng trình, chúng c dùng trong ch ng trình l u tr các d li u, tham gia vào các bi u th)c tính và các quá trình x lý trong máy Cách khai báo bi n s nh sau :
Ngoài các ki u d li u mà b n thân ngôn ng ã có s1n nh ki u th c,
ki u nguyên, ki u ký t , ki u lôgic,.v.v ng !i dùng có th t xây d ng các ki u
d li u m i ph#c v# cho ch ng trình c a mình, nh ng ph i mô t sau t khóa TYPE cách khai báo nh sau
4.Ví d Vi t ch ng trình cho phép nh p vào h tên, mã s , các i m , Lý c a
m t sinh viên, tính i m trung bình theo công th)c : Dtb=(Toan+ly)/2
In H tên, mã s , các i m , Lý và i m trung bình c a sinh viên ó lên màn hình
PROGRAM VIDU;
Uses CRT;
Var Ho_ten, Maso : String[20];
Toan, Ly, Dtb : Real;
Begin
Write(‘ Nhap Ho va ten : ‘); Readln(Ho_ten);
Write(‘ Nhap ma so : ‘); Readln(Maso);
Write(‘ Nhap diem Toan : ‘); Readln(Toan);
Write(‘ Nhap diem Ly : ‘); Readln(Ly);
Dtb:= (Toan+Ly) / 2;
{ In lên màn hình các d li u v sinh viên }
TextBackGround(Green); { &t màu n n là Green }
TextColor(Red); { &t màu ch là Red}
Clrscr ;
Trang 13Writeln(‘ KET QUA THI CUA SINH VIEN:’);
Writeln(‘Ho va ten : ‘, Ho_ten);
IV.Các ki u d li u n gi n dùng trong Pascal
Trong TP dùng m t s ki u d li u g i là d li u n gi n chu/n nh sau: 1.Ki u nguyên : Dùng bi u di$n các s nguyên, ph m vi bi u di$n c a s nguyên t 1 byte n 4 byte
- Phép chia l y ph n nguyên (DIV): 10 Div 3 =3, 10 div 5 =2
- Phép chia l y ph n d (Mod): 15 mod 5 =0, 16 mod 3 =1
V y, l nh Inc(k); t ng ng v i l nh k:=k+1; hay k:=Succ(k);
-Th t c DEC(k) : gi m k i m t n v Ví d#, sau khi th c hi n các l nh : k:=5; Dec(k); thì gía tr c a k s" là 4
V y, l nh Dec(k) ; t ng ng v i l nh k:=k-1; hay k:=Pred(k);
2.Ki u th c : Dùng bi u di$n các s th c, ph m vi bi u di$n c a s th c t 4
n 10 byte
Tên ki u Ph m vi gía tr S byte
Real 2.9*10 -39 1.7*10 38
6 Single 1.5*10 -45 3.4*10 38
4 Double 5.0*10-324 1.7*10308 8
Trang 14+Các hàm có i s nguyên ho c th c
-Hàm ABS(x): tính tr tuy t i c a x Ví d#: Abs(5 - 8) = 3
-Hàm SQR(x): tính bình ph ng c a x: Ví d#: Sqr(4.0) = 16.0, Sqr(2) = 4 Trong các hàm d i ây, i s x có th là nguyên hay th c, nh ng gía tr tr
v luôn luôn là ki u th!c:
-Hàm SQRT(x): tính , (x ? 0)
- Hàm EXP(x) : tính ex
- Hàm LN(x): tính lnx, (x > 0)
- Các hàm SIN(x), COS(x), và ARCTAN(x): tính sinx, cosx và arctgx
- Hàm INT(x) : cho s th c b ng ph n nguyên c a x Ví d# :
Int(12.55) = 12.0
Int(1+10/3)=4.0
-Hàm FRAC(x) : cho s th c b ng ph n l0 c a x Ví d# :
Frac(12.55) = 0.55
Hai hàm c bi t d i ây cho k t q a là s nguyên:
-Hàm TRUNC(x): cho s nguyên là ph n nguyên c a x Ví d# :
Ví d#: Upcase( ‘a’ ) = ‘A’, Upcase( ‘b’ ) = ‘B’, Upcase( ‘A’ ) = ‘A’
-Hàm ORD(ch) : cho mã c a ký t ch Ví d#: Ord (‘A’) = 65, Ord (‘a’) = 97 -Hàm CHR(k) : i s k nguyên, 0< k < 255, cho ký t có mã b ng k
Ví d#: Chr (65)= ‘A’ , Chr (97)= ‘a’, Chr(32) là ký t tr*ng
4.Ki u logic (boolean)
Ki u boolean ch có hai gía tr là TRUE ( úng) và FALSE (sai), không phân
bi t ch hoa hay ch th !ng V quan h th) t thì FALSE< TRUE M i gía tr boolean chi m m t byte b nh
Các phép toán lôgic g m có: NOT, AND, OR và XOR N u A và B là hai i
l ng lôgic thì NOT A, A and B, A or B và A xor B c(ng là nh ng i l ng lôgic
có k t q a c cho b ng sau:
5.Ki u chu*i (String) : là m t chu i ký t Khi gán h ng chu i , h ng chu i ph i
c rào trong c&p d u nháy n
Ví d# : ‘Turbo Pacal’, ‘12345’
Trang 15Trong ó x1,x2…xn ã c khai báo ki u d li u trong ph n khai báo
- D ng 1 và d ng 2 dùng nh p d li u cho các bi n s ã c khai báo
- D ng 1 khi nh p xong d li u ngay sau bi n s xn, còn d ng 2 khi nh p xong con tr t ng nh y xu ng u hàng k ti p
- D ng 3 không dùng nh p d li u, mà có tác d#ng d ng th c hi n ch ng trình ch! nh n phím enter
Ghi chú : Khi nh p d li u cho các bi n s , các giá tr vi t cách nhau ít
Trong ó n và k là các s t nhiên, n nh dùng n c t in gía tr c a
bi u th)c, trong ó có k c t dành cho ph n th p phân
Trang 16y= -123.482 (tr c d u - có 2 ký t tr*ng)
N u n nh h n chi u dài c a s c n in thì s s" c in ra v i y các ch s trong ph n nguyên Ví d#, khi th c hi n các l nh sau :
Write(‘ Nhap ho va ten: ‘); Readln(Ten);
Write(‘ Nhap ma so sv : ‘); Readln(Maso);
Writeln;
Writeln(‘ ********************** ’); { in 22 d u * }
Writeln(‘*’, Ten:19, ‘*’:2); { in 1 d u *, in Ten chi m 19
c t, in ti p d u * chi m 2 c t }
Writeln(‘* Ma so:’ , Maso:12, ‘*’:2); { in * Ma so, in
Maso chi m 12 c t, in ti p d u * chi m 2 c t }
3 + c t bàn phím bàn kính R1, bán kính R2, là !ng sinh l và chi u cao h
c a m t hình chóp c#t Tính di n tích xung quanh và th tích hình chóp c#t theo công th)c sau:
Di n tích xung quanh S = (PI/2 * (R1R2) *I
Th tích V = (1/3) * (PI*h*(R1² + R2² + R1*R2))
4 Vi t ch ng trình nh p vào i m Toán, Lí, Hoá c a m t thí sinh theo h s
t ng )ng 3 : 2 : 1 Hãy tính và in i m trung bình
5.Vi t ch ng trình tính l c hút F gi a hai v t có kh i l ng M và N cách nhau
m t kh ang d theo công th)c :
V i G là l c h p d'n = 6.673* 10 –8 cm2 /gs2(M tính b ng gram,D tính b ng cm) 6.Vi t ch ng trình nh p 3 s nguyên d ng a, b, c sau ó tính và in ra màn hình giá tr trung bình c ng s , c và trung bình nhân p c a 3 s ó
Bi t r ng :
3
c b a
) (abc
p = 7.Vi t ch ng trình nh p 3 s nguyên d ng a, b, c là s ó 3 c nh c a m t tam giác Hãy tính và in ra màn hình di n tích s c a tam giác ó
Bi t r ng : s=sqrt(p*(p-a)*(p-a)*(p-c)) trong ó p=0.5*(a+b+c)
2
*d
NMG
F =
Trang 17Ch ng III CÁC L NH +I,U KI N – VÒNG L-P
I Các l nh i"u ki n
1.L nh nh y không i"u ki n
- Cú pháp : Goto <Nhãn>
- Ch c n ng : Nh y ngay n l nh ã c ánh d u b ng nhãn ã c khai báo
Ghi chú: Cách khai báo nhãn trong ph n khai báo
Ði u ki n là m t bi u th)c lôgic cho k t
q a TRUE ( úng) hay FALSE (sai) L nh có th
Ví d : Nh p vào h tên và i m trung bình
(DTB) c a m t sinh viên Hãy phân lo i sinh viên theo DTB nh sau:
Lo i là Kém n u DTB<5,
là Tbình n u 5 =< DTB<7,
là Khá n u 7 <= DTB<9,
là Gi i n u DTB >= 9
In h tên, i m trung bình và phân lo i sinh viên
PROGRAM PhanloaiSinhvien; { Phân lo i sinh viên }
Var
Ho_ten: String[18]; DTB: Real; Loai: String[6];
Label aa;
Begin
Write(‘ Nhap ho va ten :’); Readln(Ho_ten);
aa:Write(‘ Nhap iem trung binh :’);Readln(DTB);
If (DTB>= 5) and (DTB<7) then Loai:=‘Tbinh’;
If (DTB >= 7) and (DTB< 9) then Loai:=‘Kha’;
If DTB >= 9 then Loai:=‘Gioi’;
Writeln(Ho_ten, #32 , DTB:4:1 , #32 , Loai); { #32 là ký t tr*ng }
Trang 18Writeln(‘ So lon nhat la: ‘ , Max:6:2);
Writeln(‘ So nho nhat la: ‘ , Min:6:2);
Readln;
End
2.3 Câu l nh IF l ng nhau :
Trong câu l nh IF, n u L nh1 ho&c L nh2, ho&c c hai, l i là câu l nh IF thì ta
có c u trúc IF l ng nhau Ch4ng h n d i ây là hai câu l nh IF ELSE l ng nhau :
L nh k ti p
Trang 19Write(‘ Nhap ho va ten :’); Readln(Ho_ten)
aa: Write(‘ Nhap ch s tháng tr c, ch s tháng này: ‘);Readln( chiso1, chiso2);
Chú ý - L nh CASE ph i k t thúc b ng END;
Trang 20a) chuy n ngay sang l nh k ti p sau End ( n u là d ng 1)
b) th c hi n L nh n+1, r i chuy n sang l nh k ti p sau End
Write(‘Nh p Thang, Nam : ‘); Readln(Thang, Nam);
If (Thang<1) or ( Thang>12) then writeln(‘ Nh p sai ’)
Sai
Trang 21Write('Nhap x va y:'); Readln(x, y);
Gotoxy(10, 3); Write('A TINH TONG HAI SO');
Gotoxy(10, 5); Write('B TINH HIEU HAI SO');
Gotoxy(10, 7); Write('C TINH TICH HAI SO');
Gotoxy(10, 9); Write('D TINH THUONG HAI SO');
Gotoxy(2,11); Write('-Ban chon muc nao (A, B, C, D) ?:'); Readln(Ch);
CASE Ch of
'A', 'a': Writeln('Tong =', x+y :6:2);
'B', 'b': Writeln(' Hieu =', x-y :6:2);
'C', 'c': Writeln(' Tich =', x*y :6:2);
'D', 'd': If y<>0 then Writeln(' Thuong =', x/y:6:2 )
else Writeln(' Khong xac dinh !');
2.3 Câu l nh CASE l ng nhau
Trong c u trúc CASE, khi m t trong các L nh1, L nh2, , L nhn hay
L nhn+1 l i là m t l nh CASE thì ta có c u trúc CASE l ng nhau
Ví d# 3: M t xí nghi p tính ti n th ng hàng tháng cho công nhân theo công th)c : Ti n th ng= H s * 200
Trong ó H s c tính d a vào k t q a bình ch n phân lo i lao ng (lo i
A, B hay C) và n i làm vi c (c s 1 hay c s 2) c a m i ng !i trong tháng, c#
th nh sau :
Trang 22Ho_ten: String[20]; Loai : Char; Coso : Byte;
Heso, Thuong : Real;
Trang 23-N u bi n s >Giá tr cu i thì thóat ra kh i vòng l&p , th c hi n l nh k ti p
Trang 24Ví d# 1 : In các ch cái theo th) t ng c t Z n A thành hai dòng :
3 Câu l nh FOR l ng nhau
Trong c u trúc FOR, khi L nh c(ng là m t l nh FOR thì ta có c u trúc FOR
Write(‘Hay nhap chieu rong =’);Readln(n);
Write(‘Hay nhap chieu dai =’);Readln(m);
Trang 25Sai
Thóat
Trang 26Ví d# 1: Tìm b i s chung nh" nh t c a hai s nguyên d ng M và N
Bài này có nh ng cách gi i khác nhau, d i ây là m t cách n gi n Tr c
h t, hãy xem cách tìm BSCNN c a hai s M=5 và N=9
Thóat
Trang 27Write(‘ Ti p t#c n a không (Y/N) ? :’); Readln(Traloi);
UNTIL (Traloi =‘N’) or ( Traloi=‘n’);
Ghi chú: Traloi là m t bi n ki u ký t (Char);
Sau khi th c hi n xong {các l nh c a ch ng trình }, n u mu n ch y ti p thì
ta gõ phím phím Y , n u mu n d ng thì gõ phím N
Chú ý : l nh Readln(Traloi); có th thay b ng: Traloi:=Readkey;
Hàm Readkey thu c th vi n CRT cho k t q a là m t ký t gõ t bàn phím,
nó khác l nh Readln(Traloi) ch là khi nh p ký t ta không c n ph i Enter
Ch ng trình d i ây cho phép th c hi n m t s l n vi c : in tam giác cân
&c có chi u cao m (0<m<20) :
Trang 28UNTIL (Traloi=‘N’) or ( Traloi=‘n’);
End
5 So sánh các l nh For, While và Repeat
- L nh For dùng cho các vòng l&p có s l n l&p ã bi t tr c
- L nh While hay Repeat t ng quát h n l nh For, dùng c cho t t c các
lo i vòng l&p, nh ng th !ng dùng cho các vòng l&p có s l n l&p ch a bi t
tr c
- L nh While và Repeat khác nhau i m sau: L nh While ki m tra i u ki n
tr c , nên có th không th c hi n m t l n nào L nh Repeat ki m tra i u ki n sau nên ít nh t th c hi n m t l n
7.Vi t ch ng trình nh p vào m t s n , In ra các s nguyên t <= n
8.Vi t ch ng trình nh p vào m t s nguyên n , In ra các s nguyên ch1n ra
m t hàng, c s nguyên l0 ra m t hàng khác có giá tr t 1 n n
nn
n
3
3 2
2 100
3 2
Trang 29l n )ng v i các gía tr khác nhau c a tham s
Ch4ng h n, n u ph i tính m t lo t các gía tr e1, e2, e3, , e10 thì ta nên vi t
m t ch ng trình con có nhi m v# tính ex v i x la i s b t k, & &t tên là EXP(x) M i khi c n tính m t trong các gía tr e1, e2, , e10 , ta ch c n g i tên
ch ng trình con ó nh ng thay x b ng m t giá tr c# th 1, 2, ,10
Vi c s d#ng ch ng trình con không ch có tác d#ng làm cho ch ng trình chính b t r !m rà, b t dài dòng mà còn &c bi t có ý ngh%a trong vi c t ch)c
ch ng trình
Khi ph i gi i quy t m t bài l n, ng !i ta tìm cách chia nó ra thành nhi u bài
nh M i bài nh c gi i quy t riêng r" b ng m t ch ng trình con s" d$ dàng h n khi ph i ki m tra l i và ki m tra thu t Vi c còn l i là ghép các ch ng trình con này t o thành m t ch ng trình l n, ó là ch ng trình chính
Có hai lo i ch ng trình con là hàm và th t#c S khác nhau c b n c a hàm và th t#c là ch : hàm luôn luôn tr v m t gía tr duy nh t thông qua tên hàm và do ó có th s d#ng hàm nh s d#ng m t bi u th)c, còn th t#c thì không tr v giá tr nào qua tên th t#c và nó c s d#ng nh m t l nh n
-Hàm Copy( St, k, n): cho chu i con g m n ký t c a St tính t v trí k Tên hàm
là Copy, có ba tham s là St ki u chu i, k và n ki u nguyên, và gía tr hàm ki u chu i ví d# Copy(‘ABCD’, 2, 3) = ‘BCD’
-Hàm Readkey : không có tham s , gía tr hàm ki u ký t , hàm nh n m t ký t
c gõ t bàn phím
Tóm l i, hàm có th không có tham s ho&c có m t n nhi u tham s , nh ng hàm luôn tr v m t gía tr duy nh t
2.2 Khai báo hàm t vi t
T t c các hàm có s1n trong Turbo Pascal g i là các hàm chu/n, chúng có th
c s d#ng mà không c n ph i khai báo Tuy nhiên s l ng các hàm chu/n
Trang 30th !ng không áp )ng c yêu c u a d ng c a ng !i s d#ng, cho nên khi
th o ch ng, ta th !ng ph i t xây d ng thêm các hàm m i
Các hàm t vi t c n ph i c khai báo trong ph n khai báo c a ch ng trình chính, theo cú pháp sau:
Function Tênhàm(tênthams : ki uthams : ki ugíatr ;
{ Các khai báo dùng trong hàm }
For i:=1 to N do S:=S + Canba(x[i]);
V n còn l i là ph i vi t hàm tính c n ba c a z Hàm này có tên là Canba, tham s z ki u th c, và gía tr hàm c(ng ki u th c, nó c xây d ng trong
Trang 31th t c l i không tr v m t gía tr nào thông qua tên g i c a nó mà nó có tác d#ng nh m t l nh
Th t#c Readln(x, y, z) có nhi m v# nh p các gía tr t bàn phím cho các
bi n x, y, z Th t#c Write(x, y, z) in gía tr c a x, y, z Th t#c Gotoxy(x, y) nh v con tr vào to c t x, dòng y trên màn hình Th t#c Clrscr thì ch n gi n là xóa màn hình v.v Nh v y th t#c có th không có tham s ho&c có t m t
n nhi u tham s
3.2 Th t c t vi t
Ngoài các th t#c chu/n ã có s1n trong Turbo Pascal, ng !i th o
ch ng có th t xây d ng các th t#c m i nh ng ph i khai báo theo cú pháp sau:
Procedure Tênth t#c( tênthams : ki uthams ) ;
{ Các khai báo Const, Type, Var dùng trong th t#c }
x1=x2=-b/2a -N u Denta<0 Ph ng trình vô nghi m
Trang 32If Denta=0 then Dentakhong;
If Denta<0 then Dentaam;
If Denta >0 then Dentaduong;
Readln;
End
II Tham s tr s và tham s bi n s
Trong khai báo u c a ch ng trình con, các tham s hình th)c có t khóa Var )ng tr c g i là tham s bi n, ng c l i, n u không có t khóa Var i
tr c thì g i là tham s tr
Ví d#, trong khai báo hàm tính l(y th a zk, ta vi t :
Function Lt(z : Real ; k: Byte) : Real;
thì z và k u là các tham hình th)c s tr Còn theo khai báo c a th t#c Doicho :
Procedure Doicho(Var u, v : Real) ;
thì u và v u là các tham hình th)c s bi n
1 Tham s tr s
Tham s tr hình th)c c c p m t ô nh riêng khi ch ng trình con c
g i và b xóa b khi ch ng trình con ch y xong Nó c coi nh m t bi n a
ph ng, nh n gía tr ban u là tham s th c s c chuy n n t ch ng trình chính qua l!i g i ch ng trình con Sau ó ch ng trình con có th thay
i giá tr c a tham s tr hình th)c bên trong ch ng trình con, song i u ó không làm thay i gía tr c a tham s th c s
Trang 33Doicho(a+1, b); { Sai vì a+1 là m t bi u th c}
Gi s trong ch ng trình chính có hai bi n th c a, b có gía tr a=4 và b=3
Ð hoán i gía tr c a a và b ta dùng l nh:
Doicho(a, b);
Vì u và v là các tham s bi n hình th c nên ch ng trình con s" ng nh t u
v i a và ng nh t v v i b M i thay i c a tham s u trong ch ng trình con
u là thay i c a chính bi n a, t ng t , m i thay i c a tham s v u là thay i c a chính bi n b K t q a là tr c khi g i th t#c Doicho(a,b) thì a=3, b=4, sau khi th c hi n th t#c xong thì a=4, b=3
V y, các bi n c truy n vào ch ng trình con d i d ng tham s bi n thì
s thay %i theo tham s bi n hình th c t ng ng trong ch ng trình con
Th!c ch t c a s! truy n tham s i v i các tham s bi n là s! truy n a ch#
+Ví d 1: Trong ch ng trình d i ây, th t#c TT có hai tham s a và b : a là tham s tr còn b là tham s bi n Hãy xem s thay i gía tr c a hai bi n x, y
Tính ch t trên ây c a tham s bi n cho phép khai thác thêm các kh
n ng c a th t#c và hàm Ta bi t th t#c không tr v gía tr nào thông qua tên
nó, còn hàm thì tr v m t gía tr duy nh t qua tên hàm Song m t ch ng trình con hoàn toàn có th tr v hai hay nhi u gía tr thông qua các tham s bi n,
nh ví d# 2
+Ví d 2: Ch ng trình sau nh p vào hai c nh a, b c a hình ch nh t và s d#ng m t th t#c tính c di n tích và chu vi
Trang 34PROGRAM Vidu2 ;
Var
a,b, S, L: Real;
Procedure TINH( c1, c2 : Real ; Var DT, CV : Real);
{ Tính di n tích DT và chu vi CV theo hai c nh c1 và c2}
Trang 352 Ph&m vi tác d ng c a các khai báo
Ph m vi tác d#ng hay t m tác d#ng c a bi n (hay h ng, ki u d li u, ch ng trình con) là khu v c mà trong ó nó có th s d#ng c, ngoài khu v c ó nó
b xem là ch a khai báo V y ph m vi s d#ng c a bi n trong ch ng trình con ,
là các bi n ã khai báo trong ch ng trình con và “cha” c a nó
Ví d : N u ch ng trình chính và th t#c B có khai báo hai bi n trùng tên là x, thì trong th t#c B ch có bi n x a ph ng c a B là có tác d#ng, còn bi n x c a