Giáo trình Tin học đại cương - Phần 2 - Chương 2: Các kiểu dữ liệu cơ sở và cách khai báo
1.1. Khái niệm dữ liệu
Dữ liệu là tất cả các thông tin có thật ñược máy tính xử lí. Chúng có nhiều dạng khác nhau,
thể hiện qua các ñối tượng cần xử lí nhưvăn bản, số liệu, âm thanh, hình ảnh,.
1.2. Kiểu dữ liệu
Kiểu dữliệu là tập hợp tất cả các giá trị mà một ñại lượng thuộc kiểu ñó có thể nhận ñược,
trên ñó xác ñịnh một số phép toán.
ðiều ñó có nghĩa là một ñại lượng (biến, hằng,.) chỉ có thể nhận một tập hợp các giá trị
nhất ñịnh (chứ không phải mọi giá trị có thể có) và trên tập hợp các giá trị ñó có xác ñịnh một
số phép toán. Chẳng hạn kiểu số nguyên thông thường chỉ nhận các giá trị trong phạm vi -2
15
ñến 2
15
-1, trên ñó có các phép toán số học +, -, *, /, div, mod và các phép so sánh =,<,>.
a số thực thông thường: +, -, *, / và các phép so sánh ( không có phép div và mod dành cho số thực ). - Cách viết số thực dạng dấu phảy ñộng: Trong máy tính số thực ñược viết dùng dấu chấm ñể ngăn giữa phần nguyên và phần lẻ thập phân. Trong dạng dấu phảy ñộng số thực ñược viết theo dạng: AE+b, trong ñó A gọi là phần ñịnh trị, E+b gọi là phần mũ. Ví dụ: Ta xem xét các cách viết khác nhau của cùng 1 số 824.12345=8.2412345x102 hay 8.2412345E+2 =824123.45x10-3 hay 824123.45E-3 Trong TURBO PASCAL, ngoài kiểu số thực ñược khai báo với từ khoá real nói trên còn có các kiểu số thực khác ( xem bảng ) phục vụ cho các mục ñích tính toán với ñộ lớn và ñộ chính xác khác nhau Kiểu ( từ khoá ) Phạm vi biểu diễn Chữ số có nghĩa Kích thước ( byte ) Single 1.5E-45..3.4E+38 7-8 4 Real 2.9E-39..1.7E+38 11-12 6 Double 5.0E-324..1.7E+308 15-16 8 Extended 3.4E-4932..1.1E+4932 19-20 10 Trường ðại học Nông nghiệp 1 - Giáo trình Tin học ñại cương --------------------------------------------- 119 119 * Các hàm số học chuẩn dùng cho kiểu số nguyên và số thực: ðây là những hàm ñược ñịnh nghĩa sẵn trong TURBO PASCAL, ta có thể sử dụng như các công cụ ñể tính toán Tên hàm ( trong TP ) Cho kết quả ( hàm) ABS(X) | X (giá trị tuyệt ñối của X) SQR(X) X2 ( X bình phương) SQRT(X) X (căn bậc 2 của X ) LN(X) lnX (Logarit Nepe) EXP(X) eX SIN(X) sinX ; X cho bằng radian COS(X) cosX; X cho bằng radian ARCTAN(X) arctangX SUCC(n) n+1 ( số tiếp theo của n ) , n nguyên PRED(n) n-1 ( số kề trước của n ) , n nguyên TRUNC(X) cắt, cho phần nguyên của X ROUND(X) Làm tròn phần lẻ của X 2.3. Kiểu kí tự Kiểu kí tự là tập hợp tất cả các kí tự của bảng mã máy tính ( ASCII ) Từ khoá Char Có thể sử dụng các phép toán so sánh ñối với kiểu kí tự, kí tự nào ñứng trước theo thứ tự của bảng mã máy tính sẽ ñược coi là nhỏ hơn, kí tự ñứng sau ñược xem là lớn hơn Ví dụ: 'a' < 'b' Hằng kí tự ñược viết trong cặp dấu nháy ' ' Các hàm dùng cho kiểu kí tự: Tên hàm ( trong TP ) Cho kết quả ( hàm) ORD(C) cho số thứ tự của kí tự C trong bảng mã CHR(n) cho kí tự có số thứ tự là n SUCC(C) cho kí tự ñứng kề sau PRED(C) cho kí tự ñứng kề trước 2.4. Kiểu logic (Boolean) Từ khoá Boolean Các phép toán logic: NOT , AND, OR, XOR Các phép toán so sánh: =, , ... Kiểu logic boolean chỉ có 2 giá trị : True và False Người ta ñịnh nghĩa: False < True Trường ðại học Nông nghiệp 1 - Giáo trình Tin học ñại cương --------------------------------------------- 120 120 2.5. Kiểu liệt kê (Enumerated scalar type) Là kiểu cho phépngười lập trình có thể tự ñịnh nghĩa ra các kiểu vô hướng bằng cách liệt kê các giá trị của kiểu vô hướng ra thông qua các tên do người lập trình tạo ra. Danh sách các giá trị này ñược ñặt trong ngoặc ñơn và ñược mô tả bằng một tên kiểu trong phần mô tả (Phần TYPE). Từ khoá: TYPE Ví dụ: TYPE Boolean=(False, True); Color=(Red, Blue, Green, While, Black); Một biến vô hướng có thể ñịnh nghĩa thông qua các kiểu ñã ñược mô tả trong phần TYPE như sau: VAR Ketqua: Boolean; Mau1, Mau2: Color; Hoặc khai bái trực tiếp với mô tả kiểu dữ liệu: VAR Gioitinh: (Nam, nu); Ngay: (Chunhat, Hai, Ba, Tu, Nam, Sau, Bay); Ví dụ: Ketqua:= True; Mau1:=Blue; Gioitinh:=Nam; Ngay:=Chunhat; 2.6. Kiểu khoảng con (Sub- range Type) Là kiểu vô hướng ñược dụng khi một biến chỉ ñược láy giá trị trong một khoảng (xác ñịnh bởi cận trên và cận dưới). • Quy tắc ñịnh nghĩa: Hang_can_duoi..Hang_can_tren; Trong ñó: Hang_can_duoi < Hang_can_tren, và cùng kiểu. • Tác dụng: - Tiết kiệm ô nhớ. - Có thể kiểm tra giá trị của biến khi chạy chương trình không ñược vượt ra khỏi giới hạn của khoảng con. Ví dụ: TYPE Ngay= (Chunhat, Hai, Ba, Tu, Nam, Sau, Bay); Chu_cai_hoa='A'..'Z'; VAR ch: Chu_cai_hoa; Ngay_lam_viec: Hai..Bay; Trường ðại học Nông nghiệp 1 - Giáo trình Tin học ñại cương --------------------------------------------- 121 121 3. Các khai báo 3.1. Khai báo ñơn vị ðơn vị là một kiểu tổ chức của chương trinh Pascal, trong ñó có các chương trình con, nhằm thực hiện một một chức năng nào ñó. Ta khai báo các ñơn vị sử dụng trong chương trình theo cú pháp sau: Uses Tên_ñơn_vi; CRT là ñơn vị chuẩn quản lý màn hình, bàn phím; GRAPH là ñơn vị ñồ họa. PRINTER là ñơn vị khai báo máy in, máy in ñược cài ñặt tên là LST. Ví dụ 1: Uses crt; Ví dụ 2: Uses crt, graph, printer; 3.2. Khai báo nhãn Nhãn là một tên trong Pascal. Nhãn dùng ñánh dấu một câu lệnh trong chương trình ñể có thể chuyển ñiều khiển tới ñó. Khai báo nhãn trong chương trình theo cú pháp sau: Label Tên_nhãn; Cách ñánh dấu nhãn cho câu lệnh như sau: Tên_nhãn : Câu lệnh; Ví dụ: Label Tiep; . . . Tiep : Readln(x); 3.3. Khai báo hằng Hằng là ñại lượng không thay ñổi giá trị trong quá trình xử lí. Ta khai báo hằng theo cú pháp: const Tên_hằng=Giátrị ; ở ñó: Tên_hằng do ta ñặt ra, Giátrị là giá trị mà tên hằng sẽ nhận và giữ không ñổi suốt quá trình xử lí. Ví dụ: const n=10; { khai báo hằng số nguyên n=10} pi=3.1416; { khai báo hằng số pi } ki_tu='Y'; { khai báo hằng kí tự ki_tu nhận kí tự Y} 3.4. Khai báo kiểu Khai báo kiểu là ñịnh nghĩa một kiểu dữ liệu do người sử dụng tạo ra. Khai báo kiểu có cú pháp sau: Type Tên_kiẻu = Mô_ tả_kiểu; Ví dụ: Type Mau = (do, xanh, vang, tim, nau); Type Phuong_tien_GT = (xe_dap, xe_may, o_to, tau_hoa); Type Tuoi_nguoi = 1..300; Trường ðại học Nông nghiệp 1 - Giáo trình Tin học ñại cương --------------------------------------------- 122 122 3.5. Khai báo biến Biến là ñại lượng có thể thay ñổi giá trị trong quá trình xử lí. Biến của chương trình là tên của ô nhớ cất giữ dữ liệu. Muốn sử dụng biến nào ta phải khai báo trước biến ñó bằng cách viết tên biến trong phần khai báo ở ñầu chương trình sau từ khoá Var. Cú pháp: Var Tên_biến:Kiểu_dữ_liệu; ở ñó: Tên_biến do ta ñặt ra, Kiểu_dữ_liệu là tên của một trong các kiểu dữ liệu của TURBO PASCAL, dấu hai chấm bắt buộc phải có ñể ngăn giữa 2 phần của khai báo, dấu chấm phảy kết thúc dòng khai báo. Các biến có cùng kiểu có thể ñược khai báo cùng nhau bằng cách viết các tên biến cách nhau bởi dâú phảy (,), nhóm các biến khác kiểu nhau ñược viết cách nhau bởi dấu ; Ví dụ: Var i:integer; { khai báo một biến có tên là I, biến này có kiểu nguyên} x,y,z:real; { khai báo 3 biến x,y,z nhận các giá trị có kiểu thực } t: char; { khai báo biến t có kiểu kí tự } kiem_tra:boolean; { khai báo biến logic } Tuoi: 1..300; ðối với mỗi bài toán, khi phân tích thuật toán, ta phải xác ñịnh rõ ngay chương trình cần phải nhập vào các dữ kiện gì ? các kết quả trung gian nào cần phải ñược chứa, dữ liệu ra là những gì?... ñể từ ñó có phần khai báo chính xác, không bị thiếu mà cũng không thừa gây lãng phí ô nhớ (!) 4. Biểu thức và câu lệnh 4.1. 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 công thức toán học nào ñó. Một biểu thức bao gồm các toán tử kết hợp với các toán hạng. Các toán tử trong TURBO PASCAL gồm: các phép toán số học ( +, -, *, / ), các phép so sánh ( =, , ...), các phép toán logic ( NOT, AND, OR); Các toán hạng: gồm các hằng, các biến, các hàm ñược dịnh nghĩa trong TURBO PASCAL Thứ tự ưu tiên các phép toán như sau: 1. dấu ngoặc ( ) nội dung viết trong dấu ngoặc ñược ưu tiên thực hiện trước nhất 2. phép lấy ñối ( - ), phép NOT 3. các phép tính loại nhân, chia: *, /, DIV, MOD, AND 4. các phép tính loại cộng, trừ: +, -, OR 5. các phép so sánh: +, , , ... Chú ý: Biểu thức trong Pascal chỉ ñược viết trên 1 dong do ñó phải chú ý dùng các dấu ( ) ñể viết cho chính xác. Ví dụ: Biểu thức toán học viết là: ab acb 21 42 + − Trong Pascal viết là: (b*b- 4*a*c)/(1+sqrt(2*a*b)) Biểu thức toán học viết là: 1sin2 cossin2 + ++ x xx Trong Pascal viết là: (2+ sqrt (sin(x)+cos(x)))/(2* sin(x)+1) Trường ðại học Nông nghiệp 1 - Giáo trình Tin học ñại cương --------------------------------------------- 123 123 4.2. Câu lệnh Câu lệnh xác ñịnh công việc, thao tác mà chương trình phải thực hiện ñể xử lí các dữ liệu ñã mô tả, khai báo. Các lệnh viết cách nhau bởi dấu (;), TURBO PASCAL phân loại các lệnh như sau: - Lệnh ñơn: là các lệnh không chứa các lệnh khác - Lệnh có cấu trúc: thường chứa nhiều hơn một lệnh ñơn, bao gồm khối lệnh, các lệnh thử và rẽ nhánh, các lệnh lặp. - Lệnh hợp thành ( còn gọi là lệnh phức hay lệnh ghép ): gồm một nhóm các lệnh ñược ñặt giữa cặp từ khoá begin ... end; ( dấu chấm phảy (;) kết thúc chứ không phải dấu chấm ) như sau: begin lệnh1; lệnh2; ... lệnhn; end; Dạng lệnh này cho ta thấy tính có cấu trúc của TURBO PASCAL. Một nhóm các lệnh giải quyết trọn vẹn một công việc nào ñó sẽ ñược tổ chức trong một khối lệnh dạng này, và từng công việc của bài toán lớn sẽ ñược giao cho từng người làm trước khi ghép lại ñể giải bài toán tổng thể. Chúng ta sẽ ñề cập kĩ hơn về vấn ñề này ở phần chương trình con ( thủ tục và hàm ). Bài tập chương 2 Hãy viết các khai báo biến cho các bài toán sau: 1. Tính n giai thừa: n! =1.2...n với n>1 2. Tính các tổng: S=1/2 + 1/4 +...+ 1/(2k) Q=1.1!+2.2!+...+n.n! 3. Tìm và in ra tất cả các số chính phương nhỏ hơn một số cho trước, cho biết có bao nhiêu số chính phương như vậy. 4. Viết chương trình giải bài toán cổ: " Vừa gà vừa chó, bó lại cho tròn, ba mươi sáu con, một trăm chân chẵn. Hỏi có bao nhiêu gà, bao nhiêu chó?" 5. Viết chương trình tìm ước số chung lớn nhất của 2 số nguyên dương cho trước. 6. Tính Ex=1 1 2 2 + + + + + x x x n n ! ! ... ! ... với ñộ chính xác ε=10-4 ( ABS(xn/n!) < ε ), giá trị x ñược nhập vào từ bàn phím khi chạy chương trình. 7. Cần có 50000 ñ từ các loại giấy bạc 1000ñ, 2000ñ và 5000ñ. Tìm tất cả các phương án có thể. 8. Chuyển một số thập phân nguyên dương thành một số nhị phân, in ra màn hình dạng X10 = Y2
File đính kèm:
- Giáo trình Tin học đại cương - Phần 2 - Chương 2_Các kiểu dữ liệu cơ sở và cách khai báo.pdf