Giáo trình Nhập môn Tin học LỜi nóI ĐẦU



tải về 4.67 Mb.
trang43/63
Chuyển đổi dữ liệu20.05.2018
Kích4.67 Mb.
1   ...   39   40   41   42   43   44   45   46   ...   63




4.3.3 Kiểu số nguyên


4.3.3.1. Khái niệm: Kiểu nguyên là một kiểu số hữu hạn và đếm được có miền giá trị phụ thuộc vào số byte được cấp phát.

4.3.3.2 Các kiểu số nguyên


Tên kiểu

Phạm vi giá trị

Số byte

Giải thích

ShortInt

-128 .. 127

1

1 bit chứa dấu, 7 bit chứa giá trị

Byte

0..255

1

8 bit chứa giá trị

Integer

-32768 .. 32767

2

1 bit chứa dấu, 15 bit chứa giá trị

Word

0 .. 65535

2

16 bit chứa giá trị

LongInt

-2147483648 .. 2147483647

4

1 bit chứa dấu, 31 chứa giá trị


Bảng 3.1. các kiểu số nguyên
Ngoài kiểu Integer là thông dụng nhất, các số nguyên còn được chia ra thành 4 kiểu nữa đó là: Byte, Word, ShortInt và LongInt. Bảng 3.1 liệt kê chi tiết về tên gọi, phạm vi giá trị và độ dài tính theo đơn vị byte của từng kiểu nguyên.

Các biến nguyên chỉ có thể nhận các giá trị là các số nguyên nằm trong phạm vi giá trị của biến đó. Khi gán cho một biến một số nguyên nằm ngoài phạm vi của biến thì máy sẽ báo lỗi: "Const out of range".


Ví dụ 4.1: cho khai báo :

Var i : Byte;

N : Integer;

thì các lệnh đưới đây là đúng:

i:= 200;

N:= -1500;

còn các lệnh dưới đây là bị lỗi :

i:= -5;


N:= 50000;

Đặc biệt không thể gán một số thực cho một biến nguyên. Câu lệnh sau là sai :

N:= 12.5 ;

Khi gặp tình huống này, máy sẽ báo lỗi "Type mismatch".



Chú ý: Các số nguyên hệ thập lục phân (hệ 16) được biểu diễn bằng cách viết thêm dấu $ ở trước số, ví dụ ba số dưới đây :

$A , $FF và $10

là các số nguyên viết trong hệ 16. Chúng có giá trị tương ứng trong hệ 10 là:

10 , 255 và 16



4.3.3.3 Các phép toán số học trên số nguyên

Phép cộng và trừ : ký hiệu + và - như thường lệ.

Phép nhân : ký hiệu bằng dấu *, ví dụ 4*2 cho kết qủa là 8.

Phép chia : ký hiệu bằng dấu / , ví dụ 6/4 cho kết qủa là 1.5.

Phép chia lấy phần nguyên : ký hiệu bằng từ khóa DIV.

Phép lấy phần dư nguyên của phép chia: ký hiệu bằng từ khóa MOD.



Ví dụ 4.2: 15 DIV 6 cho kết qủa là 2.

15 MOD 6 cho kết qủa là 3.

Các phép toán trên đều cho kết qủa là các số nguyên, trừ ra phép chia ( / ) luôn cho kết qủa là một số thực. Vì thế nếu N là một biến nguyên, mà gán : N:= 20/5;

thì máy sẽ báo lỗi, bởi vế phải có giá trị kiểu thực (=4.0) mặc dù phần lẻ bằng 0.



Nhận xét: số nguyên N là chẵn nếu N mod 2 = 0 (tức N chia hết cho 2),

ngược lại, là lẻ nếu N mod 2 <> 0. (dấu <> trong Pascal có nghĩa là khác nhau ).


Thứ tự thực hiện các phép toán cũng giống như thường lệ:

- Các biểu thức trong (...) được tính trước tiên

- Kế đến là *, /, div, mod

- Sau cùng là +, -

- Đối với các phép toán cùng thứ tự mà đứng liền nhau thì phép toán nào đứng trước được làm trước.

Ví dụ 4.3: tính biểu thức sau :

15 mod (2 +4) * 20 div (10 div 4) + 40 mod ( 5* 3)

=15 mod 6 * 20 div 2 + 40 mod 15

