Kỹ thuật lập trình Pascal

135 1.1K 0
Kỹ thuật lập trình Pascal

Đ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

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 _. 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ý [...]... Một kỹ thuật chống lỗi quan trọng là lập trình có tính đơn thể (modular) Một chương trình là có tính đơn thể nếu các chương trình con của nó là độc lập tương đối với nhau và đối với chương trình chính Các chương trình con có thể được thử riêng bằng các dữ liệu giả trước khi ghép vào chương trình chính Nếu chương trình con có lỗi thì lỗi đó có thể được cô lập và sửa dễ dàng Một đặc trưng khác của lập trình. .. đúng, và chương trình của bạn vẫn không chạy, một trong những điều bạn tin chắc là sai Từ khoá Pascal mới: procedure function Khái niệm mới: Chương trình con Chương trình chính Thủ tục Hàm Danh sách tham số Lời gọi thủ tục Lời gọi hàm Phạm vi Biến toàn cục Biến đòa phương Khối chương trình Kỹ thuật lập trình từ trên xuống Tính đơn thể Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 26 - BÀI... for số dòng for số cột do in ra một dấu * Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal - 34 - Kỹ thuật phân tích chương trình như trên gọi là phương pháp dùng mã giả Mã giả là một loại ngôn ngữ trung gian giữa ngôn ngữ bình thường và Pascal Kỹ thuật mã giả được sử dụng rộng rãi trong lập trình Từ mã giả trên ta có chương trình sau program VeHinhChuNhat; var demdong, demcot,sodong, socot : integer;... {Inketqua} begin {chương trình chính} Nhapso; Doihaiso; {Ba lời gọi thủ tục} Inketqua end Hầu như mọi 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 - 19 - phần khai báo hằng phần khai báo biến phần khai báo các thủ tục phần lệnh (thân chương trình chính) II.2 BIẾN... Danh Hưng cosh( x) = e x + e−x 2 tanh( x) = e x − e−x e x + e−x Khoa Vật Lý Kỹ thuật lập trình Pascal - 28 - 8.Viết các hàm trong Pascal thể hiện các hàm số thực sau: f(x,y) = (x+2y)/(x+y) g(x,y) = (f(x,y)+ f(x,y)/(2f(x,x+y)) p dụng để tính f(a,b) và g(a,b) với a, b nhập từ bàn phím Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal CHƯƠNG III - 29 - CASE VÀ FOR Chương này khảo sát cấu trúc case và... {Chương trình chính} writeln(‘Nhap vao mot goc tinh bang do:’); readln(So); writeln(‘Tang cua goc ‘, So ,’ = ‘,Tang(So)); Cotang := 1/Tang(So); writeln(‘CoTang cua goc ‘, So ,’ = ‘,Cotang) end {Chương trình chính} Ví dụ trên cũng cho thấy các hàm có thể lồng nhau II.5 PHƯƠNG PHÁP LẬP TRÌNH TỪ TRÊN XUỐNG Phương pháp lập trình từ trên xuống gồm các bước sau: Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal. .. Khoa Vật Lý Kỹ thuật lập trình Pascal - 30 - Các hằng phải cùng kiểu với biểu thức chọn Danh sách các hằng phải chứa đủ các giá trò có thể có của biểu thức chọn Nếu biểu thức chọn có trò không nằm trong danh sách các hằng thì chương trình có lỗi Khái niệm hành động của chương trình Pascal Trong bản thảo gốc của ngôn ngữ Pascal Niklaus Wirth đã chỉ ra rằng: “Hành động là bản chất cho mọi chương trình máy... cách giữa hai vật Viết chương trình tính lực hấp dẫn giữa hai vật khi biết khối lượng và khoảng cách giữa chúng Kiểm tra chương trình bằng cách tính lực tác dụng lên một vệ tinh 800kg ở quỹ đạo cách trái đất 38000km (Khối lượng trái đất là 5,98x1024kg) Nguyễn Danh Hưng Khoa Vật Lý Kỹ thuật lập trình Pascal CHƯƠNG II - 18 - THỦ TỤC VÀ HÀM II-1 LẬP TRÌNH VỚI THỦ TỤC Các chương trình trong chương đầu tiên... const tên hằøng = trò; I-6 CHỐNG LỖI VÀ SỬA LỖI Sửa lỗi (debug) là tìm ra lỗi sai trong chương trình Chống lỗi (antibug)là viết chương trình sao cho ít gặp lỗi Chống lỗi và sửa lỗi là hai việc cực kỳ quan trọng trong kỹ thuật lập trình Trong giáo trình này, chúng ta sẽ dành một phần thích đáng cho các kỹ thuật này Các lỗi nói chung chia làm hai loại: lỗi cú pháp và lỗi ngữ nghóa Các lỗi cú pháp(syntax... Lý Kỹ thuật lập trình Pascal - 14 - Ví dụ var Trial :=: integer; Test: char; Test := ‘A’; - Dùng lệnh gán không hợp lệ A:=B := C:=D :E := 0; - Dùng sai đối của hàm, ví dụ dùng đối số âm với hàm sqrt Tóm tắt: Trong chương này chúng ta đã biết các khái niệm sau: • Cấu trúc của một chương trình Pascal gồm có phần đầu chương trình phần khai báo hằng phần khai báo biến phần lệnh - cách đặt tên chương trình, . 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

Ngày đăng: 08/05/2014, 17:08

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • LỜI NÓI ĐẦU

  • CHƯƠNG I LÀM QUEN VỚI LẬP TRÌNH

    • I-1 CÁC KHÁI NIỆM MỞ ĐẦU:

    • I-2 BIẾN VÀ NHẬP DỮ LIỆU

    • I-3 XUẤT DỮ LIỆU

    • I.4 LỆNH GÁN VÀ BIỂU THỨC

    • I-5 CÁC HÀM CHUẨN

    • I-6 CHỐNG LỖI VÀ SỬA LỖI

    • Bài đọc thêm Vẻ đẹp của giải thuật

    • BÀI TẬP CHƯƠNG I

    • CHƯƠNG II THỦ TỤC VÀ HÀM

      • II-1 LẬP TRÌNH VỚI THỦ TỤC

      • II.2 BIẾN TOÀN CỤC VÀ BIẾN ĐỊA PHƯƠNG

      • II.3 THỦ TỤC CÓ THAM SỐ

      • II.4 HÀM

      • II.5 PHƯƠNG PHÁP LẬP TRÌNH TỪ TRÊN XUỐNG

      • II.6 CHỐNG LỖI VÀ SỬA LỖI

      • BÀI TẬP CHƯƠNG II

      • CHƯƠNG III CASE VÀ FOR

        • III-1 LẬP TRÌNH VỚI CẤU TRÚC CASE

          • Khái niệm hành động của chương trình Pascal

          • III-2 LẬP TRÌNH VỚI CẤU TRÚC FOR

          • III-3 CHỐNG LỖI VÀ SỬA LỖI:

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan