1. Giới thiệu về ngôn ngữ lập trình là gì ?



tải về 0.58 Mb.
trang3/6
Chuyển đổi dữ liệu30.08.2016
Kích0.58 Mb.
#28832
1   2   3   4   5   6

Begin

clrscr;


Witeln('Nhap xau ki tu mot s1: ‘); readln(s1);
Witeln('Nhap xau ki tu hai s2: ‘); readln(s2);
s3:=’’;

s4:=’’;


n:=length(s1);

for i:=1 to n do


begin

s3:=s3+s1[i]+s2[i];


s4:=s4+s2[i]+s1[i];
end;

Writeln(‘ Cac xau ki tu moi tao’);


Writeln(s3);

Writeln(s4);


readln;

end.


Bài toán 3: Chuẩn hoá văn bản. Nôi dung chuẩn hoá văn bản như sau: Nhập vào các dòng văn bản từ bàn phìm, chuẩn hoá theo các qui định :

- Các từ chỉ cách nhau 1 khoảng cách.

- Sau dấu chấm phải viết hoa.

- Trước các dâu . , ; : không có khoảng cách.

- Sau các dâu . , ; : có 1 khoảng cách.

Chương trình

{ xuly tep van ban ve cac dau .,;: }
PROGRAM XU_LY_VAN_BAN;
USES CRT;

VAR S,T:STRING;TIEP:CHAR;

PROCEDURE SUA(VAR P:STRING);
VAR I:INTEGER;

BEGIN


{ xoa khoang cach thua }
I:=1;

WHILE I

IF (P[I]=' ') AND (P[I+1]=' ') THEN DELETE(P,I+1,1) ELSE I:=I+1; { xoa khoang cach truoc cac dau , ; : . }

I:=1;


WHILE IIF (P[I]=' ') AND ((P[I+1]=',') OR (P[I+1]=';') OR (P[I+1]=':') OR (P[I+1]='.')) THEN DELETE(P,I,1) ELSE I:=I+1;

{ chen dau khoang trong sau cac dau neu thieu }
I:=1;

WHILE I< LENGTH(P)-1 DO

IF ((P[I]=',') OR (P[I]=';') OR (P[I]=':') OR (P[I]='.')) AND (P[I+1]<>' ')

THEN BEGIN INSERT(' ',P,I+1);


I:=I+1;

END


ELSE I:=I+1;

{ Viet hoa sau dau . }


I:=1;

WHILE I

IF P[I]='.' THEN BEGIN P[I+2]:=UPCASE(P[I+2]);
I:=I+1;

END


ELSE I:=I+1;
END;

{ Than chuong trinh chinh}


BEGIN

CLRSCR;
TIEP:='C';

WHILE UPCASE(TIEP)='C' DO
BEGIN

WRITELN('NHAP XAU KI TU ');


READLN(S);

SUA(S);


WRITELN(S);

WRITE('CO TIEP TUC KHONG(C/K) '); READLN(TIEP);

END;

READLN;
END.


3. Kiểu tập
3.1.Khái niệm tập
Tập là một bộ các đối tượng vô hướng và cùng kiểu.

Mỗi đối tượng gọi là một phần tử của Tập. Tập có tối đa là 256 phần tử. Nếu phần tử là kiểu số thì chỉ cho phép là các số nguyên có giá trị từ 0..255.

Khái niệm Tập gắn liền với khái niệm Tập hơp trong trong toán học. Ví dụ: Tập các chữ cái hoa, tập này có 26 phần tử.

Tập các số nguyên dương có 2 chữ số, tập này có 90 phần tử.


3.2. Khai báo tập
Khai báo Tập dùng cụm từ : SET of Kiểu_phần_tử; Kiểu phần tử phải là một kiểu vô hướng.

- Dùng khai báo kiểủ

Type Tên_kiểu=Set of kiểu _phần_tử; Var Tên_biến: Tên _kiểu;

Ví dụ: Type t=set of 1..200;

Chu_hoa: Set of 'A'..'Z';
Var tuoi : t;

Chu_in: chu_hoa;

- Khai báo trực tiếp trong khai báo biến

Var Tên_biến: Set of Kiểu_phần_tử;

Ví dụ: Type mau=(do,xanh,vang,tin,nau);

hinh=(tam_giac,tron,chu_nhat);

Var mau_ao: Set of mau;
hinh_ve: set of hinh;
chu_so: 1..9;
3.3- Xây dựng một tập

Xây dựng một tập bằng cách liệt kê các phần tử của tập, chúng được cách nhau bởi dấu phẩy và được viết trong dấu móc vuông ( [ ]) .

Tập rỗng là tập không chứa một phần tử nào, được viết là [] [1..99] ; tập này có 100 phần tử .

[ 2,4,6,8..12]; tập có các phần tử là 2,4,6,8,9,10,11,12.

['a'..'d',' m','n'] ; tập này có các phần tử 'a', 'b', 'c', 'd', 'm', 'n'. [xanh,do,tim,vang];

Các phần tử của tập cũng có thể cho bằng biến hoặc biểu thức.


[2*i+j, i*j-2] ; nếu i=2 và j=3 thì tập có các phần tử là 7, 4.
Ta được dùng kiểu khoảng con để chỉ ra các phần tử của tập.
3.4- Các phép toán trên tập

a. Phép gán

Gán một tập cho biến kiểu tập.
Ví dụ

var chu: Set of 'A' .. 'Z';


tuoi: Set of 1..200;

Khi đó có thể thực hiện các phép gán sau:


chu:=['A', 'C'', 'M' . .'P'];

tuoi:=[50..80, 90,100];

Tập rỗng có thể đem gán cho mọi biến kiểu tập khác nhau.
Chu:=[];

tuoi:=[];

Không thể gán các tập kiểu cơ bản không tương thích. Chẳng hạn nếu gán chu:=[1..10] là sai.

b. Phép hợp

Phép hợp được kí hiệu bằng dấu +

Hợp của 2 tập là một tập có các phần tử thuộc hai tập. Ví dụ A:=[1,3,5..10];

B:=[2,4,6,8];

C:=[1,5,9];

D:=A+B; tập D sẽ là [1..10]

E:=B+C; tập E sẽ là [1,2,4,5,6,8,9]

c. Phép giao
Phép giao được kí hiệu bằng dấu *

Giao của 2 tập là 1 tập có các phần tử là các phần tử chung của cả 2 tập.


M:=A*B; tập M sẽ là [6,8]

N:=B*C; tạp N=[]

d. Phép hiệu

Phép hiệu được kí hiệu bằng dấu -.

Hiệu của 2 tập là 1 tập chứa các phần tử thuộc tập thứ nhất nhưng không thuộc tập thứ 2. G:=A - B ; tập G sẽ là [1,3,5,7,9,10]

H:=C - A; tập H sẽ là tập rỗng.

e. Phép thuộc về

Phép thuộc về kí hiệu là IN

Phép thuộc về cho biết 1 phần tử hay 1 tập có thuộc về 1 tập khác không ?, kết quả của phép thuộc về là giá trị kiểu boolean (True hoặc False).

1 In A; kết quả là true.

B in A; kết qủa là False.

C in A; kết quả là True;

Phép so sánh =, <>, <=, >=

Hai tập đem so sánh phải cùng kiểu.

Kết quả của phép so sánh là giá trị kiểu boolean.

- Hai tập bằng nhau (=) nếu chúng có các phần tử như nhau từng đôi một. Ví dụ: x:=['a' . .'d'];

y:=['a' .. 'd', 'e', 'f'];
z:=['a', 'b', 'c', 'd']
x=y; kết quả là False.
x=z; kết quả là True.

- Hai tập là khác nhau (<>) nếu chúng có ít nhất 1 cặp phần tử khác nhau.


x<> y ; kết quả là True;

x<> z ; kết quả là False.

- Tập thứ nhất <= tập thứ 2 nếu tất cả các phần tử của tập thứ nhất đều thuộc tập thứ 2.
x <= y; kết quả là true.

y <= x; kết quả là False.

- Tập thứ nhất >= tập thứ 2 nếu mọi phần tử của tập thứ 2 đều thuộc tập thứ 1.
y >= x; kết quả cho True.

z >= y; kết quả là False.


3.5- Các chương trình về tập


Bài toán : Tạo một tập chứa các số có tối đa là 2 chữ số nguyên dương< 256 chia hết cho 7, in tập đó ra. Sau đó nhập 1 số bất kỳ kiểm tra xem nó có thuộc vào tập đó không.

Chương trình

Program thao_tac_tap;
uses crt;

var a: set of 1..99; i,n: byte; lap: char;

Begin

clrscr;
{ Tao tap cac so chia het cho 7 }


a:=[];

for i:=7 to 255 do

if (i mod 7) = 0 then a:=a+[i];

{ In tập }

Writeln(' Tap cac so chia het cho 7');
for i:=7 to 255 do

if i in a then writeln(i);

{ Kiem tra so nhap thuoc tap chi het cho 7}
Repeat

write(' Nhap so bat ky ');


Realn(n);

if i in a then writeln('Chia het cho 7') else witeln('Khong chia het cho 7');


Write(' Co tiep tuc khong (C/K) ? '); readln(lap);

Until upcase(lap)= 'K';

readln;

end.


Bài tập chương 4
Hãy viết chương trình cho các bài toán sau:
1. Cho dãy số sau: a1,a2,....,an . Viết chương trình tìm phần tử lớn nhất, phần tử nhỏ nhất của dãy số đó.

2. Cho dãy số sau: a1,a2,....,an . Viết chương trình sắp xếp dãy theo thứ tự tăng dần .


3. Cho dãy số sau: a1,a2,....,an . Viết chương trình đếm số phần tử dương và xoá đi phần tử thứ m trong dãy (m<=n) .

4. Cho dãy số sau: a1,a2,....,an . Viết chương trình tìm các phần tử có giá trị là x nhập vào từ bàn phím.

5. Cho dãy số sau: a1,a2,....,an . Viết chương trình thêm phần tử có giá trị là x, vào vị trí m trong dãy. Sau đó tính tổng các phần tử của dãy mới.
6. Cho ma trận có m dòng và n cột, các phần tử là nguyên. Tìm phần tử nhỏ nhất của ma trận.
7. Cho ma trận có m dòng và n cột, các phần tử là nguyên. Tính tổng và trung bình cộng các phần tử của ma trận.

8. Viết chương trình nhập vào một xâu ký tự. Hãy xây dựng xâu chứa các ký tự đảo của xâu đó, đếm xem có bao nhiêu ký tự 'a ' hoặc ‘A’ trong xâu.

9. Viết chương trình nhập vào một xâu ký tự. Hãy kiểm tra xem xâu đó có đối xứng không. In kí tự đầu và kí tự cuối của xâu đó.

10. Viết chương trình nhập vào hai xâu ký tự có độ dài bằng nhau. Hãy xây dựng xâu chứa các ký tự xen kẽ của hai xâu đó, theo thứ tự một kí tự của xâu1 rồi đến 1 kí tự của xâu 2. CHƯƠNG V

CHƯƠNG TRÌNH CON: HÀM VÀ THỦ TỤC
1 - Cấu trúc của hàm và thủ tục
1.1- Chương trình con
Khi lập trình gặp đoạn chương trình cần dùng nhiều lần, để tránh viết lặp lại thì đoạn
chương trình đó được tổ chức thành chương trình con và mỗi khi cần gọi tới chương trình
con đó.

Mặt khác khi xây dựng chương trình cho các bài toán lớn, phức tạp, để dễ cho việc thiết kế chương trình, hiệu chỉnh chương trình, gỡ rối khi chạy chương trình, bài toán lớn được phân thành các phần nhỏ, mỗi phần xây dựng thành các chương trình con. Chương trình chính sẽ gọi tới các chương trình con .

Trong Pascal có 2 loại chương trình con đó là hàm ( Function) và thủ tục (Procedure).

a - Cấu trúc của hàm ( Function) và lời gọi hàm

 Hàm có cấu trúc đầy đủ như sau:

Function Tên_hàm(Tham_số1 : kiểu; Tham_số2: kiểu; Var tham_số3: kiểu;. . .): kiểu; Label {Khai báo các nhãn }

Const { Khai báo các hằng }

Type {Định nghĩa các kiểu dữ liệu của người sử dụng }

Var { Khai báo các biến cục bộ}

Begin


{ Thân chương trình con }
Tên_hàm:= Giá_trị ;
End;

Các phần nếu có thì theo đúng thứ tự đã nêu.

Kiểu của tham số là các kiểu cơ bản, kiểu có cấu trúc như kiểu xâu kí tự và kiểu mang, nếu là kiểu mảng thì phải khai báo bằng định nghĩa kiểu ở phần định nghĩa khiểu ở đầu chương trình chính, không được khai báo trực tiếp.

Kiểu của hàm có thể là các kiểu cơ bản, kiểu xâu kí tự.

Các tham số khai báo trong hàm được gọi là tham số hình thức.
 Lời gọi hàm

Trong thân chương trình chính sử dụng hàm phải có lời gọi hàm. Lời gọi hàm được viết như sau:

Tên_hàm( danh sách các tham số thực sự)

Các tham số thực sự tương ứng cả về số lượng và cả về kiểu dữ liệu với các tham số hình thức khai báo trong hàm.

Lời gọi hàm được coi như 1 biến, có thể tham gia vào biểu thức, tham gia vào các thủ tục
vào/ ra.

Ví dụ1: Chương trình có xây dựng Function

Bài toán : Tính diện tích của tam giác biết 3 cạnh a,b,c.

Chương trình

Program Tinh_dien_tich;
uses crt;

var a,b,c : real;

Function DT(x,y,z : real) : real;
var s,p : real;

begin


p:=(x+y+z)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));


DT:=s;

end;


begin { than chuong trinh chinh }
clrscr;

a:=2;b:=3;c:=2;

writeln(' dien tich tam giac 1 = ', DT(a,b,c):8:2); write('Nhap 3 canh của tam giac a,b,c: ');
readln(a,b,c);

writeln(' dien tich tam giac 2 = ', DT(a,b,c):8:2);


readln;

end.


- Hàm đặt ở vị trí sau khai báo biến trong chương trình chính và trước thân chương trình
chính.

- Chỉ được gọi tới hàm sau khi đã khai báo hàm.

- Ơ ví dụ 1 ta khai báo hàm có tên là DT có kiểu real, các tham số hình thức của hàm là: x,y,z. Trong thân chương trình có 2 lời gọi hàm, chúng đều nằm trong lệnh Writeln. Trong lời gọi hàm thứ nhất, 3 tham số thực sự là a=2, b=3, c=2. Trong lời gọi hàm thứ hai, 3 tham số thực sự là a,b,c có giá trị được nhập vào từ bàn phím.

b - Cấu trúc của thủ tục (Procedure) và lời gọi thủ tục

 Thủ tục có cấu trúc đầy đủ như sau:

Procedure Tên_thủ_tục(Tham_số1 : kiểu; Tham_số2: kiểu; Var tham_số3: kiểu;. . .); Label {Khai báo các nhãn }

Const { Khai báo các hằng }

Type { Định nghĩa các kiểu dữ liệu của người sử dụng }

Var { Khai báo các biến cục bộ}

Begin


{ thân chương trình con }

End;


Các phần nếu có thì theo đúng thứ tự đã nêu.

Kiểu của tham số là các kiểu cơ bản, kiểu có cấu trúc như kiểu xâu kí tự và kiểu mang, nếu là kiểu mảng thì phải khai báo bằng định nghĩa kiểu ở phần định nghĩa khiểu ở đầu chương trình chính, không được khai báo trực tiếp.

Trong chương trình chính thủ tục đứng trước thân chương trình chính, sau khai báo biến. Các tham số khai báo trong hàm được gọi là tham số hình thức.

 Lời gọi thủ tục

Trong thân chương trình chính sử dụng thủ tục phải có lời gọi thủ tục Lời gọi thủ tục được viết như sau:

Tên_thủ_tục( danh sách các tham số thực sự);


Các tham số thực sự tương ứng cả về kiểu và số lượng với các tham số hình thức khai báo trong thủ tục.

Lời gọi thủ tục như 1 câu lệnh đứng độc lập.


Ví dụ 2: chương trình có xây dựng Procedure

Bài toán: Tính tổng và trung bình cộng của dãy số a1, a2, . . ., an . Chương trình

Program Tinh_tong_tb;
uses crt;

type mang= array[ 1 .. 50 ] of real ;


var i,n: integer; a: mang; tg,tb: real;

Procedure tong(m: integer; x: mang; var s, p : real); Var j: integer ; t: real;

begin

t:=0;


For j:=1 to m do t:=t + x[j] ;
s:= t;

p:=t/m;
end;

begin { than chuong trinh chinh }
clrscr;

write(' nhap so phan tu cua day n ');


readln(n);

for i:= 1 to n do


begin

write(a[', i, ']=' ); readln(a[i]);


end;

tong(n,a,tg,tb);

writeln(' tong= ', tg: 8: 2, 'trung binh = ', tb: 8: 2 );
readln;

end.


1.2 - Sự khác nhau giữa hàm và thủ tục

- Hàm cho 1 giá trị thông qua tên hàm. Tên hàm trong lời gọi hàm được coi như một biến


có thể tham gia vào biểu thức, các thủ tục vào ra. Cuối thân hàm phải có lệnh gán giá trị cho
tên hàm.

- Tên thủ tục không cho 1 giá trị nào cả.

- Các tham số viết sau tên hàm, sau tên thủ tục được gọi là tham số hình thức. Tham số hình thức có 2 loại: + Tham số không có từ khoá Var đi kèm trước gọi là tham trị.
+ Tham số có từ khóa Var đi kèm trước gọi là tham biến.

- Trong hàm thường chứa các tham trị, ít khi chứa các tham biến. Trong thủ tục thường có các tham biến.

- Các tham số trong lời gọi hàm, lời gọi thủ tục gọi là tham số thực sự. Các tham số thực sự phải tương ứng về số lượng và kiểu với các tham số hình thức. Các tham số thực sự tương ứng vơí các tham trị để chứa các dữ liệu vào. Các tham số thực sự tương ứng vơí các tham biến để chứa kết quả của thủ tục.

- Hàm lấy kết quả ở tên hàm, thủ tục lấy kết quả ở các tham số thực sự tương ứng với các tham biến.


- Như vậy nếu để lấy 1 kết quả ta có thể tổ chức hàm hoặc thủ tục. Nếu muốn lấy nhiều hơn 1 kết quả thì phải tổ chức chương trình con dạng thủ tục.
2 - Biến toàn cục, biến cục bộ và truyền dữ liệu

2.1 - Biến toàn cục

Biến toàn cục là biến khai báo ở đầu chương trình chính.

Biến toàn cục tồn tại suốt thời gian làm việc của chương trình .

Biến toàn cục có thể sử dụng cả trong chương trình chính và chương trình con.
Ví dụ 1 mục 1 (tính diện tích tam giac) có a,b,c là biến toàn cục.
Ví dụ 2 mục 1 ( tính tổng và trung bình) có i, n, a, tg, tb là biến toàn cục.

2.2 - Biến cục bộ

Biến cục bộ là các biến được khai báo ở đầu chương trình con.

Biến cục bộ được cấp phát bộ nhớ khi chương trình con được gọi tới và bị xoá khi ra khỏi chương trình con.

Biến cục bộ chỉ được dùng trong chương trình con.

Biến toàn cục và biến cục bộ có thể trùng tên nhau nhưng chương trình vẫn phân biệt 2 biến khác nhau.

Trong ví dụ 1 mục 1 (tính diện tích tam giác) có s, p là biến cục bộ.
Trong ví dụ 2 muc 2 ( tính tổng và trung bình) có j, t là biến cục bộ.

2.3 - Truyền dữ liệu

Khi gặp lời gọi chương trình con máy sẽ thực hiện các bước sau:

- Cấp phát bộ nhớ cho các tham số và cho các biến cục bộ trong chương trình con.

- Truyền giá trị của các tham số thực sự cho tham trị và truyền địa chỉ cho các tham biến.

- Thực hiện các lệnh trong thân chương trình con.

- Thực hiện xong chương trình con máy giải phóng các tham số và các biến cục bộ, rồi trở về chương trinh chính.
3 - Tính đệ quy của chương trình con

Trong Function và Procedure có thể có lời gọi tới chính nó. Tính chất này được gọi là tính


đệ qui.

Phương pháp đệ qui được áp dụng cho các bài toán thuật giải mang tính đệ qui.

Thuât giải đệ qui làm cho chương trình ngắn gọn, đẹp đẽ nhưng lại tốn thờ gian tính toán
và bộ nhớ. Có những bài toán chỉ có thể giải quyết được bằng xây dựng các chương trình con
đệ quy.

Ví dụ1: Bài toán tính giai thừa

- Trường hợp suy biến: n! = 1 khi n=0

- Trường hợp tổng quát: n! = (n-1)! . n khi n >= 1


Có thể xây dựng hàm Giaithua có tính chất đệ qui như sau: Function Giaithua( n: longint): longint ;

begin
if n=0 then Giaithua:= 1

else Giaithua:= Giaithua(n-1) * n ;
end;
* Muốn xây dựng được chương trình con đệ qui ta phải xác định được 2 trường hợp:

- Trường hợp suy biến , đó là trường hợp đặc biệt mà xác định được giá trị của hàm.

- Trường hợp tổng quát lần thứ n được tính dựa vào lần thứ (n-1).
Ví dụ 2: Tìm ước số chung lớn nhất của 2 số x và y có thể được định nghĩa như sau (x>y):

USCLN(x,y)= x nếu y=0 ( đây là trường hợp suy biến)

USCLN(x,y)= USCLN( y, phần dư của x/y) nếu y<>0 ( đây là trường hợp tổng quát). Trong hàm xây dưng với x>y, nếu y>x thì chương trình tráo đổi giá trị giữ x và y.
Hàm USCLN được viết như sau:

Function USCLN(x,y: integer) : integer ;


Var t:Integer;

Begin


If y>x then begin t:=x; x:=y; y:=t; end; if y=0 then USCLN:= x

else USCLN := USCLN(y, x mod y) ;


end;

4. Một số chương trình con của turbo pascal


Pascal đã xây dựng sẵn một số hàm và thủ thục, Ta có thể gọi tới các hàm, thủ tục đó theo đúng quy cách của nó để sử dụng.

Ngoài các hàn và thủ tục đã xét ở các phần trên, trong phần này bổ sung thêm một số thủ tục


sau đây:
* Procedure GotoXY(Xpos, YPos);

Đưa con trỏ(cursor) của màn hình về vị trí có toạ độ Xpos và Ypos trên màn hình. Xpos, Ypos kiểu số nguyên.

* Procedure ClrScr;

Xoá toàn bộ màn hình và đặt con trỏ vào vị trí phía trên, bên trái. * Procedure ClrEof;

Xoá toàn bộ các kí tự bên phải con trỏ màn hình. Sau khi xoá con trỏ vẫn ở tại chỗ.
* Procedure Deline;

Xoá toàn bộ dòng màn hình chứa con trỏ, sau đó dồn các dòng ở dưới lên. * Procedure InsLine;

Xen một dòng trắng vào màn hình từ vị trí con trỏ. * Procedure LowVideo và NormVideo;

Sau khi gọi LowVideo mọi kí tự viết ra màn hình đều có độ sáng yếu đi cho tới khi gọi thủ tục NormVideo (Normal Video).

* Procedure Delay(Time);

Tạo ra thời gian trễ Time (khoảng ms). Time là một số nguyên. Delay thường được dùng để làm chậm chương trình lại cho ta quan sát, khảo sát...

* Procedure Sound(F) và NoSound;

Tạo ra dao động âm thanh với tần số là F (F: số nguyên) cho đến khi ta gọi NoSound;

Bài tập chương 5

1. Viết chương trình tính tổ hợp chập m của n phần tử: Cmn


Chương trình viết có chương trình con.

2. Viết chương trình tính Pn(x)=(. . . ( ( an*x+an-1 )*x+an-2 )*x+. . . +a1)*x+a0


Chương trình có chương trình con.

3. Cho dãy số sau: a1,a2,....,an . Viết chương trình tính tổng, trung bình cộng các phần tử của dãy số đó. Chương trình viết có chương trình con.

4. Lập chương trình tính diện tích và chu vi của các hình: Tam giác biết 3 cạnh a,b,c, hình
chữ nhật biết hai cạnh a,b, hình tròn biết bán kính. Chọn hình để tính thông qua câu hỏi ' Ban
tính cho hình gì TG=1, CN=2, TR =3 '. Chương trình viết có sử dụng chương trình con.

5. Cho hai số nguyên x1 và x2, lập chương trình nhập x1 và x2 từ bàn phím, sử dụng tính đệ quy của chương trình con để tìm ước số chung lớn nhất của x1 và x2.


CHƯƠNG VI

KIỂU DỮ LIỆU CÓ CẤU TRUC: KIỂU BẢN GHI VÀ KIỂU TỆP

1 - Kiểu bản ghi (record)

1.1 - Khái niệm

Kiểu bản ghi là một kiểu dữ liệu có cấu trúc gồm một số cố định các phần tử có kiểu khác
nhau.

Kiểu bản ghi dùng để mô tả các dữ liệu có nhiều thành phần khác kiểu liên kết với nhau như dữ liệu của các bảng, các cột của bảng là các thành phần, mỗi cột có một kiểu dữ liệu khác nhau, các cột liên kết với nhau để biểu diễn một nội dung nhất định.

Ví dụ1: Bảng lương bao gồm các cột: Số thứ tự, Họ và tên, Ngày sinh, Hệ số, Lương, Bảo hiểm xã hội, Tổng lĩnh. Mỗi dòng của bảng lương thuộc kiểu dữ liệu bản ghi. Các cột là các thành phần còn được gọi là các phần tử.

1.2 - Khai báo kiểu dữ liệu bản ghi

Kiểu dữ liệu bản ghi có các phần tử liên kết với nhau. Phần tử được gọi là trường, mỗi trường có một tên, tên trường giống như tên biến. Mỗi trường thuộc một kiểu dữ liệu nào đó. Khi báo kiểu dữ liệu bản ghi được viết trong cụm từ record ... end;

Trong cụm từ là danh sách tên các trường kèm theo sau là kiểu dữ liệu của nó. Khai báo kiểu bản ghi như sau:

Type Tên_kiểu= Record

Tên_trường1 : kiểu;


Tên_trường2 : kiểu;

Tên_trườngN : kiểu;


End;

Ví dụ 1: Bảng lương trong ví dụ ở mục 1 được khai báo như sau: Type bang_luong = record

Stt : Integer;

Hoten : String[25];


Ns : String[10];

Heso,Luong,Bhxh,Tong : Real;

End;

Var luong1,luong2:bang_luong;


Ví dụ 2: Danh sách khách hàng bao gồm các dữ liệu như họ và tên, số nhà, phố, quận, Thành phố, số điện thoại.

Type khach_hang = record

hoten : string[25];

sonha : string[20];

Pho, quan, thanhpho : string[30]; tel : longint;

end;


Var Bangkh1,bangkh2: khach_hang;
1.3 - Sử dụng bản ghi

 Một trường của bản ghi coi như 1 biến, được sử dụng trong các biểu thức và các thủ tục


vào ra.

 Một trường của bản ghi được chỉ định bằng cách viết sau:


Tên_biến.Tên_trường

Ví dụ luong1.stt:=1;

luong1.hoten:='Le Thu Ha';

luong1.luong:=luong1.heso * 210000; bangkh1.pho:='Hang Dao';

bangkh1.tel:=8573980;
Readln(luong2.hoten);
Writeln(banghk2.pho);

Biến bản ghi không được tham gia vào các biểu thức, các thủ tục vào ra, các toán tử logic, các toán tử quan hệ >, >=, <, <= .

Nếu hai biến bản ghi có cùng kiểu thì có thể tham gia các phép so sánh = (bằng) và <>
(khác).

Nếu hai biến bản ghi có cùng kiểu thì có thể gán giá trị cho nhau.


luong1:=luong2;

banghk1:=banghk2;

1.4 - Câu lệnh With ... do

Khi chỉ định một trường của bản ghi ta phải viết cả tên biến và tên trường, do vậy viết các


tên sẽ dài. Để không phải viết tên biến, chỉ viết tên trường ta dùng câu lệnh With ... do như
sau:

With Tên_biến do Chuỗi_lệnh;

Trong chuỗi lệnh nếu chỉ ra một trường nào đó của biến đã nêu tên thì không phải viết tên biến kèm theo.

Ví dụ thay cho cách viết ở ví dụ phần 3 ta có thể sử dụng câu lệnh With...do


With luong1 do

begin


stt:=1;

hoten:='Le Thu Ha';

luong:=heso * 210000;
end;

With banghk1 do


begin

pho:='Hang Dao';


tel:=8573980;
end;

With luong2 do Readln(hoten);


With bangkh2 do Writeln(pho);

1.5 - Các chương trình sử dụng bản ghi

Bài toán 1: Bài toán thống kê hàng nhập. Mỗi mặt hàng có các dữ liệu như tên hàng, ngày
nhập, số lượng, đơn giá. Hãy nhập dữ liệu vào và in ra một bảng bao gồm các cột : tên hàng,
ngày nhập, số lượng, đơn giá, tiền của tất cả các mặt hàng đã nhập. Sau cùng in ra tổng số tiền



tải về 0.58 Mb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương