Giáo trình Tin học đại cương part 7

Chia sẻ: Akjshdj Aksjdh | Ngày: | Loại File: PDF | Số trang:19

0
147
lượt xem
74
download

Giáo trình Tin học đại cương part 7

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'giáo trình tin học đại cương part 7', tài liệu phổ thông, tin học phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Giáo trình Tin học đại cương part 7

  1. 4. C u trúc chung c a m t chương trình PASCAL Ta hi u m t chương trình máy tính là m t dãy các l nh, các ch th hư ng d n máy th c hi n m t nhi m v , m t x lí nào ñó trên t p các d ki n vào và cho ra k t qu . M t chương trình PASCAL có c u trúc chung như sau: PROGRAM Tên_ chương_trình; USES Danh sách ñơn vi.; LABEL Danh sách nhãn; CONST Danh sách h ng; TYPE Danh sách ki u; VAR Danh sách bi n; PROCEDURE Khai báo th t c; FUNCTION Khai báo hàm; BEGIN { Các câu l nh; } END. M t chương trình PASCAL ñi n hình g m 3 ph n: Ph n tiêu ñ , ph n khai báo, ph n thân chương trình. 4.1. Ph n tiêu ñ Ph n này có d ng PROGRAM Tên_ chương_trình; b t ñ u b ng t khoá PROGRAM, ít nh t m t d u cách r i ñ n tên chương trình, k t thúc b i d u ch m ph y (;). Tên_ chương_trình do ta ñ t ra, mang ý nghĩa n i dung c a chương trình, d u ; là b t bu c ph i có. Ví d : Program Giai_PT_bac2; Ph n tiêu ñ là tuỳ ch n, có th có hay không cũng ñư c, nhưng n u ñã có thì ph i ñ các thành ph n như trên. 4.2. Ph n khai báo Ph n này mô t các ñ i tư ng c a bài toán mà chương trình s x lí. Các khai báo khác nhau ñư c vi t cách nhau b i d u ;. G m: Khai báo ñơn v uses ... Khai báo nhãn label Khai báo h ng: const Khai báo ki u: Type Khai báo bi n: Var Khai báo chương trình con: Procedure Function Các khai báo c a ph n này tuỳ thu c t ng bài toán c th mà có th có hay không, ho c có m t ho c m t vài khai báo. Cách khai báo và s d ng c th s ñư c gi i thi u trong m i ph n sau. 4.3. Ph n thân chương trình 115 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 115
  2. Ph n này ñư c b t ñ u b i t khoá BEGIN , k t thúc b i t khoá END và d u ch m (.) h t. ð t gi a BEGIN và END là các l nh c a chương trình , các l nh ñư c vi t cách nhau b i d u ; như sau: BEGIN L nh 1; L nh 2; ... L nh n; END. Ph n này b t bu c ph i có ñ i v i m i chương trình, nó ch a các l nh x lí các d li u ñã ñư c mô t ph n khai báo. ðây là ph n chính c a chương trình ñ gi i quy t bài toán. Ngư i l p trình ph i b nhi u công s c ñ thi t k thu t gi i và vi t chương trình cho ph n này. 4.4. Các bư c cơ b n khi l p trình Trư c khi vi t m t chương trình gi i quy t m t bài toán nào ñó, ngư i l p trình ph i bi t cách gi i bài toán ñó hay chính xác hơn ph i bi t thu t gi i ñ gi i bài toán và trình bày thu t gi i b ng ngôn ng l p trình . Bư c 1: So n th o chương trình ðây là bư c vi t m i m t chương trình, có th vi t trên gi y trư c r i nh p vào máy, s a l i, c p nh t. Các chương trình này ñư c g i là chương trình ngu n, tên chúng ñư c t ñ ng gán ñuôi PAS. Ta có th dùng m t h so n th o văn b n nào ñó, thư ng là h so n th o văn b n c a chính TURBO PASCAL. Bư c 2: D ch chương trình (Alt+F9) G i chương trình d ch (compiler) d ch chương trình ngu n ñã vi t bư c 1 sang d ng mã máy, k t qu thư ng t o ra các t p d ng *.EXE, *.OBJ. Bư c này s cho phép ta phát hi n các l i ñ s a. Thư ng các l i cú pháp như thi u d u ; ho c vi t sai t khoá, sai tên s ñư c thông báo. Ta ph i s a h t các l i r i chuy n sang bư c 3. Bư c 3: Ch y chương trình và th (Ctrl+F9) N u các d ki n ñư c cung c p chính xác mà chương trình cho k t qu sai thì ta ph i xem l i thu t gi i. ðây là l i ñ c bi t nghiêm tr ng vì nó không th hi n ra ngoài qua các thông báo l i và có th làm sai toàn b bài toán. Ta cũng ph i quay l i bư c 1 ñ s a và ch y l i. Câu h i ôn t p chương I 1- Nêu quy t c ñ t tên trong Turbo Pascal. Cho 3 ví d tên ñ t ñúng, 3 ví d tên ñ t sai. 2- Nêu c u trúc chung c a m t chương trình Turbo Passcal. 116 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 116
  3. CHƯƠNG II CÁC KI U D LI U CƠ S VÀ CÁCH KHAI BÁO 1. Khái ni m d li u, ki u d li u 1.1. Khái ni m d li u D li u là t t c các thông tin có th t ñư c máy tính x lí. Chúng có nhi u d ng khác nhau, th hi n qua các ñ i tư ng c n x lí như văn b n, s li u, âm thanh, hình nh,... 1.2. Ki u d li u Ki u d li u là t p h p t t c các giá tr mà m t ñ i lư ng thu c ki u ñó có th nh n ñư c, trên ñó xác ñ nh m t s phép toán. ði u ñó có nghĩa là m t ñ i lư ng (bi n, h ng,...) ch có th nh n m t t p h p các giá tr nh t ñ nh (ch không ph i m i giá tr có th có) và trên t p h p các giá tr ñó có xác ñ nh m t s phép toán. Ch ng h n ki u s nguyên thông thư ng ch nh n các giá tr trong ph m vi -215 ñ n 215-1, trên ñó có các phép toán s h c +, -, *, /, div, mod và các phép so sánh =,. 1.3. Phân lo i các ki u d li u TURBO PASCAL phân lo i các ki u d li u như sau Ki u d li u Ki u vô hư ng ñơn gi n Ki u d li u có c u trúc Con tr Ki u cơ s Ki u do ngư i dùng ñ nh nghĩa Ki u Ki u s Ki u Ki u Ki u li t Ki u M ng Bn Tp Tp Ki u logic nguyên s kí t kê kho ng con ghi hp xâu Bool th c kí t 2. Các ki u d li u ñơn gi n 2.1. Ki u s nguyên Ki u s nguyên bao g m t t c các s nguyên có th bi u di n ñư c trên máy tính. T khoá : Integer Ph m vi bi u di n: t -32768 ñ n 32767 , t c -215 ñ n 215-1 ( dùng 2 byte=16 bit ) Như v y ki u integer ch là m t ño n c a t p s nguyên Các phép toán: Ki u integer ñư c th c hi n v i t t c các phép toán dành cho s nguyên thông thư ng 117 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 117
  4. + Các phép toán s h c: + ( c ng) , - ( tr ), * ( nhân ) , / ( chia ) , DIV ( phép chia l y ph n nguyên, ví d : 7 div 3=2), MOD ( phép chia l y ph n dư, ví d : 7 mod 3=1) + Các phép so sánh: = ( b ng ) , < ( nh hơn ) , ( l n hơn) , >= ( l n hơn ho c b ng ), ( khác ) Trong TURBO PASCAL, ngoài ki u s nguyên ñư c khai báo v i t khoá integer nói trên còn có các ki u s nguyên khác ( xem b ng ) ph c v cho các m c ñích tính toán khác nhau Ki u Ph m vi bi u di n Kích thư c (byte) ( t khoá ) Byte 0..255 1 Shortint -128..127 1 Integer -32768..32767 2 Word 0..65535 2 Longint -2147483648.. 2147483647 4 2.2. Ki u s th c Ki u s th c là t p h p t t c các s th c có th bi u di n ñư c trên máy tính. Không ph i t t c các s th c ñ u có th bi u di n ñư c trên máy tính mà ñ l n và ñ tinh xác c a nó ph thu c vào máy và chương trình d ch. - Ki u s th c ñư c khai báo v i t khoá real - Ph m vi bi u bi n: t 1.9x10-39 ñ n 1.7x1038 - Các phép toán: Ki u real có th th c hi n v i t t c các phép toán c a s th c thông thư ng: +, -, *, / và các phép so sánh ( không có phép div và mod dành cho s th c ). - Cách vi t s th c d ng d u ph y ñ ng: Trong máy tính s th c ñư c vi t dùng d u ch m ñ ngăn gi a ph n nguyên và ph n l th p phân. Trong d ng d u ph y ñ ng s th c ñư c vi t theo d ng: AE+b, trong ñó A g i là ph n ñ nh tr , E+b g i là ph n mũ. Ví d : Ta xem xét các cách vi t khác nhau c a cùng 1 s 824.12345=8.2412345x102 hay 8.2412345E+2 =824123.45x10-3 hay 824123.45E-3 Trong TURBO PASCAL, ngoài ki u s th c ñư c khai báo v i t khoá real nói trên còn có các ki u s th c khác ( xem b ng ) ph c v cho các m c ñích tính toán v i ñ l n và ñ chính xác khác nhau Ki u Ph m vi bi u di n Ch s có nghĩa Kích thư c ( byte ) ( t khoá ) Single 1.5E-45..3.4E+38 7-8 4 Real 2.9E-39..1.7E+38 11-12 6 Double 5.0E-324..1.7E+308 15-16 8 Extended 3.4E-4932..1.1E+4932 19-20 10 118 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 118
  5. * Các hàm s h c chu n dùng cho ki u s nguyên và s th c: ðây là nh ng hàm ñư c ñ nh nghĩa s n trong TURBO PASCAL, ta có th s d ng như các công c ñ tính toán Tên hàm ( trong TP ) Cho k t qu ( hàm) ABS(X) |X (giá tr tuy t ñ i c a X) 2 SQR(X) X ( X bình phương) SQRT(X) X (căn b c 2 c a X ) LN(X) lnX (Logarit Nepe) eX EXP(X) SIN(X) sinX ; X cho b ng radian COS(X) cosX; X cho b ng radian ARCTAN(X) arctangX SUCC(n) n+1 ( s ti p theo c a n ) , n nguyên PRED(n) n-1 ( s k trư c c a n ) , n nguyên TRUNC(X) c t, cho ph n nguyên c a X ROUND(X) Làm tròn ph n l c a X 2.3. Ki u kí t Ki u kí t là t p h p t t c các kí t c a b ng mã máy tính ( ASCII ) T khoá Char Có th s d ng các phép toán so sánh ñ i v i ki u kí t , kí t nào ñ ng trư c theo th t c a b ng mã máy tính s ñư c coi là nh hơn, kí t ñ ng sau ñư c xem là l n hơn Ví d : 'a' < 'b' H ng kí t ñư c vi t trong c p d u nháy ' ' Các hàm dùng cho ki u kí t : Tên hàm ( trong TP ) Cho k t qu ( hàm) ORD(C) cho s th t c a kí t C trong b ng mã CHR(n) cho kí t có s th t là n SUCC(C) cho kí t ñ ng k sau PRED(C) cho kí t ñ ng k trư c 2.4. Ki u logic (Boolean) T khoá Boolean Các phép toán logic: NOT , AND, OR, XOR Các phép toán so sánh: =, , ... Ki u logic boolean ch có 2 giá tr : True và False Ngư i ta ñ nh nghĩa: False < True 119 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 119
  6. 2.5. Ki u li t kê (Enumerated scalar type) Là ki u cho phépngư i l p trình có th t ñ nh nghĩa ra các ki u vô hư ng b ng cách li t kê các giá tr c a ki u vô hư ng ra thông qua các tên do ngư i l p trình t o ra. Danh sách các giá tr này ñư c ñ t trong ngo c ñơn và ñư c mô t b ng m t tên ki u trong ph n mô t (Ph n TYPE). T khoá: TYPE Ví d : TYPE Boolean=(False, True); Color=(Red, Blue, Green, While, Black); M t bi n vô hư ng có th ñ nh nghĩa thông qua các ki u ñã ñư c mô t trong ph n TYPE như sau: VAR Ketqua: Boolean; Mau1, Mau2: Color; Ho c khai bái tr c ti p v i mô t ki u d li u: VAR Gioitinh: (Nam, nu); Ngay: (Chunhat, Hai, Ba, Tu, Nam, Sau, Bay); Ví d : Ketqua:= True; Mau1:=Blue; Gioitinh:=Nam; Ngay:=Chunhat; 2.6. Ki u kho ng con (Sub- range Type) Là ki u vô hư ng ñư c d ng khi m t bi n ch ñư c láy giá tr trong m t kho ng (xác ñ nh b i c n trên và c n dư i). • Quy t c ñ nh nghĩa: Hang_can_duoi..Hang_can_tren; Trong ñó: Hang_can_duoi < Hang_can_tren, và cùng ki u. • Tác d ng: - Ti t ki m ô nh . - Có th ki m tra giá tr c a bi n khi ch y chương trình không ñư c vư t ra kh i gi i h n c a kho ng con. Ví d : TYPE Ngay= (Chunhat, Hai, Ba, Tu, Nam, Sau, Bay); Chu_cai_hoa='A'..'Z'; VAR ch: Chu_cai_hoa; Ngay_lam_viec: Hai..Bay; 120 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 120
  7. 3. Các khai báo 3.1. Khai báo ñơn v ðơn v là m t ki u t ch c c a chương trinh Pascal, trong ñó có các chương trình con, nh m th c hi n m t m t ch c năng nào ñó. Ta khai báo các ñơn v s d ng trong chương trình theo cú pháp sau: Uses Tên_ñơn_vi; CRT là ñơn v chu n qu n lý màn hình, bàn phím; GRAPH là ñơn v ñ h a. PRINTER là ñơn v khai báo máy in, máy in ñư c cài ñ t tên là LST. Ví d 1: Uses crt; Ví d 2: Uses crt, graph, printer; 3.2. Khai báo nhãn Nhãn là m t tên trong Pascal. Nhãn dùng ñánh d u m t câu l nh trong chương trình ñ có th chuy n ñi u khi n t i ñó. Khai báo nhãn trong chương trình theo cú pháp sau: Label Tên_nhãn; Cách ñánh d u nhãn cho câu l nh như sau: Tên_nhãn : Câu l nh; Ví d : Label Tiep; ... Tiep : Readln(x); 3.3. Khai báo h ng H ng là ñ i lư ng không thay ñ i giá tr trong quá trình x lí. Ta khai báo h ng theo cú pháp: const Tên_h ng=Giátr ; ñó: Tên_h ng do ta ñ t ra, Giátr là giá tr mà tên h ng s nh n và gi không ñ i su t quá trình x lí. Ví d : const n=10; { khai báo h ng s nguyên n=10} pi=3.1416; { khai báo h ng s pi } ki_tu='Y'; { khai báo h ng kí t ki_tu nh n kí t Y} 3.4. Khai báo ki u Khai báo ki u là ñ nh nghĩa m t ki u d li u do ngư i s d ng t o ra. Khai báo ki u có cú pháp sau: Type Tên_ki u = Mô_ t _ki u; Ví d : Type Mau = (do, xanh, vang, tim, nau); Type Phuong_tien_GT = (xe_dap, xe_may, o_to, tau_hoa); Type Tuoi_nguoi = 1..300; 121 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 121
  8. 3.5. Khai báo bi n Bi n là ñ i lư ng có th thay ñ i giá tr trong quá trình x lí. Bi n c a chương trình là tên c a ô nh c t gi d li u. Mu n s d ng bi n nào ta ph i khai báo trư c bi n ñó b ng cách vi t tên bi n trong ph n khai báo ñ u chương trình sau t khoá Var. Cú pháp: Var Tên_bi n:Ki u_d _li u; ñó: Tên_bi n do ta ñ t ra, Ki u_d _li u là tên c a m t trong các ki u d li u c a TURBO PASCAL, d u hai ch m b t bu c ph i có ñ ngăn gi a 2 ph n c a khai báo, d u ch m ph y k t thúc dòng khai báo. Các bi n có cùng ki u có th ñư c khai báo cùng nhau b ng cách vi t các tên bi n cách nhau b i dâú ph y (,), nhóm các bi n khác ki u nhau ñư c vi t cách nhau b i d u ; Ví d : Var i:integer; { khai báo m t bi n có tên là I, bi n này có ki u nguyên} x,y,z:real; { khai báo 3 bi n x,y,z nh n các giá tr có ki u th c } t: char; { khai báo bi n t có ki u kí t } kiem_tra:boolean; { khai báo bi n logic } Tuoi: 1..300; ð i v i m i bài toán, khi phân tích thu t toán, ta ph i xác ñ nh rõ ngay chương trình c n ph i nh p vào các d ki n gì ? các k t qu trung gian nào c n ph i ñư c ch a, d li u ra là nh ng gì?... ñ t ñó có ph n khai báo chính xác, không b thi u mà cũng không th a gây lãng phí ô nh (!) 4. Bi u th c và câu l nh 4.1. Bi u th c Bi u th c là m t công th c tính toán ñ có m t giá tr theo m t công th c toán h c nào ñó. M t bi u th c bao g m các toán t k t h p v i các toán h ng. Các toán t trong TURBO PASCAL g m: các phép toán s h c ( +, -, *, / ), các phép so sánh ( =, , ...), các phép toán logic ( NOT, AND, OR); Các toán h ng: g m các h ng, các bi n, các hàm ñư c d nh nghĩa trong TURBO PASCAL Th t ưu tiên các phép toán như sau: 1. d u ngo c ( ) n i dung vi t trong d u ngo c ñư c ưu tiên th c hi n trư c nh t 2. phép l y ñ i ( - ), phép NOT 3. các phép tính lo i nhân, chia: *, /, DIV, MOD, AND 4. các phép tính lo i c ng, tr : +, -, OR 5. các phép so sánh: +, , , ... Chú ý: Bi u th c trong Pascal ch ñư c vi t trên 1 dong do ñó ph i chú ý dùng các d u ( ) ñ vi t cho chính xác. b 2 − 4ac Ví d : Bi u th c toán h c vi t là: 1 + 2ab Trong Pascal vi t là: (b*b- 4*a*c)/(1+sqrt(2*a*b)) 2 + sin x + cos x Bi u th c toán h c vi t là: 2 sin x + 1 Trong Pascal vi t là: (2+ sqrt (sin(x)+cos(x)))/(2* sin(x)+1) 122 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 122
  9. 4.2. Câu l nh Câu l nh xác ñ nh công vi c, thao tác mà chương trình ph i th c hi n ñ x lí các d li u ñã mô t , khai báo. Các l nh vi t cách nhau b i d u (;), TURBO PASCAL phân lo i các l nh như sau: - L nh ñơn: là các l nh không ch a các l nh khác - L nh có c u trúc: thư ng ch a nhi u hơn m t l nh ñơn, bao g m kh i l nh, các l nh th và r nhánh, các l nh l p. - L nh h p thành ( còn g i là l nh ph c hay l nh ghép ): g m m t nhóm các l nh ñư c ñ t gi a c p t khoá begin ... end; ( d u ch m ph y (;) k t thúc ch không ph i d u ch m ) như sau: begin l nh1; l nh2; ... l nhn; end; D ng l nh này cho ta th y tính có c u trúc c a TURBO PASCAL. M t nhóm các l nh gi i quy t tr n v n m t công vi c nào ñó s ñư c t ch c trong m t kh i l nh d ng này, và t ng công vi c c a bài toán l n s ñư c giao cho t ng ngư i làm trư c khi ghép l i ñ gi i bài toán t ng th . Chúng ta s ñ c p kĩ hơn v v n ñ này ph n chương trình con ( th t c và hàm ). Bài t p chương 2 Hãy vi t các khai báo bi n cho các bài toán sau: 1. Tính n giai th a: n! =1.2...n v i n>1 2. Tính các t ng: S=1/2 + 1/4 +...+ 1/(2k) Q=1.1!+2.2!+...+n.n! 3. Tìm và in ra t t c các s chính phương nh hơn m t s cho trư c, cho bi t có bao nhiêu s chính phương như v y. 4. Vi t chương trình gi i bài toán c : " V a gà v a chó, bó l i cho tròn, ba mươi sáu con, m t trăm chân ch n. H i có bao nhiêu gà, bao nhiêu chó?" c. 5. Vi t chương trình tìm ư c s chung l n nh t c a 2 s nguyên dương cho trư 2 n xx x ε=10-4 ( ABS(xn/n!) < ε ), giá tr 6. Tính Ex= 1 + + ...+ + ... + v i ñ chính xác x ñư c nh p vào t bàn 1! 2 ! n! phím khi ch y chương trình. 7. C n có 50000 ñ t các lo i gi y b c 1000ñ, 2000ñ và 5000ñ. Tìm t t c các phương án có th . 8. Chuy n m t s th p phân nguyên dương thành m t s nh phân, in ra màn hình d ng X10 = Y2 123 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 123
  10. CHƯƠNG III CÁC TH T C VÀO RA D LI U VÀ CÁC C U TRÚC ðI U KHI N 1. Phép gán Phép gán dùng ñ gán giá tr c a m t bi u th c cho m t bi n. Kí hi u phép gán là := Cú pháp Tên_bi n:=Bi u th c; Ý nghĩa: Khi g p l nh này, trư c h t máy s tính giá tr c a bi u th c v ph i r i gán giá tr tính ñư c cho bi n v trái. Chú ý: ki u d li u c a bi u th c ph i phù h p v i ki u d li u c a bi n v trái. Ví d : V i các bi n ñã ñư c khai báo thích h p ñ u chương trình, trong thân chương trình ta có th vi t x:=5; nghĩ là bi n x nh n giá tr 5 x:=x+1; giá tr c a bi n x ñư c thay th b i giá tr c a chính nó tăng thêm m t delta:=b*b-4*a*c; tính giá tr c a delta trong chương trình gi i phương trình b c 2 doan:= true; chu_cai:= 'A'; 2. Các th t c Vào- Ra d li u 2.1. Các th t c vào d li u Các bi n c a chương trình có th nh n giá tr thông qua phép gán trong chương trình, tuy nhiên, ñ gán giá tr cho bi n thông qua các thi t b nh p chu n như bàn phím ta dùng m t trong 2 th t c sau read( danh sách các tên bi n); readln(danh sách các tên bi n); ý nghĩa: nh p giá tr cho t ng bi n trong danh sách tên bi n b ng cách gõ vào t bàn phím. Các bi n trong danh sách các tên bi n vi t cách nhau b i d u ph y (,). Khi nh p các giá tr c th , các giá tr ph i phù h p v i các bi n trong danh sách v s lư ng bi n, ki u c a bi n và v trí các bi n trong danh sách. Các giá tr s ñư c vi t cách nhau b i ít nh t m t d u kho ng tr ng (d u cách). Các bi n trong th t c này cho phép là các ki u sau: Nguyên, th c, kí t , xâu kí t , kho ng con,... Không ñư c là ki u logic. Ví d : v i các khai báo trên (bài 2.III), ta có th vi t read(x,y,z); readln(t); ... khi ch y chương trình ta có th gõ: 3 6 4 ↵ N↵ nghĩa là bi n x nh n giá tr 3, bi n y nh n giá tr 6, bi n z nh n giá tr 4 còn bi n t nh n giá tr N ( ki u char). 124 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 124
  11. Hai cách vi t read và readln có ý nghĩa như nhau v tác d ng nh p d li u, ch khác là sau khi th c hi n xong ch c năng này thì l nh readln s ñưa con tr v ñ u dòng ti p theo, còn l nh read thì không. Ngoài 2 cách vi t trên còn có th t c readln; không có tham s cho phép d ng chương trình ch gõ m t phím b t kì trư c khi ti p t c. Chú ý: Khi vào d li u cho bi n kí t ho c bi n xâu kí t ta dùng th t c Readln(..) và m i bi n trong m t th t c. Ví d : ð u chương trình khai báo các bi n Var t: string; p: char; i,j,k : integer; Trong thân chương trình vào d li u cho các bi n trên có th vi t như sau: Readln(t); readln(p); readln(i,j,k); 2.2. Các th t c ra d li u Có 2 cách vi t d li u ra màn hình: write( các m c c n ghi ra ); writeln( các m c c n ghi ra ); - ý nghĩa: ñưa ra màn hình các k t qu tính toán trong chương trình, giá tr các bi n, hay t t c nh ng gì n m gi a c p d u nháy ' ... ' - Ví d : write(x,y); In ra màn hình các giá tr x và y, k t qu trên màn hình là 36 Có th vi t thành write(x); write(y); hay rõ hơn write('x=',x);write('y=',y); thì k t qu là x=3 y=6 các kí t 'x=' và 'y=' n m trong c p d u ngo c ch có tác d ng trình bày, làm phân bi t rõ các giá tr ñư c vi t ra. Hai cách vi t trên có ý nghĩa như nhau v vi c th hi n d li u ra màn hình, tuy nhiên th t c writeln s chuy n con tr xu ng ñ u dòng ti p theo sau khi th c hi n, con th tuc write gi nguyên v trí con tr . Ngoài 2 d ng trên còn có th t c writeln; không có tham s ch có tác d ng ñưa ra m t dòng tr ng không ch a gì. 2. 3. K t h p read, readln và write, writeln ñ nh p d li u Ta có th k t h p các th t c trên ñ t o ra d ng nh p d li u sáng s a và ñ p m t theo m u: write(' câu nh c nh p d li u '); readln(bi n); Ví d : write( ' Hãy nh p d li u cho bi n x:'); hay write('x='); readln(x); readln(x); k t qu s là: Hãy nh p d li u cho bi n x:( ta gõ ) 3 hay x= ( ta gõ ) 3 nên vi t câu d n nh p g i ý bi n s ñư c nh p vào, không nên b qua ho c vi t writeln( ' Hãy nh p d li u cho bi n x:'); hay writeln('x='); read(x); read(x); vì như th khi ch y chương trình con tr nh p s nh y xu ng dòng dư i dòng hư ng d n, nhìn không ñ p m t th này Hãy nh p d li u cho bi n x: hay x= ( ta gõ ) 3 ( ta gõ ) 3 125 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 125
  12. 2.4. Vi t ra d li u có quy cách M t trong nh ng yêu c u khi trình bày d li u ra màn hình là ph i sáng s a, ñúng quy cách, d ñ c, d hi u. TURBO PASCAL có các quy ñ nh cho các ki u d li u như sau *. Vi t ra ki u s nguyên write(i:n); ho c writeln(i:n); trong ñó I là s nguyên c n ghi ra, n là s ch dành ñ vi t ra s nguyên ñó trên màn hình, máy s b trí s nguyên t ph i sang trái, n u th a s b tr ng bên trái. Ví d : v i I=23, j=234 thì writeln(i);writeln(i:5); writeln(j:5); s cho 23 _ _ 23 _ 234 Như v y vi t không có quy cách s căn l trái, trong khi vi t có quy cách s căn ph i. *- Vi t ra ki u s th c m u 1: write(r:m:n); ho c writeln(r:m:n); trong ñó r là s th c c n ghi ra, m là s ch dành cho c s th c ( k c d u ch m ngăn cách ph n nguyên và ph n l , n u có) n là s ch dành cho ph n l th p phân. m u 2: write(r:n); trong ñó n là s ch cho c s th c vi t dư i d ng e-mũ Ví d : v i r=123.45 thì writeln(r); writeln(r:8:3); writeln(r:7); s cho k t qu 1.234500000E+02 ( 10 ch s dành cho ph n l ) 123.450 1.2E+00 ( có làm tròn ) *- Vi t ra ki u kí t V i ki u kí t , vi t không quy cách s cho ra kí t bình thư ng, m i kí t chi m m t ch , còn vi t có quy cách thì các kí t s ñư c b trí t ph i sang trái, thêm các d u kho ng cách vào bên trái n u th a ch . Ví d : v i t='Y' thì writeln(t); writeln(t:3); writeln('PASCAL'); writeln('PASCAL':8); s cho Y Y PASCAL PASCAL *- Vi t ra ki u boolean ki u boolean v i 2 giá tr là TRUE và FALSE cũng ñư c vi t ra theo d ng write(ok); ho c writeln(ok:n); trong ñó ok là bi n ki u boolean, n là s ch ñ vi t ra bi n ok. e- In ra máy in Các th t c write và writeln cũng dùng ñ ñưa d li u ra máy in. Mu n v y, ñ u chương trình ph i có l i g i chương trình chu n USES PRINTER; ñ u chương trình và ph i có thành ph n Lst và d u ph y (,) ñ ng trư c n i dung c n in ra. Ví d : writeln(Lst, 'k t q a là', S:8:2); 126 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 126
  13. *- Các th t c trình bày màn hình c a TURBO PASCAL ðây là nh ng th t c có s n c a TURBO PASCAL ph c v cho vi c trình bày màn hình. Mu n dùng các th t c này ph i có l i g i chương trình chu n USES CRT; ñ u chương trình. Các th t c ñó là: CLRSCR; xoá toàn b màn hình, chuy n con tr v góc trên bên trái c a màn hình. CLREOF; xoá các kí t bên ph i v trí con tr hi n th i GOTOXY(x,y); chuy n con tr màn hình ñ n ñi m có to ñ (x,y) ( màn hình văn b n có 25 dòng, 80 c t, trong th t c này x là to ñ c t, y là to ñ dòng ) TEXTCOLOR(Mau); thi t l p màu cho văn b n, Mau là s nguyên có th nh n giá tr t 0 tr lên, giá tr l n nh t c a Mau ph thu c lo i màn hình c a máy. Ta có th ch ñ nh Mau b ng m t ch cái ti ng Anh ch màu ( xem b ng ) S nguyên ch màu Tên màu 0 Black 1 Blue 2 Green 3 Cyan 4 Red 5 Magenta 6 Brown 7 LightGrey 8 DarkGrey 9 LightBlue 10 LightGreen 11 LightCyan 12 LightRed 13 LightMagenta 14 Yellow 15 White TEXTBACKGROUND(Mau); xác l p màu n n cho văn b n. Ví d : ño n l nh chương trình in dòng ch THU DO HA NOI màu xanh trên n n vàng lên màn hình uses CRT; textbackground(14); textcolor(blue); write(' THU DO HA NOI'); 2.5. Các chương trình ng d ng nh ng l nh ñã h c * Bài toán 1: Tính di n tích và chu vi c a hình tròn. Phân tích bài toán :Trong bài toán này bi n vào là R; bi n ra là: s (di n tích), cv ( chu vi); các bi n ñ u có ki u s th c. Tính toán theo công th c sau: s = 3.14* R2 ; cv = 2* 3.14 * R. 127 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 127
  14. Chương trình ñư c vi t như sau: Program Dien_tich_chu_vi_hinh_tron; Uses crt; Var cv, s, r : real; Begin Clrscr; Write(' hay nhap vao ban kinh r: '); Readln(r); S:= 3.14 * r*r; Cv:=2*3.14*r; Writeln(' Dien tich = ', s:8:2); Writeln(' Chu vi = ', cv:8:2); Readln; End. * Bài toán 2: Bài toán tính lương, b o hi m xã h i, b o hi m y t và ti n lĩnh c a cán b công ch c nhà nư c. Theo quy ñ nh hi n nay thì lương = h s lương * 350000; b o hi m xã h i = 5% * lương ; b o hi m y t = 1% * lương; ti n lĩnh = lương - b o hi m xã h i - b o hi m y t . Phân tích bài toán: Trong bài toán này các bi n vào là Ht ( h và ten) ki u xâu kí t và bi n HS (h s lương) ki u s th c. Các bi n ra là Ht, HS, luong, BHXH ( b o hi m xá h i) ki u th c, BHYT ( b o hi m y t ) ki u th c, TL ( ti n lĩnh ) ki u th c. Tính toán theo các công th c ñã cho trên. Trong chương trình có s dung các câu l nh trình bày màn hình. Chương trình như sau: Program Tinh_luong; Uses Crt; Var HT:string[25]; LUONG, HS, BHXH, BHYT, TL:Real; Begin Clrscr; Textcolor(red); Textbackground(Blue); Gotoxy(10,5); Write(' Nhap ho va ten: '); Readln(HT); Write(' Nhap he so luong '); Readln(HS); LUONG:= HS * 350000; HBXH:= LUONG * 0.05; BHYT:= LUONG * 0.01; TL:= LUONG-BHXH-BHYT; WRITELN(HT:25,HS:6:2,LUONG:10:1,BHXH:10:1,BHYT:10:1,TL:10:1); READLN; END. 128 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 128
  15. 3. Các l nh ñi u ki n Ph n này ta s nghiên c u các l nh cho phép chương trình r nhánh th c hi n m t công vi c d a trên giá tr m t ñi u ki n nào ñó. Có 2 d ng l nh ñi u ki n là câu l nh ñi u ki n (cho phép r t i ña 2 nhánh) và câu l nh l a ch n (cho phép r nhi u nhánh). 3.1. Câu l nh ñi u ki n a. D ng l nh • D ng ñơn gi n IF THEN < l nh >; trong ñó là m t bi u th c ñi u ki n liên h b i các toán t : =, < , > , = và (ho c) các phép toán logic NOT, AND, OR < l nh > có th là m t câu l nh ñơn gi n ho c ph c h p. - ý nghĩa : khi g p l nh này, trư c tiên máy s ki m tra , n u là ñúng thì s cho th c hi n < l nh >, còn n u sai thì máy s b qua < l nh > và chuy n sang công vi c ti p theo. • D ng t ng quát IF < ñi u ki n > THEN < l nh1 > ELSE < l nh2 >; - ý nghĩa : khi g p l nh này, trư c tiên máy cũng s ki m tra , n u là ñúng thì s cho th c hi n < l nh1 >, còn trái l i là sai thì máy s th c hi n . Sơ ñ kh i c a câu l nh ñi u ki n như sau §óng Sai §iÒu kiÖn LÖnh 1 LÖnh 2 b. Ví d áp d ng VD1: Vi t chương trình nh p vào m t s a tuỳ ý, r i ki m tra n u a không âm thì in ra căn b c 2 c a a, trái l i in ra thông báo 's âm không có căn b c 2' Chương trình ñư c vi t như sau: Program canbac2; Uses crt; Var a: real; Begin write(' Hay nhap vao so a:'); readln(a); if a >= 0 then writeln(' Can bac hai cua a la:', sqrt(a)) else writeln(' So am khong co can bac hai'); Readln; End. 129 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 129
  16. VD2: Vi t chương trình gi i phương trình b c hai ax2+bx+c=0 Program GPTB2; Uses crt; var a,b,c,x1,x2,dta:real; Begin clrscr; gotoxy(5,5); writeln('CHUONG TRINH GIAI PHUONG TRINH BAC HAI'); writeln; write('Vao cac he so:'); readln(a,b,c); dta:=b*b-4*a*c; if dta>0 then begin writeln('Phuong trinh co 2 nghiem thuc:'); X1:=(-b+sqrt(dta))/(2*a); X2:=(-b-sqrt(dta))/(2*a); writeln('X1=',X1:6:2); writeln('X2=',X2:6:2); end; if dta=0 then writeln('Phuong trinh co nghiem kep X=',-b/(2*a):6:2); if dta0 máy ph i th c hi n c 5 l nh trong c p t khoá begin...end; sau t khoá then, còn ng v i trư ng h p dta=0 thì máy ch ph i th c hi n ñúng m t l nh, do ñó không c n dùng câu l nh ph c h p. - Các câu l nh ñi u ki n có th vi t l ng nhau. T c là các và l i có th là câu l nh ñi u ki n d ng IF...THEN IF...THEN...ELSE... khi ñó c n lưu ý IF nào ñi v i THEN nào. Ch ng h n xem ño n chương trình phân lo i k t qu h c t p sau: IF diem>=5 THEN IF diem>=7 THEN loai:='Kha gioi' ELSE loai:='TB' ELSE IF diem>=3 THEN loai:='Yeu' ELSE loai:='Kem'; 130 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 130
  17. 3.2. Câu l nh l a ch n: CASE ... OF... Câu l nh ñi u ki n ch cho phép ta th c hi n r 2 nhánh ng v i hai giá tr ñúng hay sai c a bi u th c ñi u ki n. ð có th th c hi n r nhi u nhánh ng v i nhi u giá tr khác nhau c a m t bi u th c, ta ph i s d ng câu l nh l a ch n. a. D ng l nh D ng ñơn gi n: D ng t ng quát: CASE OF CASE OF h ng1: ; h ng1: ; h ng2: ; h ng2: ; ... ... h ngn: ; h ngn: END; ELSE ; END; Trong ñó và các h ng ph i có cùng ki u và ph i là các ki u vô hư ng ñ m ñư c (các ki u s nguyên ki u kí t , ki u Boolean ñã bi t). ý nghĩa: Khi g p câu l nh r nhánh, ñã ñư c nh n m t giá tr nào ñó, giá tr này là m t h ng (s ho c kí t ). N u nh n giá tr là h ng nào thì tương ng v i nó s ñư c th c hi n. Còn n u nh n giá tr không rơi vào h ng nào thì máy s b qua l nh ñ i v i d ng ñơn gi n, máy s th c hi n sau t khoá ELSE ñ i v i d ng t ng quát. Lưu ý: T khoá END v i d u ch m ph y (;) trong câu l nh này ñ ch r ng k t thúc câu l nh l a ch n ch không ph i k t thúc chương trình con. b. Ví d áp d ng VD1: Vi t chương trình xem th i khoá bi u c a m t ngày trong tu n. Yêu c u: máy in ra câu h i 'B n mu n xem th i khoá bi u c a th m y?' ta gõ vào ngày th (c a tu n) mu n xem và máy s in ra th i khoá bi u c a ngày hôm ñó. Chương trình ñư c vi t như sau: (gi s xem th i khoá bi u c a m t l p ph thông, b n ñ c có th hi u ch nh theo ý mình) Program XEM_TKB; Uses crt; Var thu: 2..7; {bi n thu ñ ch a các th ngày trong tu n} Begin write(' Ban muon xem thoi khoa bieu cua thu may?'); readln(thu); CASE thu OF 2:writeln('Toan Ly Van'); 3:writeln('Sinh Ki Hoa'); 4: writeln('Toan Hoa Ly'); 5: writeln('Van Sinh The duc'); 6: writeln('Su Dia Chinh tri'); 7: writeln('Van Toan Sinh hoat'); END; Readln; End. 131 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 131
  18. B n ñ c có th áp d ng câu l nh d ng t ng quát ñ m r ng chương trình xem th i khoá bi u này sao cho khi gõ vào m t s nào ñó không ph i là th trong tu n (2..7) máy s in ra thông báo r ng ñó là ngày ngh . Lưu ý: - Sau m i h ng máy ch th c hi n ñúng m t l nh. Do ñó n u mu n dùng nhi u hơn m t l nh thì ta ph i s d ng câu l nh ph c h p. - Các h ng có th vi t g p l i v i nhau. Ch ng h n n u th 3 và th 5 có cùng th i khoá bi u thì thay vì ph i vi t 2 dòng l nh, ta có th vi t: 3,5: writeln('Sinh Ki Hoa'); - Các câu l nh l a ch n có th l ng nhau. T c là trong câu l nh l a ch n l i có th ch a câu l nh l a ch n khác. 4. Các l nh l p Trong l p trình gi i quy t các bài toán, ta có th g p trư ng h p chương trình ph i th c hi n l p ñi l p l i m t công vi c nào ñó. Vi c th c hi n l p ph i theo m t quy lu t nào ñó. S l n l p có th ñư c xác ñ nh trư c ho c không xác ñ nh. Sau ñây ta s l n lư t xét các l nh l p d ng này. 4.1- L nh l p có s l n l p xác ñ nh ðây là m t câu l nh có c u trúc cho phép th c hi n l p ñi l p l i m t công vi c (ño n l nh) nào ñó v i s l n th c hi n ñư c xác ñ nh trư c. ð d hi u trư c h t ta xét m t ví d ñơn gi n sau: Gi s ta ph i vi t ra các s t 1 ñ n 10, m i s chi m m t dòng trên màn hình. Ta có th th c hi n công vi c này b i 10 l nh writeln như sau: writeln(1); writeln(2); ... writeln(10); ðây là cách vi t dài dòng và ñơn ñi u trong khi ta có th th c hi n công vi c trên b i m t dòng l nh ng n g n: FOR I:=1 TO 10 DO writeln(I); ý nghĩa c a câu l nh này là: cho m t bi n nh n giá tr nguyên I ch y t 1 ñ n n ( bi n I l n lư t nh n các giá tr s nguyên t 1 ñ n n), v i m i giá tr c a I máy s th c hi n công vi c sau t khoá DO là in ra giá tr c a I. Chi ti t các bư c th c hi n c a vòng l p FOR này như sau: ð u tiên bi n I nh n giá tr kh i ñ u là 1 (do l nh gán I:=1), máy ki m tra giá tr này không vư t quá giá tr cu i là 10 nên cho th c hi n l nh writeln(I) vi t ra giá tr 1. Sau ñó bi n I ñư c tăng thêm m t ñơn v , t c là I:=I+1. Bây gi I=2, chưa vư t qua giá tr cu i là 10 nên l nh writeln(I) l i ñư c th c hi n ñ in ra giá tr c a I là 2 lên màn hình. R i I l i ñư c tăng lên... giá tr cu i cùng c a I ñ l nh writeln(I) ñư c th c hi n là I:=10. Quá trình k t thúc khi I nh n giá tr 11 vư t quá giá tr cu i 10. Câu l nh trên là m t ví d ñơn gi n c a l nh t ng quát sau: a. D ng l nh l p tăng (d ng ti n) FOR Bi n_ñi u_khi n:=Bi u_th c1 TO Bi u_th c2 DO ; 132 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 132
  19. Trong ñó Bi n_ñi u_khi n, Bi u_th c1 và Bi u_th c2 ph i cùng ki u d li u và ph i là các ki u vô hư ng ñ m ñư c (như các ki u s nguyên, ki u kí t ...) ý nghĩa c a câu l nh này như sau: Trư c tiên Bi n_ñi u_khi n nh n giá tr kh i t o là Bi u_th c1, máy ki m tra n u giá tr ñó không vư t quá Bi u_th c2 thì cho th c hi n . Th c hi n xong l nh này, Bi n_ñi u_khi n ñư c tăng thêm m t ñơn v , máy l i ki m tra v i Bi u_th c2 ñ th c hi n ... Qúa trình ti p di n ñ n khi Bi n_ñi u_khi n nh n giá tr vư t quá Bi u_th c2 thì d ng. S l n th c hi n l p ñi l p l i ñư c xác ñ nh trư c b i giá tr c a Bi u_th c1 và Bi u_th c2 nên câu l nh trên còn ñư c g i là l nh l p có s l n l p xác ñ nh. Lưu ñ c a l nh l p FOR: B¾t ®Çu BiÕn_®iÒu_khiÓn:=BiÓu_thøc1 §óng BiÕn_®iÒu_khiÓn>BiÓu_thøc2 Sai KÕt thóc DO BiÕn_®iÒu_khiÓn:=Succ(BiÕn_®iÒu_khiÓn) * Ví d VD1: Vi t chương trình tính t ng c a n s t nhiên ñ u tiên S=1+2+...+n theo phương pháp c ng d n. Phương pháp c ng d n ñư c th c hi n như sau: ban ñ u ta kh i t o S:=0, r i l y S c ng v i 1, r i c ng v i 2,... c ng ñ n n. Như v y ta s ph i s d ng m t vòng l p FOR v i m t bi n ñi u khi n I ch y t Bi u_th c1 là 1 ñ n Bi u_th c2 là n. Ta s dùng chính giá tr c a bi n ñi u khi n này ñ tính t ng S. Chương trình ñư c vi t như sau: Program Tinh_tong; Uses crt; Var i,n:integer; S:real; Begin Write('Cho biet gia tri cua n:'); Readln(n); S:=0; For I:=1 to n do S:=S+i; Writeln(' Tong tinh duoc la S:',S:10:2); 133 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 133

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản