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

cấu trúc dữ liệu và giải thuật PASCAL

130 1,3K 19
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 đề Cấu Trúc Dữ Liệu Và Giải Thuật Pascal
Tác giả N. Klaus With
Trường học Đại học Kinh tế Quốc dân
Chuyên ngành Khoa học máy tính
Thể loại Giáo trình
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 130
Dung lượng 1,4 MB

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

Nội dung

Thông thường một khối tương ứng với một nhiệm vụ cụ thể, xác định, được thực hiện bằng các chương trình convới các biến địa phương và các biến tạm thời của chươngtrình con đó.. Điểm khác

Trang 1

§ 1 Các bước giải bài toán trên máy tính điện tử

1.1 Các bước để giải bài toán trên máy tính điện tử

Bài toán ở đây cần được hiểu theo nghĩa rộng như mộtnhiệm vụ xử lý thông tin nào đó Để giải một bài toán trên máytính cần thực hiện các bước công việc sau đây:

1 Xác định rõ nội dung của bài toán: Đây là bước đầu

tiên của quá trình giải bài toán trên máy tính Trong bước côngviệc này, phải xác định mục đích giải bài toán, xác định các dữliệu ban đầu cần cho việc giải bài toán, các thông tin kết quảthu được sau khi giải bài toán Bước công việc này rất quantrọng vì nó ảnh hưởng đến tất cả các công việc tiếp theo

2 Mô hình hoá bài toán: Nếu bài toán có nội dung toán

học thì phải biểu diễn bài toán đã xác định ở bước 1 dướidạng một mô hình toán học Cụ thể hơn là phải biểu diễn cácquan hệ giữa thông tin kết quả với các dữ liệu ban đầu dướidạng các công thức hay phương trình toán học có như vậymới có thể dùng máy tính để giải được

3 Chọn phương pháp giải: Bước này phải trả lời được

ba câu hỏi: Bài toán có thể giải được không? Nếu giải được thìtheo phương pháp nào? Phương pháp nào là tốt nhất?

4 Viết thuật giải: Trên cơ sở phương pháp đã chọn ở

bước 3, tiến hành viết thuật toán giải bài toán Đây là bướccông việc rất khó khăn Một bài toán có thể được giải theonhiều thuật toán khác nhau Một thuật toán hợp lý sẽ giúp choviệc lập trình trở nên dễ dàng hơn Nhìn chung thuật toán giảibài toán ảnh hưởng rất nhiều đến kết quả và hiệu quả của bàitoán Thuật toán có thể được trình bây dưới dạng sơ đồ khối.Điều đó làm cho thuật toán rõ ràng, dễ hiểu và dễ đọc

5 Lập chương trình: Căn cứ vào thuật toán đã viết ở

bước 4 mà tiến hành lập chương trình giải bài toán Cần chọnngôn ngữ lập trình phù hợp với loại bài toán và khả năng củamáy tính được sử dụng

6 Thử nghiệm chương trình: Bước công việc này là phải

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 2

chạy thử chương trình đã lập để phát hiện và khắc phục cáclỗi Đối với các chương trình lớn và phức tạp, việc mắc lỗitrong quá trình lập chương trình là khó có thể tránh khỏi Cầnchuẩn bị các bộ dữ liệu khác nhau với các kết quả đã biếttrước để chạy thử Chương trình có thể không gây lỗi hoặccho kết quả đúng đối với bộ dữ liệu này nhưng lại mắc lỗi hoặccho kết quả sai đối với bộ dữ liệu khác Vì vậy, càng thử đượcvới nhiều bộ dữ liệu khác nhau thì càng tốt Cần chú ý đến các

bộ dữ liệu đặc biệt Có thể chia các lỗi thành ba loại: Lỗi ngữpháp, lỗi ngữ nghĩa và lỗi thuật toán Lỗi ngữ pháp là lỗi dokhai báo sai, các lệnh dùng không đúng quy định của ngônngữ Những lỗi này thường dễ phát hiện ngay khi tiến hànhdịch chương trình ra ngôn ngữ máy để thực hiện Lỗi ngữnghĩa thường phát hiện ra khi thực hiện chương trình, ví dụnhư chia cho 0 Lỗi thuật toán thường khó phát hiện, có thể docông thức tính toán sai, chu trình lặp vô hạn Người lập trìnhthường phải tự mình phát hiện các lỗi trong thuật toán

7 Giải bài toán: Dùng chương trình đã thử nghiệm để giải

bài toán với dữ liệu thực tế

8 Phân tích đánh giá và sử dụng kết quả: Các thông tin

kết quả do máy tính cung cấp cần được phân tích, đánh giá,kiểm tra và nếu thấy hợp lý thì sử dụng

9 Viết tài liệu hướng dẫn: Nếu chương trình được viết

cho nhiều người dùng thì cần viết tài liệu hướng dẫn sử dụngchương trình để cung cấp cho người dùng cùng với các bảndịch chương trình nguồn ra ngôn ngữ máy

1.2.Sự ra đời và phát triển của PASCAL

PASCAL là ngôn ngữ lập trình cấp cao do giáo sư N KlausWith (Trưòng đại học Zurich, Thuỵ Sĩ) phát minh ra vào đầunhững năm 1970 Ông đặt tên ngôn ngữ này là PASCAL để kỷniệm nhà toán học người Pháp thế kỉ 17 là Blaise Pascal Lúcđầu PASCAL được sáng tác nhằm mục đích dạy môn lập trìnhcho sinh viên trong các trường đại học PASCAL giúp chosinh viên cũng như những người mới học lập trình có đượcthói quen viết một chương trình có cấu trúc sáng sủa, rõ ràng,

dễ đọc và dễ hiểu cho cả những người khác Trước khiPASCAL ra đời các sinh viên học lập trình bằng FORTRAN, là

Trang 3

một ngôn ngữ lâu đời nhất và là ngôn ngữ không có cấu trúc.Giáo sư With thấy rằng có thể tránh được rất nhiều lỗi khi lậptrình bằng một ngôn ngữ có cấu trúc khối và có sự kiểm tra kĩlưỡng sự tương thích giữa các kiểu dữ liệu.

PASCAL là một ngôn ngữ có định kiểu mạnh mẽ Điều đó

có nghĩa là mọi biến và hằng của một kiểu dữ liệu không thể tự

do đem trộn lẫn với các biến và hằng của một kiểu dữ liệukhác Ví dụ cả hai vế của lệnh gán phải có cùng một kiểu, trừtrường hợp vế trái là biến thực (Real) còn vế phải là một giá trịnguyên (Integer) Việc qui định kiểu một cách chặt chẽ nhưvậy bắt buộc người lập trình luôn luôn phải viết các biểu thứcgồm các dữ liệu tương thích về kiểu

PASCAL là một ngôn ngữ có cấu trúc, với một số đặc điểmtương tự ngôn ngữ ALGOL và ngôn ngữ C Đặc điểm của mộtngôn ngữ có cấu trúc là có thể tách các dữ liệu (biến, hằng, )

và các lệnh liên quan đến một công việc nhất định thành mộtkhối riêng, tách khỏi phần còn lại của chương trình để ngườilập trình có thể giải quyết riêng từng phần một, từng khối một

và nhiều người có thể tham gia lập trình, mỗi người phụ tráchmột khối Thông thường một khối tương ứng với một nhiệm vụ

