1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Tin học văn phòng >

Kiểu ký tự (CHAR)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (735.23 KB, 141 trang )


BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



Ký tự ‘A’ gọi là giá trị của biến ch, còn ‘$’ là giá trị của biến ch1.

Nhận xét:

Từ bảng mã của các chữ cái ta suy ra: Mã chữ thường = Mã chữ hoa tương ứng + 32.

b. Các hàm liên quan đến ký tự





Hàm PRED(ch): cho ký tự đứng ngay trước ký tự ch trong bảng mã. Ví dụ:

Pred(‘B’)=‘A’







Hàm SUCC(ch): cho ký tự đứng ngay sau ký tự ch trong bảng mã. Ví dụ:

Succ(‘A’)=‘B’.







Hàm UpCase(ch): đổi ký tự ch thành chữ hoa. Ví dụ:

Upcase(‘a’ ) = ‘A’, Upcase(‘b’ ) = ‘B’, Upcase(‘A’ ) = ‘A’ .







Hàm ORD(ch): cho mã của ký tự ch. Ví dụ: Ord (‘A’) = 65, Ord (‘a’) = 97 .







Hàm CHR(k): đối số k nguyên, 0≤ k ≤ 255, cho ký tự có mã bằng k. Ví dụ:

Chr (65)= ‘A’,

Chr (97)= ‘a’,

Chr(32) là ký tự trắng.



Có một số ký tự không có trên bàn phím, để viết chúng lên màn hình ta phải dùng lệnh

Write và hàm CHR. Ví dụ:

Lệnh Writeln(Chr(201)) ; in ra ký tự: +

Lệnh Writeln(Chr(187)) ; in ra ký tự: +

Ký tự có mã là 7 gọi là ký tự BEL (chuông), và lệnh:

Write(Chr(7) ); hay Write(#7) ; {có tác dụng phát ra một tiếng kêu bip}.

Chú ý:





Turbo Pascal (TP) cho phép viết gọn Chr(k) thành #k nếu k là hằng số. Ví dụ, hai

lệnh sau cùng in lên màn hình chữ A:

Write(#65);

Write(Chr(65));







Trong TP không có hàm đổi chữ hoa ra chữ thường, nhưng có thể làm việc này nhờ

công thức (1) và hai hàm Ord và Chr: Chữ thường:= Chr (Ord(chữ hoa) + 32 )



Ví dụ: Nhập một ký tự, nếu là chữ hoa thì đổi ra chữ thường, nếu là chữ thường thì đổi ra

chữ hoa.



Ngôn ngữ lập trình Pascal



37



BỘ MÔN TIN HỌC



TRƯỜNG ĐẠI HỌC HOA LƯ







PROGRAM VIDU3_4;

{ Ðổi chữ hoa ra thường và ngược lại}

Var ch, ch1: Char;

Begin

Write(‘ Nhập một ký tự:’); Readln(ch);

If (ch>=‘A’) and (ch<=‘Z’) then ch1:=Chr(Ord (ch)+32)

Else ch1:= Upcase(ch);

Writeln(ch, ‘ đã đổi ra: ‘ , ch1);

Readln;

End.

5. Kiểu Logic (BOOLEAN)

Kiểu boolean chỉ có hai giá trị là TRUE (đúng) và FALSE (sai), không phân biệt chữ

hoa hay chữ thường. Về quan hệ thứ tự thì FALSE< TRUE. Mỗi giá trị boolean chiếm một

byte bộ nhớ.

Các phép toán lôgic gồm có: NOT, AND, OR và XOR. Nếu A và B là hai đại lượng

lôgic thì NOT A, A and B, A or B và A xor B cũng là những đại lượng lôgic có kết quả

được cho ở bảng 3.5.

A



NotA



B



A and B



A or B



A xor B



True



False



True



True



True



False



True



False



False



False



True



True



False



True



True



False



True



True



False



True



False



False



False



False



Bảng 3.6

Thứ tự thực hiện các phép toán lôgic là như sau: NOT tính trước, kế đến AND, sau

cùng là OR, XOR.

Ví dụ, sau khi thực hiện lệnh:

A:=Not(2*3=5) or (‘A’<‘B’) and not(4/2=2) xor (Sqrt(2) >1);

thì giá trị của A= FALSE, thật vậy:

Not(2*3=5) or (‘A’<‘B’) and not(4/2=2) xor (Sqrt(2) >1)

= TRUE or TRUE and FALSE xor TRUE



Ngôn ngữ lập trình Pascal



38



BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



= TRUE or FALSE xor TRUE

= TRUE xor TRUE

= FALSE

Biến chỉ nhận giá trị là TRUE hoặc FALSE gọi là biến kiểu lôgic. Khi khai báo biến

kiểu lôgic ta dùng từ khóa Boolean, ví dụ:

Var A, B: Boolean;

Trong chương trình ta có thể gán:

A:= true;

B:=2*2 < 3;

Giá trị của biến B sẽ là False vì biểu thức 2*2< 3 là sai.

Về thứ tự tính toán, các phép so sánh thì ngang cấp nhau và được tính sau tất cả các phép

toán khác. Ví dụ tính biểu thức:

5+7 div 2 < -7 mod 3 + 5*2 =

= 5 + 3 < -1 + 10

= 8< 9

= TRUE

Do đó, khi trong một biểu thức mà có các phép toán lôgic xen kẽ với các biểu thức so

sánh thì các biểu thức so sánh phải để trong ngoặc đơn.

Chẳng hạn, biểu thức sau là sai quy cách:

N > 0 and N<10

Cần sửa đúng thành:

(N > 0) and (N<10)

Ví dụ: Nhập vào độ dài ba cạnh a,b,c của một tam giác, nếu a, b, c không phải là ba cạnh

của tam giác thì in lên màn hình câu " không phải ba cạnh của tam giác", ngược lại, nếu

đúng là ba cạnh của một tam giác thì tính chu vi và diện tích tam giác đó theo công thức

Hêrông:

, với p là nửa chu vi:

Ta biết, điều kiện để a,b,c là ba cạnh của một tam giác là mỗi cạnh phải dương và tổng

hai cạnh thì lớn hơn cạnh còn lại.

Dưới đây là chương trình cụ thể:

PROGRAM VIDU3_5; {Tính diện tích và chu vi tam giác theo 3 cạnh}

Var a, b, c, P, S: Real; Tgiac: Boolean;

Begin

Write(‘ Nhap 3 canh cua tam giac: ‘);



Ngôn ngữ lập trình Pascal



39



BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



Readln(a, b, c);

Tgiac:= (a>0) and (b>0) and (c>0) and(a+b>c) and (a+c>b) and (b+c>a);

If Tgiac= FALSE then Writeln(‘ Khong phai ba canh cua tam giac !’)

else

begin

P:=(a+b+c)/2;

S:= Sqrt(P*(P-a)*(P-b)*(P-c) );

Writeln(‘ chu vi = ‘ , 2*P:10:2);

Writeln(‘ dien tich S= ‘ , S:10:2);

end;

Readln

End.

6. Kiểu liệt kê và kiểu đoạn con

* Kiểu liệt kê (enumerated type)





Cách khai báo



Ngoài các kiểu dữ liệu đã có sẵn như kiểu nguyên, thực, ký tư, lôgic và kiểu chuỗi,

Turbo Pascal còn cho phép người lập trình có thể tự xây dựng các kiểu dữ liệu mới.

Kiểu liệt kê được định nghĩa bằng cách sử dụng từ khóa TYPE và liệt kê ra tất cả các giá

trị của kiểu, theo mẫu sau:

Type

Tênkiểu = (tên1, tên2, ..., tênN) ;

trong đó tên1, tên2,..., tênN là các tên tự đặt theo đúng quy ước về đặt tên. Ví dụ:

Type

Phai=(nam, nu) ;

Ten_mau = (den, trang, xanh, vang, tim, nau);

Theo khai báo này thì Phai là một kiểu dữ liệu liệt kê chỉ có hai giá trị là nam và nu,

Ten_mau cũng là kiểu dữ liệu liệt kê và có sáu giá trị là: den, trang, xanh, vang, tim, nau.

Khi một kiểu liệt kê đã được định nghĩa thì có thể khai báo các biến thuộc kiểu liệt kê

này bằng từ khóa Var. Ví dụ:

Var Ph1, Ph2: Phai;

M1, M2: Ten_mau ;

Trong chương trình, ta có thể gán:



Ngôn ngữ lập trình Pascal



40



BỘ MÔN TIN HỌC







TRƯỜNG ĐẠI HỌC HOA LƯ



Ph1:=nam;

Ph2:=nu;

M1:=den;

M2:=trang;

Pascal còn cho phép khai báo trực tiếp biến kiểu liệt kê không cần qua giai đoạn định

nghĩa Type bằng cách liệt kê các giá trị mà biến có thể nhận.

Ví dụ: các biến Ph1, Ph2, M1, M2 nói trên có thể khai báo trực tiếp như sau:

Var

Ph1, Ph2: (nam, nu) ;

M1, M2: (den, trang, xanh, vang, tim, nau);





Các hàm liên quan đến kiểu liệt kê

o Hàm ORD(tên): Trả về số thứ tự của tên trong kiểu liệt kê. Các giá trị liệt

kê được đánh số thứ tự bắt đầu từ 0. Ví dụ:

Ord(nam)=0,

Ord(xanh)=2

Thông qua hàm Ord, các giá trị liệt kê có thể so sánh với nhau theo quy tắc: giá trị



nào có số thứ tự nhỏ hơn thì nhỏ hơn: den < trang < xanh< vang< tim< nau

o Hàm PRED(tên) và hàm SUCC(tên): trả về giá trị đứng ngay trước và

ngay sau tên trong kiểu liệt kê tương ứng. Ví dụ:

Pred(nu)=nam

Pred(nau)=tim

Succ(den)=trang

o Hàm Tênkiểu(k): trả về giá trị liệt kê có số thứ tự là k trong Tênkiểu, ví dụ:

Phai(0)=nam

Ten_mau(2)= xanh

Hàm này là hàm ngược của hàm Ord.





Nhập , xuất kiểu liệt kê

Các giá trị liệt kê không thể nhập, xuất trực tiếp bằng lệnh Readln và Write được. Ðây



là hạn chế của kiểu liệt kê, khiến nó không thông dụng.



Ngôn ngữ lập trình Pascal



41



Xem Thêm
Tải bản đầy đủ (.doc) (141 trang)

×