Tải bản đầy đủ (.ppt) (20 trang)

Lập trình Pascal - P2

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 (538.31 KB, 20 trang )

Lê Minh Hoàng

2
Nội dung bài học
Kiểu liệt kê và kiểu đoạn con
Kiểu dữ liệu có cấu trúc: Mảng
Mảng 1 chiều
Mảng 2 chiều
Mảng nhiều chiều
Mảng động
Một số bài toán

3
Khai báo kiểu
Cú pháp khai báo kiểu do người lập trình định nghĩa
type
TypeIndentifier = TypeDeclaration;
TypeIdentifier là tên kiểu do người lập trình tự đặt
TypeDeclaration là mô tả kiểu dữ liệu theo cú pháp của từng kiểu.
Về thứ tự, FPC không ràng buộc về thứ tự khai báo hằng,
biến, kiểu.
Tuy nhiên nếu không gặp khó khăn gì, khai báo kiểu (type)
nên đặt sau khai báo hằng (const) và trước khai báo biến
(var)
Ví dụ: Khai báo kiểu đoạn con và kiểu liệt kê
type
TMyIntType = 1..200;
TDayOfWeek = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

4
Kiểu liệt kê (Enumerated Type)


type
TypeIdentifier = (Id1, Id2, ..., IdN);
Trong đó TypeIdentifier là tên kiểu, Id1..N là các tên liệt kê các hằng trong kiểu đó.
Công dụng: Dùng tên gợi nhớ thay vì mã hóa các hằng đó thành hằng số
Ví dụ
type
TDOW = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
var
DOW: TDOW;
Khi đó ta có thể viết những lệnh sau trong phần thân chương trình
DOW := Tue;
WriteLn(Ord(DOW)); //In ra số 1
DOW := TDOW(2); //DOW := Wed
Hàm Ord(hằng kiểu liệt kê) cho ta số thứ tự của hằng đó trong kiểu (hằng đầu
tiên có số thứ tự 0)
Ép kiểu: Tên kiểu liệt kê(Số thứ tự): Cho ta biết hằng mang số thứ tự tương ứng
Không được nhập/in ra trực tiếp hằng/biến kiểu liệt kê.
Tự học: Đọc thêm ở đây

5
Kiểu đoạn con (Sub-range type)
type
TypeIdentifier = LowestValue..HighestValue;
TypeIdentifier là tên kiểu đoạn con, LowestValue và HighestValue là hai hằng thuộc
cùng một kiểu đơn giản có thứ tự đã được định nghĩa trước
Ví dụ:
type
TDOW = (Sun, Mon, Tue, Wed, Thu, Fri, Sat);
TWorkingDay = Mon..Fri;
TCapitalAlphabet = 'A'..'Z';

var
WD: TWorkingDay;
Letter: TCaptitalAlphabet;
Khi đó ta có thể gán các giá trị Mon, Tue, Wed, Thu, Fri cho biến WD, gán các ký tự là
chữ cái in hoa cho biến Letter.
Hàm Ord(Giá trị kiểu đoạn con) sẽ trả về số thứ tự trong kiểu cơ sở.
WD := Mon;
WriteLn(Ord(WD)); //Vẫn in ra số 1
Tự học: Đọc thêm ở đây.

6
Định nghĩa mảng
Mảng (array) là một tập hợp các phần tử:
Cùng kiểu
Có thứ tự
Lưu trữ liên tục trong bộ nhớ
Việc truy cập phần tử mảng được thực hiện
thông qua tên mảng và chỉ số.
Khai báo mảng trong Pascal. Có 2 cách:
Khai báo kiểu mảng và biến mảng
Khai báo trực tiếp biến mảng.

7
Mảng 1 chiều
Mảng 1 chiều thường để lưu giá trị của các dãy.
Trong toán học ta viết, a
1
, a
2
, …, a

n
Trong Pascal ta viết a[1], a[2], …, a[n].
Khai báo kiểu mảng một chiều
type
ArrayType = array[IndexType] of ElementType;
ArrayType là tên kiểu mảng do người lập trình đặt, IndexType là tên kiểu chỉ số,
ElementType là tên kiểu phần tử.
Kiểu chỉ số phải là kiểu đơn giản, có thứ tự,
Ví dụ
type
T = array[1..10000] of Integer;
var
a: T;
b: array['A'..'Z'] of Boolean;
a là một mảng có 10000 phần tử số nguyên: a[1], a[2], ..., a[10000]
b là một mảng có 26 phần tử kiểu logic: b['A'], b['B'], ..., b['Z']. Ở đây dùng cách khai
báo trực tiếp, không qua định nghĩa kiểu

8
Nhập/xuất mảng một chiều
Không thể nhập trực tiếp một mảng, phải nhập giá trị từng
phần tử
Mảng luôn phải khai báo số phần tử đủ lớn để chương trình
có thể thực hiện được trong mọi trường hợp, trên thực tế số
phần tử có thể ít hơn số lượng khai báo
Ví dụ: Nhập vào một số nguyên dương n và các số nguyên
a
1
, a
2

, ..., a
n
. In ra dãy a
1..n
theo thứ tự ngược lại
Để nhập các phần tử a
1..n
, ta phải nhập lần lượt a
1
, a
2
, ...,a
n
,
như vậy với mọi chỉ số i chạy từ 1 tới n, ta phải nhập a
i
. ⇒
Cách thông dụng nhất là sử dụng vòng lặp for.
Để xuất các phần tử a
n..1
, với mọi chỉ số i từ n về 1, ta phải
xuất a
i
⇒ Cách đơn giản nhất là sử dụng vòng lặp for.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×