cụ thể, xác định, được thực hiện bằng các chương trình convới các biến địa phương và các biến tạm thời của chươngtrình con đó Bằng cách này có thể viết các chương trình consao cho các sự kiện xảy ra trong đó không ảnh hưởng đến cácphần khác của chương trình nằm ngoài chương trình con này.Lúc đầu PASCAL chủ yếu được dùng để dạy học Trongquá trình phát triển, PASCAL đã thể hiện các ưu điểm củamình, trở thành một ngôn ngữ lập trình mạnh, được thươngmại hoá nhanh chóng Từ PASCAL do giáo sư With sáng tạo

ra, tổ chức tiêu chuẩn hoá quốc tế và các hãng đã phát triểnthêm, và đã tạo ra nhiều chương trình dịch PASCAL khácnhau, phổ biến hơn cả là:

- ISO PASCAL (PASCAL chuẩn, ISO:International Standard Organization)

- ANSI PASCAL (American National Standard Institute)

- TURBO PASCAL (Của hãng Borland)

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 4

- IBM PASCAL (Của hãng MicroSoft).

- UCSD PASCAL (University of California at San Diego).1.3.Giới thiệu Turbo PASCAL

Turbo PASCAL là sản phẩm của hãng Borland (Mỹ) Hiệnnay Turbo PASCAL là ngôn ngữ lập trình được sử dụng rộngrãi nhất so với các loại PASCAL khác cũng như so với cácngôn ngữ khác vì các ưu điểm của nó: Tốc độ dịch nhanh,chương trình dịch ngắn gọn, các phần mở rộng của nó so vớiPASCAL chuẩn đáp ứng được các yêu cầu của người sử dụng

và Turbo PASCAL không ngừng được cải tiến, phát triển Chođến nay đã có các phiên bản sau đây:

- Turbo PASCAL 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 (1990) và 7.0(1992)

Turbo PASCAL bao gồm nhiều tệp, trong đó có 2 tệp quantrọng nhất, bắt buộc phải có là TURBO.EXE và TURBO.TPL.Hai tệp này có thể được chứa gọn trên một đĩa mềm TệpTURBO.EXE chứa một hệ soạn thảo (dùng để soạn thảochương trình PASCAL) và một chương trình dịch (dùng đểdịch chương trình PASCAL ra ngôn ngữ máy) TệpTURBO.TPL là một thư viện, chứa các hàm, các thủ tục và cácđơn vị chương trình chuẩn (có sẵn) của PASCAL

Ngoài ra, nếu muốn sử dụng các chức năng đồ họa củaTurbo PASCAL thì cần có thêm các tệp sau đây:

- GRAPH.PTU tệp chứa các lệnh, hàm, biến kiểu dữ liệuliên quan đến đồ hoạ

- EGAVGA.BGI tệp chứa các chương trình điều khiển mànhình các kiểu VGA hoặc CGA;

- SANS.CHR, GOTH.CHR các tệp chứa các kiểu chữ(fonts) khác nhau dùng trong chế độ đồ họa

Khi được cài đặt vào máy, các tệp của Turbo PASCALthường được đặt trong thư mục TURBO Thư mục này gồmcác thư mục con như sau:

BIN Chứa các tệp TURBO.EXE,

TURBO.TPL…

UNIT Chứa các đơn vị chương trình *.TPU

SOURCE Chứa các chương trình nguồn lớn làm

Trang 5

ví dụ.

EXAMPL

ES Chứa các ví dụ để trình diễn

DOC Chứa các tệp tài liệu

BGI Chứa các tệp dùng trong chế độ đồ

hoạ

Tuy nhiên, tuỳ theo ý muốn của người sử dụng, các thưmục con đó có thể có các tên khác

§ 2 Bộ chữ viết, từ khoá, tên trong PASCAL

2.1.Bộ chữ viết dùng trong PASCAL

Mỗi loại ngôn ngữ, ngôn ngữ của con người cũng nhưngôn ngữ của máy tính điện tử đều có bộ chữ viết riêng củamình Trong PASCAL bộ chữ viết gồm có:

a Các chữ cái của bảng chữ cái tiếng Anh

- Các chữ cái viết thường từ a đến z.

- Các chữ cái viết hoa từ A đến Z.

* Dấu nhân hay dấu

sao

> Dấu lớn hơn

/ Dấu chia hay gạch

% Dấu phần trăm [ Dấu ngoặc vuông mở

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 6

? Dấu hỏi ] Dấu ngoặc vuông đóng

cáchMỗi chữ cái, chữ số hoặc kí hiệu đặc biệt được gọi là một kí

tự Turbo PASCAL không phân biệt chữ hoa và chữ thườngtrong các tên, nhưng có phân biệt chữ hoa và chữ thườngtrong các hằng kiểu ký tự và các hằng kiểu dãy ký tự

Khi viết chương trình PASCAL, một số dấu phép tính đượcviết bằng hai kí tự:

:= Dấu phép gán Dấu các toán tử quan hệ:

>= Dấu không nhỏ

hơn2.2.Từ khoá (Keyword)

Từ khoá là những từ tiếng Anh, mỗi từ có ý nghĩa nhất định trong Turbo PASCAL

ý nghĩa của các từ khoá sẽ lần lượt được nghiên cứu trongcác phần sau Khi sử dụng các từ khoá phải viết đúng chính tả

và sử dụng đúng ý nghĩa của nó Tên của người sử dụngkhông được trùng với các từ khoá

Trong Turbo PASCAL có các từ khoá sau đây:

• Từ khoá chung: Program, Unit, Begin, End, Procedure,

Function.

• Từ khoá khai báo: Const, Var, Type, Label, Array, Uses,

File, record, object, set, string.

• Từ khoá của lệnh rẽ nhánh: If then else, case of

• Từ khoá của lệnh chu trình: For to do, For downto do,

while do, repeat until.

• Từ khoá điều khiển: with, goto

• Từ khoá toán tử: And, or, not, div, mod

• Từ khoá Nul: Nul

Khi trình bầy qui cách các lệnh, các từ khoá sẽ được viếtbằng các chữ hoa, còn khi viết trong chương trình có thể viết

Trang 7

hoa hoặc viết thường.

2.3.Tên (Define)

Tên là thành phần rất quan trọng của PASCAL Nó được dùng để chỉ các đối tượng khác nhau trong chương trình như các hằng, các biến, các nhãn, các hàm, các thủ tục Tên là một dãy kí tự, bao gồm chữ cái, chữ số và dấu gạch nối Tên phải bắt đầu bằng chữ cái và không được chứa dấu khoảng trống (space)

Trong Turbo PASCAL 7.0 tên có thể có độ dài tùy ý, nhưngchỉ có 63 ký tự đầu tiên là có ý nghĩa Tên không được trùngvới từ khóa có thể viết bằng chữ hoa và chữ thường, hoặc lẫnlộn cả chữ hoa và chữ thường PASCAL không phân biệt chữhoa và chữ thường trong các tên

Ví dụ:

- Các tên sau đây dùng đúng:

GIAIPHUONGTRINH, GiaiPhuongTrinh, Delta,

HO_VA_TEN, A1, A2, DIA_CHI, LOP, ADDRESS

- Các tên sau đây dùng sai:

#LOP Bắt đầu bằng kí hiệu

Ví dụ: tên GIAIPHUONGTRINH

có thể đặt là: GIAI_PHUONG_TRINH hoặc

GiaiPhuongTrinh

Chú ý: có thể dùng dấu gạch nối (_) để đặt tên như trong

các ví dụ nêu trên, nhưng không được dùng dấu trừ (-)

Trong Turbo PASCAL có một số tên đã được định nghĩatrước (Predefined Identifier), gọi là các tên chuẩn Người dùngcần phải sử dụng những tên này theo ý nghĩa đã gán chochúng Tuy nhiên, nếu muốn có thể thay đổi ý nghĩa của cáctên chuẩn Đối với các từ khoá thì không thể làm như thế

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 8

Một số tên chuẩn thường được dùng trong Turbo PASCAL

Abs boolean Char Integer Real Byte

Text False True Arctan Read Readln Write Writeln Sqr Sqrt

Số lượng các tên chuẩn phụ thuộc vào từng bản củaTurbo PASCAL Đối với từng tên chuẩn sẽ có giải thích kĩcàng về ý nghĩa, cách viết và cách sử dụng trong chươngtrình

2.4.Dấu chấm phẩy

Dấu chấm phẩy ";" không thể thiếu được trong PASCAL, nó

được dùng để ngăn cách các câu lệnh Không nên hiểu đây làdấu kết thúc lệnh

2.5 Lời giải thích (Comment)

Lời giải thích dùng để giải thích cho chương trình thêm rõràng và dễ hiểu khi người sử dụng nghiên cứu lại chươngtrình Khi thực hiện, máy sẽ bỏ qua những phần giải thích này.Lời giải thích là dãy ký tự bất kỳ được đặt trong cặp dấu ngoặcmóc mở { và ngoặc móc đóng } hoặc trong cụm dấu ( * và *)

Chú ý: Nếu lời giải thích mở bằng cặp dấu (* thì phải đóng

bằng cặp dấu *), nếu mở bằng dấu ngoặc móc mở { thì phảiđóng bằng dấu ngoặc móc đóng } Không thể mở bằng cặpdấu (* và đóng lại bằng dấu ngoặc móc đóng } và ngược lại

§ 3 Cấu trúc một chương trình PASCAL

Cấu trúc của một chương trình PASCAL thường gồm có 3phần sau:

3.1.Phần tên chương trình

Trang 9

Phần này dùng để đặt tên cho chương trình PASCAL Nóbắt đầu bằng từ khoá PROGRAM, tiếp theo là một tên màngười dùng đặt cho chương trình và phải kết thúc bằng dấuchấm phẩy (;) Phần tên chương trình cho phép người dùngphân biệt chương trình này với chương trình khác Chươngtrình dịch PASCAL không quan tâm đến phần này có haykhông Phần tên chương trình không bắt buộc phải có trongmột chương trình PASCAL.

Ví dụ: Phần tên chương trình có thể có dạng

PROGRAM SAPXEP;

PROGRAM TAOTEPSN;

PROGRAM GiaiPhuongTrinhBac2;

Chú ý: Không nên nhầm lẫn tên chương trình trong phần

này với tên tệp chứa chương trình PASCAL

3.2.Phần khai báo

Phần này có nhiệm vụ mô tả các đối tượng của bài toán,

mô tả dữ liệu, các biến, các hằng, chương trình con Tất cảcác tên (trừ các tên chuẩn) được sử dụng trong chươngtrình đều phải được khai báo Trong quá trình dịch chươngtrình nguồn ra chương trình đích, nếu phát hiện một tên chưađược khai báo, trên màn hình sẽ xuất hiện thông báo lỗi vàquá trình dịch bị dừng lại

Một chương trình PASCAL có thể gồm các mục khai báosau:

- Khai báo các đơn vị chương trình UNIT (USES).

- Khai báo các hằng (CONST).

- Khai báo các nhãn (LABEL).

- Khai báo các kiểu dữ liệu (TYPE).

- Khai báo các biến (VAR).

- Khai báo các thủ tục (PROCEDURE).

- Khai báo các hàm (FUNCTION).

Bao nhiêu mục khai báo được sử dụng là tuỳ theo yêu cầucủa từng chương trình cụ thể và tuỳ ý muốn của người dùng

a.Khái niệm hằng và biến

Hằng (Constant) là một giá trị không đổi trong suốt quá trình thực hiện chương trình Tên hằng là tên được đặt theo quy ước để đại diện cho một giá trị không thể thay

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 10

Biến (Variable) là một giá trị thay đổi trong quá trình thực hiện chương trình Tên biến là tên được đặt theo quy ước để đại diện cho một giá trị có thể thay đổi.

b.Khai báo hằng

Thông thường, mỗi khi muốn sử dụng một hằng, người sửdụng viết luôn hằng đó Ngoài cách đó ra, có thể đặt tên chohằng đó và khi sử dụng hằng ấy chỉ cần gọi nó ra Nhìn bềngoài, tên hằng giống như tên biến Điểm khác nhau cơ bảngiữa hằng và biến là với biến trong chương trình có thể thayđổi giá trị của biến có tên đó bằng nhiều cách, còn đối vớihằng thì không thể thay đổi giá trị đã gán cho tên hằng đó.Mục khai báo hằng dùng để đặt tên cho các hằng được bắtđầu bằng từ khoá CONST, tiếp theo là các lệnh khai báohằng

c Khai báo biến

Tất cả các biến sử dụng trong chương trình đều phải được

Trang 11

khai báo trong mục khai báo biến Mục khai báo biến bắt đầubằng từ khoá VAR, sau đó là các lệnh khai báo biến

Quy cách:

VAR

<Tên biến>: <Kiểu dữ liệu của biến>;

Nếu có nhiều biến có cùng kiểu dữ liệu thì các tên cáchnhau bằng dấu phẩy (,) sau đó là dấu hai chấm (:), rồi đến kiểu

dữ liệu Nếu có nhiều lệnh khai báo biến thì các lệnh cáchnhau bằng dấu chấm phẩy (;)

Lệnh khai báo biến tạo ra các biến có tên và kiểu tươngứng

Kiểu dữ liệu có thể là một trong các từ khoá: INTEGER,

REAL, BOOLEAN, CHAR, STRING tương ứng với dữ liệu kiểu

nguyên, kiểu thực, kiểu lô gíc và kiểu ký tự Bốn kiểu dữ liệutrên được gọi là kiểu đơn giản chuẩn Từ khoá STRING xácđịnh dữ liệu kiểu dãy kí tự (còn gọi là kiểu dòng ký tự hoặckiểu dãy ký tự)

Trang 12

Phuong Thanh!'); Lệnh này có tác dụng hiện trên màn hình

dòng thông báo:

Chao ban Phan Thi Phuong Thanh!

Như vậy một chương trình PASCAL thường có cấu trúcnhư sau:

PROGRAM Ten_chuong_trinh;

USES Khai báo các UNIT;

CONST Khai báo các hằng;

LABEL Khai báo các nhãn;

TYPE Khai báo các kiểu dữ liệu;

VAR Khai báo các biến;

PROCEDURE Khai báo các thủ tục;

FUNCTION Khai báo các hàm;

BEGIN

<Các câu lệnh của PASCAL>

END.

§ 4 Các bước thực hiện một chương trình PASCAL

Muốn chạy một chương trình PASCAL để giải một bài toáncần thực hiện một số bước công việc Các bước công việc đólà: khởi động PASCAL, soạn thảo chương trình, dịch chươngtrình, chạy chương trình, thoát khỏi PASCAL

4.1.Khởi động Turbo PASCAL

Giả sử các tệp của Turbo PASCAL để trong thư mụcTURBO của thư mục gốc của ổ đĩa C Để khởi động TurboPASCAL, từ dấu nhắc của DOS chuyển về thư mục TURBOlàm thư mục hiện thời rồi gọi:

TURBO

PASCAL sẽ được máy tính điện tử nạp từ đĩa vào bộ nhớ.Khi Turbo PASCAL đã được nạp đúng vào bộ nhớ, màn hình

có dạng như hinh vẽ 3.1

Trang 13

Dòng phía trên của màn hình là dòng thực đơn của TurboPASCAL Phía dưới của màn hình là dòng thông tin hướngdẫn Phần giữa màn hình để trống, dành chỗ cho soạn thảochương trình Bắt đầu từ đây có thể soạn thảo chương trìnhnguồn.

4.2.Bảng chọn lệnh

Muốn mở một tệp, ghi hay chạy một chương trình Dùngbảng chọn lệnh tương ứng để thực hiện

Sau đây là một số bảng chọn dọc của PASCAL

• Nhắp tổ hợp phím ALT + Chữ cái đầu F: Đưa ra bảng

Một số bảng chọn đưa ra như sau:

Gi¸o tr×nh Tin häc §¹i c¬ng

Hình 3.1 M n hình PASCAL à

Trang 14

New Bắt đầu một tệp mới có tên là

NONAME000.PAS Open F3 Mở tệp đang có trên đĩa hay tệp mới trong

một cửa sổ mới Save F2 Cất một tệp trong bộ nhớ vào đĩa

save As Cất một tệp ( trong bộ nhớ) vào đĩa với tên

mới Change dir Đổi thư mục hiện thời

Print In nội dung tệp ra máy in

Print setup Cài đặt máy in

DOS shell Thoát khỏi PASCAL tạm thời về DOS Từ

DOS về PASCAL bằng lệnh EXIT eXit Alt+X Kết thúc PASCAL về DOS

SEARCH

Find Tìm kiếm đoạn văn bản trong cửa sổ

Edit Replace Tìm kiếm đoạn văn bản trong cửa sổ

Edit và thay thế bằng một đoạn mới Search again Lặp lại quá trình tìm kiếm vừa thực

hiện

Go To line number Đưa con trỏ đến vị trí dòng

Show last compilier error Xem lại lỗi biên dịch sau cùng

Find error Di chuyển con trỏ đến vị trí báo lỗi

runtime Find procedure Di chuyển con trỏ đến vị trí Procedure

hay Function được chỉ ra để sửa

EDIT

Undo Alt+BkSp Huỷ bỏ thao tác vừa thực hiện trước đó Redo Huỷ bỏ thao tác Undo trước đó, lấy lại

lệnh vừa huỷ Cut Shift + Del Cắt vùng đã đánh dấu vào bộ đệm Copy Ctrl + Ins Copy vùng đã đánh dấu vào bộ đệm Paste Shift + Ins Dán nội dung bộ đệm vào vị trí hiện thời

của con trỏ Clear Ctr + Del Xóa vùng đã đánh dấu

Show Clipboard Xem nội dung bên trong bộ đệm

RUN

Trang 15

Run Ctr + F9 Biên dịch và chạy một chương trình đang

soạn thảo trong cửa sổ Edit Step Over F8 Biên dịch và thực hiên từng bước chương

trình đang soạn thảo trong cửa sổ EDIT thực hiện xong một lệnh tiếp tục bằng bấm phím F8, không thực hiện từng lệnh trong chương trình con

Trace Into F7 Biên dịch và thực hiên từng bước chương

trình đang soạn thảo trong cửa sổ Edit, thực hiện xong một lệnh tiếp tục bằng bấm phím F7

Go to cursor F4 Biên dịch và thực hiên chương trình bắt

dầu từ đầu đến dòng lệnh mà con trỏ đang đứng

Program reset Ctr+ F2 Dừng thao tác sửa chữa, xóa bộ nhớ

Parameters Định các tham số trên dòng lệnh cần

chuyển cho chương trình

4.3.Dịch chương trình

Chương trình viết trong ngôn ngữ PASCAL được gọi làchương trình nguồn Tệp chứa chương trình này có phần mởrộng là “.PAS ” Máy tính không thể thực hiện được chươngtrình này để giải bài toán mà phải dịch chương trình ra ngônngữ máy thì mới thực hiện được Chương trình trong ngônngữ máy được gọi là chương trình đích Tệp này có phần mởrộng là “.EXE ” Việc dịch chương trình nguồn ra chương trìnhđích được thực hiện bởi chương trình dịch PASCAL

Khi bấm Alt+F9 lúc đó chương trình dịch của Turbo

PASCAL sẽ dịch (compile) chương trình nguồn sang chươngtrình đích Trong quá trình dịch máy sẽ kiểm tra cú pháp củachương trình nguồn Nếu phát hiện lỗi máy sẽ thông báo lỗinày và con trỏ được đặt vào vị trí có lỗi, quá trình dịch chấmdứt, chương trình nguồn lại xuất hiện trên màn hình để ngườidùng có thể sửa chữa Nếu quá trình dịch được hoàn thành tốt

không có lỗi, trên màn hình sẽ xuất hiện thông báo “Compile

successful: Press any key“ có nghĩa là quá trình dịch

chương trình đã hoàn thành

Thông thường chương trình đích được để trong RAM Tuynhiên, có thể ghi chương trình đích lên đĩa để sau này chạytrực tiếp trong môi trường DOS

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 16

4.4.Thực hiện chương trình

Để thực hiện một chương trình PASCAL

Nhắp tổ hợp phím Ctrl+F9 Khi đó máy kiểm tra xem đã

có chương trình đích chưa Nếu có chương trình đích thì máy

sẽ thực hiện chương trình đó để giải bài toán Nếu chưa cóchương trình đích thì máy sẽ dịch chương trình nguồn rachương trình đích, rồi mới thực hiện

Nhắp tổ hợp phím Alt+F5 để xem kết quả bài toán Xem

xong nhắp phím bất kỳ để trở về màn hình soạn thảo

4.5.Thoát khỏi Turbo PASCAL

Để kết thúc Turbo PASCAL cần thoát khỏi nó bằng các thaotác:

Nhắp tổ hợp phím Alt + F

Chọn Exit

Chọn Y hoặc N tùy thuộc vào việc có muốn ghi các thay

đổi vào tệp hay không

Trên đây đã mô tả ngắn gọn cách soạn thảo và chạy mộtchương trình trong Turbo PASCAL

§ 5 Một số kiểu dữ liệu thường dùng

5.1.Khái niệm kiểu dữ liệu

Các dữ liệu do máy tính xử lý có nhiều đặc điểm khác nhau.Căn cứ vào các đặc điểm đó mà ta phân chia dữ liệu thànhcác kiểu khác nhau

Kiểu dữ liệu (Data Types) là sự qui định về cấu trúc, miền giá trị mà một biến thuộc kiểu đó có thể nhận được

và tập hợp các phép toán xác định trên miền giá trị đó.

Trong PASCAL mỗi hằng, mỗi biến đều phải thuộc về mộtkiểu dữ liệu nhất định PASCAL đòi hỏi chặt chẽ về kiểu của

dữ liệu trong chương trình, không được phép xáo trộn các dữliệu có kiểu khác nhau, nó cũng xây dựng các kiểu dữ liệuchuẩn cùng những phép toán, hàm tác động lên dữ liệu đó Vìvậy nó được gọi là ngôn ngữ lập trình có "tính kiểu" cao

Trang 17

Trong PASCAL có thể xử lý các kiểu dữ liệu sau:

1 Kiểu vô hướng (còn gọi là kiểu đơn giản).

1.1 + Kiểu đơn giản chuẩn (SIMPLE STANDARD TYPE).

1.1.1 _ Kiểu lô gic (BOOLEAN).

1.1.2 _ Kiểu số nguyên (INTEGER).

1.1.3 _ Kiểu số thực (REAL).

1.1.4 _ Kiểu ký tự (CHAR).

1.2 + Kiểu vô hướng do người lập trình tự định nghĩa.

1.2.1 _ Kiểu khoảng con (SUB-RANGE).

1.2.2 _ Kiểu liệt kê (ENUMERATED).

2 Kiểu dữ liệu có cấu trúc (STRUCTURED TYPE).

2.1 + Kiểu mảng (ARRAY).

2.2 + Kiểu tập (SET).

2.3 + Kiểu bản ghi (RECORD).

2.4 + Kiểu tệp (FILE).

3 Kiểu dãy ký tự (STRING TYPE).

4 Kiểu con trỏ (POINTER TYPE).

Cần nhớ rằng một biến hoặc một hằng chỉ liên quan đếnmột kiểu và chỉ một kiểu dữ liệu mà thôi

Kiểu vô hướng, hay kiểu đơn giản (còn gọi là kiểu cơ sở)

là kiểu dữ liệu gồm một tập các giá trị được sắp xếp theothứ tự tuyến tính Dưới đây sẽ xem xét 5 kiểu dữ liệu hayđược sử dụng nhất trong đó có 4 kiểu dữ liệu đơn giản chuẩnBoolean, Integer, Real, Char và kiểu String Các kiểu dữ liệukhác sẽ lần lượt được nghiên cứu

5.2.Kiểu dữ liệu lô gic (Boolean)

a.Khái niệm kiểu dữ liệu lô gic

Dữ liệu kiểu lô gic (gọi tắt là kiểu lô gic) chỉ nhận các giá trị lô gic TRUE (đúng) và FALSE (sai) Kiểu lô gic được định nghĩa sẵn bằng từ khoá BOOLEAN.

Biến lô gic là biến chỉ nhận các giá trị lô gic Từ khoáBOOLEAN được dùng để khai báo các biến lô gic Trong kiểu

lô gic cũng có định nghĩa sẵn quan hệ thứ tự: FALSE <

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 18

b.Các phép toán đối với dữ liệu kiểu lô gic

Các phép toán sau đây được áp dụng cho dữ liệu kiểu lôgic:

AND

OR hoặc

NOT phủ định hay ĐảO

XOR hoặc triệt tiêu hay cộng mô dun 2

Bảng qui tắc thực hiện các phép toán lô gic và các kết quảtương ứng

P Q NOT P P AND Q P OR Q P XOR Q

Bảng qui tắc thực hiện các phép toán lôgíc.

Ví dụ: Giả sử 2 biến DangVien và GioiTinh là 2 biến lô

gic Để khai báo 2 biến này viết như sau:

VAR

GioiTinh,DangVien: Boolean;

Do đã xác định quan hệ thứ tự giữa các giá trị lô gic, nên

có thể sử dụng các phép toán quan hệ đối với dữ liệu lô gic.5.3.Kiểu dữ liệu số nguyên (Integer)

a.Khái niệm kiểu dữ liệu số nguyên

Dữ liệu kiểu số nguyên (gọi tắt là kiểu nguyên) là tập hợp các số nguyên nằm trong khoảng từ -32768 đến +

32767 Kiểu số nguyên được định nghĩa sẵn bằng từ khoá INTEGER.

Biến nguyên là biến nhận các giá trị nguyên Từ khoáINTEGER được dùng để khai báo biến nguyên

Ví dụ 1: Hai biến I, J là hai biến nguyên Để khai báo 2

biến này, cần viết như sau:

VAR

I,J: Integer;

Khi đã khai báo như vậy thì các biến I, J có thể nhận giá trị

là một số nguyên nằm trong khoảng từ -32768 đến 32767

Trang 19

b.Các phép toán số học đối với dữ liệu kiểu

DIV Chia nguyên

MOD Lấy phần dư của phép chia

• Khi thực hiện các phép tính số học trên các số nguyêncần đặc biệt chú ý xem kết quả có vượt quá miền giá trị chophép của dữ liệu kiểu nguyên hay không

Ví dụ: Nếu a, b là các biến nguyên Integer thì hai lệnh sau:

a:= 80; b:= (a * 1245) DIV 200 cho kết quả sai (vì 99600vượt quá miền giá trị của dữ liệu kiểu nguyên)

c.Các phép toán quan hệ đối với dữ liệu kiểu nguyên

Các phép toán quan hệ: = (bằng), <> (khác), > (lớn hơn), <(nhỏ hơn), >= (không nhỏ hơn), <= (không lớn hơn) đều có thể

áp dụng cho các dữ liệu kiểu nguyên và được thực hiện theoqui tắc thông thường, kết quả các phép toán quan hệ với dữliệu kiểu nguyên cho giá trị là kiểu lô gic

5.4.Kiểu dữ liệu số thực (Real)

a.Khái niệm kiểu dữ liệu số thực

Dữ liệu kiểu số thực (gọi tắt là kiểu thực) là tập hợp các

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 20

số thực có thể biểu diễn trong máy tính Kiểu số thực được định nghĩa sẵn bằng từ khoá REAL.

Một giá trị kiểu thực là một số thực nằm trong khoảng màmáy tính điện tử có thể xử lí được Giới hạn này phụ thuộcvào từng máy tính và từng chương trình Trong Turbo

PASCAL giới hạn là ± 2.9E -39 ÷ ± 1.7E+38.

Biến thực là biến nhận các giá trị thực Từ khoá REALđược dùng để khai báo biến thực

Trong chương trình Pascal số thực có thể được viết dướihai dạng dấu phẩy tĩnh và dấu phẩy động

b.Số thực dấu phẩy tĩnh

Số thực dấu phẩy tĩnh là số thực có phần nguyên và phần lẻ Dấu chấm (.) được dùng để ngăn chia phần nguyên với phần lẻ của số Tận cùng bên trái, nếu là số

âm phải có dấu trừ (-), nếu số dương có thể có hoặc không có dấu cộng (+).

Ví dụ: về các số thực dấu phẩy động.

3.14E+00

(3.14)

6.321E+02(632.1)

-12.21E-02 0.1221.)

(-Ví dụ: Hai biến S, Tong là 2 biến thực Để mô tả viết như

áp dụng cho dữ liệu kiểu thực

Trang 21

5.5.Các hàm chuẩn cho dữ liệu kiểu nguyên và thực

ROUND(X

Cho số nguyên bằng cách làmtròn X

FRAC(X) T T Lấy phần lẻ của X

INT(X) T T Lấy phần nguyên của X bằng cách loại bỏ phần phânABS(X) N,T N,T Cho giá trị tuyệt đối

EXP(X) N,T T Cho hàm mũ (EXPonential) cơ

số e của X

SQRT(X) N,T T Cho căn bậc 2 (SQuare RooT)

của X

Chú ý: Các kí hiệu N là kiểu nguyên, T là kiểu thực, L là kiểu

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 22

a.Khái niệm kiểu dữ liệu ký tự

Dữ liệu kiểu ký tự (gọi tắt là kiểu ký tự) là một ký tự có trong tập hợp các ký tự của bảng mã ASCII Kiểu ký tự được định nghĩa sẵn bằng từ khoá CHAR.

Trong bảng mã ACCII, các ký tự được sắp xếp theo trật tựnhất định

Ví dụ: 'A'<'B' Các số thứ tự (mã ACCII) của các ký tự

Chú ý: khi viết các giá trị ký tự thì nó phải được đặt trong

cặp dấu nháy đơn

Ví dụ: 'A', 'B', '0'

Giữa các ký tự thì ký tự đứng trước nhỏ hơn ký tự đứngsau, chữ viết hoa nhỏ hơn chữ viết thường cùng chữ đó, chữcái lớn hơn chữ số

Ví dụ: 'A' < 'B'; 'B' < 'C', 'a' < 'b'; 'b' < 'c', '9'<'A',

b.Các hàm chuẩn dùng cho các dữ liệu kiểu ký tự Tên hàm

Kiểu

dữ liệu vào

Kiểu

dữ liệu ra

Tác dụng

Cho ký tự đứng trước ký tự

Ch trong bảng mã ASCII(PREDecessor)

Cho ký tự đứng sau ký tự

Ch trong bảng mã ASCII(SUCCessor)

ORD(Ch) KT N Cho số thứ tự (ORDinal) của

Trang 23

ký tự Ch trong bảng mãASCII).

Cho ký tự (Character) có sốthứ tự là N (tức mã ASCII làN)

UPCASE(C

Cho ký tự Ch từ chữ thườngsang chữ hoa

Ví dụ:

PRED('B') 'A' SUCC('X') 'Y'

ORD('A') 65 CHR(65) 'A'

UPCASE('a') 'A'

5.7.Kiểu dữ liệu dãy ký tự (String)

a.Khái niệm kiểu dữ liệu dãy ký tự

Dữ liệu kiểu dãy ký tự (gọi tắt là kiểu dãy ký tự) là một dãy ký tự có trong tập hợp các kí tự của bảng mã ASCII được đặt trong cặp dấu nháy đơn Kiểu dãy ký tự được định nghĩa bằng từ khoá STRING.

Biến kiểu dãy ký tự là biến nhận các giá trị là dãy các ký tự,biến kiểu dãy ký tự được khai báo bằng từ khoá STRING

Ví dụ: Biến HOVATEN là biến kiểu dãy ký tự Để khai báo

HOVATEN:= 'BUI DIEU LINH';

LOP:= 'Tai chinh B khoa 39 - Ngan hang';

b.Phép toán đối với dữ liệu kiểu dãy ký tự

Đối với các dữ liệu kiểu dãy ký tự chỉ có một phép tính duynhất là phép ghép được ký hiệu bằng dấu cộng (+) Phép tínhnày tạo nên một dòng ký tự bằng cách ghép hai dãy ký tự chotrước với nhau

Ví dụ:

'TURBO'+' PASCAL' = 'TURBO PASCAL'.

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 24

c.So sánh hai dãy kí tự

Khi so sánh hai dãy ký tự, máy sẽ so sánh từng cặp ký tựvới nhau kể từ trái qua phải theo tiêu chuẩn sau

• Hai dãy ký tự bằng nhau nếu có độ dài như nhau và nộidung giống hệt nhau

• Dãy đứng trước trong từ điển nhỏ hơn dãy đứng sautrong từ điển

• Dãy ngắn hơn nhỏ hơn dãy dài hơn

• Chữ viết hoa nhỏ hơn chữ viết thường cùng chữ đó

• Chữ cái lớn hơn chữ số

• Các dấu khoảng trống trước sau đều được tính

Kiểu dữ liệu này sẽ được nghiên cứu kỹ hơn trong chươngsau

§ 6 Biểu thức (Expression)

6.1.Khái niệm biểu thức

Biểu thức là một số toán hạng (Operand) được kết hợp với nhau bởi một số phép toán (Operator) để xác định một giá trị nhất định Toán hạng có thể là một hằng, một biến hoặc một hàm Phép toán được viết ra bằng dấu phép

Biểu thức trong PASCAL được chia thành biểu thức số học,biểu thức lô gic và biểu thức dãy ký tự

• Biểu thức số học là biểu thức có kết quả là một giá trị sốnguyên hoặc một giá trị số thực

• Biểu thức lô gic là biểu thức có kết quả là một giá trị lôgic

Trang 25

• Biểu thức dãy ký tự là biểu thức có kết quả là một giá trịdãy ký tự.

DIV chia nguyên

MOD Lấy phần dư của phép chia nguyên

b.Các phép toán lô gic

OR hoặc

NOT phủ định hay ĐảO

XOR hoặc triệt tiêu hay cộng mô Đun 2

ký tự

d.Phép toán ghép dãy ký tự

Đối với các dữ liệu kiểu dãy ký tự thì chỉ có một phép toángọi là phép toán ghép, ký hiệu bằng dấu cộng (+)

6.3.Thứ tự thực hiện phép toán trong biểu thức

Khi xác định giá trị các biểu thức, các phép toán đượcthực hiện theo thứ tự ưu tiên sau đây:

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 26

1 Các phép toán trong dấu ngoặc.

2 NOT, - (Đổi dấu).

3 *, /, DIV, MOD, AND.

Ví dụ 2: Biểu thức lô gic có thứ tự thực hiện như sau:

(100> 7) And ('B'<'A') True And False False

Trong PASCAL có 2 loại thủ tục:

• Thủ tục chuẩn (Precifined Procedure) là những thủ tục

có sẵn trong PASCAL Có thể sử dụng các thủ tục này màkhông phải khai báo

• Thủ tục "người sử dụng" do người sử dụng tạo ra Muốn

sử dụng loại thủ tục này phải khai báo nó Vấn đề này đượcnghiên cứu ở chương sau

Muốn sử dụng thủ tục ở đâu, thì tại đó phải viết lệnh gọi thủtục Lệnh gọi thủ tục bao gồm tên thủ tục và danh sách cáctham số thực sự

Cần phân biệt lời gọi thủ tục và lời gọi hàm, cả hai đều làcác chương trình con nhưng lời gọi hàm không phải là một câulệnh vì bản thân hàm trả về một giá trị, giá trị này phải đi vớimột lệnh gán hoặc nó là tham số của một lệnh khác hay trongmột biểu thức

Trang 27

Ví dụ:

Không thể viết ORẮÁ) mà phải viết là Ch:=ORD('Á) hayWRITELN(ORD('Á))

7.1.Thủ tục xuất dữ liệu ra màn hình (Write)

Thủ tục Write dùng để đưa ra các giá trị của các biểu thứcthuộc các kiểu khác nhaụ

Qui cách:

WRITE(<Biểu thức 1, Biểu thức 2, , Biểu thức n>);

ở đây các biểu thức i (i=1, 2, ,n) là tên các biểu thức cầnđưa ra có thể là tên hằng, tên hàm, tên biến hoặc một hằng,một hàm, một biểu thức Kiểu của chúng có thể là lô gic, sốnguyên, số thực, kí tự hoặc kiểu dãy kí tự

Theo thủ tục này, giá trị của các biểu thức 1, 2, ,n sẽđược xác định trước sau đó mới được đưa ra trên tệp chuẩn,thường là màn hình

Theo thủ tục Write(I,T) trên màn hình xuất hiện giá trị của

I và giá trị của T, lần lượt hết giá trị này đến giá trị khác Cáchđưa ra như vậy được gọi là đưa ra không có qui cách

7.2.Thủ tục xuất dữ liệu ra màn hình (Writeln)

Thủ tục Writeln có tác dụng hoàn toàn giống thủ tục Write,chỉ có một điểm khác là sau khi đưa ra giá trị của biểu thứccuối cùng trong danh sách, thủ tục Writeln tự động đưa con trỏxuống dòng dướị

Trang 28

Thủ tục Writeln không tham số sẽ đưa ra một dòng trống.7.3.Đưa ra màn hình có qui cách

Màn hình thông dụng nhất hiện nay của máy tính đượcphân thành 25 dòng và 80 cột, tại một thời điểm màn hình cómột vị trí làm việc thể hiện dưới dạng một điểm sáng nhấpnháy gọi là con trỏ màn hình

Bình thường khi đưa ra một biểu thức nào đấy, nếu khôngxác định rõ, nó sẽ được đưa ra dưới dạng không có quy cách

• Nếu kiểu số nguyên được đưa ra với số chỗ đúng bằng

số chữ số nó cần có kể cả dấu (nếu dấu dương thì bỏ trống)

kể từ vị trí bên trái

• Nếu kiểu số thực thì sẽ đưa ra (nếu dấu dương thì bỏtrống) một số phần nguyên, một dấu chấm thập phân, mườichữ số phần phân, chữ E để biểu diễn số mũ, dấu của phần

mũ, hai chữ số biểu diễn phần mũ, chỗ nào không có giá trị cụthể thì điền số 0 vào kể từ vị trí bên trái

• Nếu kiểu ký tự, kiểu lô gic hay kiểu dãy ký tự thì viết ramột cách bình thường kể từ vị trí bên trái, mỗi ký tự chiếm một

vị trí

Trong trường hợp muốn dành cho các giá trị được đưa ramột số vị trí nhất định, dùng thủ tục đưa ra có qui cách Để

mô tả các qui cách, dùng các phương pháp sau đây

a.Đưa ra có qui cách dữ liệu kiểu ký tự

Qui cách:

<Biểu thức kiểu Ch>:n

Lúc này, giá trị của biểu thức kiểu ký tự Ch được đưa ra ở

vị trí tận cùng bên phải của trường có độ rộng n kí tự; n -1 vịtrí phía trái của trường sẽ chứa dấu khoảng trống hay dấucách (space), n là biểu thức kiểu nguyên

Ví dụ: Ta có

Writeln('123456789');

Writeln('A'); {Đưa ra khong quy cach}

Writeln('B':8); {Đưa ra có quy cach}

Khi thực hiện các lệnh này màn hình sẽ như sau:

123456789

Trang 29

Lúc này, Biểu thức dãy kiểu kí tự St được đưa ra bắt đầu

từ phải sang trái Dòng ký tự này luôn luôn chiếm một trườnggồm n vị trí Nếu St có ít hơn n ký tự thì n-length(St) dấu cách được đặt trước <Biểu thức St>; ở đây length(St) là độ dài của dãy ký tự St, n là biểu thức kiểu nguyên

Trước dãy ký tự 'Ha' ở dòng thứ ba có 23 dấu cách

c.Đưa ra có qui cách dữ liệu kiểu lô gic

Qui cách:

<Biểu thức kiểu BL>:n

Lúc này, tuỳ theo giá trị của biểu thức kiểu lô gic BL, từ

FALSE hoặc TRUE được đưa ra phía phải của trường gồm n

vị trí Phần thừa ra phía trái của trường (nếu có) sẽ chứa dấu

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 30

cách (space), n là biểu thức kiểu nguyên.

Writeln(OK); {Dua ra khong quy cach}

Writeln(OK:8); {Dua ra co quy cach}

<Biểu thức kiểu IN>:n

Tác dụng: Giá trị của biểu thức kiểu nguyên IN được đưa ra

kể từ phải sang trái của trường gồm n vị trí Phần thừa ra phíatrái của trường (nếu có) sẽ chứa dấu cách (space), n là biểuthức kiểu nguyên

Writeln(I); {Dua ra khong quy cach}

Writeln(J:8); {Dua ra co quy cach}

Trang 31

e.Đưa ra có qui cách dữ liệu kiểu thực

Qui cách 1:

<Biểu thức kiểu RE>:n

Lúc này, giá trị của biểu thức kiểu số thực RE được đưa ra

dưới dạng dấu phẩy động, từ phải qua trái của một trường có

độ rộng n vị trí.

Qui cách 2:

<Biểu thức kiểu RE>:n:m

Lúc này, giá trị của biểu thức kiểu số thực RE được đưa ra

dưới dạng dấu phẩy tĩnh, từ phải sang trái của trường gồm n

vị trí Giá trị của RE có m chữ số ở phần lẻ Phần thừa raphía trái của trường (nếu có) sẽ chứa dấu cách (space), m, n

là các giá trị của biểu thức kiểu nguyên

Writeln(R); {Dua ra khong quy cach}

Writeln(R:12:6); {Dua ra co quy cach}

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 32

Lst và dấu phẩy vào trước các biểu thức cần in nhưng ở đầuchương trình cần phải có khai báo sử dụng máy in

a.Thủ tục GoToXY(X,Y)

Là thủ tục đặt con trỏ vào vị trí có tọa độ X, Y trên màn hình.Tọa độ X là tọa độ cột tính từ 1 đến 80 Tọa độ Y là tọa độdòng tính từ 1 đến 25

c.Thủ tục ClrEol (Clear End Of Line)

Thủ tục này xóa các ký tự nằm bên phải con trỏ màn hình(Cursor)

d.Thủ tục TextColor (Color)

Thủ tục này thiết lập màu cho văn bản Mầu là một sốnguyên có thể nhận giá trị từ 0 trở đi Tùy loại màn hình mà sốlớn nhất gán cho mầu có thể thay đổi Cũng có thể gán cho

Trang 33

mầu tên các hằng số mầu đã được định nghĩa sẵn như sau:

0 Black 4 Red 8 DarkGray 12 Lightred

1 Blue 5 Magenta 9 LightBlue 13

15 White e.Thủ tục TextBackGround (Color)

Thủ tục này xác định mầu nền của văn bản

Ví dụ: In trên màn hình các dãy ký tự PASCAL, dãy đầu tiên

bắt đầu từ tọa độ X=10, Y = 2 với các màu đỏ, xanh lá cây,xanh blue và đen tương ứng

Trang 34

Ví dụ: In dãy ký tự "PASCAL" trên màn hình ; trong đó các

ký tự P và L sáng bình thường; còn các ký tự "ASCA" sángyếu Các lệnh có dạng như sau:

NormVideo;Write('P');

LowVideo;Write('ASCA');

NormVideo;Write('L');

g.Hàm WhereX và hàm WhereY

Hàm WhereX cho tọa độ X của con trỏ màn hình

Hàm WhereY cho tọa độ Y của con trỏ màn hình

7.6.Thủ tục vào dữ liệu (Read)

Thủ tục này dùng để nhập các dữ liệu vào máy

Qui cách:

READ(<Tên biến 1, Tên biến 2, , Tên biến n>);

Theo thủ tục này, giá trị của Biến 1, Biến 2, Biến n sẽđược đọc vào từ tệp chuẩn Input, thường là từ bàn phím Các

dữ liệu nhập vào ứng với các dữ liệu của Biến 1, Biến 2 được ngăn cách nhau bằng dấu cách (Space)

• Đối với biến kiểu kí tự, thủ tục Read đọc một kí tự vào

và gán cho biến

• Đối với các biến kiểu dãy kí tự, thủ tục Read lần lượtđọc các kí tự và gán cho biến cho đến khi nội dung biến đạtđến độ dài tối đa (được xác định khi khai báo biến) hoặc đếnkhi gặp dấu kết thúc dòng hay kết thúc tệp

• Đối với biến kiểu số (nguyên hoặc thực) thủ tục Read

sẽ đọc vào một dãy kí tự tuân theo qui tắc biểu diễn hằng

số Các kí tự trống (space), kí tự định cột (TAB), CR hoặc LFđứng trước dãy này đều bị bỏ qua Dãy ký tự cần được ngăncách với phần tử tiếp theo bằng dấu cách (space), hoặc kí tựTAB

Nếu nhập vào dữ liệu không tuân theo những qui tắc đã

Trang 35

