Giáo trình Pascal

Giáo trình Pascal

I. NGÔN NGỮ LẬP TRÌNH

 1.1. Khái niệm về ngôn ngữ lập trình & chương trình máy tính

Con người liên lạc với nhau thông qua ngôn ngữ, tạo ra các mẫu từ ngữ và âm thanh. Ngôn ngữ lập trình cũng tương tự như vậy, đó là một tập từ ngữ và ký hiệu cho phép lập trình viên hoặc người dùng có thể nói chuyện với máy tính. Cũng giống như tiếng Anh, tiếng Tây Ban Nha hoặc tiếng Trung Quốc và những ngôn ngữ tiếng nói khác, ngôn ngữ lập trình cũng có các luật được gọi là cú pháp (syntax) để đảm bảo ngôn ngữ đó được vận dụng một cách chính xác.

Ðó là một tập các chỉ thị (instruction) được sắp xếp theo một trật tự định trước nhằm hướng dẫn máy tính thực hiện các thao tác, hành động cần thiết để đáp ứng một mục tiêu đã định trước của con người như truy xuất dữ liệu, tìm kiếm, giải bài toán, .Các chỉ thị này có thể được viết bằng nhiều ngôn ngữ lập trình khác nhau.

 

doc 289 trang Người đăng vultt Lượt xem 1239Lượt tải 0 Download
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Pascal", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
I. NGÔN NGỮ LẬP TRÌNH
1.1. Khái niệm về ngôn ngữ lập trình & chương trình máy tính
Con người liên lạc với nhau thông qua ngôn ngữ, tạo ra các mẫu từ ngữ và âm thanh. Ngôn ngữ lập trình cũng tương tự như vậy, đó là một tập từ ngữ và ký hiệu cho phép lập trình viên hoặc người dùng có thể nói chuyện với máy tính. Cũng giống như tiếng Anh, tiếng Tây Ban Nha hoặc tiếng Trung Quốc và những ngôn ngữ tiếng nói khác, ngôn ngữ lập trình cũng có các luật được gọi là cú pháp (syntax) để đảm bảo ngôn ngữ đó được vận dụng một cách chính xác. 
Ðó là một tập các chỉ thị (instruction) được sắp xếp theo một trật tự định trước nhằm hướng dẫn máy tính thực hiện các thao tác, hành động cần thiết để đáp ứng một mục tiêu đã định trước của con người như truy xuất dữ liệu, tìm kiếm, giải bài toán, ...Các chỉ thị này có thể được viết bằng nhiều ngôn ngữ lập trình khác nhau. 
1.2. Các loại ngôn ngữ lập trình thông dụng
    Có hàng trăm loại ngôn ngữ lập trình khác nhau, mỗi loại ngôn ngữ đều có cú pháp riêng của nó. Một số ngôn ngữ thì được phát triển để dùng trên các loại máy tính chuyên biệt, một số ngôn ngữ khác thì - do sự thành công của nó - đã trở thành chuẩn và được áp dụng trên đa số các máy tính. Ngôn ngữ lập trình có thể được phân chia thành 3 loại chính : ngôn ngữ máy, hợp ngữ và ngôn ngữ cấp cao. 
    Ngôn ngữ máy 
Ngôn ngữ máy (mã máy) là ngôn ngữ nền tảng của bộ vi xử lý. Các chương trình được viết trong tất cả các loại ngôn ngữ khác cuối cùng đều được chuyển thành ngôn ngữ máy trước khi chương trình đó được thi hành. Vì tập lệnh của ngôn ngữ máy phụ thuộc vào loại vi xử lý nên ngôn ngữ máy sẽ khác nhau trên những máy tính có sử dụng bộ vi xử lý khác nhau. Lợi điểm của viết chương trình bằng ngôn ngữ máy là lập trình viên có thể điều khiển máy tính trực tiếp và đạt được chính xác điều mình muốn làm. Do đó, các chương trình ngôn ngữ máy được viết tốt là những chương trình rất hiệu quả (tốc độ thi hành nhanh, kích thước nhỏ). Bất lợi của chương trình ngôn ngữ máy là thông thường sẽ mất rất nhiều thời gian để viết, rất khó đọc, theo dõi để tìm lỗi. Thêm vào đó, bởi vì chương trình được viết bằng tập lệnh phụ thuộc vào bộ vi xử lý nên chương trình chỉ chạy được trên những máy tính có cùng bộ vi xử lý mà thôi. Ngôn ngữ máy cũng được gọi là ngôn ngữ cấp thấp (low-level language)
    Hợp ngữ
Hợp ngữ được phát triển nhằm giúp các lập trình viên dễ nhớ các chỉ thị của chương trình hơn. Hợp ngữ tương tự như ngôn ngữ máy nhưng lại sử dụng các ký hiệu gợi nhớ (mnemonics hay mã lệnh hình thức - symbolic operation code) để biểu diễn cho các mã lệnh của máy. Một đặc điểm khác nữa là hợp ngữ thông thường cho phép định địa chỉ hình thức (symbolic addressing), nghĩa là một vị trí bộ nhớ trong máy tính có thể được tham chiếu tới thông qua một cái tên hoặc ký hiệu, chẳng hạn như TOTAL thay vì phải sử dụng địa chỉ thực sự của nó (bằng con số nhị phân) trong ngôn ngữ máy. Các chương trình hợp ngữ còn bao gồm các chỉ thị vĩ mô (macro instruction) có thể tạo ra nhiều lệnh mã máy. Các chương trình hợp ngữ được chuyển sang mã máy thông qua một chương trình đặc biệt gọi là trình hợp dịch (assembler). Mặc dù hợp ngữ tương đối dễ dùng hơn mã máy nhưng hợp ngữ vẫn được xem là ngôn ngữ cấp thấp bởi vì nó vẫn còn rất gần với từng thiết kế của máy tính. 
    Ngôn ngữ cấp cao
Cuộc cách mạng của ngôn ngữ máy tính bắt đầu với sự phát triển của ngôn ngữ cấp cao vào cuối thập kỷ 1950 và 1960. Ngôn ngữ cấp cao gần gũi hơn với ý niệm ngôn ngữ mà hầu hết mọi người đều biết, nó bao gồm các danh từ, động từ, ký hiệu toán học, liên hệ và các thao tác luận lý. Các yếu tố này có thể được phối hợp, liên kết với nhau tạo thành một hình thức của câu. Các "câu" này được gọi là các mệnh đề của chương trình (program statement). Chính vì những đặc điểm này, các lập trình viên dễ dàng đọc  và dễ học ngôn ngữ cấp cao hơn so với ngôn ngữ máy hoặc hợp ngữ. Một lợi điểm quan trọng là ngôn ngữ cấp cao thông thường không phụ thuộc vào máy tính, nghĩa là các chương trình viết bằng ngôn ngữ cấp cao có thể chạy trên các loại máy tính khác nhau (sử dụng các bộ vi xử lý khác nhau). 
    Các ngôn ngữ lập trình thông dụng
