1. Trang chủ
  2. » Giáo án - Bài giảng

BAI GIANG PASCAL 2

32 377 3
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ngôn ngữ lập trình Pascal 2
Tác giả Nguyễn Quý Khang, Kiều Văn Hưng, Quách Tuấn Ngọc, Bùi Thế Tâm, Văn Văn Tuấn Dũng
Trường học Đại học Quốc gia Hà Nội
Chuyên ngành Ngôn ngữ lập trình
Thể loại Tài liệu học tập
Năm xuất bản 2002
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 228,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mỗi ô là 1 phần tử của tệp EOF • Tệp dùng để lưu trữ dữ liệu: dữ liệu trong tệp được dùng nhiều lần và tồn tại cả khi kết thúc chương trình hay mất điện khác với các kiểu mảng, xâu, bản

Trang 1

NGÔN NGỮ LẬP TRÌNH PASCAL 2

(03 đơn vị học trình)

Mục đích, yêu cầu

• Cung cấp kiến thức về NNLT Pascal với cấu trúc dữ liệu nâng cao

• Sử dụng phần mềm Turbo Pascal lập trình giải các bài toán giúp cho việc học tập, nghiên cứu và giảng dạy

Nội dung

C7: Kiểu Set (tập hợp)

C8: Kiểu Record (bản ghi)

C9: Kiểu File (tệp)

C10: Kiểu Pointer (con trỏ)

Tài liệu tham khảo

1 Nguyễn Quý Khang, Kiều Văn Hưng, Bài tập Pascal (tập 1), NXB ĐHQG

Hà Nội, 2002 (hoặc Bài tập Pascal, ĐHSP Hà Nội 2).

2 Quách Tuấn Ngọc, Ngôn ngữ lập trình Pascal, NXBGD, 1996.

3 Bùi Thế Tâm, Văn Văn Tuấn Dũng, Turbo Pascal 7.0, NXB Thống kê, 1996.

Hình thức thi, kiểm tra

Thi trắc nghiệm lý thuyết + Lập trình trên máy

Trang 2

Chương 7 KIỂU SET (TẬP HỢP)

Khái niệm, biểu diễn tập hợp

Kiểu tập hợp (set) trong Pascal là một tập của những dữ liệu thuộc một kiểu vô hướng đếm

được (số nguyên, kí tự, logic, đoạn con, liệt kê)

Khai báo kiểu tập hợp

TYPE KieuTH = Set of KieuCS;

trong đó

KieuTH: từ tự đặt xđ kiểu tập hợp;

KieuCS: kiểu dữ liệu của phần tử

Khai báo biến tập hợp

Cách 1 (khai báo trực tiếp biến tập hợp)

VAR BienTH : Set of KieuCS;

Cách 2 (khai báo gián tiếp)

VAR BienTH : KieuTH;

(Tham số hình thức của CTC phải dùng

Cách 2)

Trang 3

VD 7.1 (khai báo kiểu, biến tập hợp)

TYPE {Khai bao kieu tap hop}

SoNguyen = Set of Byte;

ChuHoa = Set of 'A' 'Z';

VAR {Khai bao bien tap hop}

so : SoNguyen;

chu : ChuHoa;

kt : Set of Char;

(i) Vị trí của các phần tử trong tập hợp không có ý nghĩa ([1, 2] = [2, 1])

(ii) Dùng lệnh gán để thay đổi giá trị cho các biến tập hợp

Phép so sánh (=, <>, <=, >=): kết quả có kiểu logic (TRUE/FALSE).

A <= B có KQ là TRUE nếu A là tập con của B, trái lại KQ là FALSE

A >= B có KQ là TRUE nếu A bao hàm tập B, trái lại KQ là FALSE

Trang 4

VD 7.2 (Phân loại kí tự) Lập trình nhập vào một kí tự Kiểm tra xem kí tự đó chữ cái, chữ số

Nếu ch in ChuCai thì viết "là chữ cái"

Nếu ch in ChuSo thì viết "là chữ số"

Nếu thì viết "kí tự khác"

VD 7.3 (Bán vé máy bay, BT 6.9, tr 187) Một máy chứa tối đa 250 hành khách, với các ghế

được đánh số 1, 2, , 250 Lập trình bán vé máy bay, yêu cầu hiện lên các số ghế còn trống để khách lựa chọn

Hướng dẫn: Tạo tập V = [1 250] tương ứng với số ghế trên các vé và liệt kê chúng ra màn

hình

Dùng vòng lặp không xác định để nhập số ghế mà hành khách chọn Một số ghế đã chọn thì số đó không còn trong V và trên màn hình

Chương 8 KIỂU RECORD (BẢN GHI)

Trang 5

Kiểu bản ghi (Record) là một kiểu dữ liệu có cấu trúc gồm nhiều thành phần và được gọi là

field - trường

Mỗi trường được đặt tên và các trường có thể có các kiểu dữ liệu khác nhau

Kiểu bản ghi dùng để mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có

thể có kiểu dữ liệu khác nhau

Chẳng hạn, bảng kết quả thi TSĐH gồm thông tin về các thí sinh như: họ tên, SBD, ngày sinh, giới tính, điểm môn 1, 2, 3, mà các thông tin này thuộc các kiểu dữ liệu khác nhau

Khai báo

Khai báo kiểu bản ghi

TYPE KieuBG = RECORD

K1, Kn: kiểu dữ liệu của các trường

Khai báo biến bản ghi

Cách 1 (khai báo trực tiếp biến bản ghi)

VAR BienBG : RECORD

T1 : K1;

Tn : Kn;

END;

Trang 6

Cách 2 (khai báo gián tiếp)

VAR BienBG : KieuBG;

(Tham số hình thức của CTC phải dùng

Cách 2)

VD 8.1 (khai báo kiểu, biến bản ghi)

TYPE {Khai bao kieu ban ghi}

HSTS = RECORD

hoten : String[25];sbd : String[8];ngaysinh : String[10];

gt : Boolean;

mon1, mon2, mon3,tong : Real;

KQ : String[10]; END;

HSCB = RECORD

hoten : String[25];ngaysinh : String[10];chucvu : String[15];Luong : Real;Ghichu : String[10]; END;

VAR {Khai bao bien ban ghi}

End;

Trang 7

Readln(bg) {bg - biến Record}

(ii) Không dùng các phép toán số học, logic, so sánh (= , <>, >, >=, <, <=) đối

với các biến Record

VD 8.2 (Dùng sai đối với biến Record).

Trang 8

Readln;

end

VD 8.3 (Khoảng cách giữa 2 điểm) Lập trình nhập vào toạ độ 2 điểm A(xA, yA), B(xB, yB)

trong hệ toạ độ đềcác Tính d(A, B)

Hướng dẫn:

- Khai báo 2 biến A, B kiểu Record với 2 trường x, y (kiểu thực)

- Tính d(A, B) theo công thức:

Sqrt(Sqr(xA-xB) + Sqr(yA-yB))

VD 8.4 (Xếp loại học bổng) Lập trình nhập vào danh sách N sinh viên (N < 1000) với các thuộc

tính họ tên, ngày sinh, lớp, điểm trung bình mở rộng, học bổng Xếp loại học bổng cho các SV theo quy định hiện hành và in kết quả ra màn hình

Trang 9

 truy nhập đơn giản tới các trường (T1, , Tn) của biến bản ghi (BienBG).

VD 8.4 (tiếp) Lập trình dùng With do

Chương 9 KIỂU FILE (TỆP)

Trang 10

Khái niệm về tệp

Tệp (File, tập tin, hồ sơ) dữ liệu là một tập hợp các dữ liệu có liên quan với nhau, có cùng

kiểu được tổ chức thành dãy, và được lưu trữ ở bộ nhớ ngoài (đĩa, băng từ)

Mỗi ô là 1 phần tử của tệp

EOF

Tệp dùng để lưu trữ dữ liệu: dữ liệu trong tệp được dùng nhiều lần và tồn tại cả khi kết

thúc chương trình hay mất điện (khác với các kiểu mảng, xâu, bản ghi, )

Các loại tệp trong TP: tệp văn bản (TEXT file), tệp định kiểu (Typed file), tệp không định

kiểu (Untyped file)

Khai báo kiểu và biến tệp

Khai báo kiểu tệp

TYPE

KieuTep = FILE OF KieuPT;

trong đó KieuTep là một từ tự đặt xác định kiểu tệp, KieuPT là kiểu dữ liệu của phần tử (Real, String, Array, Record, trừ kiểu file)

Khai báo biến tệp

Cách 1: VAR BienTep : KieuTep;

Cách 2: VAR BienTep : FILE OF KieuPT;

Trang 11

VD 9.1 (khai báo kiểu, biến tệp)

TYPE {Đinh nghia cac kieu tep}

FileInteger = FILE OF Integer;

FileReal = FILE OF Real;

FHosoSV = FILE OF HosoSV;

VAR {Khai bao cac bien tep}

F1, F2: FileInteger; {tep cac so nguyen}

F3: FileReal; {tep cac so thuc}

g: FHosoSV; {tep cac ban ghi}

F4: Text; {tep van ban}

F5: File; {tep khong đinh kieu}

F6: FILE OF Char; {tep cac ki tu}

Cấu trúc và phân loại tệp

Các phần tử của ARRAY hay RECORD được truy nhập ngẫu nhiên thông qua tên biến và

chỉ số / tên trường

Một phần tử của tệp được truy nhập thông qua giá trị của một biến đệm (tampon variable) Biến đệm được dùng để đánh dấu vị trí truy nhập hay còn gọi là cửa sổ (window) của tệp

Có lệnh để di chuyển cửa sổ tệp sang vị trí khác (Reset, Seek, ).

Mỗi tệp có một dấu hiệu kết thúc tệp - EOF (End of File).

Hàm chuẩn EOF(f) trả về TRUE nếu cửa sổ ở vị trí dấu hiệu kết thúc tệp f, trái lại hàm trả về FALSE

Mỗi ô là 1 phần tử của tệp

Phân loại tệp theo bố trí các phần tử và cách truy nhập tệp: tệp truy nhập tuần tự

(sequential access), tệp truy nhập trực tiếp (direct access)

- Tệp truy nhập tuần tự: việc đọc một phần tử bắt buộc phải tuần tự đi qua các phần

tử trước đó Ghi một phần tử phải ghi vào sau phần tử cuối tệp.Cửa sổ tệp

Trang 12

- Tệp truy nhập trực tiếp: để đọc/ghi, có thể đặt cửa sổ vào phần tử bất kỳ thông qua chỉ số thứ tự của phần tử trong tệp.

- Trong Pascal chuẩn chỉ có tệp truy nhập tuần tự

Chú ý:

(1) Sự giống/khác nhau giữa mảng và tệp

- Tập các dữ liệu cùng kiểu

- Chứa tạm trong RAM

- Truy nhập ngẫu nhiên đến các phần tử qua chỉ số

- Số phần tử xác định khi khai báo

- Tập các dữ liệu cùng kiểu

- Lưu trữ trên đĩa, băng từ

- Truy nhập ngẫu nhiên hay tuần tự đến các phần tử qua chỉ số

- Số phần tử không xác định khi khai báo

(2) Biến tệp đại diện cho một tệp Việc truy xuất dữ liệu trên tệp được thể hiện qua

các lệnh với thông số là biến tệp

9.2 CÁC THAO TÁC CƠ BẢN TRÊN TỆP

Mở tệp mới để ghi dữ liệu

- Khi mới mở, tệp sẽ rỗng (chưa có phần tử nào)

- Khi mở tệp, nếu trên đĩa đã có tệp trùng tên với tệp được mở thì dữ liệu tệp cũ sẽ

mất

Trang 13

Ghi vào tệp với thủ tục WRITE

x:= 28, y:= 8; z:= 2006; {x,y,z - biến Integer}

WRITE(f, x, y, z); {Sai: WRITE(f,28,8,2006);}

VD 9.4 Lập trình nhập vào số nguyên dương N < 1000, sau đó tạo tệp SN.DAT chứa N số

nguyên ngẫu nhiên

VD 9.5 Tạo tệp chứa 100 số nguyên dương đầu tiên (sử dụng CTC).

Biến tệp dùng làm tham số trong CTC bắt buộc phải là tham biến (khai báo có VAR ở trước)

Đọc dữ liệu từ một tệp đã có

Cửa sổ tệp

Trang 14

Mở tệp để đọc

ASSIGN(BienTep, TenTep);

RESET(BienTep);

trong đó BienTep là một biến kiểu tệp; TenTep là một xâu kí tự xác định tên của tệp

- Sau lệnh RESET(BienTep), nếu tệp không rỗng thì cửa sổ tệp ở phần tử đầu tiên