= 3 * 20 div 2 + 10

= 60 div 2 + 10

= 30 + 10

= 40

4.3.4 Kiểu số thực


4.3.4.1 Kiểu Real và các kiểu mở rộng

Kiểu Real là kiểu số thực thông dụng nhất dùng để biểu diễn các số thực x có trị tuyệt đối |x| nằm trong khoảng từ 2.9*10-39 đến 1.7*10+38. Nếu |x| > 1.7*10+38 thì không biểu diễn x trong máy được, còn nếu | x| < 2.9*10-39 thì x được coi là bằng 0.

Có hai cách biểu diễn các số thực:

- Cách 1: Viết bình thường, trong đó dấu phẩy thập phân được thay bằng dấu chấm thập phân, ví dụ như: 45.0 -256.45 +122.08

- Cách 2: Viết số dưới dạng khoa học :

1.257E+01 (có giá trị = 1.257*101 = 12.57 )

1257.0E-02 (có giá trị = 1257*10-2 = 12.57 )

Trong dạng này số gồm có hai phần, phần đứng trước E gọi là phần định trị, được viết theo cách 1, phần đứng sau E gọi là phần bậc, gồm dấu cộng hoặc trừ, tiếp đến là một số nguyên.

Số viết theo cách 1 còn gọi là số có dấu chấm thập phân cố định, số viết theo cách 2 còn gọi là số có dấu chấm thập phân di động hay số dạng khoa học (Scientific).

Ví dụ 4.4: Muốn khai báo hai biến x, y kiểu real, ta viết:

Var x, y : Real;

Ngoài kiểu Real ra, các số thực còn có 4 kiểu mở rộng nữa là Single, Double, Extended và Comp. Bảng 3.2 nêu chi tiết về phạm vi giá trị và số byte dùng để lưu trữ trong bộ nhớ của từng kiểu số thực.


Tên kiểu

Phạm vi giá trị

Số byte

Real

2.9*10-39 .. 1.7*1038

6

Single

1.5*10-45 .. 3.4*1038

4

Double

5.0*10-324 .. 1.7*10308

8

Extended

3.4*10-4932 .. 1.1*104932

10

Comp

-9.2*1018 .. 9.2*1018

8


Bảng 3.2: các kiểu số thực
Chú ý: Turbo Pascal thường chỉ làm việc với một kiểu Real. Muốn dùng 4 kiểu thực còn lại, phải chuyển sang mode 8087 bằng cách viết chỉ thị {$N+} ở ngay đầu chương trình.
4.3.4.2 Các phép toán trên số thực

Có 4 phép toán số học là nhân (*), chia (/), cộng (+) và trừ (-). Khi một trong các số hạng tham gia tính toán là kiểu thực thì kết qủa của phép toán cũng là một số thực. Phép toán DIV, MOD không dùng cho các số thực.



Ví dụ 4.5: với hai biến x, y kiểu thực thì lệnh sau là bị lỗi vì biểu thức vế phải không hợp lệ: y:= x mod 10 ;

Các phép toán so sánh (= , <> , < , <= , > , >= ) cũng dùng được cho các số hạng là thực hay nguyên.


4.3.4.3 Các hàm có đối số nguyên hoặc thực

- Hàm inc(i,h); là hàm tương đương với câu lệnh gán i:=i+h, với i, h là các số nguyên và kết quả trả lại có kiểu nguyên.

Nếu h=1 thì có thể viết tắt là inc(i);

- Hàm ABS(x): tính trị tuyệt đối của x. Kiểu dữ liệu của kết qủa cùng kiểu với đối số. Nếu x nguyên thì ABS(x) cũng nguyên, nếu x là số thực thì ABS(x) cũng là số thực.

Ví dụ 4.6: Abs(5 - 8) = 3

- Hàm SQR(x): tính bình phương của x. Kiểu dữ liệu của kết qủa cùng kiểu với đối số.

Ví dụ 4.7: Sqr(4.0) = 16.0

Sqr(7 div 3) = 4

- Trong các hàm dưới đây, đối số x có thể là nguyên hay thực, nhưng giá trị trả về luôn luôn là kiểu thực:

Hàm SQRT(x): tính căn bậc 2 của x (x >= 0), kết quả trả lại là một số thực