Mặc dù đã có hàng trăm ngôn ngữ lập trình được sinh ra, chỉ có một số ít là được sử dụng rộng rãi và được xem là một chuẩn công nghiệp. Các ngôn ngữ này đều có thể được sử dụng trên nhiều loại máy tính khác nhau. 
BASIC, viết tắt của cụm từ Beginner's All-Purpose Symbolic Instruction Code, được phát triển bởi John Kermeny và Thomas Kurtz vào năm 1964 tại trường đại học Dartmouth. Ban đầu, họ thiết kế BASIC là một ngôn ngữ lập trình đơn giản, có tính tương tác để các sinh viên học tập và sử dụng. BASIC đã trở thành một trong những ngôn ngữ lập trình thông dụng nhất được sử dụng trên các máy vi tính và máy tính mini ngày nay. 
COBOL, viết tắt của COmmon Business Oriented Language, được giới thiệu vào năm 1960. Ðược hỗ trợ bởi bộ quốc phòng Hoa Kỳ, COBOL được phát triển bởi một hội đồng bao gồm các đại diện từ phía chính phủ và công nghiệp. Grace M.Hopper là người chính yếu trong hội đồng và được xem là nhà phát triển chính của ngôn ngữ COBOL. COBOL đã từng là một trong những ngôn ngữ được dùng rộng rãi nhất cho các ứng dụng thương mại. Bằng cách dùng một hình thức tựa tiếng Anh, các câu lệnh của COBOL được sắp xếp vào trong các câu và nhóm lại thành từng đoạn (paragraph). Hình thức tiếng Anh giúp COBOL dễ viết và đọc nhưng cũng làm cho chương trình nguồn dài hơn. COBOL rất tốt trong việc xử lý các tập tin lớn và thực hiện nhưng phép tính thương mại tương đối đơn giản. 
C, được phát triển bởi tác giả Dennis Ritchie tại phòng thí nghiệm Bell vào năm 1972. Ban đầu, C được thiết kế như là một ngôn ngữ để viết các phần mềm hệ thống, nhưng ngày nay, nó được xem là một ngôn ngữ công dụng chung. C là một ngôn ngữ lập trình mạnh mẽ đòi hỏi kỹ năng lập trình chuyên nghiệp mới có thể sử dụng hiệu quả được. Nhu cầu dùng C để phát triển nhiều loại phần mềm kể cả các ứng thương mại đang gia tăng. Các chương trình C thường được dùng với hệ điều hành Unix (phần lớn hệ điều hành Unix được viết bằng C). 
FORTRAN, viết tắt của FORmula TRANslator được phát triển bởi một nhóm lập trình viên của công ty IBM dưới sự lãnh đạo của John Backus. Công bố vào năm 1957, FORTRAN được thiết kế như là một ngôn ngữ lập trình dành cho các nhà khoa học, kỹ sư và toán học. FORTRAN được xem như là ngôn ngữ lập trình cấp cao đầu tiên và được chú ý bởi khả năng của nó cho phép dễ dàng diễn đạt và tính toán các phương trình toán học. 
PASCAL, ngôn ngữ sẽ được sử dụng để giảng dạy trong giáo trình này, được phát triển vào năm 1968 bởi Niklaus Wirth, một nhà khoa học máy tính tại Zurich, Thụy Sĩ. Pascal được phát triển để giảng dạy lập trình. Tên Pascal không phải là từ viết tắt, đó là tên của một nhà toán học, Blaise Pascal (1623 - 1662) người đầu tiên tạo ra máy tính. Pascal, dùng trong cả máy tính cá nhân và máy tính lớn là một trong những ngôn ngữ lập trình đầu tiên được phát triển trong đó khuyến khích phương pháp lập trình cấu trúc.  
    Các loại ngôn ngữ lập trình khác
ALGOL (ALGOrithmetic Language). Ngôn ngữ lập trình cấu trúc dùng cho các ứng dụng khoa học và toán học. 
APL(A Programming Language). Một ngôn ngữ mạnh mẽ, dễ dùng, rất tốt trong việc xử lý dữ liệu được lưu dưới dạng bảng (ma trận)
FORTH, tương tự như C, tạo ra các mã chương trình nhanh và hiệu quả. Ban đầu được phát triển để điều khiển kính viễn vọng không gian. 
LISP, LISt Processing, ngôn ngữ trí tuệ nhân tạo thông dụng. 
LOGO, chủ yếu được biết đến như là một công cụ để dạy khả năng giải quyết vấn đề. 
MODULA-3, tương tự như PASCAL. Dùng chủ yếu để phát triển các phần mềm hệ thống. 
PILOT, Programmed Inquiry Learning Or Teaching, dùng bởi các nhà giáo dục để viết các chương trình hướng dẫn CAD. 
PL/I, Programming Language/ One. Ngôn ngữ thương mại và khoa học phối hợp nhiều chức năng của FORTRAN và COBOL. 
PROLOG, PROgramming LOgic. Dùng trong trí tuệ nhân tạo. 
RPG, Report Program Generator. Dùng các mẫu đặc biệt để giúp người dùng xác định dữ liệu vào, dữ liệu ra và các yêu cầu tính toán của một chương trình. 
ADA, lấy tên của Augusta Ada Bryon, người được xem là đã viết chương trình đầu tiên, được thiết kế để phục vụ cho việc viết, bảo trì các chương trình lớn trong một khoảng thời gian dài. 
1.3. Trình thông dịch và biên dịch
    Mọi chương trình được viết bằng các ngôn ngữ không phải là ngôn ngữ máy cuối cùng đều phải được chuyển đổi sang ngôn ngữ máy trước khi được thi hành. Chương trình ngôn ngữ cấp cao được dịch sang ngôn ngữ máy bằng một trong hai cách : bằng trình biên dịch (compiler) hoặc trình thông dịch (interpreter). 
    Trình biên dịch : 
Sẽ chuyển đổi toàn bộ chương trình sang mã máy, rồi chứa kết quả vào dĩa để có thể thi hành về sau. Chương trình ngôn ngữ cấp cao được chuyển đổi được gọi là chương trình nguồn (source program) và chương trình ngôn ngữ máy được tạo ra được gọi là chương trình đối tượng (object program) hoặc mã đối tượng (object code). Khi người dùng muốn chạy chương trình, chương trình đối tượng sẽ được nạp lên bộ nhớ chính của CPU và các chỉ thị của chương trình sẽ được thi hành. Khi được hướng dẫn bởi các chỉ thị của chương trình, CPU sẽ truy xuất dữ liệu và tạo ra các kết quả. Trình biên dịch sẽ kiểm tra cú pháp chương trình, thực hiện các phép kiểm tra logic và đảm bảo các dữ liệu sắp được sử dụng trong các phép so sánh, tính toán đã được định nghĩa một cách hợp lý ở một nơi nào đó trong chương trình. Một chức năng quan trọng của trình biên dịch là nó sẽ tạo ra một danh sách lỗi của tất cả mệnh đề trong chương trình vi phạm cú pháp của ngôn ngữ. Danh sách này giúp lập trình viên dễ dàng sửa đổi chương trình. 
Do ngôn ngữ máy phụ thuộc vào bộ vi xử lý nên các máy tính khác nhau sẽ cần có các trình biên dịch khác nhau đối với cùng một ngôn ngữ cấp cao. Ví dụ, một máy mainframe, máy mini và máy tính cá nhân cần có các trình biên dịch khác nhau để biên dịch cùng một chương trình nguồn sang mã máy của từng loại máy này. 
    Trình thông dịch : 
Thay vì chuyển đổi toàn bộ chương trình nguồn như trình biên dịch, trình thông dịch chỉ chuyển đổi một mệnh đề của chương trình và thực hiện đoạn mã kết quả ngay, sau đó nó tiếp tục chuyển đổi mệnh đề thứ 2 rồi thi hành đoạn mã kết quả thứ 2 và cứ thế. Khi sử dụng trình thông dịch, mỗi lần chạy chương trình là mỗi lần chương trình nguồn được thông dịch sang ngôn ngữ máy. Không có chương trình đối tượng nào được tạo ra. 
Các trình thông dịch thường được dùng trên các máy tính cá nhân không có đủ bộ nhớ hoặc sức mạnh tính toán cần thiết để dùng trình biên dịch. Lợi điểm của trình thông dịch là lập trình viên vẫn có th ... ext
CR LF
12345
CR LF
Het
Eof
        Các thủ tục Assign, Rewrite, Reset, Write, Read, Close, Erase, Rename đều dùng được cho tập tin văn bản. Ngoài ra còn có thêm thủ tục Append(biếntậptin) dùng để mở tập tin văn bản và cho phép ghi thêm dữ liệu vào cuối tập tin.
        Ðối với tập tin văn bản, không thể đồng thời vừa ghi vừa đọc dữ liệu như tập tin có định kiểu.
        Ðể ghi dữ liệu, trước tiên phải khởi tạo tập tin bằng lệnh Rewrite hay mở tập tin và đưa trỏ về cuối tệp bằng lệnh Append. Sau đó ghi dữ liệu vào tập tin bằng thủ tục Write hay Writeln.
        Ðể đọc dữ liệu một tập tin đã có, trước tiên ta phải mở tập tin bằng lệnh Reset. Sau đó đọc dữ liệu bằng thủ tục Read hay Readln.
        Nếu mở tập tin bằng Rewrite hoặc Append thì không thể đọc được bằng Read và Readln. Nếu mở tập tin bằng Reset thì không thể ghi được bằng Write hay Writeln.
  Ghi dữ liệu vào tập tin văn bản :
         Thủ tục WRITE( biếntậptin, bt1, bt2, ..., btN) : cho phép tuần tự ghi các gía trị của các biểu thức bt1, bt2, .. btN vào tập tin văn bản. Các biểu thức bt1, bt2, .. btN phải thuộc kiểu đơn giản chuẩn ( nguyên, thực, ký tự, lôgic) hay kiểu chuỗi, và chúng không cần phải có kiểu giống nhau. Ví dụ :
        Write(F, 3, 10:4, ‘a’:2, ‘Text’, 4.5:6:2);