- Nếu tệp chưa tồn tại (hoặc sai đường dẫn) thì sẽ có thông báo lỗi (File not found)

- Đọc tệp khi cửa sổ chưa ở cuối tệp:

IF not EOF(BienTep) THEN READ(BienTep, x);

- Để đọc tất cả các phần tử của tệp, dùng đoạn lệnh sau:

- Nên đóng tệp sau khi đọc dữ liệu: CLOSE(BienTep);

VD 9.6 Lập trình đọc dữ liệu từ tệp SN.DAT (chứa các số nguyên) Cho biết trong tệp này có

bao nhiêu phần tử (không dùng hàm FileSize)? Có bao nhiêu số nguyên tố?

Bài tập Lập trình đọc dữ liệu từ tệp SN.DAT (chứa các số nguyên), ghi các số dương vào tệp

SND.DAT, còn các số âm ghi vào tệp SNA.DAT

Trang 15

Viết một chương trình khác để đọc dữ liệu trong các tệp SND.DAT, SNA.DAT và in chúng ra màn hình để kiểm tra.

Truy nhập tệp trực tiếp - thủ tục SEEK

TURBO PASCAL cho phép truy nhập tệp trực tiếp.

VD 9.7 Lập trình đọc dữ liệu từ tệp SN.DAT (chứa các số nguyên) Hãy kiểm tra xem phần tử

thứ hai (nếu có) của tệp có là số dương không? Nếu không, hãy thay nó bằng một số nguyên dương nhập từ bàn phím

Trang 16

Một số CTC xử lý tệp của Turbo Pascal

Chẳng hạn, để đổi tên tệp SN.DAT thành SN2.DAT:

ASSIGN(f, ’SN.DAT’);

Trang 17

Kiểm tra lỗi vào/ra tệp

Vấn đề

- Dùng lệnh RESET(f) thì tệp f đã có chưa?

- Ghi vào tệp f thì trên đĩa có đủ chỗ trống không?

$I - kiểm tra lỗi vào/ra

{$I+}: Dừng chương trình và báo lỗi khi có lỗi vào/ra (ngầm định);

{$I-}: Không dừng chương trình khi có lỗi vào/ra

Hàm IOResult = 0 nếu vào/ra tệp không có lỗi

VD 9.8 Lập trình kiểm tra sự tồn tại của một tập tin tuỳ ý trên đĩa (xem Bài tập 8.1).

9.3 TỆP VĂN BẢN (Text files)

Khái niệm về tệp văn bản

Tệp văn bản là một kiểu tệp được định nghĩa trước trong TP, với từ chuẩn Text

• Các phần tử của tệp kiểu Text là các ký tự, và được tổ chức thành các dòng, mỗi dòng kết thúc bởi dấu hiệu EOLN (End Of Line: CR LF)

CR - Carriage Return (về đầu dòng, mã ASCII= 13)

LF - Line Feed (xuống dòng tiếp theo, mã ASCII= 10)

Dấu hiệu kết thúc tệp văn bản (EOF) trong TP là Ctrl+Z (mã ASCII = 26)

VD 9.9 (cấu trúc tệp văn bản) Nếu một tệp văn bản có nội dung:

Turbo Pascal

Ver 7.0

Borland Inter., Inc

thì sẽ có cấu trúc là

File of Char mỗi phần tử là một ký tự Các ký tự CR, LF, CTRL+Z được xử lý như các ký tự

bình thường

Trang 18

Hàm EOF(Var F: Text): Boolean; Hàm trả về giá trị False khi cửa sổ tệp chưa đến cuối tệp,

ngược lại, cho giá trị True (hàm dùng để kiểm tra đã đọc hết tệp văn bản chưa)

Hàm EOLN(Var F: Text): Boolean; Hàm trả về giá trị False khi cửa sổ tệp chưa đến điểm

cuối dòng hoặc cuối tệp, ngược lại, cho giá trị True Hàm này thường sử dụng để kiểm tra xem đã đọc đến cuối dòng chưa Chẳng hạn:

While not EOLN(F) Do

Khai báo biến tệp văn bản

VAR

BienTep : Text;

trong đó BienTep là một từ để xác định tên biến tệp, Text là từ chuẩn của kiểu tệp văn bản

(xem VD 9.1).

Ghi vào tệp văn bản

