Giáo trình Lập trình Pascal

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.

Chương 1 Làm quen ngôn ngữ lập trình PascalTURBO 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:

a. Cập nhật file TURBO.TPL trong thư mục \BP\BIN.

b. 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. 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.

Giáo trình Lập trình Pascal trang 1

Trang 1

Giáo trình Lập trình Pascal trang 2

Trang 2

Giáo trình Lập trình Pascal trang 3

Trang 3

Giáo trình Lập trình Pascal trang 4

Trang 4

Giáo trình Lập trình Pascal trang 5

Trang 5

Giáo trình Lập trình Pascal trang 6

Trang 6

Giáo trình Lập trình Pascal trang 7

Trang 7

Giáo trình Lập trình Pascal trang 8

Trang 8

Giáo trình Lập trình Pascal trang 9

Trang 9

Giáo trình Lập trình Pascal trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 64 trang duykhanh 9480
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Lập trình Pascal", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Lập trình Pascal

Giáo trình Lập trình Pascal
a hãy xem ví dụ dưới đây. 
A := [2 .. 9]; 
B := [7 .. 15]; 
 Khi đó A + B = [2 .. 15]; 
 Lưu ý: A + B = B + A 
 c. Phép giao 
 Giao của hai tập hợp A và B là một tập hợp ký hiệu A * B có các phần tử 
vừa của tập hợp A vừa của tập hợp B. Ta hãy xem ví dụ dưới đây. 
A := [2 .. 9]; 
B := [7 .. 15]; 
 Khi đó A * B = [7 .. 9]; 
 Lưu ý: A * B = B * A 
 d. Phép trừ 
 Hiệu của hai tập hợp A và B là một tập hợp ký hiệu A - B có các phần tử 
của tập hợp A mà không có trong tập hợp B. Ta hãy xem ví dụ dưới đây. 
A := [2 .. 9]; 
B := [7 .. 15]; 
 Khi đó A - B = [2 .. 6]; 
 e. Phép trừ 
 Phép thử IN cho phép ta xem một giá trị nào đó có thuộc tập hợp hay 
không. Nếu có cho kết quả là TRUE, ngược lại cho kết quả là FALSE. Ta hãy 
xem ví dụ dưới đây. 
A := [2 .. 9]; 
 i := 3; 
 i IN A {cho kết quả là True} 
 f. Các phép toán so sánh =,,= 
 Hai tập hợp muốn so sánh với nhau thì chúng phải có cùng kiểu phần tử. 
Kết quả của phép so sánh trả về kiểu Boolean (đúng – sai). 
 - Phép so sánh = (bằng). Hai tập hợp A và B bằng nhau (A = B cho kết 
quả True) khi chúng có các phần tử bằng nhau từng đôi một (không kể thứ tự các 
phần tử trong tập hợp). 
 - Ngược lại với phép so sánh bằng là so sánh khác, tức là các phần tử A và 
B không bằng nhau từng đôi một. Nếu A = B cho kết quả TRUE thì A B cho 
kết quả FALSE và ngược lại. 
 - Phép so sánh <= (nhỏ hơn hoặc bằng). A <= B cho kết quả là True khi 
mọi phần tử của A đều có trong B. 
 - Phép so sánh >= (lớn hơn hoặc bằng). A >= B cho kết quả là True khi 
mọi phần tử của B đều có trong A. 
 1.3. Viết và đọc dữ liệu trên tập hợp 
 Đối với dữ liệu kiểu tập hợp ta không thể viết ra hoặc đọc vào bằng các lệnh 
Read, Readln, Write, Writeln. Tuy nhiên ta có thể lập trình thực hiện các thao tác 
này. 
 Ví dụ sau sẽ nhập vào một tập hợp kiểu Char và in lên màn hình tập hợp vừa 
nhập. 
 Type CHUCAI = SET OF CHAR; 
 Var cc: CHUCAI; 
 i, n: Integer; 
 ch: Char; 
 Begin 
 Write(‘ Tập hợp có bao nhiêu phần tử? ‘); Readln(n); 
 cc := []; 
 For i := 1 to n do Begin 
 Write(‘ Phần tử thứ ‘ ,i, ’ là: ’); 
 Readln(ch); 
 cc:= cc + [ch]; 
 End; 
 Writeln(‘Các phần tử trong tập hợp bạn vừa nhập’); 
For ch := ‘A’ to ‘z’ do 
 If ch IN cc then 
 Write(ch: 5); 
 Readln; 
 End. 
 2. Khái niệm mảng, khai báo mảng, gán giá trị 
 2.1. Khái niệm 
 Mảng (Array) là một tập hợp các phần tử cố định có cùng kiểu gọi là kiểu 
phần tử. Kiểu phần tử có thể là kiểu vô hướng, kiểu String, kiểu tập hợp, kiểu 
Record. Đôi khi ta cũng dùng mảng để làm kiểu phần tử cho mảng, trường hợp 
này gọi là mảng của mảng. 
 2.2. Mảng một chiều 
 2.2.1. Khai báo: 
 Tập chỉ số phải là một kiểu miền con, kiểu vô hướng liệt kê, kiểu char 
hoặc kiểu boolean. Tuy nhiên. người ta thường dùng kiểu miền con các số 
nguyên là dễ hình dung nhất vì nó gần giống với khái niệm chỉ số trong toán học. 
Có hai cách khai báo là khai báo gián tiếp và khai báo trực tiếp. 
Type 
 Vector = Array[1..10] of Integer; 
Var 
 vt: Vector ; 
 Hoặc ta khai báo như sau: 
Var 
 vt: Array[1..10] of Integer; 
 Ta thấy cách cách khai báo trực tiếp thì ngắn hơn, nhưng trong một số 
trường hợp lại bất tiện, thậm chí không sử dụng được như khi truyền tham số cho 
các chương trình con. 
 Ta lấy ví dụ sau: 
 Procedure THUTUC(A: Array[1..20] of Integer); 
 Thủ tục này sai vì ta không thể truyền tham số cho nó. Ta phải viết: 
 Type MANG = Array[1..20] of Integer; 
 Procedure THUTUC(A: MANG); 
 2.2.2. Truy xuất các phần tử trong mảng 
 Mỗi phần tử của mảng được truy xuất thông qua tên biến mảng cùng 
 với chỉ số 
 của mảng trong cặp dấu []. Ta hãy xét ví dụ dưới đây. 
 Khai báo và hình ảnh diễn giải dưới đây, giúp chúng ta dễ hiểu hơn. 
 Type MANG = Array[1..10] of Integer; 
 Var A: MANG; 
Ví dụ: Viết chương trình nhập vào một mảng và in ra mảng đó sau khi xắp xếp 
các phần tử của mảng tăng dần. 
 Uses Crt; 
 Type MANG = Array[1..50] of Integer; 
 Var A: MANG; 
 i, j, n, tam: Integer; 
Begin 
 Write(‘Bạn nhập bao nhiêu phần tử: ’); Readln(n); 
 {Nhập n phần tử} 
 For i := 1 to n do Begin 
 Write(‘Phần tử ‘ , i , ’ là: ’); 
 Readln(A[i]); 
 End; 
 {Sắp xếp tăng dần} 
 For i := 1 to n-1 do 
 For j := i + 1 to n do 
 If A[i] > A[j] then Begin 
 tam := A[i]; 
 A[i] := A[j]; 
 A[j] := tam; 
 End; 
 {In các phần tử của mảng ra} 
 For i:=1 to n do 
 Write(A[i]:10); 
 Readln; 
 End. 
 Chú ý: Hai mảng A và B có cùng số phần tử và cùng kiểu phần tử, ta có thể 
thay toàn bộ phần tử A bởi các phần tử tương ứng của B bằng một phép gán A := 
B. 
 2.3. Mảng nhiều chiều 
 2.3.1. Khai báo 
 Ví dụ ta có thể khai báo: 
 Type MANG = Array[1..20,1..20] of Integer; 
 Var A: MANG; 
 Hoặc khai báo: 
 Var A: Array[1..20,1..20] of Integer; 
 Mảng hai chiều có thể khai báo như là mảng một chiều của mảng một 
 chiều, ta có thể khai báo nhưu sau: 
 Type KieuPhantu = Array[1..20] of Integer; 
 Var A: Array[1..20] of KieuPhantu; 
 2.3.2. Truy xuất các phần tử của mảng 
 Mảng hai chiều tổ chức như một ma trận, các phần tử của ma trận cũng 
 tương tự như các phần tử của mảng hai chiều. Ta truy xuất các phần tử của 
 mảng hai chiều thông qua tên biến, theo sau là cặp chỉ số cách nhau bởi dấu , 
 (phẩy) hoặc hai cặp dấu [][]. Ví dụ: A[3,2] hoặc A[2][3]. 
 Ta có thể hình dung mảng A: Array[1..4, 1..5] như sau. 
 Ví dụ: Nhập vào một ma trận số nguyên rồi in ma trận đó theo dạng toán học. 
 Type MANG = Array[1..20,1..20] of Integer; 
 Var A: MANG; 
 i, j, n, m: Integer; 
Begin 
 Write(‘Ma trận có bao nhiêu dòng: ’); Readln(n); 
 Write(‘Ma trận có bao nhiêu cột: ’); Readln(m); 
 {Nhập vào mảng hai chiều} 
 For i := 1 to n do 
 For j := 1 to m do Begin 
 Write(‘Phần tử A[ ‘ ,i, ’ , ‘ ,j, ’] là: ’); 
 Readln(A[ i , j ]); 
 End; 
 {In các phần tử ra như một ma trận} 
 For i := 1 to n do Begin 
 For j := 1 to m do 
 Write(A[i,j]:10); 
 Writeln; 
 End; 
 Readln; 
 End. 
 3. Kiểu bản ghi 
 3.1. Khái niệm và khai báo 
 Chúng ta đã học các cấu trúc dữ liệu như mảng (Array), tập hợp (Set). Các 
kiểu dữ liệu này là một tập hợp có cùng kiểu do đó kả năng sử dụng các kiểu 
dữ liệu này còn hạn chế. Vấn đề đặt ra là có một kiểu cấu trúc dữ liệu có nhiều 
phần tử khác kiểu nhau nhưng lại liên quan đến nhau, người ta đã định nghĩa 
kiểu mẩu tin (RECORD) để đáp ứng vấn đề đó. 
 Cấu trúc dữ liệu kiểu RECORD được gắn liền với cấu trúc dữ liệu kiểu 
FILE (được trình bày chương sau) để lưu trữ dữ liệu. Dĩ nhiên Pascal cũng cho 
phép sử dụng RECORD độc lập với FILE. 
 Khai báo dữ liệu kiểu RECORD bắt đầu là chữ RECORD tiếp theo là danh 
sách các phần tử của Record gọi là các trường (Fields), mỗi trường có tên 
trường, kiểu trường. Kết thúc khai báo Record là tìư khoá END; (End và 
chấm phẩy). Ta xem cú pháp khai báo dưới đây. 
 Ta hãy xét ví dụ dưới đây. Khai báo Record là các thuộc tính của học sinh. 
 Type HOCSINH = RECORD 
 Holot: String[30]; 
 Ten: String[10]; 
 Lop: Byte; 
 Diachi: String; 
 END; 
 Var hsa, hsb, hsc: HOCSINH; 
 Lop10A: Array[1..50] of HOCSINH; 
 3.2. Truy xuất một bản ghi 
Để truy xuất một trường của Record, ta cần dùng tên biến kiểu Record sau đó là 
dấu . (chấm) rồi đến trường. Ví dụ ta sẽ nhập vào và in ra các thuộc tính của học 
sinh a (hsa) đã khai báo trên. 
Type HOCSINH = RECORD 
 Holot: String[30]; 
 Ten: String[10]; 
 Lop: Byte; 
 Diachi: String; 
 END; 
 Var hsa: HOCSINH; 
Begin 
 Write(‘ Nhập vào họ và các chữ lót: ‘); Readln(hsa.Holot); 
 Write(‘ Nhập vào tên: ‘); Readln(hsa.Ten); 
 Write(‘ Nhập vào lớp: ‘); Readln(hsa.Lop); 
 Write(‘ Nhập vào địa chỉ: ‘); Readln(hsa.Diachi); 
 Writeln(‘ Thông tin về học sinh bạn vừa nhập ’); 
 Writeln(‘ Họ và tên: ’ , hsa. Holot,’ ‘, hsa.Ten); 
 Writeln(‘ Lớp: ’ , hsa.Lop); 
 Writeln(‘ Địa chỉ: ’ , hsa.Diachi); 
 Readln; 
End. 
Ta lưu ý lệnh hsb := hsa là sao chép toàn bộ hsa vào hsb. Đây là việc truy xuất 
vào toàn bộ biến kiểu Record chứ không riêng lẻ một trường nào cả. 
 3.3. Câu lệnh With  do 
Như trên ta thấy việc truy xuất một trường biến kiểu Record phải thông qua tên 
và dấu chấm, làm phức tạp thêm chương trình, giải quyết bớt phần nào sự 
hức tạp này, Pascal đưa ra câu lệnh With  do ta hãy viết chương trình nhập 
học sinh của lớp 10A đã khai báo ở trên, có dùng lệnh With  do. 
 Var Lop10A: Array[1..50] of HOCSINH; 
 i, n: Integer; 
 Begin 
 Write(‘ Lớp có bao nhiêu học sinh? ‘); Readln(n); 
 For i:=1 to n do 
 With Lop10A[i] do Begin 
 Write(‘ Nhập họ và các chữ lót: ‘); Readln(Holot); 
 Write(‘ Nhập vào tên: ‘); Readln(Ten); 
 Write(‘ Nhập vào lớp: ‘); Readln(Lop); 
 Write(‘ Nhập vào địa chỉ: ‘); Readln(Diachi); 
 End; 
 Writeln(‘ Thông tin về các học sinh bạn vừa nhập ’); 
 For i:=1 to n do 
 With Lop10A[i] do Begin 
 Writeln(‘ Họ và tên: ’ , Holot,’ ‘, Ten); 
 Writeln(‘ Lớp: ’ , Lop); 
 Writeln(‘ Địa chỉ: ’ , Diachi); 
 End; 
 Readln; 
End. 
 Chương 6 Dữ liệu kiểu chuỗi 
 1. Khai báo 
 Khai báo kiểu String (chuỗi) có hai cách là khai báo gián tiếp (khai báo 
 kiểu rồi mới khai báo biến) và khai báo trực tiếp. Độ dài tối đa của một biến 
 kiểu String là 255 ký tự, tuy nhiên ta có thể giảm độ dài tối đa của chuỗi khi 
 khai báo biến để tiết kiệm ô nhớ. Việc khai báo thực hiện như dưới đây. 
 Khai báo gián tiếp 
 Type KIEU = String[20]; {Độ dài tối đa là 20} 
 Var st: KIEU; 
 Khai báo trực tiếp 
 Var st: String[20]; {Độ dài tối đa là 20} 
 maxst: String; {Độ dài tối đa là 255} 
 2. Các thao tác trên chuỗi 
 2.1. Các phép toán và hàm trên kiểu chuỗi 
 a. Phép gán: 
 Phép gán được tiến hành bình thường như một phép gán trong các kiểu vô 
hướng khác. Tuy nhiên cần lưu ý là hằng String nằm trong cặp dấu ‘ ’ (nháy 
đơn). 
 Ví dụ: Hoten := ‘Nguyễn Văn Thành’; 
 b. Phép cộng 
 Là phép ghép chuỗi thứ nhất với chuỗi thứ hai. 
 Ví dụ: Hoten := ‘Nguyễn Văn ’ + ‘Thành’; 
 c. So sánh chuỗi 
 Khi so sánh hai chuỗi ký tự thì các ký tự được so sánh từng cặp một trái 
qua phải theo bảng mã ASCII. Các khả năng có thể xảy ra như sau: 
 - Hai chuỗi hoàn toàn giống nhau thì bằng nhau (‘ABC’=’ABC’). 
 - Tính từ trái qua phải, chuỗi nào có ký tự đầu tiên khác nhau nhỏ hơn thì 
nhỏ 
hơn (‘ABCDEF’<’ABCFGH’). 
 - Một chuỗi có độ dài bé hơn chuỗi kia mà nó hoàn toàn giống đầu của 
chuỗi kia 
thì nó nhỏ hơn (‘ABC’<’ABCDEF’). 
 d. Thủ tục Read và Readln 
 Hai thủ tục này có tác dụng đối với chuỗi cũng tương tự như đối với các 
kiểu vô hướng chuẩn khác. Tuy nhiên cần có một số lưu ý: 
 - Nếu đọc một lúc nhiều biến kiểu Read(biến 1, biến 2,, biến n) thì dễ bị 
nhầm 
lẫn. Cụ thể là nếu giá trị nhập vượt qua độ dài tối đa của biến một thì phần vượt 
qua đó mới gán cho biến 2, ngược lại máy sẽ lấy tất cả các ký tự (kể cả khoảng 
trắng) để gán cho biến một, khi đủ độ dài của biến một thì mới gán cho biến hai. 
Do đó, biến kiểu String tốt nhất là mỗi lần nhập chỉ một biến. 
 - Mặc dù chiều dài tối đa của chuỗi là 255 ký tự song việc nhập một chuỗi 
từ bàn phím theo lệnh Read hoặc Readln chie cho phép đọc tối đa 127 ký tự. 
 - Mặc dù ta có khai báo độ dài chuỗi nhưng độ dài thực tế là độ dài nhập 
từ bàn phím. Nếu khi nhập chuỗi ta chỉ khỏ phím Enter mà không khỏ bất kỳ ký 
tự nào thì chuỗi sẽ rỗng (st=’’). 
 e. Thủ tục Write và Writeln 
 Hai thủ tục này có tác dụng đối với chuỗi cũng tương tự như đối với các 
kiểu vô hướng chuẩn khác. Tuy nhiên cần có một số lưu ý: 
 - Cách viết không qui cách Write(st) hoặc Writeln(st) thì mỗi ký tự sẽ 
chiếm một 
vị trí. 
 - Cách viết có qui cách Write(st:n) hoặc Writeln(st:n) thì máy sẽ dành n vị 
trí để viết chuỗi st, vvậy chuỗi sẽ được viết canh trái nếu n<0, canh phải nếu 
n>0. 
 - Nếu viết thẳng một hằng chuỗi ký tự mà trong đó có dấu ‘ (nháy đơn), 
chẳn hạn 
câu tiếng anh: I’m a student thì ta phải dùng 2 nháy đơn liên tiếp ‘’ tại chổ đó. 
 Lưu ý: Là 2 nháy đơn chứ không phải nháy kép. Vậy khi lập trình ta phải 
viết câu 
đó là: Write(‘I’’m a student’). 
 f. Thủ tục Delete(St,Pos,n) 
 Xóa khỏi chuỗi st n ký tự bắt đầu từ vị trí pos tính từ bên trái sang. 
 Var St: String[20]; 
 Begin 
 St := ‘CHUOI CHUA BI CAT’; 
 St := Delete(St,6,5); 
 Write(St); 
 End. 
 Kết quả: CHUOI BI CAT 
 g. Thủ tục Insert(Obj, St, Pos) 
 Thêm chuỗi obj vào chuỗi st tại vị trí pos. 
 Var St, Obj: String[20]; 
 Begin 
 St := ‘CHUOI THEM’; 
 Obj := ‘DA ’; 
 Insert(obj,St,7); 
 Write(St); 
 End. 
 Kết quả: CHUOI DA THEM 
 h. Hàm Str(S[:n[:m]], St) 
 Đổi giá trị S thành chuỗi rrồi gán cho st, số n, m nếu có sẽ là vị trí số chữ 