sẽ ghi vào tập tin thành dãy như sau ( Dấu ~ hiểu là một ký tự trắng):
        3~~10~aText~~4.50
        Chương trình dưới đây sẽ tạo tập tin văn bản T1.TXT :
Program VIDU;
Var
        F: Text;
        A : Integer; 
        B : Real;
Begin
        A:=100;
        B:=1234.5;
        Assign(F, ’T1.TXT’);
        Rewrite(F);
        Write(F, ‘Ket qua=’ :10, A:5, B:7:2);
        Close(F);
End. 
        Nội dung của tập tin T1.TXT là :
            ~~Ket qua=~~100~123.45
        Như vậy, cách ghi dữ liệu vào tập tin văn bản hoàn toàn giống như khi in dữ liệu lên màn hình. 
         Thủ tục WRITELN cũng có công dụng như WRITE, nhưng ghi xong dữ liệu thì đưa con trỏ tập tin xuống dòng dưới. Ðặc biệt, lệnh Writeln(F); không ghi gì cả, chỉ đưa con trỏ tập tin xuống dòng.
        Nội dung của các tập tin văn bản tạo bằng Pascal hoàn toàn có thể xem được bằng lệnh Type của MSDOS, bằng Norton hay bằng chính Turbo Pascal, ...
  Ðọc dữ liệu của tập tin văn bản : 
         Thủ tục READ( biếntậptin, biến1, biến2, ..., biếnN) đọc tuần tự các gía trị từ tập tin và gán cho các biến. Các biến1, biến2, ..., biếnN phải có kiểu dữ liệu phù hợp vơí dữ liệu cần đọc tại vị trí tương ứng trong tập tin.
        Ví dụ: Nếu tập tin T1.TXT có nội dung như sau:
            ~~Ket qua=~~100~123.45
thì để đọc lại các dữ liệu này, ta phải khai báo:
        Var
            St :String[10];
            i: Integer ; Z : Real;
Và dùng các lệnh:
            Reset(F); 
            Read(F, St, i, Z);
Gía trị của St, i, Z sẽ là: St=’~~Ket qua=’, i=100, Z=123.45.
        Nếu khai báo St có kiểu String[9] thì sẽ bị lỗi vì sau khi đọc xong 9 ký tự đầu, máy sẽ đọc tiếp gía trị =~~100 cho biến nguyên i, nhưng vì gía trị này bắt đầu là dấu = nên không đổi ra số nguyên được.
         Thủ tục READLN(biếntậptin, biến1, biến2, ..., biếnN ) đọc dữ liệu cho các biế? xong sẽ đưa trỏ tập tin xuống đầu dòng dưới.
        Ðặc biệt, lệnh READLN( biếntậptin); không đọc gì cả, chỉ đưa con trỏ tập tin xuống dòng.
Chú ý
Hàm Eof(F) cũng dùng được cho tập tin văn bản, ngoài ra còn có hàm EOLN(F) cho kết qủa là True hoặc False tùy theo con trỏ tập tin có đang ở cuối dòng hay không. Khi Eof(F)=True thì Eoln(F) cũng có gía trị là True.
Thủ tục Seek và các hàm FileSize, FilePos không dùng cho tập tin văn bản.
  Các tập tin văn bản ngầm định:
        Trong Pascal có hai biến tập tin văn bản đã được khai báo sẵn là Input và Output , tức là máy đã ngầm khai báo :
        Var
            Input , Output : Text ;
        Input thường là bàn phím còn Output thường là màn hình.
        Lệnh Readln(Input, x); được viết tắt thành Readln( x) ;
        Lệnh Writeln(Output, x); được viết tắt thành Writeln(x); 
        Máy in cũng là một tập tin văn bản, được ngầm khai báo với tên là LST. Ðể in các biểu thức bt1, bt2, ..., btN ra máy in, ta phải khai báo sử dụng thư viện chuẩn PRINTER, và dùng lệnh :
            Write(LST, bt1, bt2, ... , btN); 
    So sánh tập tin văn bản với tập tin định kiểu:
        Các tập tin có định kiểu cho phép vừa đọc vừa ghi và truy nhập trực tiếp vào từng phần tử gần giống như thao tác với mảng. 
        Các tập tin văn bản không cho phép đồng thời đọc, ghi và chỉ có thể đọc hoặc ghi tuần tự, nhưng cho phép ta có thể xem, sửa trực tiếp một cách dễ dàng bằng các hệ soạn thảo văn bản đơn giản, như NC hay chính Turbo Pascal.