Có thể ghi các giá trị kiểu Integer, Real, Boolean, String vào tệp văn bản bằng lệnh WRITE hoặc WRITELN

Lệnh (2): Tương tự như (1) nhưng thêm dấu hiệu hết dòng sau các giá trị của bt1, , btN

Lệnh (3): ghi dấu hiệu hết dòng vào tệp.

Ghi chú: Các lệnh (1), (2) có thể viết có định dạng (quy cách) như viết ra màn hình.

Trang 19

Read (BienTep, b1, , bN); (1)

Readln(BienTep, b1, , bN); (2)

trong đó b1, ,bN là các biến thuộc kiểu kí tự, nguyên, thực, logic, chuỗi

Lệnh (1): đọc từ tệp ra các biến b1, , bN mà không chuyển cửa sổ tệp xuống dòng.

Lệnh (2): đọc từ tệp ra các biến b1, , bN và chuyển cửa sổ tệp xuống dòng.

Lệnh (3): chuyển cửa sổ tệp xuống dòng.

VD 9.11 Lập trình đọc tệp văn bản và in nội dung tệp đó ra màn hình.

Thủ tục thêm dòng

Append(Var F: Text);

mở tệp văn bản để ghi thêm vào cuối tệp với thủ tục Write( ) hay Writeln( )

VD 9.12 Lập trình ghi thêm một số dòng vào cuối tệp TP70.TXT.

LST: tệp máy in (trong Unit PRINTER.TPU  khai báo Uses Printer; khi dùng).

VD 9.13 Lập trình tạo bảng mã ASCII và ghi vào tệp văn bản ASCII.TXT.

VD 9.14 Lập trình tạo bảng cửu chương và ghi vào tệp văn bản B9C.TXT.

VD 9.15 Lập trình đọc dữ liệu từ tệp SN.DAT (đã có trên đĩa), ghi các số dương vào tệp văn

bản SND.TXT

Trang 20

VD 9.16 Lập trình giải phương trình bậc 2

ax2 + bx + c = 0 (a <> 0)

Đọc dữ liệu từ tệp văn bản GPT2.INP gồm 1 dòng ghi 3 số thực a, b, c

Kết quả ghi vào tệp văn bản GPT2.OUT có cấu trúc như sau:

- Dòng đầu tiên ghi số nghiệm của phương trình

- Các dòng tiếp theo, mỗi dòng ghi một giá trị nghiệm nếu có (lấy 2 chữ số thập phân)

9.4 TỆP KHÔNG ĐỊNH KIỂU (Untyped file)

Khái niệm

Tệp không định kiểu: kiểu tệp đặc biệt trong TP, được khai báo với từ khoá File.

•Khi khai báo tệp không định nghĩa kiểu, không nêu rõ bản chất của dữ liệu ghi trong tệp

Thủ tục BlockRead và BlockWrite

Thủ tục BlockRead: đọc dữ liệu từ tệp không định kiểu.

BlockRead(sf, Buf, SizeOf(Buf), NRead);

sf - biến tệp nguồn không định kiểu để đọc dữ liệu ra;

Buf - khối dữ liệu sẽ đọc từ tệp vào Buf (biến)

SizeOf(Buf) - kích thước khối dữ liệu sẽ đọc, biểu thức kiểu Word

NRead - tham số tuỳ chọn, biến kiểu Word, xác định số Record sẽ đọc ra Buf (biến bằng 0:

không còn dữ liệu để đọc)

Thủ tục BlockWrite: ghi dữ liệu vào tệp không định kiểu.

BlockWrite(sd, Buf, NWrite, Result);

sd - biến tệp đích không định kiểu để ghi dữ liệu;

Buf - khối dữ liệu sẽ ghi từ biến Buf vào tệp

NWrite - biến kiểu Word, xác định số Record sẽ ghi từ Buf vào tệp

Result - tham số tuỳ chọn, biến kiểu Word, kiểm tra việc ghi dữ liệu từ Buf vào tệp

VD 9.17 Lập trình tạo chương trình copy một tệp tuỳ ý.

9.5 ỨNG DỤNG

Bài toán quản lý

Trang 21

Rất phổ biến: ở đâu có tổ chức xã hội thì ở đó có nhu cầu quản lý.

Hai yếu tố cơ bản: đối tượng và thuộc tính quản lý.

