Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 135 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
135
Dung lượng
860,59 KB
Nội dung
TRƯỜNG ĐẠI HỌC ĐÀ LẠT F 7 G GIÁO TRÌNH KỸ THUẬT LẬP TRÌNH PASCAL NGUYỄN DANH HƯNG 2001 Kỹ thuật lập trình Pascal - 1 - MỤC LỤC MỤC LỤC 1 - LỜI NÓI ĐẦU 4 - Chương I LÀM QUEN VỚI LẬP TRÌNH 5 - I-1 CÁC KHÁI NIỆM MỞ ĐẦU: 5 - I-2 BIẾN VÀ NHẬP DỮ LIỆU 7 - I-3 XUẤT DỮ LIỆU 9 - I.4 LỆNH GÁN VÀ BIỂU THỨC - 10 - I-5 CÁC HÀM CHUẨN 12 - I-6 CHỐNG LỖI VÀ SỬA LỖI 13 - Bài đọc thêm Vẻ đẹp của giải thuật 14 - BÀI TẬP CHƯƠNG I 16 - Chương II THỦ TỤC và HÀM 18 - II-1 LẬP TRÌNH VỚI THỦ TỤC 18 - II.2 BIẾN TOÀN CỤC VÀ BIẾN ĐỊA PHƯƠNG 19 - II.3 THỦ TỤC CÓ THAM SỐ - 21 - II.4 HÀM - 22 - II.5 PHƯƠNG PHÁP LẬP TRÌNH TỪ TRÊN XUỐNG 23 - II.6 CHỐNG LỖI VÀ SỬA LỖI 24 - BÀI TẬP CHƯƠNG II 26 - Chương III CASE VÀ FOR 29 - III-1 LẬP TRÌNH VỚI CẤU TRÚC CASE 29 - Khái niệm hành động của chương trình Pascal 30 - III-2 LẬP TRÌNH VỚI CẤU TRÚC FOR 31 - III-3 CHỐNG LỖI VÀ SỬA LỖI: 35 - BÀI TẬP CHƯƠNG III 39 - Chương IV IF WHILE REPEAT…UNTIL 42 - IV-1 BIỂU THỨC BOOLEAN 42 - IV-2 LẬP TRÌNH VỚI CẤU TRÚC IF 42 - IV-3 CẤU TRÚC VÒNG LẶP KHÔNG XÁC ĐỊNH 46 - IV-4 ĐỆ QUY 53 - IV-5 SỬA LỖI VÀ CHỐNG LỖI 55 - BÀI TẬP CHƯƠNG IV 58 - Chương V PHƯƠNG PHÁP LẬP TRÌNH - 64 - V-1 PHÂN TÍCH VÀ ĐẶC TẢ VẤN ĐỀ: 64 - V-2.CHỌN LỰA CẤU TRÚC DỮ LIỆU VÀ PHÁT TRIỂN THUẬT TOÁN: 65 - V-3.MÃ HOÁ CHƯƠNG TRÌNH: 66 - Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 2 - V-4 THỰC HIỆN VÀ THỬ CHƯƠNG TRÌNH 68 - V-5 BẢO TRÌ CHƯƠNG TRÌNH: - 68 - BÀI TẬP CHƯƠNG V - 69 - Chương VI MỞ RỘNG KIỂU DỮ LIỆU THỨ TỰï - 70 - VI –1 KIỂU THỨ TỰ DO NGƯỜI DÙNG ĐỊNH NGHĨA 70 - VI-2 KIỂU MIỀN CON 72 - BÀI TẬP CHƯƠNG VI 74 - Chương VII MẢNG và CHUỖI 75 - VII-1 MẢNG: 75 - Đònh nghóa và khai báo mảng 75 - Truy xuất mảng 75 - Mảng và vòng lặp for 76 - VII-2 SẮP XẾP - 78 - VII-3 TÌM KIẾM 82 - Tìm tuần tự - 82 - Tìm kiếm nhò phân 83 - KHI NÀO NÊN DÙNG MẢNG? - 85 - VII-4 CHUỖI - 86 - VII-5 SỬA LỖI VÀ CHỐNG LỖI: - 91 - Từ khoá Pascal mới 93 - Khái niệm mới 93 - BÀI TẬP CHƯƠNG VII 94 - Chương VIII KIỂU RECORD 97 - VIII-1 RECORD CÓ CẤU TRÚC CỐ ĐỊNH: 97 - VIII-2 RECORD CÓ CẤU TRÚC THAY ĐỔI: 99 - Từ khoá Pascal mới 100 - Khái niệm mới - 100 - BÀI TẬP CHƯƠNG VIII 101 - Chương IX KIỂU FILE - 102 - IX-1. FILE VĂN BẢN - 102 - IX-2 FILE ĐỊNH KIỂU: 105 - IX-3 TRUY CẬP NGẪU NHIÊN TRÊN FILE ĐỊNH KIỂU - 107 - IX-4 TRỘN FILE - 110 - IX-5 CHỐNG LỖI VÀ SỬA LỖI: - 112 - Từ khoá Pascal mới 112 - Khái niệm mới - 113 - BÀI TẬP CHƯƠNG IX - 114 - Chương X KIỂU TẬP HP (SET) 115 - Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 3 - X-1 KIỂU TẬP HP: - 115 - Ví dụ - 115 - X-2 LẬP TRÌNH VỚI KIỂU TẬP HP: - 116 - Từ khoáù Pascal mới - 119 - Khái niệm mới - 119 - BÀI TẬP CHƯƠNG X - 120 - PHỤ LỤC A - 121 - CÁC THÔNG BÁO LỖI CỦA TURBO PASCAL KHI BIÊN DỊCH 121 - PHỤ LỤC B - 131 - CÁC THÔNG BÁO LỖI KHI CHẠY CHƯƠNG TRÌNH - 131 - TÀI LIỆU THAM KHẢO - 133 - Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 4 - LỜI NÓI ĐẦU Ngày nay cùng với sự phát triển mạnh mẽ của Tin học, lập trình trở nên một kỹ năng cần thiết cho mọi cán bộ khoa học kỹ thuật. Giáo trình này nhằm giúp cho sinh viên Vật lý tìm hiểu về kỹ thuật lập trình. Ngôn ngữ được chọn là Pascal chuẩn, có bổ sung một vài phần mở rộng của TurboPascal. Mặc dù ngày nay có nhiều ngôn ngữ hiện đại hơn, Pascal vẫn là ngôn ngữõ thích hợp nhất cho một giáo trình căn bản về lập trình. Các kỹ thuật lập trình chủ yếu được trình bày tương đối đầy đủ, ngoại trừ các kỹ thuật dùng con trỏ. Các ví dụ được chọn lọc ở nhiều mức độ khác nhau, không chỉ dừng ở mức độ minh hoạ ngôn ngữ, mà còn để cho sinh viên làm quen với những thuật toán thông dụng có độ phức tạp vừa phải. Ngoài ra qua thực tế giảng dạy, chúng tôi nhận thấy khi lập trình sinh viên phạm rất nhiều lỗi cơ bản. Do đó trong giáo trình này một phần thích đáng được dành cho các kỹ thuật sửa lỗi và chống lỗi. Hy vọng là phần này sẽ giúp ích nhiều cho các bạn sinh viên. Giáo trình nay được in lần đầu vào năm 2001. Trong lần tái bản này, chúng tôi sửa chữa những điểm sai sót và bổ sung môt vài điểm mới. Đặc biệt là chúng tôi đưa vào một số lượng khá lớn các bài tập. Những bài tập này được chọn lọc để sinh viên áp dụng kỹ thuật lập trình trong việc giải quyết các bài toán khoa học kỹ thuật. Chúng tôi chân thành cảm ơn sự góp ý của các đồng nghiệp cũng như các bạn sinh viên để làm cho giáo trình ngày càng hoàn thiện. Đà lạt tháng 5-2004 Nguyễn Danh Hưng Huỳnh Thò Thu Thuỷ Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 5 - CHƯƠNG I LÀM QUEN VỚI LẬP TRÌNH I-1 CÁC KHÁI NIỆM MỞ ĐẦU: Chúng ta sẽ dùng một vài chương trình rất đơn giản để minh hoạ các khái niệm của Pascal. program Dautien; { Đây là chương trình đầu tiên} begin writeln(‘Hello ‘) end. Từ khoá đầu tiên của mọi chương trình Pascal (dù không bắt buộc) là program. Trong giáo trình này các từ khoá sẽ được in đậm. Sau từ khoá program là tên của chương trình. Tên của chương trình phải đặt theo qui tắc đặt tên. Tên phải bắt đầøu bằng một chữ cái và có thể chứa một dãy bất kỳ các chữ cái và chữ số. Chú ý là trong tên không được phéùp có khoảng trống. Nếu cần tách các từ có thể dùng dấu nối _. Ký tự chuẩn của Pascal là bảng mã ASCII do đó các tên tiếng Việt có dấu cũng là không hợp lệ. Tên cũng không được trùng với các từ khoá của Pascal, do đó các từ này còn được gọi là từ dành riêng. Ví dụ: R2D2 So_tien là các tên hợp lệ 2XY So tien Số tiền là các tên không hợp lệ Các chú thích được đặït trong cặp dấu {} hoặc (* *) Ví dụ: { Đây là chú thích } (* Đây cũng là chú thích *) Dòng đầu tiên của một chương trình gọi là đầu chương trình. Một dấu chấm phẩy( ; )được dùng để ngăn cách nó với dòng kế tiếp. Ví dụ : program Dautien; Chúng ta có sơ đồ cú pháp cho đầu chương trình như sau: đầu chương trình program Ỉ tên Ỉ; Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 6 - Trong chương trình Dautien, vì không có tính toán gì cả nên chúng ta không dùng tới biến. Do đó ngay sau phần đầu chương trình, chúng ta đi ngay đến phần lệnh. Phần này bắt đầu bằng từ dành riêng begin . Phần lệnh bao gồm dãy các lệnh. Việc in ra một hàng trong Pascal được thực hiện bởi một thủ tục chuẩn là writeln (đọc là write line). Ví dụ: writeln (‘Mọi thứ nằm trong dấu nháy sẽ được in ra ‘) (Văn bản trong dấu nháy có thể là tiếng Việt, phụ thuộc vào hệ cài đặt) Chương trình Pascal được kết thúc bằng từ dành riêng end. Chú ý từ end kết thúc chương trình luôn có dấu chấm đi theo. program Thu_hai; { Minh hoạ cách dùng ;} begin writeln(‘Xin chào ‘); writeln( ‘ Bạn ăn cơm chưa? ‘) end. Kềt quả chạy chương trình này là: Xin chào Bạn ăn cơm chưa? Chú ý là sau lệnh writeln đầu tiên có dấu ; . Dấu ; trong Pascal dùng để ngăn cách giữa hai câu lệnh, không phải là phần bắt buộc của câu lệnh. (Đây là điểm khác biệt với ngôn ngữ C. ) Để in ra không xuống hàng, ta dùng thủ tục chuẩn write . program Mot_hang; {Minh hoạ cách dùng write} begin write (‘ Những từ này’); write ( ‘sẽ được in ra’); writeln(‘trên cùng một hàng’) end. Kết quả chạy chương trình trên là Những từ này sẽ được in ra trên cùng một hàng. Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 7 - I-2 BIẾN VÀ NHẬP DỮ LIỆU Program Nhapso; { Nhập và và in ra một số } var So : integer; { Khai báo một biến} begin writeln(‘ Nhập vào một số nguyên ‘); readln(So); writeln(‘Số bạn nhập vào là:’ , So); end . Nhập vào một số nguyên 15 Số bạn nhập vào là: 15 Kiểu dữ liệu Biến phải được khai báo thuộc một kiểu dữ liệu nào đó. Bốn kiểu dữ liệu nguyên thuỷ của Pascal là integer, char, boolean và real. Các kiểu integer, char và boolean được gọi là các kiểu thứ tự( hay còn gọi là kiểu vô hướng đếm được) Qui tắc: Biến nào trò nấy, tức là kiểu dữ liệu của biến và trò của nó phải phù hợp với nhau. Việc khai báo biến đước bắt dầu bằng từ dành riêng var (viết tắt của từ variable), tiếp đó là danh sách các biến cùng với kiểu dữ liệu tương ứng (tên biến được phân cách với kiểu dữ liệu bởi dấu :) , các biến khai báo được phân cách bởi dấu ; . var sothutu: integer; diem: real; xeploai: char; Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 8 - Chúng ta có thể khai báo nhiều tên biến với cùng một kiểu dữ liệu, lúc này các tên biến cách nhau bởi dấu , . var sothutu, vithu , siso : integer; dtoan, dly, dhoa : real; xeploai: char; tongso, diemtb: real; Chú ý là ngôn ngữ Pascal không phân biệt chữ hoa và chữ thường, do đó các tên biến như sau là giống nhau. Diemtb diemtb DIEMTB diemTB Với khai báo trên, chúng ta có thể viết lại như sau: var sothutu, vithu , siso : integer; dtoan, dly, dhoa : real;xeploai: char; hoặc var sothutu, vithu, siso : integer; dtoan, dly, dhoa : real;xeploai: char; nhưng với cách viết này, chương trình của chúng ta sẽ trông rất lộn xộn, khó đọc và rất khó sửa lỗi. Các cách nhập dữ liệu readln có thể chứa danh sách nhiều biến, ngăn cách bằng dấu phẩy. readln(so, tuoi, luong) Khi nhập dữ liệu integer hoặc real các khoảng trống được bỏ qua. Kết thúc nhập bằng phím Enter Ví dụ: readln(a,b,c) Nếu nhập 5 6 7 thì a =5, b=6,c= 7 Khi nhập dữ liệu char, khoảng trống sẽ được tính. readln(Chu1,Chu2) Nếu nhập AB thì Chu1 = ‘A’, Chu2= ‘B’ nhưng nếu nhập A B thì Chu1 = ‘A’, Chu2= ‘ ’. readln không kèm theo biến tức là có dạng readln; đòi hỏi người nhập gõ phím Enter. Một dạng khác của lệnh nhập dữ liệu là read . Lệnh này không đòi hỏi kết thúc nhập bằng phím Enter (thường dùng khi đọc dữ liệu từ tập tin). Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 9 - Qui tắc: Phải đảm bảo nhập đủ dữ liệu I-3 XUẤT DỮ LIỆU program Tinhtoandongian; {Minh hoạ việc biểu thức được tính trước khi xuất} var So1,So2 :real; begin readln (So1,So2); writeln(So1,So2); writeln(So1+So2, So1-So2); writeln(So1*So2, So1/So2); end. Đònh dạng dữ liệu xuất Dữ liệu xuất nếu không có chỉ ra đònh dạng sẽ thuận theo đònh dạng mặc nhiên của Pascal. program Dinhdangmn; {Trình bày đònh dạng mặc nhiên của Pascal} var Chu : char; Sothuc : real; Songuyen :integer; begin writeln(‘ Nhập vào một chữ cái, một số thực và một số nguyên’); readln(Chu,Sothuc,Songuyen); writeln(Chu); writeln(Sothuc); writeln(Songuyen) end. Nguyễn Danh Hưng Khoa Vật Lý . thuật lập trình. Ngôn ngữ được chọn là Pascal chuẩn, có bổ sung một vài phần mở rộng của TurboPascal. Mặc dù ngày nay có nhiều ngôn ngữ hiện đại hơn, Pascal vẫn là ngôn ngữõ thích hợp nhất. chương trình Pascal trong thực tế đều có dùng đến thủ tục. Như vậy cấu trúc chung của một chương trình Pascal thường là đầu chương trình Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal. LỖI: - 112 - Từ khoá Pascal mới 112 - Khái niệm mới - 113 - BÀI TẬP CHƯƠNG IX - 114 - Chương X KIỂU TẬP HP (SET) 115 - Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 3 - X-1 KIỂU