Ví dụ 15.5: 
        Cho tập tin văn bản tên là T2.TXT và có nội dung là:
            dong=6
            cot =7
            0 8 8 -2 6 11 1
           8 0 2 0 7 0 2
           8 2 0 11 12 9 3
           -2 0 11 0 -7 9 4
           6 7 12 -7 0 6 5
           11 0 9 9 6 0 6
        Hãy đọc tập tin này đưa vào một ma trận A và in ma trận A lên màn hình. Số dòng và số cột của ma trận A được ghi ở hai dòng đầu tiên trong tập tin T2.TXT.
Program VIDU15_5;
{ vi du ve File Van ban }
uses crt;
Type
        MANG = array[1..20,1..20] of integer ;
Var
        A : MANG;
        N, M : integer;
        F : Text;
Procedure Nhap;
    Var
            i,j : Byte;
            st: string[5];
    Begin
            Assign(F, 'T2.TXT');
            Reset(F);
            Readln(F, St, N);
            Readln(F, St, M);
            For i:=1 to N do
                begin
                    For j:=1 to M do Read(F, A[i,j]);
                    Readln(F);
                end;
            Close(F);
        End;
Procedure InMatran;
    Var
            i, j : Integer;
    Begin
            For i:=1 to N do
                begin
                        for j:=1 to M do write( A[i,j]:4);
                       writeln;
                end;
      End;
    BEGIN
        Clrscr;
        Nhap;
        InMatran;
        Readln;
    END.
15.3. CÂU HỎI TRẮC NGHIỆM
Câu 1: Khai báo nào đúng : 
a) Type T = Set of Real; 
b) Type T = Set of Integer;
c) Type T = Set of String ;
d) Type T = Set of 0..9 ;
Câu 2: Khai báo nào sai : 
a) Var T : Set of Char ; 
b) Var T : Set of -10..300 ;
c) Var T : Set of ‘A’..’z’ ; 
d) Var T : Set of Boolean ;
Câu 3: Tổng của [1..5] + [3..10, 20] là tập hợp nào: 
a) [1..10, 20] 
b) [1..5] 
c) [1..20]
d) [3..5] 
Câu 4: Hiệu của hai tập hợp [10..15]-[4..12] là tập hợp nào: 
a) [4..15]
b) [13..15] 
c) [4..10] 
d) [10..12] 
Câu 5: Cho khai báo: 
Var T : Set of Char ;
ch : Char ;
Sau khi thực hiện các lệnh:
T:=[‘A’.. ‘D’] * [‘A’.. ‘Z’];
For ch:=’A’ to ‘F’ do T:=T+[ch] ; 
Tập T sẽ là:
a) [‘A’..’D’] 
b) [‘A’..’Z’] 
c) [‘A’..’F’] 
d) [‘C’..’F’] 
Câu 6: Cho khai báo : 
Var F: File of Integer ;
i , j , k :Integer ;
Chọn câu có các lệnh đều đúng :
a) Assign( F, T1.DAT ); Rewrite(F); Write(F, i, j, k ); 
b) Assign(F, ‘T1.DAT’ ); Rewrite(F); Write(F, i+ j+ k );
c) Assign(F); Rewrite( F, ‘T1.DAT’ ); Write(F, i, j, k ); 
d) Assign(F, ‘T1.DAT’ ); Rewrite(F); Write(F, i, j, k );
Câu 7: Khi chạy chương trình : 
Var F : File of Char; 
ch : Char;
Begin
Assign(F, ‘tt.txt’); Rewrite(F);
For ch:=’A’ to ‘F’ do Write(F, ch); 
Seek(F, 4); Read(F, ch);
Write(ch); Close(F);
End.
Kết quả in ra là:
a) E 
b) F 
c) C
d) D 
Câu 8: Cho khai báo: 
Var F : TEXT ; 
Sau khi thực hiện các lệnh:
Assign(F, ‘tt1.txt’); Rewrite(F);
Write(F, 123+456); Close(F);
Nội dung của tập tin tt1.txt sẽ là:
a) 123+456 
b) 123456 
c) 579 
d) 123 456 
Câu 9: Cho F1 là biến tập tin có định kiểu và F2 là biến tập tin văn bản. Lệnh nào không dùng được : 
a) Seek( F1, 0); 
b) Seek(F2, 0);
c) Write( Filesize(F1) ) ; 
d) Write( FilePos(F1) ) ;
Câu 10: Cho TT2.TXT là tập tin văn bản có nội dung là : 
Turbo Pascal 6.0 
Khi chạy chương trình :
Var F : Text;
St : String[20];
Begin
Assign(F, ‘tt2.txt’); Reset(F);
Read(F, St); Write(St);
Close(F);
End.
sẽ in ra chữ :
a) Turbo Pascal 6.0 
b) Turbo 
c) Pascal 6.0 
d) Turbo Pascal
15.4. BÀI TẬP
Câu 1) Nhập một chuỗi St, xây dựng ba tập hợp:
S1 là tập các chữ hoa có trong St
S2 là tập các chữ thường có trong St
S3 là tập các chữ số có trong St
    In các gía trị của mỗi tập S1, S2, S3 trên một dòng.