nêu sẽ xuất hiện thông báo lỗi vào-ra Nếu tuân theo đầy đủcác quy tắc thì dãy ký tự biểu diễn giá trị số sẽ được biến đổithành giá trị số kiểu tương ứng với biến và gán cho biến.Khi thực hiện thủ tục READ, PASCAL sẽ yêu cầu nhập giátrị thật cho các biến Trường hợp đặc biệt: Khi vừa bắt đầu thủtục READ đã nhận ngay được dấu kết thúc dòng hoặc dấu kếtthúc cột thì không có giá trị nào được gán cho biến; có nghĩa

là biến vẫn giữ nguyên giá trị cũ Nếu nhấn ENTER thì máy sẽchờ cho đến khi nhận được giá trị mới tiếp tục

Chú ý: Khi nhập dữ liệu cho các biến, phải nhập các dữ liệu

tương ứng với kiểu dữ liệu của các biến Việc làm này haynhầm lẫn nên thường tách các dữ liệu có kiểu khác nhauthành các câu lệnh nhập khác nhau

Thủ tục Write trong ví dụ này cho hiện dòng thông báo

"Nhập vao hai gia tri luong, no" để hướng dẫn việc nhập dữliệu Thủ tục Read(Luong,No) đọc giá trị hai biến Luong, No từbàn phím

7.7.Thủ tục vào dữ liệu (Readln)

Thủ tục Readln hoàn toàn giống thủ tục Read, chỉ có mộtđiểm khác là sau khi đọc xong biến cuối cùng thì thủ tụcReadln bỏ qua phần còn lại của dòng

Qui cách:

READLN(<Tên biến 1, Tên biến 2, , Tên biến n>);

Sau khi thực hiện xong thủ tục Readln, thủ tục Read hoặcReadln tiếp theo sẽ bắt đầu đọc từ đầu dòng sau

Thủ tục Readln có thể không có tham số

Qui cách:

READLN;

Trong trường hợp này, phần còn lại của dòng sẽ bị bỏ qua

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 36

Khi nhập dữ liệu từ bàn phím, thủ tục Readln không tham số

sẽ đưa con trỏ xuống đầu dòng tiếp theo của màn hình

READLN(<Tên biến 1, Tên biến 2, , Tên biến n>);

Ví dụ : Sau đây là một chương trình Pascal đơn giản có sửdụng các qui cách trong thủ tục Writeln và Read

số thực, mỗi số gồm 8 vị trí trong đó có 2 chữ số phần phân

Trang 37

sau thực hiện sau Đây là quá trình tính toán thẳng, các lệnhkhông nhiều và bài toán không phức tạp.

8.1 Lệnh gán (Assignment)

Lệnh gán là lệnh cơ bản nhất trong các lệnh của PASCAL

Nó được dùng để tính giá trị một biểu thức và gán giá trị biểuthức đó cho một biến

Qui cách:

<Tên biến>:= <Biểu thức>;

ở đây dấu ":=" được gọi là dấu gán.

Theo lệnh này, máy sẽ tính giá trị của biểu thức ở bên phảidấu gán sau đó gán cho biến ở bên trái Lệnh có thể áp dụngcho các biến thuộc kiểu bất kì trừ kiểu tệp Giá trị của biểuthức phải cùng kiểu giá trị của biến, trừ trường hợp biểu thức

Trong ví dụ trên thì lệnh gán thứ nhất gán giá trị 1 cho biến

I Trong trường hợp này biểu thức phía phải dấu gán có dạngđơn giản nhất, chỉ gồm một hằng số nguyên Lệnh gán thứ haitính giá trị trung bình cộng của ba biến Toan, Ly, Hoa rồi gángiá trị đó cho biến TB Lệnh gán thứ 3 lấy giá trị của J cộngthêm 1 rồi gán giá trị vừa tìm được cho biến J Có nghĩa làlệnh này làm cho giá trị của biến J được tăng thêm 1

8.2 Câu lệnh ghép (Compound Statement)

Câu lệnh ghép (còn gọi là lệnh phức hợp - CompoundStatement) được sử dụng trong trường hợp nếu muốn thựchiện nhiều lệnh tại vị trí mà Pascal chỉ cho phép viết một câulệnh

Trang 38

Câu lệnh ghép gồm một số tuỳ ý các lệnh đơn giản đặtgiữa hai từ khoá Begin và End, lệnh này cách lệnh kia mộtdấu chấm phẩy (;) Các lệnh trong câu lệnh ghép sẽ đượcthực hiện lần lượt theo thứ tự viết chúng.

Câu lệnh ghép trong ví dụ này gồm 3 lệnh gán nằm giữa hai

từ khoá begin và end Các lệnh đó làm nhiệm vụ đổi hai giá trịcho 2 biến A1 và A2 Biến Atg (a trung gian) được dùng làmbiến trung gian

8.3 Một số ví dụ

Ví dụ 1 Cho biết họ tên một sinh viên và điểm thi 3 môn

toán, lý, hóa của người sinh viên này Hãy viết chương trình đểnhập số liệu vào, tính và in điểm thi trung bình của sinh viênđó

Trang 39

Quá trình giải bài toán được minh hoạ theo thuật toán tronghình 3.2

Chương trình giải bài toán như sau:

Write('Nhap ten Sinh Vien ');Readln(TenSV);

Write('Nhap diem toan ly, hoa ');

Readln(Toan, Ly, Hoa);

Ví dụ 2 Cho biết tên một công nhân và tiền lương, tiền

thưởng, tiền nợ của người công nhân này Hãy viết chương

Gi¸o tr×nh Tin häc §¹i c¬ng

Trang 40

trình tính và in số tiền được lĩnh của người công nhân đó.Quá trình giải bài toán được minh hoạ trong hình 3.3.

Chương trình giải bài toán như sau:

Khi thực hiện chương trình này, máy

yêu cầu nhập tên công nhân và tiền

lương, tiền thưởng, tiền nợ của người

công nhân này Sau đó máy tính số tiền

được lĩnh, rồi in tên công nhân và số

tiền được lĩnh đó

Hai chương trình trên tuy đơn giản,

nhưng rất điển hình, vì chúng có đủ 3 phần của một chươngtrình PASCAL (phần đặt tên, phần khai báo, phần thân chươngtrình), và chúng thực hiện 4 công việc thường có của mộtchương trình là: Nhập dữ liệu, tính toán, in kết quả và dừng

§ 9 Lập trình phân nhánh

Trong quá trình giải nhiều bài toán, thường xảy ra trườnghợp việc lựa chọn hướng đi này hay hướng đi khác phụ thuộcvào điều kiện của đầu bài hoặc phụ thuộc vào kết quả tínhtoán được Quá trình tính toán có đặc điểm như vậy được gọi

là quá trình tính toán có phân nhánh Chương trình có chứaquá trình tính toán phân nhánh được gọi là chương trình phânnhánh

Turbo PASCAL có một số câu lệnh chuyên dùng để lập cácchương trình phân nhánh, như lệnh IF THEN , lệnh GOTO,

Ngày đăng: 03/04/2014, 20:04

HÌNH ẢNH LIÊN QUAN

Hình 3.1 M n hình PASCAL à - cấu trúc dữ liệu và giải thuật PASCAL
Hình 3.1 M n hình PASCAL à (Trang 13)
Bảng lương cán bộ SốT - cấu trúc dữ liệu và giải thuật PASCAL
Bảng l ương cán bộ SốT (Trang 75)
Bảng lương công nhân - cấu trúc dữ liệu và giải thuật PASCAL
Bảng l ương công nhân (Trang 128)
Bảng tiền lãi bán hàng - cấu trúc dữ liệu và giải thuật PASCAL
Bảng ti ền lãi bán hàng (Trang 129)

TỪ KHÓA LIÊN QUAN

w