Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
113,25 KB
Nội dung
Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 1 chơng i giới thiệu sơ lợc về pascal I. Giới thiệu về ngôn ngữ PASCAL: PASCAL là ngôn ngữ lập trình cấp cao do giáo s Niklaus Wirth thuộc trờng đại học kỹ thuật Zurich Thuỵ sĩ sáng tác và công bố vào đầu những năm 1970, với tên là PASCAL để kỹ niệm nhà toán học ngời Pháp Blaise PASCAL ở thế kỷ 17. PASCAL là một ngôn ngữ có định kiểu mạnh mẽ. Điều đó có nghĩa là mọi biến và hằng của một kiểu dữ liệu không thể tự do đem trộn lẫn với các biến và hằng của một kiểu dữ liệu khác . PASCAL là một ngôn ngữ có cấu trúc. Tính cấu trúc đó đợc thể hiện trên các mặt sau : + Cấu trúc về dữ liệu : Từ các dữ liệu đã có ta có thể xây dựng các cấu trúc dữ liệu phức tạp hơn. + Cấu trúc về lệnh : Từ các lệnh đã có ta có thể nhóm chúng lạI với nhau và đặt giữa hai từ khoá Begin và End thành câu lệnh phức tạp hơn. + Cấu trúc về chơng trình : Một chơng trình có thể chia thành các modun chơng trình độc lập (chơng trình con). II. Cấu trúc chung của chơng trình PASCAL: PROGRAM Tên_chơng_trình; { Dòng tiêu đề } USES Tên th viện; { CRT; DOS; PRINTER;GRAPH; } LABEL Tên nhãn ; {Khai báo nhãn} CONST Tên hằng = giá trị; { Khai báo hằng } TYPE Tên kiểu = Kiểu cần khai báo; { Khai báo kiểu } VAR Tên biến : Kiểu giá trị của biến; { Khai báo biến } PROCEDURE { Thủ tục (chơng trình con) } FUNCTION { Hàm (chơng trình con) } BEGIN Các câu lệnh; END. Ví dụ : PROGRAM Duong_tron; Uses CRT; Const pi= 3.14; Var s, r : real; Begin Clrscr; Write(Nhap ban kinh :); Readln(r); S:=pi*r*r; Write(Dien tich hinh tron la: , s :4:2); Readln; End. Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 2 III. Các phím chức năng cơ bản khi thao tác với PASCAL: F1: Trợ giúp; F2: Lu chơng trình; F3: Mở file hoặc tạo file mới (*.PAS); F9: Dịch chơng trình; Ctrl + F9: Chạy chơng trình; Alt + F5 : Xem kết quả; Alt + X : Thoát khỏi PASCAL; IV. Các phép toán tử, toán hạng và quan hệ: - + , - , * , /, DIV, MOD ( phép chia lấy phần nguyên(DIV) và phần d(MOD)) Ví dụ: 5 div 2 = 2; 5 mod 2= 1; - AND, OR, NOT, XOR(cho giá trị đúng khi 2 toán hạng khác nhau) - <>, =, >=, <=, >, <, IN ( Ví dụ : A IN [A Z] ) V. Các hàm số học chuẩn: - ASB(x): cho giá trị tuyệt đối của toán hạng x. Ví dụ : ASB(-3)= 3 - SQR(x): cho giá trị bình phơng của x. Ví dụ : SQR(2)= 4 - SIN(x), COS(x), ARCTAN(x): cho giá trị các hàm lợng giác - LN(x): cho giá trị của log e x - EXP(x): cho giá trị của e x - SQRT(x): cho giá trị căn bậc hai của x. Ví dụ : SQRT(9)= 3 - SUCC(x): cho giá trị đứng sau x. Ví dụ : SUCC(3)= 4 - PRED(x): cho giá trị đứng trớc x. Ví dụ : PRED(3)= 2 - ODD(x): cho giá trị TRUE nếu x lẻ và FALSE nếu x chẵn - TRUNC(x):cho giá trị phần nguyên của x. Ví dụ : TRUNC(3.146)= 3 - ROUND(x): cho giá trị làm tròn phần thập phân cuả x Ví dụ : ROUND(3.421)= 3; ROUND(5.56)= 6 chơng ii: các kiểu dữ liệu, các khai báo, biểu thức, câu lệnh v thủ tục vo ra dữ liệu v một số chơng trình con có sẵn trong pascal I. Các kiểu dữ liệu : 1. Kiểu số nguyên: a. Kiểu Integer: Là kiểu số nguyên chiếm 2 bytes trong bộ nhớ RAM, nhận giá trị từ -32768 đến +32767. b. Kiểu Byte: là kiểu số nguyên chiếm 1 byte trong bộ nhớ RAM, nhận giá trị từ 0 đến 255. c. Kiểu ShortInt: là kiểu số nguyên chiếm 1 byte trong bộ nhớ RAM, nhận giá trị từ 128 đến + 127. d. Kiểu Word: là kiểu số nguyên chiếm 2 bytes trong bộ nhớ RAM, nhận giá trị từ 0 đến 65535. e. Kiểu LongInt: là kiểu số nguyên chiếm 4 bytes trong bộ nhớ RAM, nhận giá trị từ - 2.147.483.648 đến + 2.147.483.647. 2. Kiểu số thực: a. Kiểu Real: là kiểu số thực chiếm 6 bytes trong bộ nhớ RAM, nhận giá trị từ 2.9E-39 đến 1.7E+38. Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 3 b. Kiểu Single: là kiểu số thực chiếm 4 bytes trong bộ nhớ RAM, nhận giá trị từ 1.5E-45 đến 3.4E+36. c. Kiểu Double: là kiểu số thực chiếm 8 bytes trong bộ nhớ RAM, nhận giá trị từ 5.0E- 324 đến 1.7E+308. d. Kiểu Extended: là kiểu số thực chiếm 10 bytes trong bộ nhớ RAM, nhận giá trị từ 1.9E-4951 đến 1.1E+4932. 3. Kiểu Boolean: là kiểu logic cho hai giá trị TRUE(đúng) và FALSE(sai). 4. Kiểu Char: là kiểu biểu diễn các ký tự từ bàn phím nh:A,B, ,0,1, @,{ 5. Kiểu String: là kiểu biểu diễn xâu ký tự (chuỗi) nh : Cong hoa, . II. Các khai báo: 1. Khai báo hằng: Hằng là các đại lợng không thay đổi giá trị. Có các loại khai báo hằng số (nguyên và thực), hằng ký tự, hằng Boolean. Cách viết: Tên_hằng = giá_trị_của_hằng; Ví dụ: Const L= True; N = 5; Pi = 3.146; C = Z ; 2. Khai báo biến: Biến là đại lợng có thể thay đổi giá trị. Tên biến của chơng trình là tên của ô nhớ cất giữ dữ liệu. Cách viết: Tên_biến : kiểu_dữ_liệu_của_biến; Ví dụ: Var I; byte; Hoten: String[30]; Kt: Boolean; 3. Kiểu tự định nghĩa: khác với các kiểu dữ liệu có sẵn trong PASCAL thì kiểu dữ liệu này ngời lập trình tự định nghĩa theo yêu cầu của bài toán Cách viết Tên_kiểu = dữ_liệu_tự_định_nghĩa; Ví dụ: Type Color = ( Red, Green, Blue); Mang = Array[1 100] of Integer; Var C: Color; A: Mang; III. 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 qui tắc toán học nào đó. Một biểu thức bao gồm toán tử và toán hạng. Ví dụ : 6+Pi*Cos(x); A+B; KT= TRUE; IV.Câu lệnh: Bên cạnh phần mô tả dữ liệu là phần lệnh của chơng trình. Câu lệnh đợc chia ra hai loại: 1. Câu lệnh đơn giản: là những lệnh không chứa những lệnh khác: - Phép gán ; - Lời gọi Procedure;{ thủ tục } - Lệnh nhảy GOTO {lệnh nhảy vô đIều kiện, thờng ít dùng trong PASCAL} 2. Câu lệnh có cấu trúc: là khối lệnh, lệnh thử và rẽ nhánh, lệnh lặp: Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 4 - Câu lệnh ghép BEGIN END; - Câu lệnh lựa chọn IF THEN ELSE; CASE OFF; - Các vòng lặp: FOR TO DO ; ` REPEAT UNTIL ; WHILE DO ; - Câu lệnh WITH DO ; 3. Phép gán: Biến := biểu_thức; Ví dụ : x:= a+b; Kt:= false; I:= I+1; V. Thủ tục vào ra dữ liệu: 1. Thủ tục viết dữ liệu ra màn hình: - Write(item); Trong đó item có thể là một xâu ký tự, một biểu thức hay một giá trị nào đó. Ví dụ: Write(Chao cac ban); Write(a); Write(x*3+4*sin(x)); - Writeln(item); Chỉ khác nhau với Write ở chỗ là nó đa con trỏ màn hình xuống dòng. - Writeln; 2. Các thủ tục trình bày màn hình: - GOTOXY(x,y); Là thủ tục đa con trỏ nhảy đến toạ độ (x,y), trong đó x là cột (1 80 cột), y là dòng (1 25 dòng). - Clrscr; Là thủ tục xoá toàn bộ màn hình và sau khi xoá con trỏ sẽ ở vị trí góc phía trên bên trái màn hình. - TextColor(Color); Là thủ tục lựa chọn màu ký tự. - TextBackground(Color); Là thủ tục chọn màu nền màn hình. Trong đó Color nhận giá trị từ 0 đến 15, và 128 (nhấp nháy). ( Nhớ khai báo USES CRT;) 3. Thủ tục vào dữ liệu: Read và Readln: - Read(biến); Là thủ tục đọc dữ liệu đợc nhập từ bàn phím vào trong bộ nhớ RAM Ví dụ: Var n : integer; Begin Write(Nhap n:=); read(n); End. - Readln(biến); Tơng tự nh Read nhng con trỏ xuống dòng . - Readln; 4. Một số thủ tục nhập phím đặc biệt của PASCAL: - Hàm ReadKey; có kiểu ký tự, cho giá trị là ký tự nhận vào từ bàn phím ngay từ khi bạn gõ phím mà không cần ấn tiếp nút Enter. Ví dụ: ch:= ReadKey; - Hàm KeyPressed có kiểu Boolean, cho giá trị TRUE nếu bàn phím có chứa ký tự gõ vào mà cha đợc lấy ra xử lý, FALSE nếu không có ký tự gõ vào. VI. Một số chơng trình con của PASCAL 1. Thủ tục Delay(Time): tạo ra thời gian trễ Time (tính bẵng ms). Time là số nguyên. 2. Thủ tục Sound(F) và NoSound; : tạo ra dao động âm thanh với tần số F (F:số nguyên) cho đến khi ta gọi NoSound; Ví dụ: Sound(500); Delay(100); NoSound; 3. Thủ tục Exit; : là thủ tục thoát khỏi chơng trình con 4. Thủ tục Break; :là thủ tục thoát khỏi những vòng lặp Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 5 5. Thủ tục Halt; : là thủ tục thoát khỏi chơng trình PASCAL 6. Hàm tạo số ngẫu nhiên: Hàm Random(n); với n :0 65535;(cho giá trị ngẫu nhiên trong n phần tử) Trớc khi gọi hàm Random ta phảI gọi thủ tục Randomize; để tạo bộ số ngẫu nhiên. 7. Hàm UpCase(ch) :hàm cho ký tự hoa của ký tự ch. Ví dụ: ch:=a; UpCase(ch)=A; Chơng III Câu Lệnh Có Cấu Trúc I. Câu lệnh đIều kiện IF THEN ELSE : 1. Dạng 1: IF < đIều kiện >THEN < công việc >; Ví du: If n>0 Then Write(n, la so duong); 2. Dạng 2: IF <đIều kiện> THEN <công việc1> ELSE <công việc 2>; Ví dụ: Tìm giá trị MAX và MIN của 2 số a và b IF a< b THEN Begin Max:= b; Min:= a; End ELSE { nghĩa là a>b } Begin Max:= a; Min:= b; End; Chú ý: + Câu lệnh trớc ELSE của lệnh IF không có dấu chấm phẩy(;) + Trong đoạn lệnh nếu có từ hai công việc trở lên thì Begin End; II. Câu lệnh lựa chọn CASE OF 1. Dạng 1: CASE < biểu thức > OF hằng 1 :< công việc 1>; hằng n : < công việc n>; END; Ví dụ : Tính số ngày của một tháng: Var songay:byte; thang:1 12 {kiểu liệt kê} ; nam:integer; Begin Write(Nhap thang:);readln(thang); Write(Nhap nam:);readln(nam); CASE thang OF 4, 6, 9,11 : songay:= 30; 2:If (nam Mod 4 = 0) then songay:= 29 else songay:= 28; 1, 3, 5, 7, 8, 10, 12 : songay:= 31; END; Write(So ngay cua Thang ,thang, Nam ,nam, la ,songay); End. Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 6 2. Dạng 2: CASE < biểu thức > OF hằng 1 : < công việc 1>; hằng n : < công việc n>; ELSE < công việc n+1>; END; Ví dụ : Với ch là biến ký tự: Write(Nhap ky tu:);readln(ch); CASE ch OF 0 9 : Write(Ch, la chu so); A Z : Write(Ch, la chu cai); ELSE { câu lệnh trớc ELSE của CASE có dấu chấm phẩy (;) } Write(Ch, khong thuoc cac lua chon tren); END; III. Vòng lặp có số bớc lặp xác định FOR : 1. Dạng 1: FOR < biến:= giá_trị_đầu > TO < giá_trị_cuối> DO < công việc > ; 2. Dạng 2: FOR < biến:= giá_trị_cuối > DOWNTO < giá_trị_đầu > DO < công việc > ; Ví dụ : Tính tổng các số nguyên từ 1 đến 200: Uses CRT; Var s, I :integer; Begin Clrscr; { thủ tục dùng xoá sạch màn hình } S:=0; { lệnh khởi tạo giá trị đầu} For I:= 1 To 200 Do s:= s+1; { hoặc For I:= 500 Downto 1 Do s:= s+1; } Write(Tong la :, s); Readln; { để giữ lạI màn hình cho ta thấy đợc kết quả } End. IV. Câu lệnh có số bớc lặp không xác định REPEAT và WHILE : 1. Dạng 1: WHILE < biểu thức logic > DO Begin < công việc >; End; Ví dụ : Tính tổng sau : S= 1+1/2 +1/3 +. +1/N ; S:= 0; I:= 1; While I<= N DO Begin S:= S + 1/I; I:=I+1; End; 2. Dạng 2: REPEAT < công việc >; UNTIL < biểu thức logic >; Ví dụ : Nh ví dụ trên S:= 0; I:= 1; { giá trị khởi tạo ban đầu } Repeat S:= S + 1/I; Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 7 I:= I +1; Until I > N; 3. Sự khác nhau giữa REPEAT và WHILE: - Trong vòng lặp Repeat thì máy sẽ thực hiện < công việc > sau đó mới kiểm tra < biểu thức logic > . Còn trong vòng lặp WHILE thì nó kiểm tra < biểu thức logic > rồi sau đó mới làm < công việc >. - Điều kiện trong < biểu thức logic > giữa hai vòng lặp luôn trái ngợc nhau. Trong REPEAT Sai (FALSE) thì nó làm tiếp, Đúng (TRUE) thì nó thoát .Còn trong WHILE thì Đúng nó mới làm, Sai nó thoát . - Điều kiện Đúng trong WHILE thoả mãn điều kiện Bài toán còn REPEAT thì ngợc lại. V. Lệnh nhảy vô đIều kiện GOTO: Lệnh GOTO thuộc loại lệnh đơn giản, cho phép chơng trình nhảy vô điều kiện tới một vị trí trong chơng trình thông qua tên nhãn. Ví dụ :Tìm các số nguyên tố giữa 2 số nguyên dơng n1 va n2: Program nhay; Label L1,L2 ; Var i, j, n1, n2: integer; tt: char; Begin L1: Write(Nhap hai so n1 va n2:);readln(n1, n2); For i:= n1 to n2 do Begin For j:= 2 to i-1 do If ( i mod j = 0 ) then Goto L2; Write( i, ); L2 : ; { lệnh không làm gì cả } End; Writeln; Write(Ban co muon tiep tuc khong ?( C / K )); readln(tt); If Upcase(tt)= C then Goto L1; End. Tuy nhiên lệnh nhảy GOTO rất ít dùng trong PASCAL vì nó sẽ làm mất tính cấu trúc thuật toán của ngôn ngữ . Chơng IV Chơng Trình Con I.KháI niệm: Trong khi lập chơng trình chúng ta thờng gặp những đoạn chơng trình đợc lặp đi lặp lại nhiều lần ở những chỗ khác nhau. Để tránh rờm rà, những đoạn chơng trình này đợc thay thế bằng các chơng trình con tơng ứng khi cần. Hơn nữa, một vấn đề phức tạp sẽ tơng ứng với một chơng trình có thể rất lớn, rất dài. Do đó việc nhìn tổng quan cả chơng trình cũng nh việc gỡ rối, hiệu chỉnh sẽ rất khó khăn.Ta có thể giải quyết các vấn đề đó thành các vấn đề nhỏ hơn (chơng trình con) để dễ kiểm tra, gỡ rối từng khối một và sau đó ghép lại thành chơng trình lớn. Đây cũng là ý tởng cơ bản của lập trình cấu trúc. II. Procedure và Function ( Thủ tục và Hàm): PASCAL có hai loạI chơng trình con : - Procedure ( thủ tục ) - Function ( hàm ) Sự khác nhau cơ bản và duy nhất của hai loại chơng trình con này là Function có giá trị trả về thông qua tên hàm và do đó nó đợc sử dụng trong một biểu thức. Còn Procedure không có giá trị trả về thông qua tên của nó nên các Procedrre không thể viết trong các biểu thức. Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 8 Cấu trúc chung của một chơng trình đợc mô tả nh sau: Program Tên_chơng_trình; Uses Tên_th_viện; Label Tên_nhãn; Const { Khai báo hằng }; Type { Khai báo kiểu }; Var { Khai báo biến toàn cục }; Procedure Tên_thủ_tuc( Khai báo tham số, tham biến nếu cần ); Var { nếu có biến cục bộ } Begin { Thân chơng trình con }; End; Function Tên_hàm(Khai báo tham số, tham biến nếu cần):Kiểu_dữ_liệu; Var { nếu có } Begin { Thân chơng trình con }; End; BEGIN { Thân chơng trình chính } END. Ví dụ : Tính biểu thức Program Bieu_thuc; Uses CRT; Var a,b: integer; bt: real; Procedure Nhap; Var OK : Char ; Begin Repeat Write(Nhap tu:);readln(a); Write(Nhap mau:);readln(b); Write(Có sua lai so lieu khong ( C / K )?); OK:= ReadKey; Writeln;{ đa con trỏ xuống dòng } Until ( OK= K ) Or ( OK= k ); End; Function Chia( x, y: integer): real; Var z : real; Begin If y<>0 then z:= x/y Else Begin Writeln(#7, Khong chia duoc vi mau so bang= 0); Halt; { thủ tục halt dừng lại chơng trình} End; Chia:= z; { giá trị trả về của hàm } End; BEGIN Clrscr; Nhap; { gọi thủ tục thì bình thờng } Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 9 Bt := Chia(a,b); { gọi hàm thì nằm trong biểu thức gán } Write(Bieu thuc chia la: ,bt); Readln; END. Chú ý: -Biến toàn cục là biến đợc dùng chung cho cả chơng trình. Còn biến cục bộ( địa phơng) thì chỉ có giá trị trong chơng trình con. -Tham số và tham biến đợc khai báo trong chơng trình con nhng tham biến thì có Var phía trớc còn tham số thì không. Vidụ : Procedure tinh( x,y:integer; Var s:real); { x, y là tham số ; s: là tham biến vì s bị thay đổi giá trị } Begin End; III. Tính đệ qui của chơng trình con: Trong Procedure và Function có thể gọi chính thủ tục hoặc hàm vào thân chơng trình của chính nó. Tính chất này đợc gọi là tính đệ qui. Ví dụ: Tìm ớc số chung của hai số x va y có thể đợc định nghĩa nh sau: USCLN(x, y)= x nếu y= 0 = (y, phần d của x/y) nếu y<>0 Nh vậy hàm USCLN có thể đợc viết theo đệ qui nh sau: Function USCLN(x, y: integer): integer; Begin If y= 0 then USCLN:= x Else USCLN:= USCLN(y, x mod y); End; Và hãy so sánh gì ? với chơng trình không đệ qui sau: ( Dành riêng cho các ban !) Function USCLN(x, y: integer): integer; Var sodu : integer; { số d } Begin While (y < > 0 ) do Begin Sodu:= x mod y; x: = y; y:= sodu; End; USCLN:= x; End; Chú ý : Chỉ nên dùng đệ qui đối với những bài toán không có tính lặp. Chơng V Kiểu Dữ Liệu Có Cấu Trúc : Kiểu Mảng V Kiểu Tập Hợp I. Kiểu Mảng ( Array): Mảng là kiểu dữ liệu có cấu trúc đợc tạo ra nhằm mục đích để lu một số hữu hạn dữ liệu có cùng kiểu. Số phần tử của mảng đợc xác định ngay từ khi định nghĩa ra mảng. Mỗi phần tử của mảng đợc truy nhập trực tiếp thông qua tên mảng cùng với chỉ dẫn truy nhập đợc để giữa hai ngoặc vuông [ ] . 1. Mảng một chiều: Có hai hình thức khai báo mảng: Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Giaùo trỗnh Pascal http://www.ebook.edu.vn 10 a. Khai báo gián tiếp: Type Tên_kiểu = ARRAY[Kiểu_chỉ_dẫn] OF < Kiểu_phần_tử >; Var Biến_mảng : Tên_kiểu; Ví dụ : Type So = Array[1 100] of Integer; Kytu = Array[A Z] of Char; Color = (Red, Blue, Green, White, Black); Var A : So; Kt : Kytu; Cl : Array[Color] of Boolean; b. Khai báo trực tiếp: Var Biến_mảng : ARRAY[Kiểu_chỉ_dẫn] OF < Kiểu_phần_tử >; Ví dụ : A : Array[1 100] of integer; Ví dụ : Viết chơng trình nhập dãy số vào mảng sau đó sắp xếp mảng theo thứ tự tăng dần: Program Day_so; Uses CRT; Type mang = Array[1 50] of integer; Var a:mang; n: integer; Procedure Nhap; Var I: byte; Begin Write(Nhap so phan tu cua mang:);readln(n); For I:=1 to n do Begin Write( A[ , I , ]= ); Readln(A[ I ] ); End; End; { Đây là thủ tục sắp xếp mà các bạn cần tham khảo } Procedure Sapxep; { sắp xếp tăng dần } Var I, j : byte; T: integer; Begin For I:=1 to n-1 do Begin For j := I+1 to n do If a[ I ] > a[ j ] then { nếu sắp xếp giảm thì dấu ngợc lạI } Begin T: = a[ I ]; A[ I ] := A[ j ]; { đây là thuật hoán đổi 2 giá trị } A[ j ] := T; End; End; End; { Chơng trình chính } Begin Clrscr; Nhap; Sapxep; Readln; [...]... nh đã trình bày Pascal còn cho phép lập các Record có một phần cấu trúc thay đổi đợc Giaùo trỗnh Pascal http://www.ebook.edu.vn 15 Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Ví dụ : Trong phần khai báo NhanSu ở ví dụ trớc , nếu ta xét thêm trờng Nghenghiep thì sẽ có nhiều trờng hợp xảy ra, chẳng hạn nh : - Công nhân: Cần ghi rõ ngành gì? Bậc thợ mấy? - Kỹ s: Ngành gì? Trình. .. : NhanSu; NVV.Hoten:=Tran An; NVV.Ngaysinh.Ngay:= 6; Giaùo trỗnh Pascal http://www.ebook.edu.vn 14 Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng NVV.Ngaysinh.Thang:= 5; NVV.Ngaysinh.Nam:= 1980; III Câu lệnh With: Khi cần truy cập nhiều thành phần của một biến kiểu Record, ta có thể dùng câu lệnh With để chơng trình đợc gọn hơn Cú pháp: WITH < Biến kiểu Record > DO < Câu lệnh... Nghenghiep thì sẽ có nhiều trờng hợp xảy ra, chẳng hạn nh : - Công nhân: Cần ghi rõ ngành gì? Bậc thợ mấy? - Kỹ s: Ngành gì? Trình độ? - Bác sĩ: Chuyên khoa gì? - Cá biệt: Không có gì nữa? Type Nghe= (Congnhan, Kysu, Bacsi, Cabiet); Nganh= (Khaithac, Cokhi, Dien,Hoa); Khoa= (Noi, Ngoai, Nhi); NhanSu = Record Hoten: string[30]; Ngaysinh: Record {Kiểu khai báo mới} Ngay: 1 31; Thang: 1 12; Nam: Word; End; Luong:... Ngay: 1 31; Thang: 1 12; Nam: Word; End; Luong: real; Cogiadinh: Boolean; CASE Nghenghiep: Nghe Of Congnhan: (NganhCN: Nganh; Bactho:byte); Kysu:(NganhKS:Nganh;Trinhdo:(Kem,TB,Kha,Gioi); Bacsi: (Chuyenkhoa: Khoa) ; Cabiet: ( ); End; End; Var NVV: NhanSu; Begin With NVV do Begin Hoten: =Tran An Nghenghiep:= Congnhan; NganhCN:= Cokhi; Bactho:= 3; End; End Chơng VIII I Dữ Liệu Kiểu Tệp KháI niệm: Tệp dữ... Assign(F,Vanban.txt); Append(F); Write(F,Tạm biet); Ghi chú : - Cuối chơng trình khi nào cũng nhớ dùng thủ tục Close(biến_file) để đóng File - Hàm EOF(Var F: Text): cho biết vị trí con trỏ có phảI là cuối File hay cha - Hàm EOLN(Var F: Text): cho biết vị trí con trỏ có phảI là cuối dòng hay cha Hai hàm trên đều trả về kiểu Boolean Giaùo trỗnh Pascal http://www.ebook.edu.vn 18 ... readln(st); While st[1]= do delete(St,1,1); { xoá đầu } While st[length(st)]= do delete(St, length(st),1); { xoá cuối } For I:= 1 to length(st) do If st[I] and st[I+1] then delete(St, I, 1); Giaùo trỗnh Pascal http://www.ebook.edu.vn ;} 13 Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Readln; End Ví dụ: Viết hàm chuyển chữ hoa thành chữ thờng: Function Hoa_Thuong (St : string):... ); End; End; Procedure Nhan; Var I, j, k: byte; Begin for I:=1 to n do for j:=1 to n do Begin C[ I, j ]:= 0; For k:=1 to n do C[ I, j ]:= a[ I, k ] * b[ k , j ]; End; End; Procedure Xuat; Giaùo trỗnh Pascal http://www.ebook.edu.vn 11 Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Var I, j : byte; Begin For I:= 1 to n do Begin For j:=1 to n do write(c[ I, j ]: 5);writeln; End;... nhau nh ký tự, văn bản Định nghĩa một kiểu tệp T với các phần tử có kiểu phần tử đợc viết trong mô tả kiểu với từ khoá File Of nh sau: Type Filereal = File of real; Date = Record Ngay: 1 31; Giaùo trỗnh Pascal http://www.ebook.edu.vn 16 Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng II 1 2 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Thang: 1 12; Nam: Word; End; Type NhanSu = Record Hoten: string[30]; Ngaysinh: Date; Luong:... ta dùng thủ tục Read : Cú pháp: Read(FileVar, Var1, Var2, , Varn); hoặc Readln(); Trong đó Var1, Var2, , Varn là các biến có cùng kiểu với FileVar Ví dụ: Đọc nội dung từ file Vanban.txt : Giaùo trỗnh Pascal http://www.ebook.edu.vn 17 Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng 4 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Program Doc_File; Uses CRT; Var F: Text; { Đây là khai báo kiểu File Text } dong : string[80];... lý các xâu ký tự Kiểu String có nhiều đIểm tơng tự nh kiểu mảng nhng cũng có nhiều đIểm khác nhau là: số ký tự trong một biến xâu có thể thay đổi còn số phần tử của kiểu mảng luôn cố định Giaùo trỗnh Pascal http://www.ebook.edu.vn 12 Trung tỏm tờnh toaùn thọỳng kó aỡ Nụng II III 1 a b c d 2 a b c d 54 - Trỏửn Quọỳc Toaớn aỡ Nụng Khai báo: Var Biến : String[ n ]; Trong đó n là số ký tự tối đa có thể . trỗnh Pascal http://www.ebook.edu.vn 1 chơng i giới thiệu sơ lợc về pascal I. Giới thiệu về ngôn ngữ PASCAL: PASCAL là ngôn ngữ lập trình cấp cao do giáo s Niklaus Wirth thuộc trờng đại học. Cấu trúc về chơng trình : Một chơng trình có thể chia thành các modun chơng trình độc lập (chơng trình con). II. Cấu trúc chung của chơng trình PASCAL: PROGRAM Tên_chơng _trình; { Dòng tiêu. dùng trong PASCAL vì nó sẽ làm mất tính cấu trúc thuật toán của ngôn ngữ . Chơng IV Chơng Trình Con I.KháI niệm: Trong khi lập chơng trình chúng ta thờng gặp những đoạn chơng trình đợc