Các công việc cơ bản:

- Tạo lập hồ sơ;

- Cập nhật hồ sơ (xem/sửa/huỷ);

- Tính toán, tìm kiếm, thống kê;

- In các biểu mẫu kết quả

Thuật toán

Sử dụng kiểu tệp các bản ghi để lưu trữ và xử lý.

Sơ đồ khối cho các công việc cơ bản (bài tập).

- Tạo lập hồ sơ

- Cập nhật hồ sơ (xem/sửa/huỷ);

- Tính toán, thống kê;

- In các biểu mẫu kết quả

Bài toán tuyển sinh

Bài toán: Giả sử hồ sơ tuyển sinh của một thí sinh gồm: họ tên, SBD, điểm môn 1, môn 2,

môn 3, tổng điểm và kết quả thi Dùng kiểu tệp các bản ghi, lập trình giải quyết các việc:

1 Nhập hồ sơ cho các thí sinh

2 In danh sách phòng thi

3 Tính toán và xét kết quả thi (điểm chuẩn là 22,0)

4 Xem kết quả thi của thí sinh theo SBD

5 In bảng kết quả thi (màn hình/máy in)

6 Thống kê kết quả thi

Trang 22

Khai báo hằng, kiểu và biến

Writeln(' 1 Nhap ho so thi sinh');

Writeln(' 2 In danh sach phong thi');

Writeln(' 3 Tinh toan va xet ket qua');

Writeln(' 4 Xem ket qua thi theo SBD');

Writeln(' 5 In bang ket qua thi');

Writeln(' 6 Thong ke ket qua thi');

Assign(f, fn); {$I-} Reset(f); {$I+};

{Neu tep chua co thi tao moi}

Trang 23

i := FileSize(f) + 1;

repeat

Writeln('Thi sinh thu ', i);

Write('Ho ten: '); Readln(ht);

if ht <> '' then

begin

ts.hoten := ht;

Write('So bao danh: '); Readln(ts.sbd);

Write('Diem mon 1, mon 2, mon 3: ');

Readln(ts.mon1, ts.mon2, ts.mon3);

Seek(f, i-1); Write(f, ts);

procedure InDSPT(var f: FHosoTS);

var ts, ts1, ts2: HosoTS; i, j, n: Word; pthi, stt: Byte;

begin

{Sap xep theo ho ten thi sinh}

Assign(f, fn); Reset(f); {fn='HOSOTS.DAT'}

n:= FileSize(f);

for i:= 0 to n - 2 do

for j:= i+1 to n - 1 do begin

Seek(f, i); Read(f,ts1); Seek(f, j); Read(f,ts2);

if ts1.hoten > ts2.hoten then begin

Seek(f, j); Write(f,ts1); Seek(f, i); Write(f,ts2);

end;

end;

{In danh sach phong thi}

ClrScr;

Seek(f, 0); {Dua con tro ve dau tep}

pthi:= 1; {So phong thi tu 1}

while not Eof(f) do begin

Writeln('DANH SACH THI SINH THI TSDH NAM ');

Writeln(' Phong thi so: ', pthi); Writeln;

{Tinh tong diem va xet ket qua}

procedure Tinhtoan(var f: FHosoTS);

var

ts: HosoTS;

begin

Assign(f, fn); Reset(f); {fn = 'HOSOTS.DAT'}

while not Eof(f) do

begin

Read(f, ts);

ts.tong:= ts.mon1 + ts.mon2 + ts.mon3;

if ts.tong >= 22 then ts.kq:= 'DO' else ts.kq:= 'TRUOT';

Seek(f, FilePos(f)-1); {Dua con tro tep ve vi tri cu}

Ngày đăng: 14/10/2013, 11:11

Xem thêm

HÌNH ẢNH LIÊN QUAN

- Dùng lệnh FOR để in DS ra màn hình.  Lệnh WITH ... DO - BAI GIANG PASCAL 2
ng lệnh FOR để in DS ra màn hình.  Lệnh WITH ... DO (Trang 8)
• Giá trị của biến con trỏ không thể đọc vào từ bàn phím hay in ra màn hình, máy in. - BAI GIANG PASCAL 2
i á trị của biến con trỏ không thể đọc vào từ bàn phím hay in ra màn hình, máy in (Trang 26)

TỪ KHÓA LIÊN QUAN

w