Câu 2) Nhập vào một mảng A1, A2, ..., A10 các số nguyên dương < 10. Hãy in các gía trị của mảng này theo thứ tự tăng dần sao cho các phần tử trùng nhau chỉ được in một lần. Ví dụ : cho mảng 1, 6, 4,1, 9, 6, 6, 0, 3, 9 , in ra: 0,1, 3, 4, 6, 9 ( Hướng dẫn : xây dựng tập hợp gồm các phần tử của mảng A )
Câu 3) Viết chương trình thực hiện trò chơi sau: 
Người chơi nhập một số k trong phạm vi từ 1 đến 9
Tạo một tập S gồm ba số ngẫu nhiên trong phạm vi từ 1 đến 9
Kiểm tra xem k có thuộc tập S không?. Nếu thuộc thì người chơi thắng, ngược lại là thua. In k và tập S lên màn hình.
Hướng dẫn: Trong thư viện CRT có hàm Random(n) trả về một số ngẫu nhiên j thuộc phạm vi: 0 ? j < n .
Câu 4) Mỗi phân số được mô tả như sau :
Type Phanso = Record
               tu, mau : Integer;
end; 
Nhập hai phân số từ bàn phím, tạo một tập tin chứa hai phân số đó và hai phân số là tổng, hiệu của chúng. Ðọc bốn phân số đó từ tập tin và in lên màn hình.
Câu 5) Nhập số nguyên dương N (0<N< 20 ) và một dãy N số nguyên : A1, A2, ..., AN . Ghi dãy số đó vào tập tin DL.DAT. Ðếm trong tập tin DL.DAT có bao nhiêu số chẵn. Ðọc các số lẻ từ tập DL.DAT và in lên màn hình. 
Câu 6) Ðể quản lý Họ tên , các điểm Toán, Lý và Ðiểm trung bình của sinh viên, ta mô tả kiểu Ksvien như sau :
Type    
Ksvien= Record
Hoten: String[20];
Toan, Ly, Dtb : Real;
end;
Hãy nhập một danh sách sinh viên gồm Họ tên, điểm Toán và điểm Lý, rồi tính Ðiểm trung bình:      Dtb:=(Toán+Lý)/2, lưu vào tập tin QLY.DAT. Quá trình nhập kết thúc khi nhập Họ tên là rỗng ( tức không nhập gì cả, cứ Enter).
Ðọc danh sách sinh viên từ tập tin QLY.DAT và in danh sách lên màn hình.
Chép danh sách sinh viên vào tập QLY.IDX sao cho các phần tử của QLY.IDX được sắp xếp theo trật tự giảm của điểm trung bình.
Ðọc dữ liệu của tập tin QLY.IDX và ghi vào tập tin văn bản tên là QLY.TXT theo dạng :
STT
Họ và tên
Ðiểm trung bình
1
Nguyen Van Tuan
8.5
2
Pham Thi Mai 
8.0
L 
L 
L 
Câu 7) Dùng hệ soạn thảo của Turbo Pascal để tạo một tập tin văn bản có tên là MT.DAT chứa hai ma trận vuông cấp 3 là A và B có các phần tử là các số nguyên. Lấy dữ liệu từ tập tin MT.DAT để tính ma trận C=A+B. Ghi ma trận C vào cuối tập tin MT.DAT. Ðọc các ma trận A, B, C từ tập tin MT.DAT và in lên màn hình.

Tài liệu đính kèm:

  • docGiao_trinh_Pascal.doc