số 
phần nguyên và thập phân của S. 
 Var St: String[20]; 
 S: Real; 
 Begin 
 S := 987987987; 
 Str(S:9:0,St); 
 Write(St); 
 End. 
 Kết quả: 987987987 
 i. Thủ tục Val(St, S, Code) 
 Đổi chuỗi St thành số và gán cho S, Code là một biến kiểu Integer. Nếu đổi 
đúng thì Code nhận giá trị 0, nếu sai so St không biểu diễn dạng số nguyên hay 
số thực thì Code nhận giá trị bằng vị trí của ký tự sai trong chuỗi St. 
 Var St: String[20]; 
 X: Real; 
 Code: Integer; 
 Begin 
 St := ‘789.789’; 
 Val(St, X, Code); 
 Writeln(‘X = ’ ,X, ’ ; Code = ‘ , Code); 
 {Kết quả: X=798.798 - Code = 0} 
 St := ‘789A789’; 
 Val(St, X, Code); 
 Writeln(‘X = ’ ,X, ’ ; Code = ‘ , Code); 
 {Kết quả: X = 0 - Code = 4} 
End. 
 j. Hàm Length(st) 
 Cho kết quả là một số nguyên chỉ độ dài của chuỗi (số ký tự của chuỗi). 
Ví dụ để viết một dòng ở giữa màn hình ta làm như sau: 
 GotoXY((80-Length(st)) div2,12); Write(st); 
 k. Hàm Copy (St, Pos, n) 
Kết quả trả về của hàm là một chuỗi, trích từ chuỗi St, chéptừ ví trí Pos và chép 
n ký tự. 
 Var St, Obj: String[20]; 
 Begin 
 St := ‘TURBO PASCAL 7.0’; 
 Obj := Copy(st,7,6); 
 Write(Obj); 
 End. 
 Kết quả: PASCAL 
 l. Hàm Concat(St1,St2,St3Stn) 
Cho kết quả là một chuỗi mới được ghép từ các chuỗi St1, St2, St3,, Stn theo 
thứ tự truyền vào hàm. Kết quả này giống như phép cộng chuỗi. 
 m. Hàm Pos(Obj,St) 
Cho kết quả là một vị trí đầu tiên của Obj trong chuỗi St. Nếu không tìm thấy thì 
hàm trả về kết quả là 0. 
 Var St, Obj: String[20]; 
 Begin 
 St := ‘TURBO PASCAL 7.0’; 
 Obj := ‘PASCAL’; 
 Write(Pos(Obj, St)); 
 End. 
 Kết quả: 7 
 2.2. Truy xuất từng ký tự trong chuỗi 
 Ta có thể truy xuất từng ký tự trong chuỗi thông qua tên biến, nó tương tự 
như việc truy xuất một mảng, dĩ nhiên kiểu của từng ký tự trong chuỗi là Char. 
Giã sử ta có biến St là biến kiểu string thì St[i] (i là một số nguyên thoả 1 <= i 
<= length(St)) là ký tự thứ i của chuỗi. 
 Dưới đây là chương trình cho nhập vào một số nhị phân, in ra kết quả là số 
thập phân tương ứng, sử dụng việc truy xuất các ký tự trong chuỗi nhị phân Bin. 
HamMu là hàm mũ an (xin xem cách thiết kế ở chương unit). 
 Var Bin: String[20]; 
 Dec, i: Integer; 
Begin 
 Write(‘ Nhập một số nhị phân: ‘); Readln(Bin); 
 Dec := 0; 
 For i := 1 to length(Bin) do 
 If Bin[i] = ‘1’ Then 
 Dec := Dec + HamMu( 2, length(Bin)-i ); 
 Write(‘Số nhị phân vừa nhập có giá trị là: ’ , Dec); 
 Readln; 
End. 

File đính kèm:

  • pdfgiao_trinh_lap_trignh_pascal.pdf