Hàm EXP(x) : tính e mũ x, kết quả trả lại là một số thực

Hàm LN(x): tính lnx, (x > 0), kết quả trả lại là một số thực

Các hàm SIN(x), COS(x),ARCTAN(x): tính sinx, cosx và arctgx.

Hàm INT(x) : cho số thực bằng phần nguyên của x.



Ví dụ 4.8: Int(12.55) = 12.0

Int(1+10/3)=4.0

Hàm FRAC(x) : cho số thực bằng phần lẻ của x.

Ví dụ 4.9: Frac(12.55) = 0.55

Hai hàm đặc biệt dưới đây cho kết qủa là số nguyên:

Hàm TRUNC(x): cho số nguyên là phần nguyên của x.

Ví dụ 4.10: Trunc(12.55) = 12

Trunc(-2.98) = -2

Hàm ROUND(x): cho số nguyên bằng cách làm tròn x.

Ví dụ 4.11: Round(12.45) = 12

Round(-2.98) = -3



Chú ý rằng hàm Int(x) và hàm Trunc(x) cùng cho phần nguyên của x, chúng chỉ khác nhau về kiểu dữ liệu của giá trị trả về. Int(4.5)= 4.0 còn Trunc(4.5) = 4 (viết 4 thì hiểu đó là số nguyên, còn viết 4.0 thì hiểu đó là số thực).

4.3.5 Kiểu ký tự (CHAR)


4.3.5.1 Ký tự và biến kiểu ký tự

Các ký tự dùng trong máy tính điện tử được liệt kê đầy đủ trong bảng mã ASCII (xem phụ lục 1) gồm 256 ký tự khác nhau và được đánh số thứ tự từ 0 đến 255. Số thứ tự của mỗi ký tự còn gọi là mã ASCII của ký tự đó.

Tuy có 256 ký tự khác nhau song chỉ có 128 ký tự đầu tiên là hay dùng, còn lại là các ký tự mở rộng. Các ký tự có mã từ 0 đến 31 gọi là các ký tự điều khiển, không in ra được, được dùng để điều khiển các thiết bị ngoại vi, chẳng hạn ký tự có mã là 7 dùng để tạo một tiếng kêu bip, ký tự có mã là 13 dùng để chuyển con trỏ màn hình xuống đầu dòng dưới...

Mỗi ký tự trong bảng mã ASCII gọi là một hằng ký tự, chiếm độ dài 1 byte, và khi viết trong Pascal phải được đặt trong cặp nháy đơn: ‘0’, ‘1’, ‘A’, ‘B’, ‘$’,...

Giữa các ký tự, có một thứ tự mặc nhiên theo nguyên tắc : ký tự có mã nhỏ hơn thì nhỏ hơn. Tức là:

Ký tự trắng < ‘0’< ‘1’< ...< ‘9’< ‘A’< ‘B’< ...’Z’< ‘a’< ‘b’< ...< ‘z’

Biến nhận giá trị là các hằng ký tự gọi là biến kiểu ký tự, chúng được khai báo nhờ từ khóa CHAR, chẳng hạn như khai báo hai biến ch và ch1 dưới đây:

Var ch, ch1: Char ;

Khi đó có thể gán:

ch:=‘A’;


ch1:=‘$’;

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. (1)



4.3.5.2 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ụ 4.12: Pred(‘B’)=‘A’
- Hàm SUCC(ch): cho ký tự đứng ngay sau ký tự ch trong bảng mã.

Ví dụ 4.13: Succ(‘A’)=‘B’.
- Hàm UpCase(ch): đổi ký tự ch thành chữ hoa tương ứng.

Ví dụ 4.14: Upcase( ‘a’ ) = ‘A’, Upcase( ‘b’ ) = ‘B’, Upcase( ‘A’ ) = ‘A’ .
- Hàm ORD(ch) : cho mã của ký tự ch.

Ví dụ 4.15: 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ụ 4.16 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ụ 4.17 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); { 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 )

Tuy nhiên trước khi thực hiện thì cần phải kiểm tra xem ký tự cần chuyển có phải chữ hoa hay không. Nếu là chữ hoa thì mới thực hiện đổi, ngược lại thì không nên đổi vì sẽ cho ra kết quả không đúng.


1   ...   39   40   41   42   43   44   45   46   ...   63


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

    Quê hương